战舰stm32开发板盘-9增值2alientek应用an atk-4.3tftlcd模块使用说明_第1页
战舰stm32开发板盘-9增值2alientek应用an atk-4.3tftlcd模块使用说明_第2页
战舰stm32开发板盘-9增值2alientek应用an atk-4.3tftlcd模块使用说明_第3页
战舰stm32开发板盘-9增值2alientek应用an atk-4.3tftlcd模块使用说明_第4页
战舰stm32开发板盘-9增值2alientek应用an atk-4.3tftlcd模块使用说明_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AN1413ATK-4.3’TFTLCD电容触摸屏模块1、ATK-4.3’TFTLCD电容触摸屏模块ATK-4.3TFTLCD模块是ALIENTEK4.3寸电容触摸屏模块。该模块屏幕分辨率为800*480,16位真彩显示,采用NT35510驱动,该直接自带GRAM,无需外ALIENTEK其他液晶模块(2.4’/2.8’/3.5’/7’等)接口完全一致,因而原有产品,硬件上不需要任何变动,只需要稍微修改一下软件,就可以使用我们的4.3’TFTLCD电容触摸屏模块。模块引脚说明开发板上直接测试。ATK-4.3’TFTLCD电容触摸屏模块外观如图1.1.1所示:ATK-4.3TFTLCD34(2*17)个引脚同外部连接,对外接口原理图如图1.1.2所示:1.1.212345背光供电引脚从上表可以看出,LCD21IO1IO口,电容触摸屏需要4IO口,这样整个模块需要26IO口驱动。用于背光供电,3.3V用于除背光外的其他电源部分供电。LCD接口时1.2.133ns即可,理论上最大速度可以达到:3030W像素每秒,即刷屏速度可以达到每秒钟78.9帧。模块的速度相对较慢:ID(RD(ID))周期是160ns,读显存周期是400ns(RD(FM)。LCD驱动说ILI9341168080 片选信号。WR:向LCD写入数据。RD:从LCD数据。D[15:0]:16RST:硬复位LCD。复位脚,低电平有效,用于复位NT35510,实现液晶复位,在每次初始化之前,我们100K下拉电阻,所以如果这个引脚悬空,背光是不会亮的。必须接高电平,背光才会亮,另外可以用控制BL_CTR脚,从而控制背光的亮度。,,RGB565据总(8位没有用到MCU16位数据24LCDGRAM的对应关系.11624位GRAM从上表可以看出,NT3551024位GRAM16RGB565的对应关系,其实就是分别将的R、G、B数据,搬运到低位做填充,“凑成”24位,再显示。NT3551016GRAM读写接下来,我们介绍一下NT35510的几个重令,因为NT35510令很多,我们这详细的介绍。介绍:0XDA00,0XDB00,0XDC00,0X3600,0X2A00~0X2A03,0X2B00~0X2B03,0X2C00,0X2E00等14条指令。也就是用于LCD控制器的ID,该指令如表1.3.2所示:01↑110110101↑10000000001↑110110111↑10000000001↑110111001↑1000000001.3.2ID从上表可以看出,LCDID,总共由3个指令(0XDA00、0XDB000XDC00)构成,ID8位数据(即指令后的参数)的形式输出(8位固定0码支持多款LCD。接下来看指令:0X3600,这是控制指令,可以控制NT35510器的读写方显示方式(读GRAM也是一样。该指令如表1.3.3所示:01↑0000000011↑1.3.30X3600000100010110001011101111LCD填充颜色数据的扫描方式(默认)下面,该指令用于设置横坐标(x坐标1.3.5所示:01↑0000000011↑01↑0000000111↑01↑0000001011↑01↑0000001111↑2个坐标值:SCEC(SCEC1628位组成0X2A000X2A01SCEC没有变化,我们只需要设置一次即可(在初始化NT35510的时候设置,从而提高速度。0X2A00~0X2A03指令类似,指令:0X2B00~0X2B03,是页地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置纵坐标(y坐标。该指令如表01↑0000000011↑01↑0000000111↑01↑0000001011↑01↑0000001111↑1.3.60X2B00~0X2B032个坐标值:SPEP(SPEP都是16位的,由28位组成和结束值,SPEP0≤SP/EP≤799。一般在设置y坐标的时候,我们只需0X2B000X2B01SPEP没有变化,我们只需要设置一次即可(在初始化NT35510的时候设置,从而提高速度。01↑0000000011↑11↑11↑1.3.70X2C0X2C0016位,我们可以连续写入LCDGRAMGRAMMY/MX/MV设置的扫描方向进行自增。例如:假1(SC++SP++,一直到坐标:EC,EP结束,其间无需再次设置的坐标,从而大大提高写入速度。最后,来看看指令:0X2E00,该指令是读GRAM指令,用于NT35510的显GRAM01↑00000000参数1↑1参数1↑1参数1↑1参数1↑1参数1↑1参数1↑11.3.80X2E00该指令用于GRAM,如表1.3.8所示,NT35510在收到该指令后,第一次输出的是SC,SP开始82个颜色分量。比如:第用GRAM地址自增,方法同上,那么就按照上述规律去接收颜色数据。LCD,使用流程都可以简单的用以上流程图表示。其中硬复位和初始化序列,只需要执行一次即可。而画点流程就是:设置坐标→GRAM指令→写入颜色数据,然后在LCD上面,我们就可以看到对应的点显示我们写入的颜色了。读点流程为:设置坐标→读GRAM指令→颜色数据,这样就可以获取到对应点的颜色数据了。以上介绍,我们可以得出TFTLCD显示字符/数字需要的相关设置步骤如下:TFTLCDIOLCD。这里需要根据连接电路以及TFTLCD模块的设置来确定。1.3.1LCDSTM32LCDTFTLCDRSTSTM32RESET连接在一起了,只要按下开发板的RESET键,就会对LCD进行硬复位,所以这步直接由MCU的硬复位替代了。LCD供应商会提供给客户,我们直接使用这些序列即可,不需要深入研究。在初始化之后,LCD才可以正常使用。1.3.1左侧的流程,即:设置坐标→GRAM指令→写GRAM来实现,电容触摸屏接口说明ITO制成的横向与纵向的扫描电极,这些电极和地之间就构成IC依次扫描纵向和横向电极,并X*Y的传感电极阵列形成一个传感格子,当手指靠近触摸输交互电容又叫做电容,它是在玻璃表面的横向和纵向的ITO电极的交叉处形成电阵,即:X轴电极和Y轴电极,来检测每一格感应单元的电容变化,如图所示:ICIIC接口输出触摸数据的。ATK-4.3’TFTLCD13*8的驱动结构(8个感应通道,13个驱动通道OTT2001A作为驱动IC。5ALIENTEK4.3TFTLCD电容触摸屏模OTT2001A,GT811OTT2001A是类似的,大家可以参OTT2001A是旭曜科技生产的一颗电容触摸屏驱动IC,最多支持5点同时触摸,208SPI/IIC接口ALIENTEK4.3TFTLCD电容触摸屏上,OTT2001ASDA、SCL、RSTINT,SDASCLIIC通信用的,RST是复位脚(低电平有效,INT是中断输出信号,关于IIC我们就不详细介绍了,请学习。9接下来,介绍一下OTT2001A的几个重要的寄存器。据,该寄存器各位描述如表所示:位说明位说明ID如果读到的全是0,则说明没有任何触摸。(ODH从表中可以看出,每个坐标的值,可以通过4个寄存器读出,比如坐标1(X1,OTT2001A相关寄存器的介绍就介绍到这里,更详细的资料,请参考:OTT2001AIIC协议指导.pdf这个文档。OTT2001A只需要经过简单的初始化就可以正常使用了,初始化流2OTT2001A的输出坐标,默认是以:X2700,Y1500的分辨率输出的,也就是输出范围为:X:0~2700,Y:0~1500;MCU在到坐标后,必须根据LCD分辨率做一个换算,才能得到真实的LCD坐标。2、硬件连接本章实验功能简介:开机的时候先初始化LCD,LCDID,随后,根据LCDID判断是电阻触摸屏还是电容触摸屏,如果是电阻触摸屏,则先24C02的数据判断触摸屏OTT2001A的初始化代码,初始化电容触摸屏,随后进入KEY0KEY0就会进入强制校准程序。KEY0’与战舰STM32开发板的IO口对应关系如下:NCE对应PG12即FSMC_NE4;RS对应PG0即FSMC_A10;RDPD4CLK(CT_SCL)PB1;PEN(CT_INT)PF10;CS(CT_RST)连接PB2;1STM32的例程进行说明,MiniSTM322,如果使用ALIENTEKMiniSTM32开发板,且版本在V2.0MiniPEN们后续使用Mini板造成不便,所以大家大可放心去掉它。3、软件实现本实验(注:这里仅以战舰板代码为例进行介绍,MiniSTM32开发板对应代码与之相LCD驱动代ILI93xx.clcd.cNT35510驱动。这里整个代码比较多,我们就不全14LCD操作结构体(lcd.h里面定义typedef{u16LCD_REG;u16}的//注意16位数据总线时,STM32内部地址会右移一位对齐!#defineLCD_BASE ((u32)(0x6C000000|0x000007FE))#define 对应A100(即RS=0)LCDLCD_RAM0X6C00,0800(结构体地址自增A10的状态为1(即RS1。 LCD->LCD_RAM=DATA;// ;//这其中,CS、WR、RDIOFSMC控制,不需要我们手动设置。我们再来看lcd.h里面的另一个重要结构体:typedef{u16 //LCDu16 //LCDu16 //LCD u16wramcmd; //开始写gram指令u16 u16 LCD14个字节的内存,但是却可以让我们的驱动函有了以上了解,下面我们介绍ILI93xx.c里面的一些重要函数。{}{}u16{}{LCD->LCD_REG=LCD_Reg; LCD->LCD_RAM=LCD_RegValue;//写入数据}{return}void{}LCD进行了。{{}else{}else{{}}置同我们1.3接介绍的一样,只设置了SC和SP,可以加快速度。{ }POINT_COLOR是我们定义的一个全局变量,用于存放画笔颜色,顺带介绍一下另外一个全局变量:BACK_COLORLCD的背景色。LCD_DrawPoint函数虽然简单,但是至关重u16LCD_ReadPoint(u16x,u16{u16if(x>=lcddev.width||y>=lcddev.height)return0; elseif(lcddev.id==0X5510)LCD_WR_REG(0X2E00);//5510发送读GRAMelseLCD_WR_REG(R34);//IC发送读GRAM{GRAMOLEDGRAM的函数,而这里做了。因为OLEDGRAM1KTFTLCD模块为彩色的,点OLED16320×240320×240×2u16LCD_ReadPoint(u16x,u16{u16if(x>=lcddev.width||y>=lcddev.height)return0; elseif(lcddev.id==0X5510)LCD_WR_REG(0X2E00);//5510发送读GRAMelseLCD_WR_REG(R34);//IC发送读GRAM{RG的值}lcddev.id==0XC505)returnr;//这几种IC直接返回颜色值elsereturn elsereturn }LCD_ReadPoint函数中,因为我们的代码不止支持一种LCD{u16y0=y;u16if(!mode)//非叠加方式{{if(size==12)temp=asc2_1206[num][t];//调用1206字体elsetemp=asc2_1608[num][t]; {u16y0=y;u16if(!mode)//非叠加方式{{if(size==12)temp=asc2_1206[num][t];//调用1206字体elsetemp=asc2_1608[num][t]; {elsePOINT_COLOR=BACK_COLOR;{y=y0;x++;}}}{{if(size==12)temp=asc2_1206[num][t];//调用1206字体elsetemp=asc2_1608[num][t]; {{y=y0;x++;}}}}}在LCD_ShowChar函数里面,我们采用画点函数来显示字符,虽然速度不如开辟窗口LCD之间移植。该代码中我们用到同OLED实验章节介绍的提取方法是一模一样的。详细请参考OLED实验。void{与TFTLCD连接的IO口,并配置FSMC控制void{ //使能PORTB时钟 //使能PORTD时钟 //使能PORTE时钟 //使能PORTG时钟 //使能AFIO时钟GPIOB->CRL&=0XFFFFFFF0;//PB0推挽输出背光 //PORTD复用推挽输出 //PORTG12复用推挽输出A0 //bank1有NE1~4,每一个有一个BCR+TCR //地址建立时间(ADDSET)2个 //数据保存时间为16个HCLK //地址建立时间(ADDSET)1个 //4个 delay_ms(50);//delay50msdelay_ms(50);//delay50mslcddev.id=LCD_ReadReg(0x0000);<{ { lcddev.id|=LCD_RD_DATA();//这里读回0X04 //也不是6804,尝试看看是不是NT35310{ //这里读回0X10 { }}}}printf("LCDID:%x\r\n",lcddev.id); //9341初始{else {else {else {}else{}else {{}else{}else{}else{}else{}else{}else{}else{}else{} }LCDID,对不同的驱动器执行不同的初始化代码,从上面的代码可IC执行初始化操作,这样大大提高了特别注意:本函数使用了printfLCDID,所以,如果你在主函数里面没有初始化串口,那么将导致程序死在printfprintf,那么请注释掉它。电容触摸屏驱动代码 u8TP_Init(void){{ u8TP_Init(void){{;// return0;{//PB //PB12 //PF8,9,10AT24CXX_Init();//初始化24CXX { }}return}电容触摸屏的扫描函数,CTP_Scan函数将在后续介绍。程。接下来打开touch.h文件,看看该文件的代码:#ifndefTOUCH_H #defineTOUCH_H #include"sys.h"#include"ott2001a.h"#defineTP_CATH_PRES0x40typedef{

u8u8void

u16y[OTT_MAX_TOUCH]; floatxfac;floatyfac;shortxoff;short//b0:0,竖屏(适合左右为X坐标,上下为Y坐标的 1,横屏(适合左右为Y坐标,上下为X坐标的 u8extern_m_tp_dev #definePEN //PF10INT#defineDOUT #defineTDIN #defineTCLK #defineTCS CSvoidTP_Write_Byte(u8 u16TP_Read_AD(u8 ADu16TP_Read_XOY(u8xy); u8TP_Read_XY(u16*x,u16*y); u8TP_Read_XY2(u16*x,u16*y); voidTP_Drow_Touch_Point(u16x,u16y,u16color);//画一个坐标校准点voidTP_Draw_Big_Point(u16x,u16y,u16color); void u8 void voidTP_Adj_Info_Show(u16x0,u16y0,u16x1,u16y1,u16x2,u16y2,u16x3,u16u8TP_Init(void);上述代码,我们重点看看_m_tp_dev结构体,改结构体用于管理和记录触摸屏(包括电阻触摸屏与电容触摸屏)相关信息,其中:OTT_MAX_TOUCHott2001a.h定义的一u8OTT2001A_WR_Reg(u16reg,u8*buf,u8{u8i;u8ret=0;CT_IIC_Send_Byte(reg>>8);CT_IIC_Wait_Ack();CT_IIC_Send_Byte(reg&0XFF);CT_IIC_Wait_Ack();{u8OTT2001A_WR_Reg(u16reg,u8*buf,u8{u8i;u8ret=0;CT_IIC_Send_Byte(reg>>8);CT_IIC_Wait_Ack();CT_IIC_Send_Byte(reg&0XFF);CT_IIC_Wait_Ack();{ } returnret;}{u8i;CT_IIC_Send_Byte(OTT_CMD_WR);CT_IIC_Wait_Ack(); //发送写命令CT_IIC_Send_Byte(reg>>8);CT_IIC_Wait_Ack(); CT_IIC_Send_Byte(reg&0XFF);CT_IIC_Wait_Ack(); CT_IIC_Send_Byte(OTT_CMD_RD);CT_IIC_Wait_Ack(); for(i=0;i<len;i++)buf[i]=CT_IIC_Read_Byte(i==(len-1)?0:1);//发数据}{u8regval=0X00;}u8OTT2001A_Init(void){u8 GPIOC->CRL&=0XFFFFFF0F;//PC1 //PC1上拉GPIOC->CRH&=0XFF0FFFFF;//PC13推挽输出 //PC13 OTT_RST=0;delay_ms(100); printf("CTPID:%x\r\n",regval); //打印ID:0xff. return}u8CTP_Scan(u8mode){u8buf[4];u8i=0;u8 //空闲时,每进入10次进入才检测1次,从而节省CPU{ {{ { XY{{

}}}if(tp_dev.x[0]==0&&tp_dev.y[0]==0)mode=0;//读到全0,则忽略此次数据 //触发一次,则会最少连续监测10次,从而提高}}{)//{{}}return}5OTT2001A_WR_RegOTT2001A_RD_Reg分别用于读写OTT2001A,这里特别注意寄存器地址是16位的,与OTT2001A手册介绍的是有出入16CTP_Scan函数,CTP_Scan函数用于扫描电容触摸屏是否有按键按下,由于我们不是用的中断方式来OTT2001A的数据的,(OTT_STD_REG组下。接下来打开ott2001a.h文件,在该文件里面输入如下代码:#define#define#define #define

#defineOTT_SCAL_X #define #defineOTT_CMD_WR #define #define #defineOTT_TP1_REG0X0100 #defineOTT_TP2_REG0X0500 #defineOTT_TP3_REG0X1000 #defineOTT_TP4_REG0X1400 #de

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论