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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6892|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

STC8單片機(jī)智能小車制作 附源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
寒假做的一個(gè)智能小車,有自動(dòng)模式(超聲波避障)(紅外避障)手動(dòng)模式(紅外遙控)(無線NRF24l01遙控)(WIFI ESP8266遙控)(藍(lán)牙遙控)小車可前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),停止,1-7擋(可調(diào)),OLED用來顯示主界面和超聲波檢測(cè)的距離,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};//語(yǔ)音標(biāo)志
  81.         static uchar One_Flag=0;//消除第一次語(yǔ)音播報(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};//語(yǔ)音標(biāo)志
  155.         static uchar One_Flag=0;//消除第一次不語(yǔ)音播報(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) //語(yǔ)音只執(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小車簡(jiǎn)化.zip (246.23 KB, 下載次數(shù): 111)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:535176 發(fā)表于 2020-3-10 07:32 | 只看該作者
感謝管理員的整理
回復(fù)

使用道具 舉報(bào)

板凳
ID:752280 發(fā)表于 2020-8-6 09:48 | 只看該作者
程序?qū)懙暮芤?guī)范啊
回復(fù)

使用道具 舉報(bào)

地板
ID:562211 發(fā)表于 2020-12-1 21:47 | 只看該作者
樓主有電路圖嗎
回復(fù)

使用道具 舉報(bào)

5#
ID:843544 發(fā)表于 2020-12-22 20:15 | 只看該作者
有電路圖嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:843544 發(fā)表于 2020-12-23 20:52 | 只看該作者
是否能夠提供原理圖
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人av在线网站 | 日韩精品一区二区三区久久 | 少妇一级淫片免费放播放 | 麻豆亚洲 | 国产一区二区 | 欧美一区2区三区4区公司二百 | 亚洲精品永久免费 | 国产视频1区2区 | 精品久久电影 | 亚洲欧洲国产视频 | 国产精品成人一区二区三区夜夜夜 | 日韩在线xx| 日本成人片在线观看 | 久久一区二区三区四区 | 蜜桃精品视频在线 | 日韩欧美国产精品一区二区 | 亚洲欧美国产精品一区二区 | 成人免费一区二区三区视频网站 | 91精品国产综合久久久久久 | 久久精品中文字幕 | 国产美女视频黄a视频免费 国产精品福利视频 | 中文在线一区二区 | 91传媒在线观看 | 精品视频在线播放 | 国产精品久久久久久久久久 | 日韩淫片免费看 | 日韩在线精品 | 在线免费av电影 | 国产不卡一区在线观看 | 国产精品久久久久久久久久妞妞 | 欧美国产激情二区三区 | 网黄在线| 91视视频在线观看入口直接观看 | 在线资源视频 | 亚洲精品黄 | 日本黄色一级片视频 | 久久av一区二区三区 | 麻豆精品国产免费 | 亚洲视频免费一区 | 午夜精品一区二区三区在线观看 | 久久精品免费看 |