云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于51单片机和ISD4003的语音系统的设计

基于51单片机和ISD4003的语音系统的设计

  • 62 次阅读
  • 3 次下载
  • 2026/4/29 18:26:04

开始 初始化:包括中断、时钟模块、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

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

开始 初始化:包括中断、时钟模块、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; e

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com