多网络智能远程遥控系统的设计与实现
3.3 语音电路
本系统选用美国ISO公司的ISD4003单片语音录放集成电路作为语音提示电路的核心部分。ISD4003采用E2PROM存储器,可永久保存信息,并可零功能存储;该存储器同时采用D/A直接模拟量存储技术,因而能较好地保留语音信息中的有效成分,提高录放音的清晰度。ISD4003可以存储长达8分钟的语音,并能实现分段语音录放,每段录放音均有一个起始地址,该起始地址及其控制信号均可由单片机通过其SPI通信口给定。ISD4003的外围电路非常简单,只需少许阻容元件即可。由ISD4003构成的系统与用户的语音交互界面单元电路如图3所示。
3.4 串行通讯电路和CPU单元
本系统中的串行通讯电路由专用的MAX202组成,主要用于系统与PC机的串行通信。CPU电路由AT89C52作为中央处理器并配以简单的外围电路组成,同时选用22μF的电容和1kΩ的电阻构成系统自动上电复位电路。11.0592MHz晶振和两个30pF的电容组成了系统的时钟基准电路。由于CPU内部就有存储器,所以本系统未对其进行存储扩展。
图3 语音单元电路
4 软件设计
4.1 下位机通讯软件设计
通过receive()函数可实现下位机与上位机的数据接收,而send()函数则用于实现下拉机与位机的数据发送,bote()函数的作用是实现串行通讯口初始化和9600波特率的产生。
4.2 双音频识别部分软件的设计
双音频信号由双音频译码单元电路检测,当有信号将译码输出到数据总线后,系统将产生中断请求,并送到T0计数器以产生中断,同时由CPU执行T0中断服务程序。T0中断服务程序由firstdetect()函数和seconddetect()函数组成。Firsdetect()函数用于完成对总线(P1.0~P1.3)数据的第一层菜单值进行读入识别;seconddetect()函数用于完成对总线数据第二层菜单值的读入识别。由于本系统目前只设有两层菜单,所以第二层也同时用作控制命令的触发。
4.3 语音控制部分的通信软件设计
以下的SPI通信程序是用C51语言的16位命令格式编写的。使用时,将其高8位地址和低8位地址正确给定,即可将控制信息(包含在高8位地址的高5位)通过ISD4003的SPI口进行传输。详细的SPI接口指令见ISD4003系列芯片手册。下面给出部分语音控制部分的通信程序。
Void SPI_COM(uchar address-high,uchar address-low
{
uchar i,Bit-temp;
SCLK=0;
SS=0; /*chip selected signal*/
for(i=0;i<8;i++) /*write low eight bits address */
{
SCLK=0;
Bit-temp=address-low & 0x01;
/*0x01 equals to 0000 0001B;get the first bit from the right in this way */
if(Bit-temp==0)
MOSI=0; /*if it doesn't work,some nops may be needed */
Else
MOSI=1; /*if it doesn't work,some nops be needed*/
SCLK=1;
Address-low=address-low>>1;
}
for(i=0;i<8;i++) /*write high eight bits address*/
{
SCLK=0;
Bit-temp=address-high&0x01; /*0x01 equals to 0000 0001B;get the first bit from the right in this way*/
if(Bit-temp= =0)
MOSI=0; /*if it doesn't work,some nops may be needed*/
Else
MOSI=1; /*if it doesn't work,some nops may be needed*/
SCLK=1;
address-high=address-high>>1;
}
SS=1;
4.4 通讯软件的设备与实现
通讯软件主要由Internet网络通讯软件和本地上、下位机通讯软件组成。Internet网络通讯主要完成网络控制。该部分主要由客户端软件和服务器软件组成,网络通讯软件可在windows环境下用Visual C++开发完成。而上位机通讯软件则用于完成服务器(微型计算机)和下位机的通讯。该网络通讯的结构原理如图4所示。网络通讯软件可用Visual C++为基础为设计。它通常可由客户端软件和服务器软件来组成。
服务器作为上位机和系统中央控制器,通常通过串行通讯口相连接。由于本系统上、下位机的传输数据不多,所以没有设置专门的数据库。所得的信息只供控制用,而不必存储成文件。上、下位机通讯时,本系统规定了以下协议:上位机对下位机发送字母‘A’表示空调器打开,发送'a'表示空调器关闭,下位机对上位机是同样的对应关系;发送‘B’表示热水器打开,发送'b'表示热水器关闭;发送‘C’表示电饭煲打开,发送‘c’表示电饭煲关闭。客户端软件是作为远程Internet网络控制的终端软件,系统通讯应采用文本形式,命令由文本字符串组成。例如:当按下开热水器按钮时,客户端软件向服务器软件发出命令字符串“Water Heater Is Opened”,服务器软件端显示:“CMD from client:Water Heater Is Opened”并在内部解释该字符串命令,即发送‘B’给下位机。而当中央控制器通过电话远程控制电路来打开热水器后,下位机将发送给上位机(服务器)一个‘A’,以表示热水器已经打开;当电话远程控制关闭热水器后,下位机则发给上位机(服务器)一个‘a’,以表示空调器已经关闭。同时客户端软件会有相应的提示语音,以表明家里电器的状态,以此实现两种控制方式之间的信息交互。
javascript:window.open(this.src);" style="cursor:pointer;"/>
5 系统联机调试
本系统联机调试所