扫一扫 中科圣杰

净化资讯 给您

技术支持

地址:深圳市龙岗区横岗街道金源路17号
电话:0755-8952 6537/8952 6536
传真:0755-8952 6539
网址:www.zksjjh.com
E-mail:[email protected]
邮 编(Post):518115
荣誉认证
首页 > 技术支持 > 行业资讯 > 风淋室语音系统辅助程序

风淋室语音系统辅助程序

2012-10-31 08:46:56    上一篇[返回首页]    [打印]    [返回上页]     下一篇

风淋室语音系统辅助程序

前文学习了风淋室语音系统芯片的主要构成及特点,本文重点在于了解风淋室主意系统的辅助软件管理程序,也就是类似编程类的编码,通过此程序来实现语音系统的智能化服务。
摘取一小段讲述关于风淋室语音系统的芯片说明:

风淋室语音系统芯片一般采用ISD1700系列芯片,而此种芯片一般是Winbond推出的单片优质语音录放电路,该芯片提供多项新功能,包括内置专利的多信息管理系统,新信息提示(vAlert),双运作模式(独立&嵌入式),以及可定制的信息操作指示音效。

#include

//************************宏定义***********************************//

#define uchar unsigned char

#define uint unsigned int

//**************ISD1700 状态寄存器及各个标志位定义*****************//

unsigned char bdata SR0_L; // SR0 寄存器

unsigned char bdata SR0_H;

unsigned char bdata SR1; // SR1 寄存器

unsigned char APCL=0,APCH=0; // APC 寄存器

unsigned char PlayAddL=0,PlayAddH=0; // 放音指针低位,高位

unsigned char RecAddL=0,RecAddH=0; // 录音指针低位,高位

sbit CMD=SR0_L^0; // SPI 指令错误标志位

sbit FULL=SR0_L^1; // 芯片存储空间满标志

sbit PU=SR0_L^2; // 上电标志位

sbit EOM=SR0_L^3; // EOM 标志位

sbit INTT=SR0_L^4; // 操作完成标志位

sbit RDY=SR1^0; // 准备接收指令标志位

sbit ERASE=SR1^1; // 擦除标志位

sbit PLAY=SR1^2; // 播放标志位

sbit REC=SR1^1; // 录音标志位

/********************************************************************

* ISD1700 SPI 指令函数声明 *

*********************************************************************/

unsigned char ISD_SendData(unsigned char dat);

void ISD_PU(void);

void ISD_Rd_Status(void);

void ISD_WR_APC2(unsigned char apcdatl,apcdath);

void ISD_SET_PLAY (unsigned char Saddl,Saddh,Eaddl,Eaddh);

void zhuanhuan(uchar k);

//**********************端口定义**********************************//

sbit SS=P3^3;

sbit SCK=P3^2;

sbit MOSI=P3^1;

sbit MISO=P3^0;

//********************标志位定义***********************************//

uint aa=100,bb=100;

//********************其它函数声明********************************//

void Cpu_Init(void); // 系统初始化

void ISD_Init(void); // ISD1700 初始化

void delay(unsigned int t); // ms 级延迟

/*************************** 主函数 *******************************/

/*****************************************************************

函数原型: void IniCpuIO()

功能: CPU 及系统变量初始化

*******************************************************************/

void Cpu_Init(void)

{

P3=0x0f;

}

/*******************************************************************

函数原型: void ISD_Init(void);

功能: 系统初始化。

******************************************************************/

void ISD_Init(void)

{

uchar i=2;

SS=1;

SCK=1;

MOSI=0;

do

{

ISD_PU(); // 上电

delay(50);

ISD_Rd_Status(); // 读取状态

}while(CMD||(!PU)); // if(CMD_Err==1)||(PU!=1))则再次发送上电指令

ISD_WR_APC2(0x40,0x04); // 将0x0440(芯片出厂默认值,可根据需要更改数值)写入APC 寄存器

do

{

ISD_Rd_Status(); // 等待RDY 位置1

}while(RDY==0);

do

{

delay(300);

delay(300);

i--;

}while(i>0);

delay(300);

}

