公交车语音报站器的设计(编辑修改稿)内容摘要:

、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存储陈列。 芯片设计是基于所有操作必须由微控制器控制 ,操作命令可通过串行通信接口 (SPI 或 Microwire)送入。 芯片采用多电平直接模拟量存储技术 , 每个采样值直接存储在片内闪烁存储器中 ,因此能够非常真实、自然地再现语音、音乐、音调和效果声 ,避免了一般固体录音电路因量化和压缩造成的量化噪声和金属声。 采样频率可以是 , 或 ,频率越低 ,录放时间越长 ,而音质则有所下降 ,片内信息存于闪烁存储器中 ,可在断电情况下保存一百年 (典型值 ),可反复录音十万次。 操作规则如下: ( 1)串行外设接口 ISD4000系列语音芯片工作于 SPI串行接口。 SPI协议是一个同步串行数据传输协议,设定微控制器的 SPI移位寄存器在 SCLK的下降沿将数据送至 MISO引脚。 以 ISD4004为例,协议的 具体内容如下: ① 所有串行数据传输开始于 SS 下降沿。 ② SS 在传输期间必须保持低电平,在两条指令之间则保持高电平。 ③ 数据在时钟上升沿移入,在下降沿移出。 ④ SS 变低,输入指令和地址后, ISD4004才能开始录 /放操作。 ⑤ 指令格式是 (八位控制码 )加(十六位地址码)。 ⑥ ISD4004的任何操作如果遇到 EOM或 OVF,则产生一个中断,该中断状态在下一个SPI周期开始时被清除。 ⑦ 使用 “读 ”指令使中断状态位移出 ISD4004的 MISO引脚时,控制及地址数据也应同步从 MOSI端移入。 因此,要注意移入的数据是否与器件当前进行的操作兼容。 当然,也允许在一个 SPI周期里,同时执行读状态和开始新的操作(即新移入的数据与器件当前的操作可以不兼容)。 ⑧ 所有操作在运行位( RUN)置 1时开始,置 0时结束。 ⑨ 所有指令都在 SS 端上升沿开始执行。 ( 2)信息快进 用户不必知道信息的确切地址就能快进跳过一条信息。 信息快进只用于放音模式,放音速度是正常的 1600倍,遇到 EOM后停止,然后内部地址计数器 1,指向下一条信息的开始处。 ( 3)上电顺序 器件延时 TPUD( 8KHz采样时,约为 25ms)后才能开始操作。 因此,用户发完上电指令后,必须等待 TPUD,才能发出下一条操作指令。 单片机接口技术课程设计(论文) 7 第 4章 程序设计 程序流程图 本设计采用 C 语言编写程序。 其流程图如图 所示。 图 初始化 是否有键按下 无 有 判断是哪个键按下,做出相应处理 显示器显示相应信息 语音模块播放相应语音 提示 单片机接口技术课程设计(论文) 8 源程序清单 include //包含单片机寄存器的头文件 include //包含随机函数 rand()的定义文件 include //包含 _nop_()函数定义的头文件 sbit RS=P3^5。 sbit RW=P3^6。 sbit E=P3^7。 sbit BF=P2^7。 define uchar unsigned char define uint unsigned int uchar key1,key。 unsigned char code key_code[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 }。 unsigned char code string[ ]={This station :}。 unsigned char code string1[ ]={Next station :}。 unsigned char code string3[ ]={ABCDEFGHIJKLMNOP}。 /***************************************************** 函数功能 : 延时 1ms (3j+2)*i=(3 33+2) 10=1010(微秒 ), 可以认为是 1毫秒 ***************************************************/ void delay1ms() { unsigned char i,j。 for(i=0。 i10。 i++) 单片机接口技术课程设计(论文) 9 for(j=0。 j33。 j++)。 } /***************************************************** 函数功能 : 延时若干毫秒 入口参数 : n ***************************************************/ void delay(unsigned char n) { unsigned char i。 for(i=0。 in。 i++) delay1ms()。 } /***************************************************** 函数功能:判断液晶模块的忙碌状态 返回值 : result。 result=1, 忙碌。 result=0, 不忙 ***************************************************/ unsigned char BusyTest(void) { bit result。 RS=0。 //根据规定 , RS 为低电平 , RW 为高电平时 , 可以读状态 RW=1。 E=1。 //E=1, 才允许读写 _nop_()。 //空操作 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期 , 给硬件反应时间 result=BF。 //将忙碌标志电平赋给 result E=0。 //将 E恢复低电平 单片机接口技术课程设计(论文) 10 return result。 } /***************************************************** 函数功能:将模式设置指令或显示地址写入液晶模块 入口参数: dictate。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。