用61板控制数字钟系统,使用了IOA口的IOA0—IOA2位连接SPCE061A上的三个按键,另外使用了61板的语音输出模块;以及61板上的三个按键,电路连接如图5。
第三章 系统硬件设计
3.1 SPCE061A最小系统
SPCE061A最小系统包括SPCE061A芯片及其外围的基本模块,其中外围的基本模块有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如图7所示。
图 5 SPCE061A最小系统
3.2 电源模块
SPCE061A板采用3节5号电池进行供电,由J10接入,其中前后两组电容用来去耦滤波,
8
使其供给芯片的电源更加干净平滑。为了获得标准的3.3伏电压,在电路上加入SPY0029三端稳压器和两个二极管,是为了防止误将电源接反造成不必要损失而设置的。在操作过程中千万不要将电源接反,因为反向电压超过一定值,二极管将会被损坏,达不到保护的目的。后面的零电阻及其电源分成不同的几路是为了减少电磁干扰设置的。图 6是电源部分的电路,4.5V直流电压经过SPY0029后产生3.3V给整个系统供电。 SPY0029是凌阳公司设计的电压调整IC,采用CMOS工艺。SPY0029具有静态电流低、驱动能力强、线性调整出色等特点。4.2图中的VDDH3为SPCE061A的I/O电平参考,接SPCE061A的51脚,这种接法使得I/O输出高电平为3.3V;VDDP为PLL锁相环电源,接SPCE061A的7脚;VDD和VDDA分别为数字电源与模拟电源,分别接SPCE061A的15脚和36脚;AVSS1是模拟地,接SPCE061A的24脚;VSS是数字地,接SPCE061A的38脚; AVSS2接音频输出电路的AVSS2。
61板电源模块电路如图8,SPCE061A的内核供电为3.3V,而I/O端口可接3.3V~5V,所以在电源模块(61板上)中有一个端口电平选择跳线,如图中的J5。本系统需要的端口高电平为3.3V,所以图8中的J5跳线需要跳到2和3上。
图 6 电源模块
3.3 音频输出模块
音频输出(D/A)部分的原理图如图7所示,可以直接听喇叭输出的声音。图中的SPY0030也是凌阳公司的产品。它的详细说明可以参见SPY0030 data sheet。和LM386相比,SPY0030还具有下述优势,比如LM386工作电压需在4V以上, SPY0030仅需2.4V即可工作(两颗电池即可工作);LM386输出功率100mW以下, SPY0030约700mW。芯片将声音处理后输出(J2),经SPY0030音频放大输出(J3)通过扬声器还原为声音。SPY0030A是凌阳公司开发的专门用于语音放大的芯片。SPY0030的输入电压的范围是2.4——6.0伏,该电路中采用的电压是3.3伏。SPCE061A内置2
9
路10位DAC,只需要外接功放电路即可完成语音的播放。
图 7 音频输出电路图
第四章 系统软件设计
4.1软件的结构
下图中可以看出各文件之间的调用关系。
图 8 软件结构
数字钟主要还是软件实现的,数字钟的软件设计由以下程序构成: 1、main.c:实现系统的初始化、键盘扫描和语音播报;
10
2、system.c:包含工程中大部分的功能函数,包括时间和日期的调整等;
3、key.c:键盘扫描文件,文件中定义了键盘扫描函数、延时函数、用来实现对键盘的扫描等功能、键盘扫描采用查询方式;
4、isr.asm:中断服务函数文件,实现语音解码以及时间、日期的修改; 5、speak.c:语音播报函数,实现语音播报日期、时间。
4.2各模块程序的说明
4.2.1概述
由于凌阳SPCEA061A,使得外围电路变的更简单。制作好系统的硬件电路后,整个系统的主体任务主要落在了程序的编写上。SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,具有易学易用且效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与汇编语言的互相调用,并且,提供了语音录放和语音识别的函数库,只要了解库函数的使用方法,就可以很容易完成语音录放,为软件开发提供了方便的条件。此次系统采用了模块程序结构,模块程序结构包括了初始化,系统主程序模块,语音播放模块,显示模块。C语言属于高级语言,有着汇编语言无法比拟的优点,而SPCE061A开发系统抓住了这个关键,两者结合,充分发挥各自的优势。在用到语音的时候,一般都是用C语言作为主程序,用汇编语言编制各种模块,供主程序调用。本系统采用了这种编制方法使得相互调用非常简单。 4.2.2主程序
主程序流程如图9所示,在主程序中初始化了整个工程中用到的变量,初始化了液晶显 示模块。开2Hz中断实现计时。在主程序中调用了键盘扫描程序,对IOA口的低三位进行扫描,如果有键按下,就把相应的键值存入到一个变量中,通过主程序来判断是哪个键按下,并执行相应的功能:按Key1播报年、月、日,再按一下播报时、分长按Key1键达到1.5秒,则进入日期时间调整模式,Key2 - 在调整模式下,使年、月、日、时、分、秒增加,Key3 - 在调整模式下,使年、月、日、时、分、秒减小。
11
图 9 主程序流程图
4.2.3中断服务程序
中断服务程序有三个:一个是2Hz中断服务程序,用来计时;一个是1KHz中断服务程序,用于秒表计时;另外一个是FIQ中断服务程序,用来播放语音。程序的流程分别如图10、图11、图12。
12