打印

基于W77E58的LCD控制及触摸屏接口设计

[复制链接]
445|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Violin11|  楼主 | 2019-4-1 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于W77E58的LCD控制及触摸屏接口设计

    0引言

  随着嵌入式系统的广泛应用,出现了大量的16位和32位的嵌入式处理器。而传统的8位单片机长期用于生产实践,制造工艺成熟、性能更加可靠,仍然占有相当大的市场,特别是在汽车电子等对可靠性要求极高的领域。液晶显示位模块具有显示信息量丰富、功耗低、体积小、质量轻、无辐射等优点。

  触摸屏作为一种特殊的计算机外设,是目前最自然、便利的一种人机交互方式。T32QM6450液晶显示模块是带有触摸屏功能TFT型彩色LCD显示屏,分辨率为240×320,支持2.6×105色显示。其功能强,使用方便,接口简单,具有丰富的专用控制指令,可方便地实现画面滚动显示及触摸屏等功能。


  1T32QM6450液晶模块结构

  T32QM6450是液晶模块,主要由TFT-LCD显示器、LED背光灯、触摸屏、源极驱动ICIS2102和栅极驱动ICIS2202构成,其中SourceDriver负责提供列上各色素点的驱动电压,而GateDriver控制每行像素的选通状态。TFT液晶的每个像素点都是由集成在像素点后面的薄膜晶体管来驱动,从而可以做到高速度、高亮度、高对比度显示屏幕信息,可以精确控制显示灰度,LCD通过总线与处理器连接,实现数据和指令的传递。


  2T32QM6450与W77E58接口电路

  硬件连接如图1所示。处理器芯片选用W77E58.该芯片是一个快速8051兼容微控制器,其内核经过重新设计,提高了时钟速度和存储器访问周期速度。它的指令集基本与8051相同,多了一条DECDPTR指令。8051每12个时钟周期为一个机器周期,而W77E58每4个时钟周期为一个机器周期,提高了指令执行速度。另外,W77E58还可调整MOVX指令的周期,范围为2~9个机器周期,这种设计使W77E58能够更有效访问慢速或快速外部RAM及外设。

图1液晶屏与W77E58硬件连接电路

  因为W77E58是高速8位单片机,而该LCD模块采用16位总线接口,所以电路中用了2片锁存器74HC573,用P24~P27口分别控制2片锁存器的锁存使能和输出使能引脚LE(下降沿锁存)、OE(低电平有效),先给第一片74HC573的LE一个高电平,通过P1口传送低8位数据,然后给该片的LE低电平锁存当前数据;给第二片的LE高电平,同样通过P1口传送高8位数据并锁存,最后同时给2片74HC573的OE低电平,即可实现16位数据的传送。

  该系统是混合电压系统,液晶模块和ADS7843用3.3V供电,而处理器和锁存器是5V供电,这2部分是不能直接相连的。所以还要处理好电平的转换问题,电路中用4片双向电平转换芯片74LVC4245,它可以实现3.3V和5V的相互转换。

为实现触摸屏功能,电路中用1片触摸屏控制器ADS7843.它是电阻式触摸屏控制芯片,具备串行12位A/D转换功能,在关闭模式下,功耗仅为0.5uW,在12V、125kHz的工作模式下功耗为750uW3.文中仅结合电路对主要功能加以介绍。CS是芯片选通端;DCLK是时钟输入端,由P20脚软件模拟时钟信号输入;DIN是数据串行输入端,控制数据通过该引脚输入;X+、Y+、X-、Y-是接触点坐标数据输入端;INT是中断引脚,用于通知MCU有触摸事件发生,DOUT将转换后的触摸位置数据串行输出到MCU。


  3LCD显示的程序设计

  3.1指令、数据的读写

  通过对LCD模块的RS引脚设置1或0值,即可实现处理器和LCD之间数据或指令的传送。当设定RS=1,传递的是数据信号;设定RS=0,传递的是指令信号,模块的D8~D15端口接收到的数据(即高8位)代表寄存器号,D0~D7接收到的是控制指令。部分子程序如下:

  


3.2字符、汉字及颜色的显示

  可调用以上子程序方便地向LCD模块发送控制命令和颜色信息。T32QM6450模块共有158个寄存器,通过调用WriCom函数可向相关寄存器写入控制命令,然后调用WriData写入2字节的颜色信息,其RGB格式为:红色为高5位(Bit15~Bit11),绿色为中间6位(Bit10~Bit5),蓝色为低5位(Bit4~Bit0)。经以上操作,即可在指定位置或区域显示色彩、字符、图象等。如要在屏上坐标为(X,Y)的点以颜色Color显示一个字符或汉字,只要知道其点阵数组,在每个要显示的点调用WriData(Color)即可。图片的显示原理类似,用转换工具将图片转换成C格式的数组文件即可。下例为显示字符的程序:

  


  3.3滚动显示画面

  要实现指定区域的画面的滚动显示效果,可以通过设置寄存器R75~R80实现,其中寄存器R75、R76用于设置滚动区域的起始行;R77、R78设置画面的范围,即要滚动显示的行数;R79、R80设置每次滚动的行数,即步长。要注意的是,步长的设置并不是一劳永逸的,因为这里的步长是相对于滚屏初始化设置时的状态而言的,并非相对于上一次滚屏动作而言。图2举例说明了滚屏的设置及演示效果。

图2滚屏的设置及过程演示


图2所示过程的C程序如下:

  

  如果按照上述程序调试,则画面滚动较快,效果不明显。

  实际应用时,可以结合定时器,每隔一定时间改变一次寄存器R79、R80的值,一般是按递增的等差数列赋值,可以获得很好的视觉效果。所赋最大值不能超过319,因为屏幕最大只有320行;当所赋值为319,并且R75、R76所赋值为0时,可实现全屏画面的滚动显示。


  4结束语

  该显示系统调试完成后,通过串口和GPS模块连接,可以实时显示经度、纬度、时间等信号,显示效果良好。文中给出的子程序的形参多为2字节的整型值,可直接用于16位、32位单片机,兼容性强,为其在便携式系统中的应用提供了一种方法。



使用特权

评论回复

相关帖子

沙发
Violin11|  楼主 | 2019-4-1 11:39 | 只看该作者
基于W77E58的LCD控制及触摸屏接口设计

文档1.pdf

186.95 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

717

主题

1010

帖子

3

粉丝