找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14069|回复: 4
打印 上一主题 下一主题
收起左侧

LD3320语音识别模块系列单片机程序代码

[复制链接]
跳转到指定楼层
楼主
熟悉可以互相交流一下

本工程为口令模式+IO口控制方式,每次识别都需要喊“小杰”然后才可以喊其他二级的口令,另外IO口的输出可以查看程序PAx的端口利用情况

本工程采用keil 4建立,如您打不开,可参考以下格式进行工程建立。


单片机源程序如下:
  1. /***************************飞音云电子****************************
  2. **  工程名称:YS-V0.7语音识别模块驱动程序
  3. **        CPU: STC11L08XE
  4. **        晶振:22.1184MHZ
  5. **        波特率:9600 bit/S
  6. **        配套产品信息:YS-V0.7语音识别开发板
  7. **  说明:普通+按键触发模式: 即每次识别时都需要说“小杰”这个口令 ,才能够进行下一级的识别
  8. /***************************飞音云电子******************************/
  9. #include "config.h"
  10. /************************************************************************************/
  11. //        nAsrStatus 用来在main主程序中表示程序运行的状态,不是LD3320芯片内部的状态寄存器
  12. //        LD_ASR_NONE:                表示没有在作ASR识别
  13. //        LD_ASR_RUNING:                表示LD3320正在作ASR识别中
  14. //        LD_ASR_FOUNDOK:                表示一次识别流程结束后,有一个识别结果
  15. //        LD_ASR_FOUNDZERO:        表示一次识别流程结束后,没有识别结果
  16. //        LD_ASR_ERROR:                表示一次识别流程中LD3320芯片内部出现不正确的状态
  17. /***********************************************************************************/
  18. uint8 idata nAsrStatus=0;       
  19. void MCU_init();
  20. void ProcessInt0(); //识别处理函数
  21. void  delay(unsigned long uldata);
  22. void         User_handle(uint8 dat);//用户执行操作函数
  23. void Led_test(void);//单片机工作指示
  24. uint8_t G0_flag=DISABLE;//运行标志,ENABLE:运行。DISABLE:禁止运行
  25. sbit LED=P4^2;//信号指示灯
  26. void Delay200ms();
  27. sbit CMD_KE=P4^1;//触发按键

  28. /***********************************************************
  29. * 名    称: void  main(void)
  30. * 功    能: 主函数        程序入口
  31. * 入口参数:  
  32. * 出口参数:
  33. * 说    明:                                          
  34. * 调用方法:
  35. **********************************************************/
  36. void  main(void)
  37. {
  38.         uint8 idata nAsrRes;
  39.         uint8 i=0;
  40.         Led_test();
  41.         MCU_init();
  42.         LD_Reset();
  43.         UartIni(); /*串口初始化*/
  44.         nAsrStatus = LD_ASR_NONE;                //        初始状态:没有在作ASR
  45.        
  46.         #ifdef TEST
  47.        
  48.         PrintCom("串口运行中....\r\n"); /*text.....*/
  49.         PrintCom("口令:1、代码测试\r\n"); /*text.....*/
  50.         PrintCom("        2、开发板验证\r\n"); /*text.....*/
  51.         PrintCom("        3、开灯\r\n"); /*text.....*/
  52.         PrintCom("        4、关灯\r\n"); /*text.....*/
  53.         PrintCom("    5、北京\r\n"); /*text.....*/
  54.         PrintCom("        6、上海\r\n"); /*text.....*/
  55.         PrintCom("        7、广州\r\n"); /*text.....*/
  56.         #endif

  57.         while(1)
  58.         {
  59.                 switch(nAsrStatus)
  60.                 {
  61.                         case LD_ASR_RUNING:
  62.                         case LD_ASR_ERROR:               
  63.                                 break;
  64.                         case LD_ASR_NONE:
  65.                         {
  66.                                 nAsrStatus=LD_ASR_RUNING;
  67.                                 if (RunASR()==0)        /*        启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算*/
  68.                                 {
  69.                                         nAsrStatus = LD_ASR_ERROR;
  70.                                 }
  71.                                 break;
  72.                         }
  73.                         case LD_ASR_FOUNDOK: /*        一次ASR识别流程结束,去取ASR识别结果*/
  74.                         {                               
  75.                                 nAsrRes = LD_GetResult();                /*获取结果*/
  76.                                 User_handle(nAsrRes);//用户执行函数
  77.                                 nAsrStatus = LD_ASR_NONE;
  78.                                 break;
  79.                         }
  80.                         case LD_ASR_FOUNDZERO:
  81.                         default:
  82.                         {
  83.                                 nAsrStatus = LD_ASR_NONE;
  84.                                 break;
  85.                         }
  86.                 }// switch                                
  87.         }// while

  88. }
  89. /***********************************************************
  90. * 名    称:          LED灯测试
  91. * 功    能: 单片机是否工作指示
  92. * 入口参数: 无
  93. * 出口参数:无
  94. * 说    明:                                          
  95. **********************************************************/
  96. void Led_test(void)
  97. {
  98.         LED=~ LED;
  99.         Delay200ms();
  100.         LED=~ LED;
  101.         Delay200ms();
  102.         LED=~ LED;
  103.         Delay200ms();
  104.         LED=~ LED;
  105.         Delay200ms();
  106.         LED=~ LED;
  107.         Delay200ms();
  108.         LED=~ LED;
  109. }
  110. /***********************************************************
  111. * 名    称: void MCU_init()
  112. * 功    能: 单片机初始化
  113. * 入口参数:  
  114. * 出口参数:
  115. * 说    明:                                          
  116. * 调用方法:
  117. **********************************************************/
  118. void MCU_init()
  119. {
  120.         P0 = 0xff;
  121.         P1 = 0xff;
  122.         P2 = 0xff;
  123.         P3 = 0xff;
  124.         P4 = 0xff;

  125.         P1M0=0XFF;        //P1端口设置为推挽输出功能,即提高IO口驱动能力,从驱动继电器模块工作
  126.         P1M1=0X00;

  127.         LD_MODE = 0;                //        设置MD管脚为低,并行模式读写
  128.         IE0=1;
  129.         EX0=1;
  130.         EA=1;
  131. }
  132. /***********************************************************
  133. * 名    称:        延时函数
  134. * 功    能:
  135. * 入口参数:  
  136. * 出口参数:
  137. * 说    明:                                          
  138. * 调用方法:
  139. **********************************************************/
  140. void Delay200us()                //@22.1184MHz
  141. {
  142.         unsigned char i, j;
  143.         _nop_();
  144.         _nop_();
  145.         i = 5;
  146.         j = 73;
  147.         do
  148.         {
  149.                 while (--j);
  150.         } while (--i);
  151. }

  152. void  delay(unsigned long uldata)
  153. {
  154.         unsigned int j  =  0;
  155.         unsigned int g  =  0;
  156.         while(uldata--)
  157.         Delay200us();
  158. }

  159. void Delay200ms()                //@22.1184MHz
  160. {
  161.         unsigned char i, j, k;

  162.         i = 17;
  163.         j = 208;
  164.         k = 27;
  165.         do
  166.         {
  167.                 do
  168.                 {
  169.                         while (--k);
  170.                 } while (--j);
  171.         } while (--i);
  172. }

  173. /***********************************************************
  174. * 名    称: 中断处理函数
  175. * 功    能:
  176. * 入口参数:  
  177. * 出口参数:
  178. * 说    明:                                          
  179. * 调用方法:
  180. **********************************************************/
  181. void ExtInt0Handler(void) interrupt 0  
  182. {        
  183.         ProcessInt0();                                /*        LD3320 送出中断信号,包括ASR和播放MP3的中断,需要在中断处理函数中分别处理*/
  184. }
  185. /***********************************************************
  186. * 名    称:用户执行函数
  187. * 功    能:识别成功后,执行动作可在此进行修改
  188. * 入口参数: 无
  189. * 出口参数:无
  190. * 说    明:                                          
  191. **********************************************************/
  192. void         User_handle(uint8 dat)
  193. {
  194. if(CMD_KE==0)//按键按下。 只有当按键按下时才对识别结果进行处理
  195. {
  196.      //UARTSendByte(dat);//串口识别码(十六进制)

  197. ……………………

  198. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


所有资料51hei提供下载:
LDV7语音模块驱动程序.zip (627.33 KB, 下载次数: 236)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:815648 发表于 2020-9-27 19:30 | 只看该作者
感谢楼主,原来我的资料是打不开的,用了你的这个版本的程序就能打开了,十分感谢
回复

使用道具 举报

板凳
ID:813152 发表于 2020-11-10 13:49 | 只看该作者
小白一枚,学习了,准备转物联网应用了,
回复

使用道具 举报

地板
ID:835242 发表于 2021-3-28 20:26 | 只看该作者
请问,博主,这个语音模块怎样实现与单片机的通信,进一步实现控制,比如灯光控制
回复

使用道具 举报

5#
ID:385637 发表于 2021-3-29 11:29 | 只看该作者
这个语音识别是类似小爱师兄或小度这样的识别吗?不知敏感度高不高?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表