基于STM32的RA8806控制器LCD设计
引言
在现代电子设备中,触摸屏的应用使电子设备更智能化、人性化。在手机、导航仪、电子仪器、咨询终端等设备中,作为信息交流的媒介,触摸屏具有界面编程灵活、反应速度快、功耗低、体积小的特点。
RA8806是一个文字与绘图模式相结合的点矩阵液晶显示控制器,最大能驱动640×240或320×480分辨率的LCD液晶触摸屏,可以显示文字、图片、符号等复杂信息,支持文字、图片混合显示和区域卷动,支持90°,180°,270°的文字旋转显示,支持4/8 b的8080和6800系列两种MPU接口,提供4×8或8×8的键盘扫描接口,提供使用者自行创建字型及符号的功能,可以进行文字对齐、设置粗体字、设置行间距和LCD对比度、背光调节。
STM32系列嵌入式芯片是常用的微控制器芯片,本文使用的是内核为32位CotrexTM-M3的STM32F103,并行LCD接口兼容8080/6800模式,通过配置FSMC来连接LCD。在实验中还把UCGUI软件移植入STM32F103中,UCGUI是一种嵌入式系统中常用的图形支持软件,适用于各种尺寸的LCD,将UCGUI软件移植入微控制器可以方便的绘制图形、文字、控件等人机交互界面元素。
1 RA8806数据总线接口方式
常见的RA8806是用I/O或总线方式与单片机或嵌入式系统连接,本文采用的是320×240分辨率的RA8806控制器触摸屏以总线方式与STM32F103连接,连接的电路如图1所示。
在设计中将BUSY引脚9空置,复位引脚11接高电平,可以通过STM32F130复位完成整个电路复位。RA8806和STM32F103都是采用了Intel 8080模式连接,数据总线宽度为8 b。
2 软件设计
2.1 软件初始化
系统软件初始化包括STM32F103初始化、UCGUI初始化和RA8806控制器初始化,在STM32F103初始化中FSMC的配置为:
在RA8806控制器中,触摸屏有自动模式和手动模式两种,自动模式和手动模式中,都可以通过触碰产生中断读取触碰坐标值,手动模式还可以通过轮询触碰事件读取坐标,在实验中采用的是手动模式中的轮询方式,这种方式的流程图如图2所示。在初始化RA8806时,寄存器TPCR1,TPCR2,INTR须按流程图设置,DWWR=AWRR=0x27,DWHR=AWBR=0xEF,其他寄存器默认设置。
2.2 触摸屏坐标
触摸屏的坐标分为逻辑坐标和物理坐标,逻辑坐标为用户触摸是手指所点击屏幕的坐标,物理坐标为触摸屏显示的实际坐标,逻辑坐标和物理坐标比较接近,如果相差太多就需要校准。
RA8806是通过一个10位的A/D转换器连接4线电阻式触摸屏,用户触摸后产生的逻辑坐标存于TPXR,TPYR和TPZR 3个寄存器中,TPXR中存放了x轴坐标的高8位,TPYR中存放了y轴坐标的高8位,TPZR的bit[1:0]是x轴的低二位,bit[3:2]是y轴的低二位。
为了便于处理逻辑坐标,将TPXR和TPYR寄存器的数据左移2位进行计算,再分别取出TPZR寄存器中的低二位进行或运算,得出x,y轴的坐标。这个逻辑坐标不能直接显示,需要进行校准处理后根据触摸屏的大小转换为物理坐标显示,设计程序如下:
如果用户触摸的范围超出了设定的显示窗口,就需要对逻辑坐标(x,y)进行判断,如果超出了范围,逻辑坐标无效,就将鼠标设置到对应的边缘,反之逻辑坐标有效。
2.3 触摸屏校准
由于触摸屏自身的性能不好,或使用一段时间后会发现逻辑坐标和物理坐标的偏差越来越大,坐标不准造成误操作影响用户使用,这样就要通过校准程序来减少误差。电阻式触摸屏的电压成线性均匀分布,假设触摸屏上一点的逻辑坐标为(xA,yA),对应的物理坐标为(xDA,yDA),由电阻式触摸屏的线性特性可知,任意一点B的逻辑坐标可以用下面公式表示:
只需在触摸屏上取3个物理坐标已知的点A,B,C,这3个点应该分布均匀不靠近边缘以免不准确,通过读取TPXR,TPYR,TPZR寄存器读出逻辑坐标求出Kx,Ky,求出Kx,Ky后由式(1)校准逻辑坐标与物理坐标,图3(a)为校准的界面,图3(b)为校准后计算的Kx,Ky,由图可以看出两个系数都接近于1,说明触摸屏的坐标误差比较小。
3 结语
RA8806控制器在软件设计上方便、灵活,能满足开发人员对中等尺寸触摸屏控制器的要求,丰富的功能和较高的性价比使RA8806控制器的LCD在市场上有很大的优势,基于RA8806的触摸屏与STM32嵌入式系统通过数据总线方式相结合,可以构造出理想的人机交互界面,具有广阔的应用领域。
- 基于液晶触摸屏技术的太阳能热水器控制系统设计与实现(01-03)
- STM32-FSMC机制的NOR Flash存储器扩展技术(11-20)
- 基于Cortex-M3的 STM32微控制器处理先进电机控制方法(11-23)
- 基于STM32控制的声音导引系统(01-16)
- 基于Cortex-M3的STM32微控制器处理先进电机控制方法(03-07)
- 基于STM32的嵌入式语音识别模块设计(03-29)