基于AT89S52 和K9F6408U0A 的语音数字系统设计
3 系统软件设计
系统具有录音、放音、暂停、清除存储内容等功能,各种功能由按键来选择,系统首先扫描各个按键的状态,如果有按键按下,就转往相应的处理程序,系统程序流程如图6 所示。
系统流程图

图6 系统流程图。
3.1 系统初始化程序
系统初始化程序主要对单片机中断、定时器、LCD 初始化、键盘、PWM、K9F6408U0A 存储接口,以及ADC0809 地址、程序中要用到的各个变量进行设置。
3.2 按键扫描程序
由于录音和暂停是由和外部中断引脚相连的2 个按键来设置,一旦按键按下就进入录音或放音程序,所以按键扫描程序用于扫描放音键和清除键是否按下。
3.3 录音程序
与外部中断0 相连的按键按下,则进入录音程序。
录音过程实质上是启动ADC0809 对模拟音频信号进行采样, 并将A/D 转换结果存储到外围数据存储器中的过程,故其主要包含对ADC0809 进行读取, 对外围数据存储器进行写入两个部分。
提取声音数据时,要注意采样频率、采样位数、存储容量与存储时间的关系,通常8 kHz 的采样频率和8 位的采样位数可获得清晰的语音以及较好的音乐声,并且占有较少的存储空间。
以8 kHz 的采样频率启动ADC0809,并读取上次采样结果,写到外扩Flash 存储器的代码片段如下:


3.4 放音程序
若P1.0 按下,则执行放音程序。放音过程实质上是读取外围数据存储器中的数据,将其转化为一定宽度的PWM 波,进行输出的过程。读取K9F6408U0A 的子函数如下:
// 函数名称: READBYTE

评论