MSP430与液晶显示器的串行接口方案
微控制器送往uPD16682A的数据有显示数据或显示命令两种。两者的区分由uPD16692A控制信号线A0的状态来表征,因此将MSP430F149的Port2.2端口电平置高或置低就可控制uPD16682A的状态。
按照uPD16682A串行接口听原理,为了向其写入一个8位或16位的数据,首先必须通过程序设计向uPD16682A产生一个时钟输出。时钟产生可以有两种方式。一是利用微控制器定时器中断,定时依次从I/O端口输出高、低电平。二是利用指令产生和数据同步的时钟脉冲,通过产生一个电平的跳变沿将位数据送到uPD16682A,然后通过逐次移位,就可以将一个8位数据写进uPD16682A内部的数据锁存器。在第8个时钟脉冲的上升沿,锁存器中数据炙一个8位的并行数据,同时根据A0信号线睥电平来显示图符或执行相应的控制命令。虽然这里的串行数据的发送没有具体波特率和数据接口协议的要求,但是在编写程序时,必须认真考虑串行方式下各个信号的时序。以下是向uPD16682A写入一个8位控制命令的程序:
void Set_Address(unsigned char column,unsigned char page){
unsigned char ColH,ColL;
//设页地址
ColH=page0xB0;
Write_Command(ColH);
//设列地址
ColH=(column&0xF0)>>4;
ColH=0x10;
ColL=column&0x0F;
Write_Command(ColH);
Write_Command(ColL);
}
2.4.2 字符显示屏上的曲线绘制程序
有了上述程序,就可以方便地在uPD16682A上指定位置显示设定的图案和字符了。如果用户需要动态地展示信号波形和曲线,还可设计出专用的画点和画线函数,从而大大提高了字符液晶显示屏的动态图形显示能力。通常而言,液晶显示屏上的一点对应液晶显示驱动器显示RAM中的一位。显示RAM中的某位为1,则在液晶显示屏上的相应点即为点亮状态;而要想实现在液显示屏上动态的显示点和曲线,必须用到显示RAM中的数据。通常的做法是读取指定点周围的数据,然后在这些点中的某个指定位置插入1位,从而将液晶显示屏上的指定点点亮,这就是基本的画点原理。但是,在串行方式下,uPD16682A不具备数据读出能力。为此,我们仿照显示RAM显示的方式,在MSP430F149的数据区开辟了一块和uPD16682A显示RAM同样大小的内存块,在向uPD16682A显示RAM写入显示数据的同时,也向该内存块的对应位置写入同样的数据,保证了该内存块的内容和uPD16682A显示RAM中的数据是同步刷新的。因此在画点函数中,我们直接从该内存块中取出需要的显示数据进行处理,然后再通过自定义串行总线送往uPD16682A进行显示。用这种方式,我们实现了在液晶显示屏的任意位置画出一个点,并且还可以利用这种方式编制自己的画线函数,这样就使uPD16682A具备了动态显示波形的能力,也就扩展了字符液晶显示屏动态曲线波形的显示功能。以下是uPD16682A编写的画点函数:
void DrawPointXY(unsigned char x,unsigned char y){
unsigned char page,dot,dat,CouL,CouH;
dot=0x01;
page=y/8; /*计算当前点页地址、列地址*/
r_page=page; /*点亮当前点并保持周围点信息不变*/
r_column=x;
page=0xB0;
dat=y%8;
dot=dot<<dat;
CouH=(x&0xF0)>>4;
/*通过自定义串行总线向uPD16682A发送数据*/
CouH=CouH0x10;
CouL=(x&0x0F);
Write_Command(page);
Write_Command(CouH);
Write_Command(CouL);
dat=DisplayRam[r_page][r_column];
dat=dot;
Write_DisplayData(dat); /*向显示RAM写入数据*/
}
程序中的二维全局数组DisplayRam[][]即为在MSP430F149中开辟的内存块,用于保存当前uPD16682A显示RAM中对应位置的显示数据。全局变量r_page和r_column分别保存8位显示数据的页地址和列地址。
如果想进一步实现曲线的显示,程序中则需要计算两个点之间在X方向和Y方向上的偏差,并依据偏差大小来插入要显示的点。本系统中,用这种设计方法获得了平滑的曲线显示效果。
3 应用
经实践证明,本文所介绍的利用微控制器的I/O端口实现微控制器和液晶显示驱动器之间的自定义串行总线的设计方案,取得了很好的应用效果。设计的液晶显示系统工作稳定可靠,开发的在字符型LCD下动态显示曲线波形的技术,扩展了字符型LCD动态显示曲线的功能,也为液晶显示驱动器的应用开发提供了一种新的途径。本文所提出的用软件模拟串行总线的方法具有很强的通用性,为实现I2C串行接口提供了一种新方式。