开始 初始化:包括中断、时钟模块、12864液晶模块、红外遥控模块等等 检测是否有红外遥控信号?显示当前时间及温度等信息 根据检测到的信号进行处理:语音播报课表、留言、查看时间及室内温度等等
图5 主程序流程图
ISD4003语音模块源程序,主要由3个子函数组成:放音子程序、录音子程序、停止子程序,可以在主函数中很方便的调用。源代码如下: ////////////////放音部分子程序,放音地址由ADDR决定//// void play(uint addr) { uint y; SS=0; MOSI=0;//发送开始
SCLK=0;
for(y=0;y<8;y++) {
SCLK=0;
if((0x20>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_();
_nop_(); }//发送结束 SS=1;//上电结束 delayms(50);
SS=0;
MOSI=0;//发送地址 SCLK=0;
for(y=0;y<16;y++) {
SCLK=0;
if((addr>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_();
_nop_(); }//发送地址结束 MOSI=0;//放音 SCLK=0;
for(y=0;y<8;y++) {
SCLK=0;
if((0xe0>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_();
} SS=1;
SS=0;
MOSI=0;//放音 SCLK=0;
for(y=0;y<8;y++) {
SCLK=0;
if((0xf0>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1;
_nop_();
_nop_(); _nop_(); } SS=1; }
//////////////////////////录音部分子程序,地址由ADDR决定///////////////////////// void rec(addr) { uint y; SS=0; MOSI=0;//发送开始
SCLK=0;
for(y=0;y<8;y++) {
SCLK=0;
if((0x20>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_();
_nop_(); _nop_(); }//发送结束 SS=1;//上电结束 delayms(50); SS=0;
MOSI=0;//发送开始 SCLK=0;
for(y=0;y<8;y++) {
SCLK=0;
if((0x20>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_();
_nop_(); }//发送结束 SS=1;//上电结束 delayms(50);
delayms(50); SS=0;
MOSI=0;//发送地址 SCLK=0;
for(y=0;y<16;y++) {
SCLK=0;
if((addr>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_();
_nop_(); _nop_(); }//发送地址结束 MOSI=0; SCLK=0; for(y=0;y<8;y++) { }
SCLK=0;
if((0xa0>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_();
SS=1; SS=0; MOSI=0; SCLK=0; for(y=0;y<8;y++) {
SCLK=0;
if((0xb0>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_();
}
SCLK=1; _nop_(); _nop_(); _nop_();
}
SS=1;
//////////////////////////////////// ////////////////////////////////
void stop() //停止放音或录音 {
uchar y; }
SS=1; SS=0;
MOSI=0;//放音 SCLK=0; for(y=0;y<8;y++) { SCLK=0;
if((0x30>>y)&0x01)MOSI=1; else MOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_();
_nop_(); } SS=1;
五、总结
经过大概一个月的制作,本制作最终完成,并已在我宿舍应用,效果较好。当然,在制作的过程中也遇到了很多问题,主要是放音时听到很多噪声的问题。这时我们可以这样解决:类似长途电话里的轻微\嘶嘶\声是正常的低电平背景噪声。如果是\卟卟\噪声,可采取几个措施去解决:采用差分电路,处理好VCCD(27脚)的旁路和线路板设计。有时飞线太多的电路很难消除噪声。在制作的过程之中,得到了很多网上电子爱好者的帮助,在此表示真心地感谢,也将此作品与大家共享,缺陷之处在所难免,望大家批评指正。
作者信息:
徐州师范大学 物理与电子工程学院 08物31班 赵慕阶
邮寄地址:徐州市铜山新区上海路101号 徐州师范大学 无线电小组 赵慕阶 Email:zhaomujie168@126.com
相关推荐: