在许多使用单片机控制的场合,为改善人机界面,经常要使用液晶显示器显示控制机构的工作状态及各种参数信息以供操作人员作出决策,由于液晶显示器是一个低速器件,加上它对接口的要求比较特殊,使得单片机对它的控制变得较为烦琐,从而占用了许多机器时间。在我们研制的数字录音机中使用了一块16×2的字符型液晶显示器,由于单片机不断地更新液晶显示器上的显示信息,同时又要处理语音数据,所以节约机器时间显得尤为重要,为此我们采用以端口地址来区分命令的方法,成倍地节约了单片机对液晶操作的时间。
1.硬件接口原理
在笔者所设计的系统中使用的16×2字符型液晶显示器为南京国显电子公司生产,它与8031单片机的典型连接电路如图1所示,模块引脚功能如表1所列,此液晶显示器的连接电路与一般接口电路的不同之处在于:对液晶的操作是在加到读写选择引脚R/W及指令数据选择引脚RS上的两信号稳定tAS(tAS>140ns)时间后,在片选信号E上再施加一个正向脉冲信号,在这一脉冲下降沿的数据为有效数据,而一般接口电路是片选信号在整个操作过程中均有效。液晶显示器的读写时序如图2所示。
在图1所示的典型电路中,按图2的时序要求对液晶显示器进行写操作时,首先要在P2.5、P2.6送出一个状态指示信号,表明将要进行的操作,然后在P1口上送出所写的数据(命令),然后使P2.7变高、再变低,这样共需4条指令和4个指令周期。为节约时间,我们用了地址区分状态的方法,具体电路见图3。
采用图3电路时,其寄存器的选择功能如表2所列。
为确定图3所示电路是否能满足液晶显示器的时序要求,我们需进一步分析由8051的读写时序而产生的RS、R/W、E信号的时间关系。图4为其时序图,从图中可以看出:写操作的时序及由此而产生RS、R/W、E及数据的时间关系(8051工作频率为12MHz,故一个时钟周期约为83ns)为:
地址建立时间tAS=4T(约332ns);允许脉冲宽度PWEH=6T(约498ns);
地址保持时间tAH=2T(约166ns);
数据建立时间tDSW=7T(约580ns);
而液晶显示器要求tAS≥140ns,PWEH≥450ns,tAH≥10ns,tDSW≥195ns,因此均可满足要求。
对读周期的分析也可以得到同样的结论,采用该改进电路后,对液晶的任何操作都可用一条MOVX指令完成,在此电路中ADDRESS=0000H表示写指令寄存器;ADDRESS=08XXH表示读忙标志和地址计数器;ADDRESS=04XXH表示写数据寄存器;ADDRESS=0CXXH表示读数据寄存器。因此指令的执行时间是2个机器周期,比图1电路节约了一半的时间,当对液晶显示器的操作比较频繁时,节约的时间是相当可观的。
2.软件示例程序对比
2.1典型应用程序
采用典型应用电路(图1)的“写命令”程序如下:
mov p1,#command;将命令内容准备好
setb p2.5
clr p2.6;开始发送
setb p2.7
clr p2.7
setb p2.6 ;发送完毕
…
共需4个机器周期
2.2改进应用程序
采用改进应用电路(图3)的“写命令”程序如下:
commamd-wr equ#0000h
…
mov dptr,command-wr;#0000表示将执行“命令写”操作
mov a,#command;将命令内容准备好
movx @dptr,a ;发送命令
只需一条movx指令,2个机器周期