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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機超聲波避障智能小車源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:313508 發(fā)表于 2018-4-22 09:27 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
無聊的時候?qū)懙男≤嚦暡ū苷铣绦?br />

單片機源程序如下:
  1. /***********************************************************************************************************/
  2. //HC-SR04 超聲波測距模塊 DEMO 程序
  3. //晶振:11。0592
  4. //程序          QQ:  517535000
  5. //接線:模塊TRIG接 P1.2  ECH0 接P1.1
  6. //串口波特率9600
  7. /***********************************************************************************************************/          
  8.         #include   <AT89X51.H>
  9.         #include   <intrins.h>
  10.     #include   <STDIO.H>

  11.     #define uchar unsigned  char
  12.     #define uint  unsigned   int  
  13.         #define  RX  P1_5
  14.     #define  TX  P1_6
  15.   
  16.         sbit IN1=P2^4 ;
  17.         sbit IN2=P2^3;
  18.         sbit IN3=P2^2;
  19.         sbit IN4=P2^1;

  20.         unsigned int  time=0;
  21.         unsigned int  timer=0;
  22.         float         S=0;
  23.     bit           flag =0;
  24.        


  25.         void qian()//前進(jìn)
  26. {
  27.     IN1=1;
  28.         IN2=0;

  29.         IN3=1;
  30.         IN4=0;
  31. }

  32. void hou()//后退
  33. {
  34.     IN1=0;
  35.         IN2=1;

  36.         IN3=0;
  37.         IN4=1;
  38. }       

  39. void stop()//停止
  40. {
  41.     IN1=0;
  42.         IN2=0;

  43.         IN3=0;
  44.         IN4=0;
  45. }

  46. void you()//右轉(zhuǎn)
  47. {
  48.     IN1=1;
  49.         IN2=0;

  50.         IN3=0;
  51.         IN4=1;
  52. }






  53. /********************************************************/
  54. void delayms(unsigned int ms)
  55. {
  56.         unsigned char i=100,j;
  57.         for(;ms;ms--)
  58.         {
  59.                 while(--i)
  60.                 {
  61.                         j=10;
  62.                         while(--j);
  63.                 }
  64.         }
  65. }

  66. /********************************************************/
  67.      void zd0() interrupt 1                  //T0中斷用來計數(shù)器溢出,超過測距范圍
  68.   {
  69.     flag=1;                                                         //中斷溢出標(biāo)志
  70.   }




  71. /********************************************************/
  72.    void  StartModule()                          //T1中斷用來掃描數(shù)碼管和計800MS啟動模塊
  73.   {
  74.           TX=1;                                         //800MS  啟動一次模塊
  75.           _nop_();
  76.           _nop_();
  77.           _nop_();
  78.           _nop_();
  79.           _nop_();
  80.           _nop_();
  81.           _nop_();
  82.           _nop_();
  83.           _nop_();
  84.           _nop_();
  85.           _nop_();
  86.           _nop_();                                                                           
  87.           _nop_();
  88.           _nop_();
  89.           _nop_();
  90.           _nop_();
  91.           _nop_();
  92.           _nop_();
  93.           _nop_();
  94.           _nop_();
  95.           _nop_();
  96.           TX=0;
  97.   }


















  98. /********************************************************/
  99.     void Conut(void)
  100.         {
  101.                          time=TH0*256+TL0;
  102.                          TH0=0;
  103.                          TL0=0;
  104.                          S=(time*1.7)/100;     //算出來是CM
  105.                          if(flag==1)                    //超出測量
  106.                          {
  107.                                   flag=0;        
  108.                      }       
  109.          }


  110. /********************************************************/
  111. void main(void)
  112. {  

  113.    
  114.     TMOD=0x21;                   //設(shè)T0為方式1,GATE=1;
  115.         SCON=0x50;
  116.                                                                                     
  117.         TH0=0;
  118.         TL0=0;
  119.         TR0=1;  
  120.         ET0=1;             //允許T0中斷
  121.         TR1=1;                           //開啟定時器
  122.         TI=1;

  123.         SCON|=0X50;                        //設(shè)置為工作方式1
  124.         TMOD|=0X20;                        //設(shè)置計數(shù)器工作方式2
  125.         PCON=0X80;                        //波特率加倍
  126.         TH1=0XF3;                                //計數(shù)器初始值設(shè)置,注意波特率是4800的
  127.         TL1=0XF3;
  128.         ES=1;                                                //打開接收中斷


  129.    

  130.         EA=1;                           //開啟總中斷

  131. //        delayms(2000);
  132.         while(1)
  133.         {
  134.          StartModule();
  135.          while(!RX);                //當(dāng)RX為零時等待
  136.          TR0=1;                            //開啟計數(shù)
  137.          while(RX);                        //當(dāng)RX為1計數(shù)并等待
  138.          TR0=0;                                //關(guān)閉計數(shù)
  139.      Conut();                        //計算


  140.          /*    printf("%f\r\n",S); //輸出一次數(shù)據(jù)
  141.                          if(S<10)
  142.                            IN1=0;
  143.                            else IN1=1;   */


  144.                                              if(S<30)
  145.                 {
  146.                           delayms(2);
  147.                           if(S<30)
  148.                           {
  149.                                          
  150.                                          stop();
  151.                                          delayms(4);
  152.                                          hou();
  153.                                          delayms(30);
  154.                                
  155.                                          B:you();
  156.                                            delayms(20);
  157.                                            stop();
  158.                                           
  159.                                                  StartModule();
  160.                                                  while(!RX);                //當(dāng)RX為零時等待
  161.                                                  TR0=1;                            //開啟計數(shù)
  162.                                                  while(RX);                        //當(dāng)RX為1計數(shù)并等待
  163.                                                  TR0=0;                                //關(guān)閉計數(shù)
  164.                                              Conut();                        //計算




  165.                
  166.                                                            if(S>40)
  167.                                                            {
  168.                                                                            you();
  169.                                                                         delayms(8);
  170.                                                     stop();
  171.                                                                 delayms(4);
  172.                                                                         qian();
  173.                                                }       
  174.                                                            else
  175.                                                            {
  176.                                                              goto B;
  177.                                                            }                 
  178.                         }
  179.                                 else
  180.                                 {
  181.                                    qian();
  182.                                 }
  183.                  }
  184.                 else
  185.                 {  
  186.                   
  187.                    qian();
  188.                 }                          

  189.                                                                                                                  


  190.           delayms(10);

  191.         }

  192. }
