久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8270|回復: 5
收起左側

STM32單片機通過語音控制led燈的顏色源程序

[復制鏈接]
ID:282093 發表于 2018-2-4 11:17 | 顯示全部樓層 |閱讀模式
這是我上個月做的一個小項目
用時15天
附件包含stm32單片機的源代碼
主要是通過語音模塊控制小燈的顏色改變
都是自己編寫的,請大家指教

語音控制LED燈單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "WS2812B.h"
  7. #define Buf2_Max 200                                           //串口2緩存長度
  8. /************************************************
  9. ************************************************/
  10. uint8_t aa[3]={0x0000,0x0000,0x0000};                //關
  11. uint8_t bb[3]={0x00ff,0x0000,0x0000};                //紅k=1
  12. uint8_t cc[3]={0x0000,0x00ff,0x0000};                //綠k=2
  13. uint8_t dd[3]={0x0000,0x0000,0x00ff};                //藍k=3
  14. uint8_t ee[3]={0x00ff,0x00ff,0x00ff};                //白k=4
  15. uint8_t ff[3]={0x00ff,0x00ff,0x0000};                //黃k=5
  16. uint8_t gg[3]={0x0000,0x00ff,0x00ff};                //淺藍
  17. uint8_t hh[3]={0x00ff,0x0000,0x00ff};                //紫k=6
  18. uint8_t ii[3]={0x0099,0x00d5,0x0012};                //變
  19. uint8_t jj[3]={0x00ff,0x00aa,0x001f};                //
  20. uint8_t kk[3]={0x0088,0x0025,0x001f};                //粉k=7              
  21. uint8_t ll[3]={0x00ff,0x0088,0x00ab};
  22. uint8_t mm[3]={0x0088,0x00ff,0x0023};
  23. uint8_t nn[3]={0x00ab,0x0059,0x0023};
  24. u8 k=0;
  25. void CLR_Buf2(void);
  26. //u8 Fi=0;
  27. int main(void)
  28. {               
  29.         u16 t;  
  30.         u16 len;       

  31.         u16 times=0;
  32.         delay_init();                     //延時函數初始化       
  33.   Timer3_init()        ;
  34.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  35.         uart1_init(115200);         //串口初始化為115200
  36.         uart2_init(115200);         //串口初始化為115200
  37.         LED_Init();                             //LED端口初始化
  38.         KEY_Init();          //初始化與按鍵連接的硬件接口
  39. CLR_Buf2();
  40.         while(1)
  41.         {
  42.                                 //WS2812_send( aa, 24);
  43.                                 if(USART_RX_STA&0x8000)
  44.                                 {               
  45.                                 //GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高                       
  46.                                 len=USART_RX_STA&0x3fff;//得到此次接收到的數據長度
  47. //                                        USART_SendData(USART1, USART_RX_BUF[0]);//向串口1發送數據
  48. //                                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
  49.                                         if(USART_RX_BUF[0]=='0')
  50.                                         {
  51.                                                 k=0;
  52.                                         }
  53.                                         if(USART_RX_BUF[0]=='1')
  54.                                         {
  55.                                                 k=1;
  56.                                         }
  57.                                         if(USART_RX_BUF[0]=='2')
  58.                                         {
  59.                                                 k=2;
  60.                                         }
  61.                                         if(USART_RX_BUF[0]=='3')
  62.                                         {
  63.                                                 k=3;
  64.                                         }
  65.                                         if(USART_RX_BUF[0]=='4')
  66.                                         {
  67.                                                 k=4;
  68.                                         }
  69.                                         if(USART_RX_BUF[0]=='5')
  70.                                         {
  71.                                                 k=5;
  72.                                         }
  73.                                         if(USART_RX_BUF[0]=='6')
  74.                                         {
  75.                                                 k=6;
  76.                                         }
  77.                                         if(USART_RX_BUF[0]=='7')
  78.                                         {
  79.                                                 k=7;
  80.                                         }
  81.                                         if(USART_RX_BUF[0]=='8')
  82.                                         {
  83.                                                 k=8;
  84.                                         }
  85.                                                 if(USART_RX_BUF[0]=='9')
  86.                                         {
  87.                                                 k=9;
  88.                                         }
  89.                                                 if(USART_RX_BUF[0]=='a')
  90.                                         {
  91.                                                 k=10;
  92.                                         }
  93.                                                 if(USART_RX_BUF[0]=='b')
  94.                                         {
  95.                                                 k=11;
  96.                                         }
  97.                                                 if(USART_RX_BUF[0]=='c')
  98.                                         {
  99.                                                 k=12;
  100.                                         }
  101.                                                 if(USART_RX_BUF[0]=='d')
  102.                                         {
  103.                                                 k=13;
  104.                                         }
  105.                                         printf("\r\n您發送的消息為:\r\n\r\n");
  106.                                         for(t=0;t<len;t++)
  107.                                         {
  108.                                                 USART_SendData(USART1, USART_RX_BUF[t]);//向串口1發送數據
  109.                                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
  110.                                         }
  111.                                         printf("\r\n\r\n");//插入換行
  112.                                         USART_RX_STA=0;
  113.                                 }
  114.                                         if(k==0)
  115.                                                 {
  116.                                                  // WS2812_send( aa, 24);
  117.                                                 }
  118.                                         if(k==1)
  119.                                         {
  120.                                          WS2812_send( bb, 24);
  121.                                         }
  122.                                         if(k==2)
  123.                                         {
  124.                                          WS2812_send( cc, 24);
  125.                                         }
  126.                                         if(k==3)
  127.                                         {
  128.                                          WS2812_send( dd, 24);
  129.                                         }
  130.                                         if(k==4)
  131.                                         {
  132.                                          WS2812_send( ee, 24);
  133.                                         }
  134.                                         if(k==5)
  135.                                         {
  136.                                          WS2812_send( ff, 24);
  137.                                         }
  138.                                         if(k==6)
  139.                                         {
  140.                                          WS2812_send( gg, 24);
  141.                                         }
  142.                                         if(k==7)
  143.                                         {
  144.                                          WS2812_send( hh, 24);
  145.                                         }
  146.                                         if(k==8)
  147.                                         {
  148.                                          WS2812_send( ii, 24);
  149.                                         }
  150.                                         if(k==9)
  151.                                         {
  152.                                          WS2812_send( jj, 24);
  153.                                         }
  154.                                         if(k==10)//粉
  155.                                         {
  156.                                          WS2812_send( kk, 24);
  157.                                         }
  158.                                         if(k==11)//
  159.                                         {
  160.                                          WS2812_send( ll, 24);
  161.                                         }
  162.                                         if(k==12)
  163.                                         {
  164.                                          WS2812_send( mm, 24);
  165.                                         }
  166.                                         if(k==13)
  167.                                         {
  168.                                          WS2812_send( nn, 24);
  169.                                         }
  170.                                        
  171.                
  172.                
  173.                
  174. //  if(USART2_RX_STA&0x8000)
  175. //        {               
  176. //GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高               
  177. //                        len=USART2_RX_STA&0x3fff;//得到此次接收到的數據長度
  178. //                delay_ms(20);
  179. ////                        if(USART2_RX_BUF[0]=='0')
  180. ////                        {
  181. ////                                k=0;
  182. ////                        }
  183. ////                        if(USART2_RX_BUF[0]=='1')
  184. ////                        {
  185. ////                                k=1;
  186. ////                        }
  187. ////                        if(USART2_RX_BUF[0]=='2')
  188. ////                        {
  189. ////                                k=2;
  190. ////                        }
  191. ////                        if(USART2_RX_BUF[0]=='3')
  192. ////                        {
  193. ////                                k=3;
  194. ////                        }
  195. ////                        USART_SendData(USART2, USART2_RX_BUF[0]);//向串口1發送數據
  196. ////                                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待發送結束
  197. ////                        printf("\r\n您發送的消息為:\r\n\r\n");
  198. ////                        for(t=0;t<len;t++)
  199. ////                        {
  200. ////                                USART_SendData(USART2, USART2_RX_BUF[t]);//向串口1發送數據
  201. ////                                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待發送結束
  202. ////                        }
  203. //                        for(t=0;t<len;t++)
  204. //                        {
  205. //                                USART_SendData(USART1, USART2_RX_BUF[t]);//向串口1發送數據
  206. //                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
  207. //                        }
  208. //                                delay_ms(20);
  209. ////                        printf("\r\n\r\n");//插入換行
  210. //                        USART2_RX_STA=0;
  211. //        }
  212.          while(tt)
  213.                                  {
  214.                                          GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高
  215. //                                         for(t=0;t<3;t++)
  216. //                                                        {
  217. //                                                                USART_SendData(USART1, USART2_RX_BUF[t]);//向串口1發送數據
  218. //                                                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
  219. //                                                        }
  220.                                                         USART_SendData(USART1, USART2_RX_BUF[0]);//向串口1發送數據
  221.                                                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
  222. //                                         delay_ms(20);
  223.                                    if(USART2_RX_BUF[0]==0x01)
  224.                                                 {
  225.                                                         GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高
  226.                                                 k=1;
  227.                                                 }
  228.                                                  if(USART2_RX_BUF[0]==0x02)
  229.                                                 {
  230.                                                         GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高
  231.                                                 k=2;
  232.                                                 }
  233.                                                  if(USART2_RX_BUF[0]==0x03)
  234.                                                 {
  235.                                                         GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高
  236.                                                 k=3;
  237.                                                 }
  238.                                                  if(USART2_RX_BUF[0]==0x04)
  239.                                                 {
  240.                                                         GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高
  241.                                                 k=4;
  242.                                                 }
  243.                                                 if(USART2_RX_BUF[0]==0x05)
  244.                                                 {
  245.                                                         GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高
  246.                                                 k=5;
  247. ……………………

  248. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
語音控制LED燈.rar (284.54 KB, 下載次數: 122)
Screenshot_2018-02-04-11-14-35-909_com.miui.video.png
回復

使用道具 舉報

ID:193104 發表于 2018-10-4 21:02 | 顯示全部樓層
很好,我很需要。
回復

使用道具 舉報

ID:368001 發表于 2019-4-1 16:43 | 顯示全部樓層
可以留一下您的聯系方式嗎?我有問題想請教您一下
回復

使用道具 舉報

ID:622166 發表于 2019-10-11 14:25 | 顯示全部樓層
很好很好
回復

使用道具 舉報

ID:939672 發表于 2023-4-2 10:51 | 顯示全部樓層
哇 ,高手
回復

使用道具 舉報

ID:291668 發表于 2023-4-2 21:05 | 顯示全部樓層
贊了,語音使用串口模塊轉換嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国内精品 | 欧美精品在线免费观看 | 8x国产精品视频一区二区 | 天天操天天怕 | 97免费在线视频 | 亚洲二区在线 | 成人av一区二区在线观看 | 日韩中文字幕在线观看 | 操人网站 | 欧美一级欧美三级在线观看 | 福利视频一区二区 | 亚洲一区高清 | 成人h电影在线观看 | 搞av.com| 国产精品永久免费视频 | 91精品久久久久久久久中文字幕 | 日韩视频a| 国产成人av在线播放 | 男女羞羞免费视频 | 欧美精品一二三区 | 国产小u女发育末成年 | 中文字幕久久精品 | 欧美一二精品 | 99re在线视频 | 亚洲 成人 av | 亚洲1区 | 91久久看片| 日韩精品色网 | 日本不卡一二三 | 欧美日韩国产传媒 | 日韩精品人成在线播放 | 四虎影院免费在线 | 午夜国产精品视频 | 久久国产精品99久久久大便 | 久久亚洲精品久久国产一区二区 | 欧美日韩在线一区二区 | 欧美一区二区三区高清视频 | 久久久久久久久淑女av国产精品 | 亚洲一区二区在线播放 | 一级片在线观看 | 亚洲精品一区二区三区蜜桃久 |