在水泥生料率值配料系统中需要监控水泥厂的多条生产线。它的硬件单元率值配料下位机硬件系统需要多个数码管和二极管来显示工况,并且还需要键盘控制。如果采用一般的显示方案则元器件多且复杂,导致系统可靠性降低,成本加大。采用集成了键盘显示功能的驱动芯片CH451后使设计方案大大简化,更具经济性和可靠性。
1 键盘显示方案比较
很多以单片机为核心的仪器仪表都需要数码管显示和键盘扫描。在单片机的开发过程中,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要,从而造成系统庞大,同时也降低了系统的可靠性。在单片机应用系统中,键盘显示通常可采用如下3种方案。
1.1 经典方案:使用8279芯片
采用并行接口的键盘显示专用芯片8279,该芯片是Intel于20世纪80年代首先推出的,应用较成熟,但所需外围元件(显示驱动、译码等)多、占用电路板面积大、综合成本高,在中小系统中常常大材小用。
1.2 自由方案:使用辅助单片机
在仪器的主控单片机之外,另外使用一个辅助的单片机专门做显示驱动和键盘扫描。为了提高串行接口的速度,辅助单片机需要尽可能高
1.3 新方案:使用CH451芯片
CH451由南京沁恒电子公司生产,是以硬件实现的多功能外围芯片,使用串行接口,支持显示驱动和键盘扫描以及μP监控,外围元器件极少,非常适合作为单片机的外围辅助芯片,工作原理如图1所示。
CH451的特点是:
a) 具有大电流驱动能力,段电流不小于25 mA,字电流不小于150 mA,平均段电流是辅助单片机方案的8倍,而且非连续的电流驱动能力更高。
b) 用硬件实现,串行接口、显示驱动、键盘扫描、μP监控之间相互独立不受干扰,串行接口的位时钟能够支持到10 MHz,数据传输速度比辅助单片机方案提高40倍,即使主控单片机频繁操作也完全不会影响显示驱动和键盘扫描以及μP监控。
c) 串行接口以硬件实现,不需要时钟;而显示驱动和键盘扫描使用约0.75 MHz的全内置主时钟多次分频后的扫描时钟,所以在工业现场不易受到干扰。即使受到强干扰,也能够在干扰后立即正常工作,不会影响串行接口、显示驱动和键盘扫描的后续操作。
d) 内置振荡和上电复位以及看门狗电路,不但不需要外部提供时钟和外部复位输入,还能够向外部的主控单片机提供上电复位和看门狗电路,进一步降低产品的成本,提供产品的可靠性。
现在与CH451类似的还有北京凌志比高科技的BC7281、hd7279a等,这些都是相当不错的显示和键盘接口芯片。
2 硬件设计
选用AMEG32作为主控芯片,晶振为8 MHz,因AVR单片机大多数指令仅需要1个时钟周期,而很多MCS-51类型的单片机指令为12个时钟周期,所以AVR单片机在同样晶振条件下比MCS-51快得多。CH451的串行接口的位时钟最快能支持10 MHz,所以用8 MHz的AMEGA32能够与CH451进行通信。
CH451芯片连线简单,一片CH451仅需要4根信号线就可以实现。4根信号线包括:串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。每增加一片CH451只需要增加一根串行数据加载线即可。在率值配料硬件系统中应用2片CH451进行并行级联,一片用来直接驱动6个共阴极数码管和读取8个按钮信息,另一片用来驱动24个发光二极管。硬件电路如图2所示。
尽管AVR自带SPI接口,但是考虑到CH451并不是真正意义上的SPI接口,它只是具有硬件实现的高速4线串行接口,所以必须用软件模拟的方式对CH451进行控制。
3 软件设计
AVR的集成开发环境种类比较多,如ICCAVR、WINAVR、BASCOM-AVR、IAR、CodeVisionAVR等,因此造成程序之间难以完全兼容,这也是目前开发的一个缺点。这里选择ICCAVR作为开发环境,应用C语言来实现程序。因为ICCAVR在我国有广泛的使用者,用C语言进行软件开发可以很好地实现代码的可读性和移植性,大幅度加快开发进度。
CH451具有硬件实现的高速4线串行接口,包括4个信号线:串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。启用键盘扫描功能时序图如图3示。
由图3可知,DIN、DCLK、LOAD作为CH451的输入其默认为高电平,DOUT作为CH451的输出其默认也是高电平。由此,需对AMEG16单片机I/O口初始化。需要注意,AVR单片机I/O口与MCS-51单片机I/O口不同。AVR单片机是标准双向口,复位时所有端口处于没有上拉电阻的输入状态。因此,在使用AVR单片机之前一定要根据引脚功能定义相对应的端口初始化,否则端口很可能在用做输出时不能正常工作(复位后默认为输入状态)。
这4根信号线虽然与SPI总线方式类似,但是不能用AMEG32自带的SPI接口来对CH451进行控制,因为这不符合时序要求。
软件设计包括CH451的初始化、显示和读按键3部分。初始化包括对CH451的设置,如开显示、键盘功能、设置BCD译码方式等。显示部分对6个数码管分时轮流显示,通过加载字数据命令来显示每个数码管的数字。读按键则是加载CH451的读取按键代码命令。单片机可以通过查询或者外部中断方式来读取。
6个数码管显示和读取8个按键信息主要用到的函数如下:
显示24个发光二极管用到的函数如下:
须注意的问题是:由于CH451驱动数码管或者LED的电流较大,会在电源上产生较大的毛刺电压,所以如果电源线或者地线的PCB(印
4 结束语
本文详细介绍了CH451与AMEG32的接口方案,并给出了具体的程序设计,现场实际运行稳定可靠。运用这些集成的键盘显示驱动芯片可以大大简化外围器件,节省单片机I/O口,提高系统的可靠性。