摘要:本文介绍了一种基于SPCE061A单片机的盲人电子语音报温报时器的设计,给出硬件和软件的设计的方法,描述了盲人电子语音报温报时器实现的具体方法。该设计为盲人提供了实时时间和温度等信息,为盲人的日常生活提供方便。
关键词:SPCE061A;盲人;语音播报;DS18B20;实时时钟
引言
在科技飞速发展的今天,越来越多的电子产品涌入人们的日常生活。然而,为盲人提供的电子产品却不多。电子产品凭借其特有的优势,能够为盲人提供极大的方便,给他们极大的鼓舞和关爱。盲人电子语音报温报时器,以凌阳公司的SPCE061A十六位单片机为基础,结合温度传感器、键盘扫描、无线发射和接收以及液晶显示等技术,提供实时时钟播报和温度播报等功能,为盲人提供生活中必需的信息。
1 系统的硬件组成及工作原理
本次设计提出了一种能够为盲人提供生活必需信息的盲人电子语音报温报时器的设计方案。该方案以具有独特语音功能的凌阳SPCE061A十六位单片机为核心控制器件,实现实时时钟、语音播报和各种控制功能,以温度传感器DS18B20为温度采集器,以4*4键盘与无线发射和接收模块为输入设备。此基于SPCE061A 的语音报温报时器的设计方便的为盲人提供时间和温度等信息。图1为盲人电子语音报温报时器的结构框图。
1.1 SPCE061A单片机及其功能
SPCE061A是凌阳公司推出的一款具有独特语音功能的十六位单片机。在本系统中,其主要功能有:产生实时时钟信号,并实现实时时钟功能;扫描键盘键值,并实现相应的操作;接受无线接收模块上传的信号,并实现相应操作;获取DS18B20中的温度信息;播放实时时钟和温度。为产生实时时钟信号,SPCE061A单片机的时钟电路是采用外接32768Hz晶振的晶体振荡器电路,为系统提供实时时钟基频,并通过PLL锁相环将系统提供的实时时钟基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz,从而为系统提供时钟频率。
SPCE061A通过对32768Hz实时时钟来源分频,从而为系统提供了多种实时时钟中断。例如,用作唤醒的中断来源IRQ5_2Hz,表示系统每隔0.5秒被唤醒一次,由此可作为精确的计时基准,并通过编程实现系统的实时时钟功能。
SPCE061A还具有独特的语音功能,并且自带双通道DAC音频输出,DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出,DAC输出为电流型输出。要实现语音的播报功能,只需要在DAC1、DAC2后面接一个简单的音频放大电路,而音频的具体功能主要是通过程序来实现的。图2为DAC1音频输出电路。
SPCE061A不仅要实现实时时钟和语音播放功能,还要接收来自外部接口的信号,并对其进行处理。系统的人机交互是由4*4的简易键盘以及无线发射和接收模块来实现的。SPCE061A将键盘和无线接收模块传递的信号进行相应的处理,并执行相应的操作。其中无线发射和接受模块用来短距离的无线遥控,使用的PT2262和PT2272芯片。在发射模块上,有四个按键,其功能分别为播放、设置、加1和减1。通过无线发射模块就可以对盲人电子语音报温报时器进行操作。
1.2 温度测量电路
温度的测量采用了DALLAS的DS18B20温度传感器,其测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。为了提高温度采集的稳定性,本系统采用DS18B20外部供电电路。如图3所示,DS18B20的外部供电电路。DS18B20 的数据信号输入/输出引脚与SPCE061A的IOB15脚相连。SPCE061A通过程序将DS18B20 中温度数据读出并将其储存。
2 系统的软件设计
本系统的程序设计采用C语言编程,主要有实时时钟程序、温度采集程序、键盘扫描程序和语音播放程序。为了方便调试和提高程序的可靠性,本次程序设计采用了模块化的结构设计。
2.1 温度采集程序设计
DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但其与单片机数据交换需要串行方式。联络信号有具体时间限制,因此对编程提出了较高要求。读DS18B20数据程序如下:
unsigned int Read_18B20_Byte(void)
{ int i;
unsigned int Data;
Data = 0;
for(i=0;i<8;i++)
{ Set_DQ(1);
Delay(1);
Clr_DQ(1);
Delay(2);
Set_DQ(0); //切为输入
Data = Data >> 1;
if(Read_DQ()>0)
Data |= 0x0080;
Delay(31);
}
return(Data);
}
2.2 键盘扫描程序设计
本系统使用的是4×4键盘。当某行为低电平时,只要按下此行的某一个按键,则与按键连接的某列为低电平,只要读取为低电平时是哪行哪列就可以知道键盘中键按下的位置。为了防止键盘抖动产生的误操作,我们还需要进行去抖,当确定有键按下时,获得相应的键值,在进行相应的操作。键盘扫描程序如图4所示。
2.3 语音播放程序设计
SPCE061A具有独特的语音特色,其语音播报的流程图如图5所示。其程序如下:
void PlaySnd(int SndIndex)
{ SACM_A2000_Initial(1); // 初始化为自动播放
SACM_A2000_Play(SndIndex, 3, 3); // 开始播放一段语音
while((SACM_A2000_Status()&0x0001)!= 0) // 是否播放完毕?
{
SACM_A2000_ServiceLoop(); // 解码并填充队列
*P_Watchdog_Clear = 0x01;
}
SACM_A2000_Stop(); // 停止播放
}
3 结束语
盲人电子语音报温报时器设计的结构合理、性能稳定、使用简单和便于携带,能够方便的为盲人提供温度和时间等信息。本次设计的优点在于将SPCE061A独特的语音功能用来为盲人服务,将电子产品的优势延伸到盲人群体,并为其带来方便。再考虑到是使用时,特地增加了无无线发射和接受模块,使得使用者即使不用接触到仪器本身,也可以对其进行操作和使用,极大的方便了使用,扩大了其使用范围。