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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2847|回復: 0
打印 上一主題 下一主題
收起左側

一個單片機超聲波尋物循跡小車的源碼

[復制鏈接]
跳轉到指定樓層
樓主
電路設計圖 實現的功能:從一個位置出發,開始尋物,在物體前10-20厘米處停下并亮燈,按一下開關后繼續尋物,找到三個物體后沿場地邊緣黑線到指定位置停車。

單片機源程序如下:
  1. #include <reg51.h>
  2. #include <stdio.h>
  3. #include <intrins.h>
  4. #define uchar unsigned  char
  5. #define uint  unsigned   int
  6. //管腳定義
  7.          sbit P2_0=P2^0;
  8.         sbit P2_1=P2^1;
  9.         sbit P2_2=P2^2;
  10.         sbit P2_3=P2^3;
  11.         sbit P2_4=P2^4;
  12.         sbit P2_5=P2^5;
  13.          sbit Tr=P3^7;            //超聲波觸發
  14.     sbit Ec=P3^6;            //超聲波輸出
  15.     sbit key=P1^0;           //按鍵
  16.            sbit PCA_LED=P1^1;                         //數碼管
  17.         sbit zhong=P0^6;
  18.         sbit zuo=P0^5;
  19.         sbit you=P0^7;
  20.         sbit hou=P0^1;
  21. //定義變量                                                                                                                          
  22.     uint L = 0;               //距離長度(cm)
  23.         uint time=0;
  24.         uint L1=0;
  25.         uint L2=0;
  26.         uint a=3;
  27.         uchar zdbz;
  28. void ultInit()
  29. {
  30.     TMOD=0X11;
  31.         TH1=(65536-100)/256;          //100US定時
  32.         TL1=(65536-100)%256;
  33.         TH0=0;
  34.         TL0=0;  
  35.         TR1= 1;
  36.         ET1= 1;
  37.         ET0= 1;
  38.         EA = 1;
  39. }
  40. void ultStart()
  41. {
  42.     Tr = 1;
  43.     _nop_();
  44.           _nop_();
  45.           _nop_();
  46.           _nop_();
  47.           _nop_();
  48.           _nop_();
  49.           _nop_();
  50.           _nop_();
  51.           _nop_();
  52.           _nop_();
  53.           _nop_();
  54.           _nop_();
  55.           _nop_();
  56.           _nop_();
  57.           _nop_();
  58.           _nop_();
  59.           _nop_();
  60.           _nop_();
  61.           _nop_();
  62.           _nop_();
  63.           _nop_();
  64.     Tr = 0;
  65. }
  66. void count()
  67. {
  68.   while(!Ec);                       //當RX為零時等待
  69.   TR0=1;                               //開啟計數
  70.   while(Ec);                           //當RX為1計數并等待
  71.   TR0=0;                                   //關閉計數
  72.   time=TH0*256+TL0;                   //讀取脈寬長度
  73.   TH0=0;
  74.   TL0=0;
  75.   L=(time*1.7)/100;        //算出來是CM
  76. }
  77. void softqianjin()
  78. {        
  79.     uchar zdbz=1;
  80.     P2_4=1;
  81.         P2_5=1;        //ENA ENB置為1
  82.         P2_0=1;
  83.         P2_1=0;
  84.         P2_2=1;
  85.         P2_3=0;
  86.          TMOD=0x11;
  87.         TH1=0xfd;
  88.         TL1=0x44;
  89.         EA=1;
  90.         ET1=1;
  91.         TR1=1;
  92. }
  93. void left(void)
  94. {
  95.         P2_4=1;        //ENA為1
  96.         P2_5=0;        //ENB為0
  97.         P2_0=1;
  98.         P2_1=0;
  99.         P2_2=1;
  100.         P2_3=0;
  101. }
  102. void right(void)
  103. {
  104.         P2_4=0;        //ENA為1
  105.         P2_5=1;        //ENB為0
  106.         P2_0=1;
  107.         P2_1=0;
  108.         P2_2=1;
  109.         P2_3=0;        
  110. }

  111. void qianjin(void)
  112. {
  113.         P2_4=1;
  114.         P2_5=1;        //ENA ENB置為1
  115.         P2_0=1;
  116.         P2_1=0;
  117.         P2_2=1;
  118.         P2_3=0;
  119. }
  120. void houtui(void)
  121. {
  122.         P2_4=1;
  123.         P2_5=1;        
  124.         P2_0=0;
  125.         P2_1=1;
  126.         P2_2=0;
  127.         P2_3=1;
  128. }
  129. void shating(void)
  130. {
  131.         P2_4=0;
  132.         P2_5=0;        //ENA ENB置為1
  133.         P2_0=0;
  134.         P2_1=0;
  135.         P2_2=0;
  136.         P2_3=0;
  137. }

  138. void softqianjinzd() interrupt 3
  139. {
  140.         if(zdbz==1)
  141.          {
  142.          P2_0=0;
  143.          P2_2=0;
  144.          TH1=0xfe;
  145.          TL1=0xd4;
  146.          zdbz=0;
  147.         }
  148.         else
  149.         {
  150.          P2_0=1;
  151.          P2_2=1;
  152.          TH1=0xfd;
  153.          TL1=0x44;
  154.          zdbz=1;
  155.         }
  156. }
  157. void delay(unsigned int i)
  158. {
  159.         unsigned int j;
  160.         unsigned char k;
  161.         for(j=i;j>0;j--)
  162.                 for(k=125;k>0;k--);
  163. }


  164. void main()                        
  165. {        
  166.         PCA_LED=0;
  167.         while(key==1);
  168.         qianjin();
  169.         delay(10000);
  170.         ultInit();         
  171.         while(a)
  172. {               
  173.         ultStart();
  174.         count();
  175.           if(L>70)
  176.             {
  177.                 PCA_LED=0;
  178.                 left();
  179.                 }
  180.            else if(L<15)
  181.            {shating();
  182.            while(key==1);
  183.            a--;
  184.            }
  185.            else if(L>15&&L<70)           
  186.                 {
  187.                 PCA_LED=1;
  188.                 qianjin();        
  189.                 }
  190. }
  191. softqianjin();
  192. while(1)
  193. {
  194. if(zhong==1&&zuo==1&&you==1) {shating();delay(2000);break;}
  195. if(zhong==1&&zuo==1&&you==0) {left();}
  196. if(zhong==1&&zuo==0&&you==1) {right();}
  197. }
  198. left();delay(2000);shating();delay(2000);
  199. while(1)
  200. {                                                                                                           
  201. if(zhong==0&&zuo==0&&you==0) {softqianjin();}
  202. if(zhong==0&&zuo==0&&you==1) {right();}
  203. if(zhong==0&&zuo==1&&you==0) {left();}
  204. if(zhong==0&&zuo==1&&you==1) {softqianjin();}
  205. if(zhong==1&&zuo==0&&you==0) {softqianjin();}
  206. if(zhong==1&&zuo==0&&you==1) {right();}
  207. if(zhong==1&&zuo==1&&you==0) {left();}
  208. if(zhong==1&&zuo==1&&you==1) {shating();delay(2000);houtui();delay(1000);left();delay(2000);qianjin();}
  209. if(zhong==1&&hou==1&&you==1) {shating();}
  210. if(zhong==1&&hou==1)                 {shating();}
  211. }
  212. while(1);
  213. }
