微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32之TFT-LCD液晶

STM32之TFT-LCD液晶

时间:11-13 来源:互联网 点击:



R7:显示控制命令。该命令CL位用来控制是8位彩色,还是26万色。为0时26万色,为1时八位色。D1、D0、BASEE这三个位用来控制显示开关与否的。当全部设置为1的时候开启显示,全0是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗

R32,R33:设置GRAM的行地址和列地址。R32用于设置列地址(X坐标,0~239),R33用于设置行地址(Y坐标,0~319)。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了.

R34:写数据到GRAM命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数.

R80~R83:行列GRAM地址位置设置。这几个命令用于设定你显示区域的大小,我们整个屏的大小为240*320,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据R3的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。
//--------------------------------------------------------------------------------------------------------
我们接下来看看要如何才能驱动ALIENTEK TFTLCD模块,TFTLCD显示需要的相关设置步骤如下:
1)设置STM32与TFTLCD模块相连接的IO。
这一步,先将我们与TFTLCD模块相连的IO口设置为输出,具体使用哪些IO口,这里需要根据连接电路以及TFTLCD模块的设置来确定。
2)初始化TFTLCD模块。
其实这里就是上和上面OLED模块的初始化过程差不多。通过向TFTLCD写入一系列的设置,来启动TFTLCD的显示。为后续显示字符和数字做准备。
3)通过函数将字符和数字显示到TFTLCD模块上。

MiniSTM32开发板的IO口对应关系如下:
LCD_LED对应PC10;
LCD_CS对应PC9;
LCD _RS对应PC8;
LCD _WR对应PC7;
LCD _RD对应PC6;
LCD _D[17:1]对应PB[15:0];

基本GUI接口函数简介(一)

80并口时序图:

(一) :
//------写数据函数---------这里我们采用了宏定义的方式,以提高速度(由于显示图像写入读出频繁):
#define LCD_WR_DATA(data){\

LCD_RS_SET;\ //选择数据
LCD_CS_CLR;\ //选择片
DATAOUT(data);\ //把数据放入端口
LCD_WR_CLR;\ //WR写数据来个上升沿(将数据写入)
LCD_WR_SET;\
LCD_CS_SET;\ //CS上升沿 写入数据完成
}
上面函数中的‘\’是C语言中的一个转义字符,用来连接上下文,因为宏定义只能是一个串,而当你的串过长(超过一行的时候),就需要换行了,此时就必须通过反斜杠来连接上下文。这里的‘\’正是起这个作用
(二):
因为该函数使用频率不是很高,不使用宏定义
//----向寄存器发送指令函数------
void LCD_WR_REG(u8 data)
{
LCD_RS_CLR; //选择指令
LCD_CS_CLR; //选中芯片
DATAOUT(data); //端口放上指令
LCD_WR_CLR; //WR写数据来个上升沿(将数据写入)
LCD_WR_SET;
LCD_CS_SET; //CS上啦完成操作
}
(三) :
由下面2个adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=beac235ac5bc9a59&k=%BC%C4%B4%E6%C6%F7&k0=%BC%C4%B4%E6%C6%F7&kdi0=0&luki=5&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=599abcc55a23acbe&ssp2=1&stid=0&t=tpclicked3_hc&td=1831118&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fbbs%2Fdpj%2D33647%2D1%2Ehtml&urlid=0" id="0_nwl" mpid="0" rel="nofollow" target="_blank">寄存器设置快速IO


//-------读取寄存器值函数---------
u16 LCD_ReadReg(u8 LCD_Reg)
{
u16 t;
LCD_WR_REG(LCD_Reg); //写入要读的寄存器号
GPIOB->CRL=0x88888888; //将端口PORTB设置成输入模式
GPIOB->CRH=0x88888888;
GPIOB->ODR=0xffff; //端口上拉预备输入
#ifdef LCD_FAST_IO //判断快速IO口是否宏定义过
LCD_RS_SET; //运用快速IO口 (例:#define LCD_CS_SETGPIOC->BSRR=1<9 //片选口PC9)
LCD_CS_CLR;
LCD_RD_CLR;
LCD_RD_SET; //RD脚产生上升沿
t=DATAIN;
LCD_CS_SET;
#endif
GPIOB->CRL=0x33333333; //恢复输出状态
GPIOB->CRH=0x33333333;
GPIOB->ODR=0xffff;
return t;
}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top