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

標(biāo)題: STC8單片機(jī)智能小車制作 附源程序 [打印本頁]

作者: 冷月楓    時(shí)間: 2020-3-9 19:10
標(biāo)題: STC8單片機(jī)智能小車制作 附源程序
寒假做的一個(gè)智能小車,有自動(dòng)模式(超聲波避障)(紅外避障)手動(dòng)模式(紅外遙控)(無線NRF24l01遙控)(WIFI ESP8266遙控)(藍(lán)牙遙控)小車可前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),停止,1-7擋(可調(diào)),OLED用來顯示主界面和超聲波檢測的距離,JQ8900播報(bào)小車運(yùn)行的狀態(tài)。
小車視頻地址:B站https://www.bilibili.com/video/av94674438/
小車和程序
                           
部分代碼:
  1. #include<All.h>

  2. /*********************************
  3. * @函數(shù)名:main
  4. * @描述:main 函數(shù),程序入口
  5. * @參數(shù):無
  6. * @返回值:無
  7. *********************************/
  8. void main()
  9. {
  10.     static uchar Voice_Flag=0;
  11.     Timer0_INT0_Init();//紅外解碼
  12.     Timer3_Init();//直流電機(jī)調(diào)速
  13.         Time1_INT1_Init();//超聲波初始化
  14.         OLED_Init();//OLED顯示初始化
  15.         Uart4_Init();//串口4初始化 定時(shí)器4 藍(lán)牙
  16.         Uart3_Init();//串口3初始化 定時(shí)器2 WIFI
  17.         ESP8266_Init();//ESP8266初始化
  18.         NRF24L01_Init();//NRF24L01無線模塊初始化
  19.         SetRX_Mode();//設(shè)置為接收模式
  20.         Oled_Display_Chinese();//OLED顯示固定漢字
  21.    while(1)
  22.    {
  23.            if(Voice_Flag==0)
  24.            {
  25.               JQ8900_Select_TwoCmd_Song(0x02,0x04);//發(fā)動(dòng)機(jī)已啟動(dòng),準(zhǔn)備發(fā)車
  26.                   Voice_Flag=1;
  27.            }
  28.             Oled_Display_Variable();//OLED屏幕顯示變量數(shù)據(jù)//執(zhí)行時(shí)間大概200ms
  29.             Auto_Hand_Mode();//自動(dòng)手動(dòng)切換模式
  30.    }
  31. }
