1.2 液晶显示电路的设计
显示部分采用ACM12864C液晶显示器,该模块价格低。控制器为KS0107和KS0108,工作温度范围:0℃~50℃,储存温度范围:-20℃~70℃,自带负电压发生电路,单+5V供电,带背光,可与各种微处理器直接接口,数据读写操作不受外部时钟控制,不带汉字库,占空比为1/64,外部共有20条引脚来进行外部接口。ACM12864C能够充分满足汉字显示的要求。通过必要的程序设计,可实现在充电过程中通过对充电器恒流、恒压、浮充等信号的采集,在ACM12864液晶显示器上实时动态地显示电池状态。SPCE061A与ACM12864的接口如图2所示。
1.3 键盘电路及I/O电路设计
本系统采用CPLD作为SPCE061A单片机和充电器的接口部分,实现I/O口扩展,并完成键盘扫描功能。CPLD的使用,取代了一些专用集成电路,减少了系统的复杂性,提高了系统的集成度。本系统采用硬件电路来完成对键盘的扫描工作,当有按键按下时,CPLD内部状态发生改变。按键弹起后,内部状态经CPLD自动处理转化为相应的键值被送到输出端口,供单片机扫描时取走键值。相对于软件判别键盘工作状态,这样不仅节省了SPCE061A的存储空间,还极大地提高了系统的工作速度,更好地实现了实时性。
CPLD选用ALTERA公司生产的MAX7000S 系列中的EPM7128SLC84-15。该芯片共有84个引脚,采用EEPROM技术制作;内含2 500个逻辑门,128个宏单元,时钟工作频率可达151.5MHz。通过CPLD对资源的整合,实现了用一片CPLD实现I/O电路、硬件扫描判别等,优化了硬件的布局。如需改变系统的功能,只需改变相应的源代码而不是硬件结构,因而具有很大的灵活性。
2 系统软件设计
2.1 主程序设计
本系统的软件部分采用C语言和汇编语言混合编制而成,因而该程序具有功能强大、设计完备等特点。主程序主要完成如下功能:
(1)系统初始化和参数的设置;
(2)充电器三种工作状态的检测和显示;
(3)控制各个充电器的工作和停止以及快速充电和普通充电两种充电方式的选择;
(4)蓄电池正反极性的判断,极性接反时自动进行语音报警;
(5)充电器充满蓄电池时自动关闭充电器;出现异常情况时自动进行语音报警;
(6)对快速充电时间长短进行设定。
系统主程序流程图如图3所示。
2.2 语音播放程序设计
SPCE061A的D/A转换通道的硬件实现大致有两种方式,一种是直接采用数/模转换器DAC方式,另一种是采用脉宽调制PWM驱动方式。SPCE061A音频输出的结构就是由两个DAC通道或一个PWM驱动通道构成。这两种实现方式实质都为数/模转换,都是将数字信号转换为电流模拟信号输出。SPCE061A的音频输出采用双通道模/数转换方式,即数字信号通过10位DAC转换成3mA驱动的电流模拟信号输出。语音提示输出直接采用DAC通道,经信号放大后,由扬声器输出。语音播放流程图如图4所示。
程序编写如下:
#INCLUDE “hardware.h”
# INCLUDE “S480.h”
Void Sound (unsigned int i)
{
SACM_S480_Initial(1);
SACM_S480_Volume(10);
SACM_S480_Play(i,1,0);
while(SACM_S480_Status()&0x0001);
{
SACM_S480_ServiceLoop();
}
SACM_S480_Stop();
}
2.3 CPLD程序设计
VerilogHDL语言是硬件描述语言,是描述硬件电路的功能、信号连接关系及定时关系的语言,通过语言编程来表示逻辑器件及系统的功能和行为。其具有设计技术齐全、方法灵活、支持广泛、硬件描述能力强、与器件工艺无关、易于共享和复用等优点。与VHDL相比,VerilogHDL是一种非常容易掌握的硬件描述语言,而掌握VHDL设计技术就比较困难。故采用VerilogHDL语言来设计接口电路,能充分利用VerilogHDL语言在系统级硬件描述上的优点。
CPLD实现两个多路选择器和一个键盘扫描电路功能。程序各端口功能如表1所示。datain1由datain1[0]......datain1[17] 18位输入端口组成,分为6组,每组3个端口。rs由rs[0]、rs[1]、rs[2]3位端口组成,最多可以表示8个2进制数(本设计用到其中的6个)来表示端口选择位。dataout1由 dataout1[0]、dataout1[1]、dataout1[2]3位组成,表示输出端口。datain1、dataout1、rs组成一个多路选择器,实现选择输入功能,rs的值决定选择datain1的哪一组信号送给dataout1,由dataout1输出。datain2由datain2[0]、 datain2[1]组成,表示输入端口。dataout2由dataout2[0]......dataout2[11]12位输出端口组成,分成6组,每组2位。同理,datain2、 dataout2、rs组成另一个多路选择器,实现选择输出功能,rs的值决定选择datain2的2位信号从dataout2的哪一组输出。rt为控制脉冲,当为上升沿时实现选择输入功能,当为下降沿时实现选择输出功能。datain3为16位按键输入口(低电平有效),每位代表一个按键。dataout3为4位按键值输出端口,当有按键按下时,经CPLD内部状态发生改变,按键弹起后,内部状态经CPLD自动处理转化为相应的键值从dataout3输出(高电平有效)。如当datain3位为1111111111111101时,表示2号键按下,dataout3将输出0010,表示按键值为2。
3 CPLD仿真
从最初的电路设计思想到QuartusII的波形仿真、再到CPLD的芯片编程结束,开发设计流程图如图5所示。
在QuartusII 平台上,对VerilogHDL程序编译后,用Simulator对之进行时序仿真,得到如图6所示的结果。
由图中可以看到各预定功能都得到了实现,如datain3为111111011111时,dataout3输出为0110,仿真结果完全符合电路的要求。
基于SPCE061A+CPLD设计的电动自行车充电系统,简化了系统软硬件设计,提高了电路的稳定性和可靠性;使系统设计灵活、开发周期短、集成性更强,同时使系统易于升级和扩展。经检验测试,各项技术指标均达到了设计要求。
参考文献
1 张鹏举,李树华,窦海峰.用单片机及CPLD实现的多功能控制系统设计.内蒙古大学学报(自然科学版),2005;36(3):316~320
2 李向舜,刘明慧.基于CPLD技术的AD转换器接口电路设计.压电与声光,2005;27(4):385~389
3 李春雷,王祖强.基于CPLD的电子存包系统的设计与实现.电子技术应用,2005;31(7):69~72
4 李小波,孙志勇,刘春生.基于CPLD和单片机的低频信号源设计.仪器技术与传感器, 2005;(11):46~49