用鸿蒙开发板驱动0.96寸TFT LCD屏幕 原创
手中正好有一块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);
五、取模:
六、TFT-LCD与neptune 开发板连接
SCL->PB4 | SDA->PA1 | RES->PB1 | DC->PB3 | CS->PB2 | BLK->PB5
七、验证:
在编辑时须注意neptune1.1版本时需要将生成测试用例.a 文件添加进W800 Makefile 中烧录进固件(HI3861不需要)
编译使用hb 执行第一次hb build时会出现[OHOS ERROR] utf-8 报错 不需要管 继续执行hb build 即可编译成功
然后下载,重启开发板后,显示效果如下:
通过本方法可以在neptune模块和HI3861通过IO模拟SPI驱动0.96 TFT-LCD(基于1.1版本)
HI3861只需要稍加修改即可实现
感谢分享,我测试一下呢。