復(fù)制代碼
  1. #include<All.h>

  2. uchar Auto_Hand_Mode_Flag=1;//自動(dòng)手動(dòng)模式切換標(biāo)志(默認(rèn)手動(dòng))
  3. uchar Hand_Mode_Flag=0;//手動(dòng)模式切換標(biāo)志(默認(rèn)紅外)
  4. uchar Auto_Mode_Flag = 1;//自動(dòng)模式切換標(biāo)志
  5. /*********************************
  6. * @函數(shù)名:Mode_Key_Scan
  7. * @描  述:按一下是手動(dòng)控制,再按一下是自動(dòng)控制
  8. * @參  數(shù):無
  9. * @返回值:無
  10. *********************************/
  11. void Mode_Key_Scan()//模式按鍵掃描
  12. {
  13.     uchar i;
  14.         if(Key1==0)//Key1自動(dòng)手動(dòng)模式切換
  15.         {
  16.             i=20;
  17.                 while(i--); //延遲消抖
  18.                 if(Key1==0)
  19.                 {
  20.                    if(Auto_Hand_Mode_Flag)   //一共兩種模式
  21.                       Auto_Hand_Mode_Flag=0;  //不是0就是1
  22.                else
  23.                        Auto_Hand_Mode_Flag=1;//沒按一下就換一種模式
  24.                 }
  25.                 while(!Key1);
  26.         }
  27. }
  28. /*********************************
  29. * @函數(shù)名:Control_Method_Key_Scan
  30. * @描  述:手動(dòng)模式控制方式按鍵
  31. * @參  數(shù):無
  32. * @返回值:無
  33. *********************************/
  34. void Control_Method_Key_Scan()//控制方式
  35. {
  36.         uchar i;
  37.    if(Key2==0)//控制方式切換
  38.         {
  39.             i=20;
  40.                 while(i--);  //延遲消抖
  41.                 if(Key2==0)
  42.                 {
  43.                         if(Hand_Mode_Flag==3) //一共三種控制方式0123
  44.                          Hand_Mode_Flag=0; //循環(huán)
  45.                         else   
  46.                                 Hand_Mode_Flag++; //每次換一種
  47.                 }
  48.                 while(!Key2);
  49.         }
  50. }
  51. /*********************************
  52. * @函數(shù)名:Auto_Mode
  53. * @描  述:自動(dòng)模式 (超聲波避障)
  54. * @參  數(shù):無
  55. * @返回值:無
  56. *********************************/
  57. void Auto_Mode()
  58. {
  59. //        static uchar
  60.         switch(Auto_Mode_Flag)
  61.         {
  62.                 case 0:
  63.                               Judge_distance(); //超聲波避障
  64.                               break;
  65.                 case 1:
  66.                               Ray_Avoid(); //紅外避障
  67.                               break;
  68.         }
  69.    
  70.         //Ray_jiance();
  71. }
  72. /*********************************
  73. * @函數(shù)名:Hand_Mode
  74. * @描  述:手動(dòng)模式工具切換函數(shù),Hand_Mode_Flag選用不同的工具控制
  75. * @參  數(shù):無
  76. * @返回值:無
  77. *********************************/
  78. void Hand_Mode()
  79. {
  80.         static uchar Voice_Flag[4]={0};//語音標(biāo)志
  81.         static uchar One_Flag=0;//消除第一次語音播報(bào)標(biāo)志
  82.         Control_Method_Key_Scan();//控制方式按鍵掃描
  83.         switch(Hand_Mode_Flag)
  84.         {
  85.                 case 0:  
  86.                                  Ray_Hand_Key();    //紅外手動(dòng)按鍵
  87.                                  Ray_Decode_Ser(); //紅外解碼函數(shù)
  88.                         
  89.                           if(One_Flag)  //程序執(zhí)行第一次的時(shí)候不執(zhí)行
  90.                                    {
  91.                                           if(Voice_Flag[0]==0)
  92.                                           {
  93.                                                   //ES=0;//關(guān)閉藍(lán)牙串口中斷
  94.                                                  JQ8900_Select_TwoCmd_Song(0x01,0x04);//紅外遙控
  95.                                                 // EX0=1;//打開外部中斷0
  96.                                                  Voice_Flag[0]=1;
  97.                                                  Voice_Flag[1]=0;
  98.                                                  Voice_Flag[2]=0;        
  99.                                                   Voice_Flag[3]=0;        
  100.                                           }
  101.                                 }
  102.                                   break;
  103.                 case 1:
  104.                               Blue_Hand_Key();      //藍(lán)牙手動(dòng)模式
  105.                                   if(Voice_Flag[1]==0)
  106.                                   {
  107.                                           One_Flag=1;  //再執(zhí)行紅外的時(shí)候播報(bào)
  108.                                         JQ8900_Select_TwoCmd_Song(0x01,0x05);//藍(lán)牙遙控
  109.                                          Voice_Flag[0]=0;
  110.                      Voice_Flag[1]=1;
  111.                      Voice_Flag[2]=0;        
  112.                      Voice_Flag[3]=0;                                                  
  113.                                   }
  114.                                   break;
  115.                 case 2:  
  116.                               NRF24L01_Hand_Key(); //無線手動(dòng)按鍵
  117.                                     NRF24L01_Receive();//接收數(shù)據(jù)的函數(shù)
  118.                                   if(Voice_Flag[2]==0)
  119.                                   {
  120.                                           One_Flag=1; //再執(zhí)行紅外的時(shí)候播報(bào)
  121.                                         //  ES=0;//關(guān)閉藍(lán)牙串口中斷
  122.                                           //EX0=0;//關(guān)閉外部中斷0
  123.                                         JQ8900_Select_TwoCmd_Song(0x01,0x06);//無線遙控
  124.                                          Voice_Flag[0]=0;
  125.                      Voice_Flag[1]=0;
  126.                      Voice_Flag[2]=1;        
  127.                                            Voice_Flag[3]=0;        
  128.                                   }
  129.                               break;
  130.                 case 3:
  131.                        if(Voice_Flag[3]==0)
  132.                                   {
  133.                                           One_Flag=1;  //再執(zhí)行紅外的時(shí)候播報(bào)
  134.                                          // EX0=0;//關(guān)閉外部中斷0
  135.                                         JQ8900_Select_TwoCmd_Song(0x01,0x07);//WIFI遙控
  136.                                         //  ES=1;//打開藍(lán)牙串口中斷
  137.                                          Voice_Flag[0]=0;
  138.                      Voice_Flag[1]=0;
  139.                      Voice_Flag[2]=0;         
  140.                                           Voice_Flag[3]=1;        
  141.                                   }
  142.                          ESP8266_Hand_Key();//WIFI手動(dòng)按鍵
  143.                         break;
  144.         }
  145. }
  146. /*********************************
  147. * @函數(shù)名:Auto_Hand_Mode
  148. * @描  述:自動(dòng)手動(dòng)模式切換函數(shù)Auto_Hand_Mode_Flag為0自動(dòng),為1手動(dòng)
  149. * @參  數(shù):無
  150. * @返回值:無
  151. *********************************/
  152. void Auto_Hand_Mode()//自動(dòng)手動(dòng)模式切換
  153. {
  154.         static uchar Voice_Flag[2]={0};//語音標(biāo)志
  155.         static uchar One_Flag=0;//消除第一次不語音播報(bào)標(biāo)志
  156.         Mode_Key_Scan();//按鍵掃描切換自動(dòng)手動(dòng)
  157.     switch(Auto_Hand_Mode_Flag)
  158.      {
  159.               case 0:   
  160.                       if(Voice_Flag[0]==0) //語音只執(zhí)行一次
  161.                                   {
  162.                                            EX1 = 1; //打開超聲波
  163.                                          One_Flag=1;//第二次,可以播報(bào)
  164.                                         JQ8900_Select_TwoCmd_Song(0x01,0x02);//自動(dòng)模式
  165.                         Voice_Flag[0]=1;
  166.                         Voice_Flag[1]=0;
  167.                                   }
  168.                                   Auto_Mode();//自動(dòng)
  169.                         break;
  170.               case 1:   
  171.                   /*一上電程序進(jìn)入這里,由于要播放發(fā)送機(jī)已啟動(dòng),所以不播放下面的*/
  172.                                   if(One_Flag)//如果等于1播報(bào),否則不播報(bào)
  173.                                   {
  174.                                           if(Voice_Flag[1]==0)
  175.                                           {
  176.                                                   EX1 = 0; //關(guān)閉超聲波
  177.                                                  Car_Stop();// //由自動(dòng)模式切換到手動(dòng)模式,小車需停止
  178. //                                                TR1=0;//關(guān)閉定時(shí)器1
  179.                                                 JQ8900_Select_TwoCmd_Song(0x01,0x03);//手動(dòng)模式
  180.                                                 Voice_Flag[0]=0;
  181.                                                 Voice_Flag[1]=1;
  182.                                           }
  183.                               }
  184.                                    Hand_Mode();//手動(dòng)
  185.                       break;
  186.        }
  187. }
