《嵌入式系统开发》0806504130 实验指导书
实验五 TFTLCD显示实验
实验时间:2016-05-03(周二3,4节),实验学时:2,实验地点:C105
一、实验目的与要求:
(1)掌握TFTLCD驱动的基本原理;
(2)掌握TFTLCD显示需要的相关设置步骤; (2)学会编写相应的驱动程序;
二、实验器材:
计算机,STM32F103RCT6实验平台。
三、实验过程
实验要求:将使用MiniSTM32开发板上的LCD接口,来点亮以2.8寸的、分辨率为320×240的TFTLCD模块,并实现ASCII字符和彩色的显示等功能,并在串口打印LCD控制器ID,同时在LCD每隔1s将屏幕底色依次变换为蓝、红、绿(LED0反转一次),同时在屏幕上显示以下内容。(三次后停止刷新底色,保持绿色底色,只有counter后面的数字变化) JIT.EDU.CN (起点坐标: 30,40,区域大小:200,24,字体大小24*12) TFTLCD TEST (起点坐标: 30,70,区域大小:200,16,字体大小16*8) C105 (起点坐标: 30,90,区域大小:200,16,字体大小16*8) lcd_id (起点坐标: 30,110,区域大小:200,16,字体大小16*8) counter: 44 这里的44是从0开始每隔1s加1 以上字符为红色。
1.硬件接口原理:
15
《嵌入式系统开发》0806504130 实验指导书
? LCD_CS(PC9):TFTLCD片选信号。 ? LCD _WR(PC7):向TFTLCD写入数据。 ? LCD _RD(PC6):从TFTLCD读取数据。
? LCD _D[15:0]( PB[15:0]):16位双向数据线。
? RST:硬复位TFTLCD,直接接到STM32的复位脚上,并不由软件控制; ? LCD _RS(PC8):命令/数据标志(0,读写命令;1,读写数据)。
TFTLCD模块采用16位的并方式与外部连接;采用ILI9341为液晶驱动器,ILI9341 采用RGB565格式存储颜色数据,此时ILI9341的18位数据线与MCU的16位数据线以及LCD GRAM的对应关系如图16.1.4所示:
从图中可以看出,ILI9341在16位模式下面,数据线有用的是:D17~D13和D11~D1,D0和D12没有用到,这样,ILI9341的D17~D13和D11~D1对应MCU的D15~D0。这样MCU的16位数据,最低5位代表蓝色,中间6位为绿色,最高5位为红色。数值越大,表示该颜色越深。另外,特别注意ILI9341所有的指令都是8位的(高8位无效),且参数除了读写GRAM的时候是16位,其他操作参数,都是8位的。
ILI9341的几个重要命令:0XD3,0X36,0X2A,0X2B,0X2C,0X2E等6条指令。 (1)0XD3,这个是读ID4指令,用于读取LCD控制器的ID;
(2)0X36,这是存储访问控制指令,可以控制ILI9341存储器的读写方向; (3)0X2A,这是列地址设置指令,在从左到右,从上到下的扫描方式(默认);
(4)0X2B,是页地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置纵坐标(y坐标);
(5)0X2C,该指令是写GRAM指令,在发送该指令之后,我们便可以往LCD的GRAM里面写入颜色数据了,该指令支持连续写;
(6)0X2E,该指令是读GRAM指令,用于读取ILI9341的显存(GRAM)。 2. TFTLCD显示需要的相关设置步骤:
1)设置STM32与TFTLCD模块相连接的IO。
先将我们与TFTLCD模块相连的IO口进行初始化,以便驱动LCD。 2)初始化TFTLCD模块
16
《嵌入式系统开发》0806504130 实验指导书
3)通过函数将字符和数字显示到TFTLCD模块上。 即:设置坐标,写GRAM指令,写GRAM来实现,但是这个步骤,只是一个点的处理,我们要显示字符/数字,就必须要多次使用这个步骤,从而达到显示字符/数字的目标;
刷新屏幕使用LCD_Clear()函数;
改变字体颜色使用POINT_COLOR()函数; 打印字符使用LCD_ShowString()函数; 打印数字使用LCD_ShowxNum()函数; 3.软件设计
根据设计要求,设计主函数main.c,将主函数写在这里。 四、实验结果与分析
将调试结果的照片粘贴在这里。
1. 串口打印的LCD控制器ID截图;2. 液晶屏幕的照片。
17