復(fù)制代碼

所有資料51hei提供下載:
超聲波避障.rar (84.88 KB, 下載次數(shù): 87)






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

使用道具 舉報

沙發(fā)
ID:171111 發(fā)表于 2018-5-3 22:58 | 只看該作者
謝謝 這是好東西啊
回復(fù)

使用道具 舉報

板凳
ID:242298 發(fā)表于 2019-10-23 02:20 | 只看該作者
發(fā)現(xiàn)刷寫后沒有反應(yīng)!!!!!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品第一 | 天天澡天天狠天天天做 | 亚洲播放 | 日日骚网 | 精品一区二区三区四区在线 | 成人免费一区二区三区视频网站 | 久久精品欧美一区二区三区不卡 | 1级黄色大片| 国产毛片久久久 | 91精品国产综合久久久动漫日韩 | 欧美一区二区三区视频 | 欧美日本一区二区 | 一区在线视频 | 久久成人一区二区三区 | 成人精品一区二区三区 | 欧美老妇交乱视频 | 成人免费观看男女羞羞视频 | 欧美高清成人 | 欧美在线小视频 | 亚洲人免费视频 | 亚州av| 色综合一区二区 | 秋霞a级毛片在线看 | 午夜精品久久久久久久星辰影院 | 色婷婷婷婷色 | 日韩中文在线视频 | 欧美日韩成人一区二区 | 国产剧情一区 | 美女视频黄色的 | 色综合桃花网 | 黄色片免费| 久久精品免费看 | 亚洲xx在线| 欧美黑人狂野猛交老妇 | 极情综合网 | 国产精品激情 | 四虎在线视频 | 精品欧美乱码久久久久久 | 在线观看成人 | 91在线视频观看免费 | 成人精品免费视频 |