復(fù)制代碼

全部資料51hei下載地址:
Stc8A8K小車簡化.zip (246.23 KB, 下載次數(shù): 111)

作者: 冷月楓    時(shí)間: 2020-3-10 07:32
感謝管理員的整理
作者: ld2020    時(shí)間: 2020-8-6 09:48
程序?qū)懙暮芤?guī)范啊
作者: passerding    時(shí)間: 2020-12-1 21:47
樓主有電路圖嗎

作者: laoying    時(shí)間: 2020-12-22 20:15
有電路圖嗎?
作者: laoying    時(shí)間: 2020-12-23 20:52
是否能夠提供原理圖




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人免费看片在线观看 | www.黄视频| 成年视频在线观看 | 国产一区久久 | 久久久久久亚洲 | 日本毛片视频 | 成人毛片100免费观看 | 国产日韩精品在线 | 黄色福利视频 | 91免费黄| 国产亚洲一区二区三区 | 一区二区三区影视 | 国产成人精品亚洲 | 日本美女性生活 | 国产欧美日韩综合精品 | 亚洲精品自拍视频 | 青青草视频免费在线观看 | 国产乱码久久久久久 | 免费看片黄色 | 久久久综合网 | 免费的黄色录像 | 日韩三级中文字幕 | 亚洲一级片 | 久久久中文字幕 | 一区久久 | 成人免费公开视频 | 久草这里只有精品 | 亚洲一级黄色片 | 日韩免费精品视频 | 亚洲国产黄色 | 91亚洲国产成人久久精品麻豆 | 日日干干| 久久日韩精品 | 视频一区二区三区在线观看 | 国产在线一区二区三区 | 欧美日韩少妇 | 黄色一级免费看 | 黄视频在线播放 | 欧美在线日韩 | 午夜亚洲精品 | 欧美激情一区二区 |