查看: 1133|回复: 0

【青风带你学stm32f051系列教程】第5课 点亮LCD液晶屏

[复制链接]

该用户从未签到

发表于 2012-12-19 00:14:13 | 显示全部楼层 |阅读模式
分享到:
第5课:点亮LCD液晶屏
在嵌入式开发中,目前对于人机交互比较流行使用TFT-LCD彩屏,这是由于触摸屏的大量普及,价格上已经到达比较低的程度。他的用户体验方面是要远远胜过之前的一些单色屏,并且加入触摸之后,可以省略按钮,用于人机交互。
TFT-LCD属于真彩显示屏,目前手机,掌上游戏机,平板电脑等都在使用TFT。
QF_STM32F051评估板使用的触摸屏的控制器为ILI9328,采用16BIT并口输入数据,分辨率达到:320X240.分辨率其实是屏幕所具有的点的个数。230x240=76800个点。而每个点都是由三原色“红 绿 蓝”RGB组成,也就是说每个点可以配置成不同的颜色了。那么配置驱动采用ILI9328驱动器。ILI9328一般存在四种总线接口控制
1.I80接口配置
2.VSYNC接口配置
3.SPI接口配置
4.RGB接口配置
其实是采用串口和并口的不同配置启动方式。为了保证驱动速度,我们一般采用I80接口配置方式。本开发采用16位方式。
下面就是16位驱动RPG的寄存器配置方式:

R5_R0为红色,G5_G0为绿色,B5_B0配置为蓝色。
硬件准备:

端口配置:
硬件连接:PB0-PB7---DB0-DB7 低8位
PC0-PC7---DB8-DB7 高8位
PD2---WR PC12---RD PC11---CS PC10---RS PB11---CM
其中WR :写信号输入引脚,低电平时有效。
RD :读信号输入引脚,低电平时有效。
CS:TFT液晶屏的片选信号,低电平时有效。
RS:写数据和写命令选择引脚。取高写数据,取低写命令。
CM:选择8BIT和16BIT选择引脚。
软件准备:
对于软件配置我们采用分层的方式:

这种方式虽然较为复杂,但是对于最底层的硬件驱动不同而已,上层的图形层和控制则不需要变换,可以很方便的移植到其他的显示屏上。这一节就是来讲解Display Driver的编写问题。
软件准备:
打开工程代码---LCD刷屏--user文件夹,点开工程后,keil的工程树目录如下图所示:

整个工程目录很简单,只有会操作STM32F051的GPIO口就可以实现整个TFT的显示,由于这个工程中,为了工程代码的简便,我是直接写寄存器的,所以没有加入LIB库文件。
硬件连接好后,底层TFT-LCD的驱动是和硬件密切相关的,TFT-LCD液晶屏实际上是一个16位/8位的并行的数据接口。开发板上通过CM管脚选择了16位输入。ILI9328的驱动简单的说包含两个重要的函数:第一:我们确定向那个寄存器写数据。第二:确定寄存器后,决定写什么样的数据。
这两个函数编写代码如下,由于直接操作IO寄存器比较简单,这里面我选择了直接写寄存器:

写寄存器命令如下:

下面来说明下上面两个函数:写命令和写数据进程大体相当,不同的在于最开始通过Rs置低或者置高来进行选择,取高写数据,取低写命令。GPIOB->ODR采用ODR寄存器,表示IO口输出值。
对ILI9328Q驱动器常用的命令如下表:

那么要向某个确定寄存器写入数据可以编写成如下,直接调用上面两个子函数:

弄清楚如何向寄存器内部写命令后,下面就可以开始对TFT-LCD进行初始化,主要是多ILI9328驱动器进行初始化,首先初始化IO端口,然后按照ILI9328数据手册上的要求进行开机设置,详细信息请查看PDF。那么我们设置LCD初始化函数为:





下面编写一个进入LCD刷屏子函数,要求在屏幕上显示8条不同的颜色条纹。不同颜色的数据值如下面所列,我们只需要选择在不同区域填充不同颜色就可以。


那么上面一个简单的刷屏程序就出炉了,当然我们还可以写一些小的函数验证液晶屏的好坏。
主函数可以直接进行调用:


实验下载现象:
显示颜色条如下图所示:
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-19 16:47 , Processed in 0.108721 second(s), 18 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.