復制代碼
全部程序51hei下載地址:
C文件代碼.zip (1.26 KB, 下載次數: 20)

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 农夫在线精品视频免费观看 | 在线成人免费av | 亚洲精品中文字幕中文字幕 | 久久久久久久久91 | 日韩91 | 国产a爽一区二区久久久 | 日韩视频在线免费观看 | 欧美一级一区 | 欧美黄在线观看 | 一级中国毛片 | 天天干天天操天天射 | 国产精品久久久久久久久久 | 久久精品二区亚洲w码 | 日韩免费视频 | 99精品视频在线 | 免费99精品国产自在在线 | 亚洲 欧美 日韩 精品 | 成人欧美一区二区三区视频xxx | 欧美视频在线看 | 精品免费国产一区二区三区四区介绍 | 日韩快播电影网 | 日本不卡一区 | 久久99深爱久久99精品 | 精品国产欧美一区二区三区成人 | 巨大荫蒂视频欧美另类大 | 7799精品视频天天看 | 国产成人综合网 | 日韩精品无码一区二区三区 | 97国产在线观看 | 亚洲日韩中文字幕一区 | 天堂资源 | 久久久在线视频 | 欧美国产亚洲一区二区 | 成人高清视频在线观看 | 亚洲一区二区三区在线视频 | 黄色综合 | 欧美综合一区二区三区 | 国产传媒在线观看 | 日本天堂一区二区 | 麻豆久久精品 | 国产98色在线 |