摘要: 提出了一种用8位单片机控制16位带触摸屏的LCD的设计方法。TFT- LCD 模块T32QM 6450是一种点阵型LCD, 文中介绍了该模块以及触摸屏控制器ADS7843 的基本功能和工作原理。给出了W 77E58、T32QM6450 及ADS7843之间的接口设计方法, 研究了实现字符、汉字、画面显示及屏幕滚动的编程方法, 并给出了实现部分功能的通用子程序。
0 引言
随着嵌入式系统的广泛应用, 出现了大量的16位和32位的嵌入式处理器。而传统的8位单片机长期用于生产实践, 制造工艺成熟、性能更加可靠, 仍然占有相当大的市场, 特别是在汽车电子等对可靠性要求极高的领域。液晶显示位模块具有显示信息量丰富、功耗低、体积小、质量轻、无辐射等优点。
触摸屏作为一种特殊的计算机外设, 是目前自然、便利的一种人机交互方式。T32QM 6450液晶显示模块是带有触摸屏功能TFT 型彩色LCD显示屏, 分辨率为240×320, 支持2.6 ×105色显示。其功能强, 使用方便, 接口简单, 具有丰富的专用控制指令, 可方便地实现画面滚动显示及触摸屏等功能。
1 T32QM6450液晶模块结构
T32QM 6450是液晶模块, 主要由TFT - LCD 显示器、LED背光灯、触摸屏、源极驱动IC IS2102和栅极驱动IC IS2202构成, 其中Source Driver负责提供列上各色素点的驱动电压, 而Ga te Driver控制每行像素的选通状态。TFT液晶的每个像素点都是由集成在像素点后面的薄膜晶体管来驱动, 从而可以做到高速度、高亮度、高对比度显示屏幕信息, 可以控制显示灰度, LCD通过总线与处理器连接, 实现数据和指令的传递。
2 T32QM6450与W77E58接口电路
硬件连接如图1所示。处理器芯片选用W77E58.该芯片是一个快速8051兼容微控制器, 其内核经过重新设计, 提高了时钟速度和存储器访问周期速度。它的指令集基本与8051相同, 多了一条DEC DPTR指令。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片74H C573的OE低电平, 即可实现16位数据的传送。
该系统是混合电压系统, 液晶模块和ADS7843用3.3 V 供电, 而处理器和锁存器是5 V 供电, 这2部分是不能直接相连的。所以还要处理好电平的转换问题, 电路中用4 片双向电平转换芯片74LVC4245, 它可以实现3.3 V和5 V的相互转换。
为实现触摸屏功能, 电路中用1 片触摸屏控制器ADS7843.它是电阻式触摸屏控制芯片, 具备串行12 位A /D转换功能, 在关闭模式下, 功耗仅为0.5uW, 在12 V、125 kH z的工作模式下功耗为750 uW3. 文中仅结合电路对主要功能加以介绍。CS是芯片选通端; DCLK 是时钟输入端, 由P20 脚软件模拟时钟信号输入; DIN 是数据串行输入端, 控制数据通过该引脚输入; X+ 、Y + 、X- 、Y - 是接触点坐标数据输入端; INT是中断引脚, 用于通知MCU 有触摸事件发生, DOUT 将转换后的触摸位置数据串行输出到MCU。
3 LCD 显示的程序设计
3. 1 指令、数据的读写
通过对LCD模块的RS引脚设置1或0 值, 即可实现处理器和LCD之间数据或指令的传送。当设定RS= 1, 传递的是数据信号; 设定RS= 0, 传递的是指令信号, 模块的D8~ D15端口接收到的数据(即高8位)代表寄存器号, D0~ D7接收到的是控制指令。部分子程序如下:
3. 2 字符、汉字及颜色的显示
可调用以上子程序方便地向LCD模块发送控制命令和颜色信息。T32QM 6450模块共有158 个寄存器, 通过调用WriCom 函数可向相关寄存器写入控制命令, 然后调用WriData写入2字节的颜色信息, 其RGB格式为: 红色为高5位( B it15~B it11), 绿色为中间6位( B it10~ B it5), 蓝色为低5位( B it4~B it0)。经以上操作, 即可在指定位置或区域显示色彩、字符、图象等。如要在屏上坐标为(X, Y) 的点以颜色Co lo r显示一个字符或汉字, 只要知道其点阵数组, 在每个要显示的点调用W r iDa ta(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位单片机, 兼容性强, 为其在便携式系统中的应用提供了一种方法。
[1]. ADS7843 datasheet https://www.dzsc.com/datasheet/ADS7843+_1055179.html.
[2]. W77E58 datasheet https://www.dzsc.com/datasheet/W77E58_705272.html.
[3]. 74HC573 datasheet https://www.dzsc.com/datasheet/74HC573_1811819.html.
[4]. D15 datasheet https://www.dzsc.com/datasheet/D15_1092218.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。