欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9331|回復: 1
收起左側

ld3320語音識別芯片程序資料(口令模式+單片機IO口控制)

[復制鏈接]
ID:511603 發表于 2019-4-14 00:16 | 顯示全部樓層 |閱讀模式
1、本工程采用 KEIL4 版本建立

2、本工程為口令模式+IO口控制方式,每次識別都需要喊“小杰”然后才可以喊其他二級的口令,另外IO口的輸出可以查看程序PAx的端口利用情況

0.png
單片機源程序如下:
  1. /***************************
  2. **  工程名稱:YS-V0.7語音識別模塊驅動程序
  3. **        CPU: STC11L08XE
  4. **        晶振:22.1184MHZ
  5. **        波特率:9600 bit/S
  6. **  說明:口令模式+IO控制: 即每次識別時都需要說“小杰”這個口令 ,才能夠進行下一級的識別
  7. /***************************
  8. #include "config.h"
  9. /************************************************************************************/
  10. //        nAsrStatus 用來在main主程序中表示程序運行的狀態,不是LD3320芯片內部的狀態寄存器
  11. //        LD_ASR_NONE:                表示沒有在作ASR識別
  12. //        LD_ASR_RUNING:                表示LD3320正在作ASR識別中
  13. //        LD_ASR_FOUNDOK:                表示一次識別流程結束后,有一個識別結果
  14. //        LD_ASR_FOUNDZERO:        表示一次識別流程結束后,沒有識別結果
  15. //        LD_ASR_ERROR:                表示一次識別流程中LD3320芯片內部出現不正確的狀態
  16. /***********************************************************************************/
  17. uint8 idata nAsrStatus=0;       
  18. void MCU_init();
  19. void ProcessInt0(); //識別處理函數
  20. void  delay(unsigned long uldata);
  21. void         User_handle(uint8 dat);//用戶執行操作函數
  22. void Led_test(void);//單片機工作指示
  23. void Delay200ms();
  24. uint8_t G0_flag=DISABLE;//運行標志,ENABLE:運行。DISABLE:禁止運行
  25. sbit LED=P4^2;//信號指示燈
  26. //應用IO口定義 (模塊標注 P2)
  27. sbit PA1=P1^0; //對應板上標號 P1.0
  28. sbit PA2=P1^1;  //對應板上標號 P1.1
  29. sbit PA3=P1^2;  //.....
  30. sbit PA4=P1^3;  //.....
  31. sbit PA5=P1^4;  //.....
  32. sbit PA6=P1^5;  //.....
  33. sbit PA7=P1^6;  //對應板上標號 P1.6
  34. sbit PA8=P1^7;  //對應板上標號 P1.7


  35. /***********************************************************
  36. * 名    稱: void  main(void)
  37. * 功    能: 主函數        程序入口
  38. * 入口參數:  
  39. * 出口參數:
  40. * 說    明:                                          
  41. * 調用方法:
  42. **********************************************************/
  43. void  main(void)
  44. {
  45.         uint8 idata nAsrRes;
  46.         uint8 i=0;
  47.         Led_test();
  48.         MCU_init();
  49.         LD_Reset();
  50.         UartIni(); /*串口初始化*/
  51.         nAsrStatus = LD_ASR_NONE;                //        初始狀態:沒有在作ASR
  52.        
  53.         #ifdef TEST       
  54.     PrintCom("一級口令:小杰\r\n"); /*text.....*/
  55.         PrintCom("二級口令:1、代碼測試\r\n"); /*text.....*/
  56.         PrintCom("        2、開發板驗證\r\n"); /*text.....*/
  57.         PrintCom("        3、開燈\r\n"); /*text.....*/
  58.         PrintCom("        4、關燈\r\n"); /*text.....*/
  59.         PrintCom("  5、北京\r\n"); /*text.....*/
  60.         PrintCom("        6、上海\r\n"); /*text.....*/
  61.         PrintCom("        7、廣州\r\n"); /*text.....*/
  62.         #endif

  63.         while(1)
  64.         {
  65.                 switch(nAsrStatus)
  66.                 {
  67.                         case LD_ASR_RUNING:
  68.                         case LD_ASR_ERROR:               
  69.                                 break;
  70.                         case LD_ASR_NONE:
  71.                         {
  72.                                 nAsrStatus=LD_ASR_RUNING;
  73.                                 if (RunASR()==0)        /*        啟動一次ASR識別流程:ASR初始化,ASR添加關鍵詞語,啟動ASR運算*/
  74.                                 {
  75.                                         nAsrStatus = LD_ASR_ERROR;
  76.                                 }
  77.                                 break;
  78.                         }
  79.                         case LD_ASR_FOUNDOK: /*        一次ASR識別流程結束,去取ASR識別結果*/
  80.                         {                               
  81.                                 nAsrRes = LD_GetResult();                /*獲取結果*/
  82.                                 User_handle(nAsrRes);//用戶執行函數
  83.                                 nAsrStatus = LD_ASR_NONE;
  84.                                 break;
  85.                         }
  86.                         case LD_ASR_FOUNDZERO:
  87.                         default:
  88.                         {
  89.                                 nAsrStatus = LD_ASR_NONE;
  90.                                 break;
  91.                         }
  92.                 }// switch                                
  93.         }// while

  94. }
  95. /***********************************************************
  96. * 名    稱:          LED燈測試
  97. * 功    能: 單片機是否工作指示
  98. * 入口參數: 無
  99. * 出口參數:無
  100. * 說    明:                                          
  101. **********************************************************/
  102. void Led_test(void)
  103. {
  104.         LED=~ LED;
  105.         Delay200ms();
  106.         LED=~ LED;
  107.         Delay200ms();
  108.         LED=~ LED;
  109.         Delay200ms();
  110.         LED=~ LED;
  111.         Delay200ms();
  112.         LED=~ LED;
  113.         Delay200ms();
  114.         LED=~ LED;
  115. }
  116. /***********************************************************
  117. * 名    稱: void MCU_init()
  118. * 功    能: 單片機初始化
  119. * 入口參數:  
  120. * 出口參數:
  121. * 說    明:                                          
  122. * 調用方法:
  123. **********************************************************/
  124. void MCU_init()
  125. {
  126.         P0 = 0xff;
  127.         P1 = 0x00;
  128.         P2 = 0xff;
  129.         P3 = 0xff;
  130.         P4 = 0xff;

  131.         P1M0=0XFF;        //P1端口設置為推挽輸出功能,即提高IO口驅動能力,從驅動繼電器模塊工作
  132.         P1M1=0X00;

  133.         LD_MODE = 0;                //        設置MD管腳為低,并行模式讀寫
  134.         IE0=1;
  135.         EX0=1;
  136.         EA=1;
  137. }
  138. /***********************************************************
  139. * 名    稱:        延時函數
  140. * 功    能:
  141. * 入口參數:  
  142. * 出口參數:
  143. * 說    明:                                          
  144. * 調用方法:
  145. **********************************************************/
  146. void Delay200us()                //@22.1184MHz
  147. {
  148.         unsigned char i, j;
  149.         _nop_();
  150.         _nop_();
  151.         i = 5;
  152.         j = 73;
  153.         do
  154.         {
  155.                 while (--j);
  156.         } while (--i);
  157. }

  158. void  delay(unsigned long uldata)
  159. {
  160.         unsigned int j  =  0;
  161.         unsigned int g  =  0;
  162.         while(uldata--)
  163.         Delay200us();
  164. }

  165. void Delay200ms()                //@22.1184MHz
  166. {
  167.         unsigned char i, j, k;

  168.         i = 17;
  169.         j = 208;
  170.         k = 27;
  171.         do
  172.         {
  173.                 do
  174.                 {
  175.                         while (--k);
  176.                 } while (--j);
  177.         } while (--i);
  178. }

  179. /***********************************************************
  180. * 名    稱: 中斷處理函數
  181. * 功    能:
  182. * 入口參數:  
  183. * 出口參數:
  184. * 說    明:                                          
  185. * 調用方法:
  186. **********************************************************/
  187. void ExtInt0Handler(void) interrupt 0  
  188. {        
  189.         ProcessInt0();                                /*        LD3320 送出中斷信號,包括ASR和播放MP3的中斷,需要在中斷處理函數中分別處理*/
  190. }
  191. /***********************************************************
  192. * 名    稱:用戶執行函數
  193. * 功    能:識別成功后,執行動作可在此進行修改
  194. * 入口參數: 無
  195. * 出口參數:無
  196. * 說    明: 通過控制PAx端口的高低電平,從而控制外部繼電器的通斷                                         
  197. **********************************************************/
  198. void         User_handle(uint8 dat)
  199. {
  200.      //UARTSendByte(dat);//串口識別碼(十六進制)
  201.                  if(0==dat)
  202.                  {
  203.                           G0_flag=ENABLE;
  204.                                 LED=0;
  205.                  }
  206.                  else if(ENABLE==G0_flag)
  207.                  {       
  208.                                  G0_flag=DISABLE;
  209.                                 LED=1;
  210.                          switch(dat)                   /*對結果執行相關操作,客戶修改*/
  211.                           {
  212.                                   case CODE_DMCS:                        /*命令“測試”*/
  213.                                                 PrintCom("“代碼測試”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  214.                                                 PA1=1;//讓PA1端口為高電平
  215.                                                                                                          break;
  216.                                         case CODE_KFBYZ:         /*命令“全開”*/
  217.                                                 PrintCom("“開發板驗證”命令識別成功\r\n");//串口輸出提示信息(可刪除)
  218.                                                 PA2=1;//讓PA2端口為高電平
  219.                                                                                                          break;
  220.                                         case CODE_KD:                /*命令“復位”*/                               
  221.                                                 PrintCom("“開燈”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  222.                                                 PA3=1;//讓PA3端口為高電平
  223.                                                                                                         break;
  224.                                         case CODE_GD:                /*命令“復位”*/                               
  225.                                                 PrintCom("“關燈”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  226.                                                 PA3=0;//讓PA3端口為低電平
  227.                                                                                                         break;
  228.                                         case CODE_BJ:                /*命令“復位”*/                               
  229.                                                 PrintCom("“北京”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  230.                                                 PA4=1;//讓PA4端口為高電平
  231.                                                                                                         break;
  232.                                         case CODE_SH:                /*命令“復位”*/                               
  233.                                                 PrintCom("“上海”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  234.                                                 PA5=1;//讓PA5端口為高電平
  235.                                                                                                         break;
  236.                                         case CODE_GZ:                /*命令“復位”*/                               
  237.                                                 PrintCom("“廣州”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  238.                                                 PA6=1;//讓PA6端口為高電平
  239.                                                                                                         break;                                                                                                                                                                                                                       
  240.                                                         default:PrintCom("請重新識別發口令\r\n"); //串口輸出提示信息(可刪除)
  241.                                                                                                         break;
  242.                                 }       
  243.                         }       
  244.                         else        
  245.                         {
  246.                                 PrintCom("請說出一級口令\r\n"); //串口輸出提示信息(可刪除)       
  247.                         }
  248. }         
復制代碼

所有資料51hei提供下載:
LDV7語音模塊驅動程序.zip (627.33 KB, 下載次數: 70)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:359903 發表于 2019-4-22 16:37 | 顯示全部樓層
這個控制步進電機哪里加入程序啊
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表