CH451的特点是:
a) 具有大电流驱动能力,段电流不小于25 mA,字电流不小于150 mA,平均段电流是辅助单片机方案的8倍,而且非连续的电流驱动能力更高。
b) 用硬件实现,串行接口、显示驱动、键盘扫描、μP监控之间相互独立不受干扰,串行接口的位时钟能够支持到10 MHz,数据传输速度比辅助单片机方案提高40倍,即使主控单片机频繁操作也完全不会影响显示驱动和键盘扫描以及μP监控。
c) 串行接口以硬件实现,不需要时钟;而显示驱动和键盘扫描使用约0.75 MHz的全内置主时钟多次分频后的扫描时钟,所以在工业现场不易受到干扰。即使受到强干扰,也能够在干扰后立即正常工作,不会影响串行接口、显示驱动和键盘扫描的后续操作。
d) 内置振荡和上电复位以及看门狗电路,不但不需要外部提供时钟和外部复位输入,还能够向外部的主控单片机提供上电复位和看门狗电路,进一步降低产品的成本,提供产品的可靠性。
现在与CH451类似的还有北京凌志比高科技的BC7281、hd7279a等,这些都是相当不错的显示和键盘接口芯片。
硬件设计
选用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进行控制。
软件设计
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的读取按键代码命令。单片机可以通过查询或者外部中断方式来读取。
须注意的问题是:由于CH451驱动数码管或者LED的电流较大,会在电源|稳压器上产生较大的毛刺电压,所以如果电源线或者地线的pcb(印