基于P89LPC932的LCD组态设计
P89LPC932的增强型UART具有一个独立的波特率发生器,波特率取决于对BRGR1和BRGR0的值。如果SMOD1(PCON.7)置位,定时器T1被2分频。但需要修改BRGR1和BRGR0寄存器的值前,为了避免向波特率发生器装入错误的值,必须在RBGCON寄存器中的BRGEN位为0才能写入。程序设计使用外晶振(11.0592MHz)选择串行通信模式3,并利用波特率发生器设置通信速率。波特率发生器计算为
(BRGR1,BRGR0)=(11.0592MHz/19200)-16=0x0230
初始化流程如图6所示。
若不使用波特率发生器设置串行通信的通信速率,可以使用定时器。其计算公式为
波特率=2fosc×192/[0xFF-(TH1)]
选用11.0592MHz的外晶振,波特率为19200bps,则计算出TH1=0xFA。其初始化流程如图7所示。
(2)EEPROM读写操作
P89LPC932拥有512字节的片内数据EEPROM,用于保存配置参数数据。EEPROM由SFR控制,可字节读、字节写以及可擦除(通过行填充和块填充)。用户通过3个SFR和1个中断对其进行读、写和填充。EEPROM可寻址空间为512个字节,使用9位地址。当数据地址大于0xFF时,置控制寄存器DEECON的第0位。值的注意的是,在访问EEPROM时,必须对DEECON的第0位清0或置1。在仿真过程中发现,当读一个地址少于0xFF的字节数据后,再次向同一地址数据时出现错误。检查的结果是第一次读数时DEECON第0位为0,但第二次读数时DEECON的第0位就自动地变为1。所以在读写数据时,必须对DEECON的第0位赋正确的值。
javascript:window.open(this.src);" style="cursor:pointer;"/>
在任何模式中操作完成之后,硬件都会置位EEIF位。如果EEPROM中断允许位(EIEE)和系统中断位(EA)都置位。将产生中断请求。中断产生后必须由软件清零。其初始化程序如下:
EIEE=TRUE;/*允许EEPROM中断*/
EA=1; /*允许系统中断*/
(3)辅助RAM的使用
我们所所有从串行通信得到的实时数据存放在辅助RAM区内。读写程序如下:
#include"ABSACC.H"
bData=XBYTE; /*辅助RAM读操作*/
XBYTE=bData; /*辅助RAM写操作*/
5 组态软件设计
组态软件和仿真软件是由VB开发的。当LCD进入组状态后,发送请求组态信号。 组态软件检测LCD的站号,并向相应的LCD发出组态初始化信息包。LCD发出组态初始化信息包。LCD接收到组态软件开发的数据包并发出回答信息包。组态软件依次把中文内码和单位传送到LCD。
结语
采用P89LPC932芯片实现了具有组态功能的LCD显示。系统硬件电路简单,易于根据用户和系统的需要设置显示的项目和个数,实现了对AI、AO、DI、DO和运行参数的显示和修改。