840|2

445

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【复旦微车规MCU FM33FT0A 系列】--LCD屏显示 [复制链接]

本帖最后由 dirty 于 2024-2-5 00:32 编辑

        经过一段时间的了解熟悉,本篇实现LCD显示功能。

一.硬件了解

        开发板板载LCD 显示屏,分辨率172(H)RGB x320(V),驱动IC ST7789V3,MCU通过SPI接口驱动控制。开发板硬件原理如下

图1:LCD原理图连接

LCD屏引脚       MCU PIN           功能

LCD_CS            PE1             片选信号 ,低电平有效   

LCD_DC            PE2            显示数据/命令引脚.低电平时写命令,高电平时写数据

LCD_SDA          PB14          数据脚,==MOSI

LCD_SCL          PE0            时钟脚,==SCK

LCD_RES         PB15          复位引脚,低电平复位

BLK                   PB9            背光引脚,高电平打开背光

二.代码准备

1.屏幕分辨率定义,横竖屏模式选择,这里使用横屏模式

#define USE_HORIZONTAL 3//2  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏

#if USE_HORIZONTAL==0||USE_HORIZONTAL==1
#define LCD_W 172	
#define LCD_H 320

#else
#define LCD_W 320
#define LCD_H 172
#endif

2.spi驱动编写,可以IO模拟或硬件spi,前者显示刷新较慢,或后者用DMA会较快些。这里分享ST7789V3驱动RGB屏初始化,配置有效。

void LCD_Init(void)
{
	LCD_GPIO_Init();//初始化GPIO
	
	LCD_RES_Clr();//复位
	FL_DelayMs(30);
	LCD_RES_Set();
	FL_DelayMs(100);
	LCD_BLK_Set();//打开背光
	FL_DelayMs(100);
	
	LCD_WR_REG(0x11); 
//	FL_DelayMs(120); 
	LCD_WR_REG(0x36); 
	if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00);
	else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0);
	else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70);
	else LCD_WR_DATA8(0xA0);

	LCD_WR_REG(0x3A);
	LCD_WR_DATA8(0x05);

	LCD_WR_REG(0xB2);
	LCD_WR_DATA8(0x0C);
	LCD_WR_DATA8(0x0C);
	LCD_WR_DATA8(0x00);
	LCD_WR_DATA8(0x33);
	LCD_WR_DATA8(0x33); 

	LCD_WR_REG(0xB7); 
	LCD_WR_DATA8(0x35);  

	LCD_WR_REG(0xBB);
	LCD_WR_DATA8(0x35);

	LCD_WR_REG(0xC0);
	LCD_WR_DATA8(0x2C);

	LCD_WR_REG(0xC2);
	LCD_WR_DATA8(0x01);

	LCD_WR_REG(0xC3);
	LCD_WR_DATA8(0x13);   

	LCD_WR_REG(0xC4);
	LCD_WR_DATA8(0x20);  

	LCD_WR_REG(0xC6); 
	LCD_WR_DATA8(0x0F);    

	LCD_WR_REG(0xD0); 
	LCD_WR_DATA8(0xA4);
	LCD_WR_DATA8(0xA1);

	LCD_WR_REG(0xD6); 
	LCD_WR_DATA8(0xA1);

	LCD_WR_REG(0xE0);
	LCD_WR_DATA8(0xF0);
	LCD_WR_DATA8(0x00);
	LCD_WR_DATA8(0x04);
	LCD_WR_DATA8(0x04);
	LCD_WR_DATA8(0x04);
	LCD_WR_DATA8(0x05);
	LCD_WR_DATA8(0x29);
	LCD_WR_DATA8(0x33);
	LCD_WR_DATA8(0x3E);
	LCD_WR_DATA8(0x38);
	LCD_WR_DATA8(0x12);
	LCD_WR_DATA8(0x12);
	LCD_WR_DATA8(0x28);
	LCD_WR_DATA8(0x30);

	LCD_WR_REG(0xE1);
	LCD_WR_DATA8(0xF0);
	LCD_WR_DATA8(0x07);
	LCD_WR_DATA8(0x0A);
	LCD_WR_DATA8(0x0D);
	LCD_WR_DATA8(0x0B);
	LCD_WR_DATA8(0x07);
	LCD_WR_DATA8(0x28);
	LCD_WR_DATA8(0x33);
	LCD_WR_DATA8(0x3E);
	LCD_WR_DATA8(0x36);
	LCD_WR_DATA8(0x14);
	LCD_WR_DATA8(0x14);
	LCD_WR_DATA8(0x29);
	LCD_WR_DATA8(0x32);
	
  
	LCD_WR_REG(0x11);
	FL_DelayMs(120);	
	LCD_WR_REG(0x29); 
}

3.UI界面设计

        用字模取字工具和取图工具,我这里设计了复旦微官网Logo,QQ头像,汉字等辅以配色、布局等。

void lcd_show(void)
{
    
    LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
//    LCD_Fill(0,0,LCD_W,LCD_H,RED);
//    LCD_Fill(0,0,LCD_W,LCD_H,GREEN);
//    LCD_Fill(0,0,LCD_W,LCD_H,BLUE);
//    LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
    LCD_ShowPicture(50,10,120,50,gImage_image_fdw);
    LCD_ShowChinese(180,19,"复旦微",BLUE,WHITE,32,0);
    
    LCD_ShowChinese(80,60,"车规系列",BLUE,WHITE,32,0);
    LCD_ShowString(220,60,"MCU",RED,WHITE,32,0);
    
    LCD_ShowString(80,100,"FM33FT056A",RED,WHITE,32,0);

	LCD_ShowPicture(140,130,40,40,gImage_1);
}

 

三.测试效果

        编译烧录后显示效果如下

 

        整体显示效果不错,实现了驱动LCD屏功能。后面若做些丰富的界面显示,可以上LVGL,这也奠定了一个很好的基础。

 

 

 

此帖出自汽车电子论坛

最新回复

复旦微官网Logo显示的和清晰嘛   详情 回复 发表于 2024-2-6 08:29
点赞 关注

回复
举报

6593

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

复旦微官网Logo显示的和清晰嘛

此帖出自汽车电子论坛

点评

在网页上截个图弄的,也算给宣传一波,哈哈  详情 回复 发表于 2024-2-6 11:19
 
 

回复

445

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
Jacktang 发表于 2024-2-6 08:29 复旦微官网Logo显示的和清晰嘛

在网页上截个图弄的,也算给宣传一波,哈哈

此帖出自汽车电子论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表