智能玩具的设计-聪明宝宝
主程序包括端口的初始化,提示语音的播放,主循环以及进入睡眠状态前中断的初始化、端口的初始化。 主循环包括:键扫描,判断标志位及相应子程序,AD转换及比较。 端口的初始化包括A口和B口的初始化,A口的IOA0~IOA4设置为带唤醒的下拉电阻输入,IOA6设置为悬浮输入的光敏器件输入端;B口的IOB9设置为低电平输出,作为TimerA脉宽调制输出;其余未使用的端口设置为低电平输出。 提示语音的播放即“您好”的播放,主要应用于系统重新启动以及复位键的触发,在这里,复位键既可当一个功能按键来使用,也可以在系统无反应时当作重启键来使用。 进入睡眠状态前的系统初始化包括:端口A口的重新初始化,保证系统运行的可靠性;唤醒中断的允许、开中断;睡眠信号的写入。 其主流程见图 4.1: 4.2 S480语音播放子程序 4.3 语音的识别及训练程序流程图 在辨识主循环中,辨识得到确认后就可以执行相应的处理子程序,整个流程如图4.5所示。 4.4 按键动作执行子程序 4.5 中断及键处理子程序 在图 4.12中,语音辨识子程序执行的是BSR_FIQ_Routine(),而语音播放子程序执行的是F_FIQ_Service_SACM_S480()。 5结语 6参考文献 gKeyID的值 对应处理 1 左手按键处理 2 背部按键处理 3 脸部触摸键处理 4 肚部触摸键处理 5 右手按键处理 0 异常情况
图 4.1主程序流程图
SACM-S480自动方式程序流程如图 4.2:
图 4.2 SACM-S480自动方式程序流程
语音的识别取材于凌阳语音库bsrv222SDL.lib及相关头文件,如bsrSD.h。SPCE061只有特定发音人模式,即只能辨识特定的使用者,辨识前需由单个人训练,且最多识别6条命令,序号范围从0x100到0x105,每条命令只有1.3秒,超出了1.3秒只有前1.3秒命令有效。在本系统中,利用通过光敏电阻的暗电阻较大,分压值也较大的原理,产品触发后通过AD采样,与原环境光线采集值比较有较大变化时,置标志位,从而在主循环中进入识别模式。而训练模式通过左手按键经IOA0触发,训练模块和语音识别框图如下所示:
图4.3 训练模块
图 4.4语音识别框图
图 4.5语音辨识处理子程序
当外部输入的按键、触摸键触发时,进入睡眠唤醒中断。在中断中获取光敏器件采集到的AD值,主程序中扫描键盘,将取得的键值写入gKeyID,再根据gKeyID寄存器来判断到底进入哪个子程序。具体的执行子程序如下各图所示:
图 4.6左手按键处理子程序
图 4.7背部按键、肚子上触摸键处理子程序
图 4.8脸部触摸键处理子程序
图 4.9右手键处理子程序
在本系统中利用了FIQ_TMA快速中断、IRQ3_KEY、IRQ5_4HZ共4个中断。各中断的作用及返回值如表 4.2所示:
表 4. 2 中断类型 返回值 作用 FIQ_TMA 无 用于语音播放及语音辨识服务,gRecPlay=0进入语音识别;gRecPlay=1进入语音播放 IRQ3_KEY 返回环境光线强度值gADEnviroment 外部键唤醒中断后的取值以及主程序的进入 IRQ5_2HZ 定时到返回gTime1Minuteh=1 用于时间计时基准,各动作执行时所需延时及定时
图 4.10FIQ_TMA中断服务子程序
图4.114HZ时基中断服务子程序
图 4.12IRQ3_KEY中断
系统用凌阳SPCE061A十六位单片机实现体现了它的极大优越性,集中体现在实现功能齐全、内部资源丰富、外围电路简单等方面。编程采用C和汇编混合编程来实现,集两种语言之优点于一体,它们的完美结合极大限度地简化了编程过程,丰富了编程思想,给开发者带来了莫大的方便。而凌阳单片机提供了很好的语音播放和录制机制以及简单的API接口编程,使得用凌阳单片机开发产品简单快捷。
[1] 凌阳大学计划网站
[2] 雷思孝、李伯成、雷向莉,单片机原理及实用技术—凌阳16位单片机原理及应用 陕西:西安电子科技大学出版社
- 基于TMS320VC5509A的语音识别与控制系统(06-17)
- 基于DSP的声控电子记事本的设计与实现(09-22)
- 孤立词语音识别系统的DSP实现(04-28)
- 语音识别及其定点DSP实现(06-14)
- 说话人识别算法的定点DSP实现(03-18)
- 基于ATK的实时语音识别系统在家庭监护机器人中的应用实现(04-28)