欢迎访问www.autooo.net
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(印制电路板)布线不合理,将有可能影响单片机或者CH451的稳定性。建议不要使用CH451的RTSI功能,在RTSI与地之间加1 000 pF电容。另外,如果由标准MCS-51单片机的I/O引脚对CH451进行较远距离的驱动,通常要加强MCS-51单片机的I/O的上拉能力,以便在远距离传输时保持较好的数字信号波形。对于强干扰应用环境,可以定期对CH451进行刷新,包括重新设定系统参数、重新设定显示参数、重新设定闪烁控制、重新加载各个显示数据。
4 结束语
本文详细介绍了CH451与AMEG32的接口方案,并给出了具体的程序设计,现场实际运行稳定可靠。运用这些集成的键盘显示驱动芯片可以大大简化外围器件,节省单片机I/O口,提高系统的可靠性。
欢迎访问www.autooo.net