用鸿蒙开发板驱动0.96寸TFT LCD屏幕 原创

远道可思
发布于 2021-6-2 10:38
浏览
4收藏

    手中正好有一块0.96寸TFT LCD屏幕所以就想能不能通过鸿蒙开发板驱动TFT LCD屏幕

一、分析:

   由于0.96 TFT LCD采用SPI的通信方式,但我使用的是1.1版本程序在驱动中并没有找到关于SPI的驱动(有也不会写呀....😂)

   所以我想到了IO口模拟SPI通信方式来实现驱动TFT LCD屏幕

二、材料准备:

   1. Neptune HH-SLNPT102 开发板一块。

    2. 0.96-TFT-LCD屏幕一块

    3.  导线若干,电源线。

    4.  编辑,编译环境(基于1.1版本),Ubuntu20.04.2 LTS,  烧录 Windows环境SecureCRT

    5.程序使用hihopeorg / Neptune-HarmonyOS1.1-IOT 地址:https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot

三、功能实现

   1.首先,编写TFT-LCD驱动(通过使用中景园电子C51示例代码修改实现)

   2.然后,编写测试用例

   3.TFT-LCD 位图显示

四、代码实现(具体代码详见☞资源)

测试用例:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "lcd_st7735.h"
#define TASK_STACK_SIZE 1024 * 8
#define TASK_PRIO 25

static void Example_Task(void)
{
    uint8_t i;
    float t=0;
    Lcd_Init();			     //初始化OLED  
    LCD_Clear(WHITE);
	BACK_COLOR=WHITE;
	 while(1)
	 {
		//LCD_ShowChinese(28,0,0,32,RED);   //中
		//LCD_ShowChinese(60,0,1,32,RED);   //景
		//LCD_ShowChinese(92,0,2,32,RED);   //园
		LCD_ShowPicture(0,9,39,49);              //校徽
		LCD_ShowChinese(42,10,0,16,RED);   //江
		LCD_ShowChinese(58,10,1,16,RED);   //西
		LCD_ShowChinese(74,10,2,16,RED);   //工
		LCD_ShowChinese(90,10,3,16,RED);  //程
		LCD_ShowChinese(106,10,4,16,RED);  //学
		LCD_ShowChinese(122,10,5,16,RED);  //院
        LCD_ShowString(42,30,"20190301551",RED);
		LCD_ShowString(0,60,"TSET TFT SPI",RED);
		LCD_ShowNum1(104,60,t,5,RED);//显示小数
		t+=0.01;
		delay_ms(1000);
		LCD_Clear(WHITE);

		//LCD_ShowString(10,0,"LCD_W:",RED);LCD_ShowNum(70,0,LCD_W,3,RED);
		//LCD_ShowString(10,20,"LCD_H:",RED);LCD_ShowNum(70,20,LCD_H,2,RED);
		LCD_ShowPicture1(0,0,159,79);//160x80图片
		delay_ms(1000);
		LCD_Clear(WHITE);
   }
}

static void ExampleEntry(void)
{
    osThreadAttr_t attr;

    SPI_Init();

    attr.name = "Example_Task";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = TASK_STACK_SIZE;
    attr.priority = TASK_PRIO;

    if (osThreadNew((osThreadFunc_t)Example_Task, NULL, &attr) == NULL)
    {
        printf("Falied to create Example_Task!\n");
    }
}
APP_FEATURE_INIT(ExampleEntry);

五、取模:

用鸿蒙开发板驱动0.96寸TFT LCD屏幕-鸿蒙开发者社区用鸿蒙开发板驱动0.96寸TFT LCD屏幕-鸿蒙开发者社区

六、TFT-LCD与neptune 开发板连接 

 SCL->PB4 |  SDA->PA1  | RES->PB1  |  DC->PB3 |  CS->PB2  | BLK->PB5

七、验证:

 在编辑时须注意neptune1.1版本时需要将生成测试用例.a 文件添加进W800 Makefile 中烧录进固件(HI3861不需要)

 详见:https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot/blob/master/applications/sample/wifi-iot/app/iothardware/README.md

 编译使用hb 执行第一次hb build时会出现[OHOS ERROR] utf-8 报错 不需要管 继续执行hb build 即可编译成功

 然后下载,重启开发板后,显示效果如下:
用鸿蒙开发板驱动0.96寸TFT LCD屏幕-鸿蒙开发者社区用鸿蒙开发板驱动0.96寸TFT LCD屏幕-鸿蒙开发者社区

  通过本方法可以在neptune模块和HI3861通过IO模拟SPI驱动0.96 TFT-LCD(基于1.1版本) 

   HI3861只需要稍加修改即可实现  

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
lcd_example.rar 32.35K 122次下载
取模软件.rar 1.17M 74次下载
已于2021-6-2 10:38:53修改
4
收藏 4
回复
举报
1条回复
按时间正序
/
按时间倒序
txwtech
txwtech

感谢分享,我测试一下呢。

回复
2021-9-22 22:28:45
回复
    相关推荐