用AT89S52单片机和K9F6408U0A设计的语音数字系统
[09-13 23:35:31] 来源:http://www.88dzw.com 电视机电路 阅读:8745次
文章摘要:3 系统软件设计系统具有录音、放音、暂停、清除存储内容等功能,各种功能由按键来选择,系统首先扫描各个按键的状态,如果有按键按下,就转往相应的处理程序,系统程序流程如图6所示。 3.1 系统初始化程序系统初始化程序主要对单片机中断、定时器、LCD初始化、键盘、PWM、K9F6408UOA存储接口,以及ADC0809地址、程序中要用到的各个变量进行设置。3.2 按键扫描程序由于录音和暂停是由和外部中断引脚相连的2个按键来设置,一旦按键按下就进入录音或放音程序,所以按键扫描程序用于扫描放音键和清除键是否按下。3.3 录音程序与外部中断O相连的按键按下,则进入录音程序。[next]录音过程
用AT89S52单片机和K9F6408U0A设计的语音数字系统,标签:电视机电路,电路设计,http://www.88dzw.com3 系统软件设计
系统具有录音、放音、暂停、清除存储内容等功能,各种功能由按键来选择,系统首先扫描各个按键的状态,如果有按键按下,就转往相应的处理程序,系统程序流程如图6所示。
3.1 系统初始化程序
系统初始化程序主要对单片机中断、定时器、LCD初始化、键盘、PWM、K9F6408UOA存储接口,以及ADC0809地址、程序中要用到的各个变量进行设置。
3.2 按键扫描程序
由于录音和暂停是由和外部中断引脚相连的2个按键来设置,一旦按键按下就进入录音或放音程序,所以按键扫描程序用于扫描放音键和清除键是否按下。
3.3 录音程序
与外部中断O相连的按键按下,则进入录音程序。
[next]
录音过程实质上是启动ADC0809对模拟音频信号进行采样,并将A/D转换结果存储到外围数据存储器中的过程,故其主要包含对ADC0809进行读取,对外围数据存储器进行写入两个部分。
提取声音数据时,要注意采样频率、采样位数、存储容量与存储时间的关系,通常8 kHz的采样频率和8位的采样位数可获得清晰的语音以及较好的音乐声,并且占有较少的存储空间。
以8 kHz的采样频率启动ADC0809,并读取上次采样结果,写到外扩Flash存储器的代码片段如下:
www.88dzw.com3.4 放音程序
若P1.O按下,则执行放音程序。放音过程实质上是读取外围数据存储器中的数据,将其转化为一定宽度的PWM波,进行输出的过程。读取K9F6408UOA的子函数如下:
产生PWM波形的步骤:1)设置定时器,产生定时中断,若采样率为11.025 kHz,则设置定时器的定时中断频率为11.025 kHz;2)初始化PWM模块,产生11.025 kHz的PWM波形;3)等待定时器中断,在中断处理程序中取采样数据,并设置PWM占空比寄存器,判断声音是否播放完成。若完成,则关定时器中断,并停止PWM输出。3.5 暂停程序
在录音过程中,如果需要暂时停止录音可以按下暂停键进入暂停状态,再次按下暂停键可以返回暂停以前的状态。程序中设置了一个变量来指示现在是应该暂停还是恢复。
3.6 存储器内容清除程序
当存储器内容已满,而又需要录音时,可以按下清除按键,清除一定容量的内容,供用户再次使用。
擦除:以块为单位进行擦除。代码片段如下。
4 调试注意事项
系统进行调试时,应注意以下方面:
1)由于在PCM(Pulse Code Modulation)编码及DPCM编码模式下都要采用8 kHz的采样率,所以,每次压缩中断服务程序必须在不超过125 μs的时间内完成,因此,压缩录音处理程序的代码必须进行最大可能的优化,以减少程序执行时间,以免采样和数据处理或信息显示发生冲突,也可避免在中断采样时造成采样点的丢失。
《用AT89S52单片机和K9F6408U0A设计的语音数字系统》相关文章
- › 用AT89C2051单片机制作八路定时自控电路
- › 用AT89C51单片机的LED汉字显示屏设计与制作
- › 用AT89S52单片机和K9F6408U0A设计的语音数字系统
- 在百度中搜索相关文章:用AT89S52单片机和K9F6408U0A设计的语音数字系统
- 在谷歌中搜索相关文章:用AT89S52单片机和K9F6408U0A设计的语音数字系统
- 在soso中搜索相关文章:用AT89S52单片机和K9F6408U0A设计的语音数字系统
- 在搜狗中搜索相关文章:用AT89S52单片机和K9F6408U0A设计的语音数字系统