void zhuanhuan(uchar k)

{

do{ISD_Rd_Status();}while(RDY==0);delay(12);

switch(k)

{

case 1:ISD_SET_PLAY(0x10,0,0x2a,0);break;//吹淋完毕

case 2:ISD_SET_PLAY(0x2b,0,0x3f,0);break;//请站在感应区内

}

}

/*********************************************************************

* 函数原型: unsigned char ISD_SendData(unsigned char dat);

* 功 能: 向CPU 发送&读回数据

**********************************************************************/

unsigned char ISD_SendData(unsigned char dat) // 保证外部SS=1

{

unsigned char i,j,BUF_ISD=dat;

SCK=1; // 初始条件

SS=0; // 使能ISD1700 的SPI

for(j=4;j>0;j--) // 延迟

{;}

for(i=0;i<8;i++) // 发送&接收8 位数据

{

SCK=0;

for(j=2;j>0;j--) // 延迟

{;}

if(BUF_ISD&0x01) // 将BUF_ISD 中的最低位数据发送到MOSI 端口

MOSI=1;

else

MOSI=0;

BUF_ISD>>=1; // BUF_ISD 右移一位

if(MISO) // 逐个接收MISO 端口的数据。将数据存在BUF_ISD的最高位

BUF_ISD|=0x80;

SCK=1;

for(j=6;j>0;j--) // 延迟

{;}

}

MOSI=0;

return(BUF_ISD); //返回接收到的数据

}

/*********************************************************************

* 函数原型: void ISD_PU(void); 发送指令后需要延迟50ms

* 功 能: 上电

*********************************************************************/

void ISD_PU(void)

{

ISD_SendData(0x01); // 发送PU 命令

ISD_SendData(0x00);

SS=1;

}

/*********************************************************************

* 函数原型: void ISD_Rd_Status(void);

* 功 能: 读取状态寄存器内容

**********************************************************************/

void ISD_Rd_Status(void)

{ unsigned char i ;

ISD_SendData(0x05); // 发送

ISD_SendData(0x00);

ISD_SendData(0x00);

SS=1;

for(i=2;i>0;i--) //延迟

{;}

SR0_L=ISD_SendData(0x05); // 从MISO 读出状态

SR0_H=ISD_SendData(0x00);

SR1=ISD_SendData(0x00);

SS=1;

}

/********************************************************************

* 函数原型: void ISD_WR_APC2(unsigned char apcdatl,apcdath);

* 功 能: 设置APC2

*********************************************************************/

void ISD_WR_APC2(unsigned char apcdatl,apcdath)

{

ISD_SendData(0x65);

ISD_SendData(apcdatl); //发送低8 位数据

ISD_SendData(apcdath); //发送高8 位数据

SS=1;

}

/******************************************************************

* 函数原型: void ISD_SET_PLAY( unsigned char Saddl,Saddh,Eaddl,Eaddh)

* 功 能: 定点播放

*

*******************************************************************/

void ISD_SET_PLAY( unsigned char Saddl,Saddh,Eaddl,Eaddh)

{

ISD_SendData(0x80);

ISD_SendData(0x00);

ISD_SendData(Saddl); // 开始地址低8 位

ISD_SendData(Saddh); // 开始地址高8 位

ISD_SendData(Eaddl); // 结束地址低8 位

ISD_SendData(Eaddh); // 结束地址高8 位

ISD_SendData(0x00);

SS=1;

}

void delay(unsigned int t)

unsigned int i,j;

for(i=0;i< font>

for(j=0;j<110;j++);

}

资料来源:http://www.zksjjh.com http://www.szzksjjh.com 风淋室 洁净工作台 FFU

公司介绍 | 产品展示 | 在线咨询 | 联系我们