<wbr id="pbjqz"><pre id="pbjqz"><noscript id="pbjqz"></noscript></pre></wbr>

            <nav id="pbjqz"></nav>
              <wbr id="pbjqz"><legend id="pbjqz"><video id="pbjqz"></video></legend></wbr>

              PLC企業資訊
                風淋室語音系統輔助程序
                發布者:hzmy555  發布時間:2011-06-22 09:53:47

                風淋室語音系統輔助程序

                前文學習了風淋室語音系統芯片的主要構成及特點,本文重點在于了解風淋室主意系統的輔助軟件管理程序,也就是類似編程類的編碼,通過此程序來實現語音系統的智能化服務。
                摘取一小段講述關于風淋室語音系統的芯片說明:

                風淋室語音系統芯片一般采用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

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

                }

                 

                文章來源:http://www.klcfilter.com/ TEL:蘇小姐-13570963006 黃生-13570963007

                版權聲明PLC信息網轉載作品均注明出處,本網未注明出處和轉載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內容的真實性。如轉載作品侵犯作者署名權,或有其他諸如版權、肖像權、知識產權等方面的傷害,并非本網故意為之,在接到相關權利人通知后將立即加以更正。聯系電話:0571-87774297。
              0571-87774297  
              免费人成激情视频在线看