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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51/52單片機的倒車雷達代碼 (超聲波+LCD1602)

[復制鏈接]
跳轉到指定樓層
樓主
ID:560467 發表于 2020-3-5 23:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基本內容是利用超聲波制作一個到場雷達,可設定兩段距離分別產生兩種報警聲音

單片機源程序如下:

  1. #include<reg51.h>
  2. #include<intrins.h>       
  3. #include"lcd.h"

  4. sbit Trig = P2^1;        //超聲波
  5. sbit Echo = P2^0;        //超聲波
  6. sbit BUZZ=P1^5;                //蜂鳴器
  7. sbit K1=P3^1;                //選擇調節high 或者 low
  8. sbit K2=P3^0;                //調節high/low ++
  9. sbit K3=P3^2;                //調節high/low --

  10. unsigned char PuZh[]="HIGH    LOW";
  11. unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.','-','M'};

  12. static unsigned char DisNum = 0; //顯示用指針                                  
  13. unsigned int  time=0;
  14. unsigned long S=0;
  15. unsigned long tj=0;
  16. unsigned int high=30,low=10;                //high:第一次報警位置   low:第二次報警位置   第二次報警的蜂鳴器響的時間較長
  17. bit  flag =0,flag2=0;
  18. unsigned char disbuff[4]={ 0,0,0,0,};
  19. unsigned char self[4]={ 0,0,0,0,};

  20. void delay(unsigned int jj)
  21. {
  22.         while(jj--);
  23. }
  24. /*******************************************************************************
  25. * 函 數 名         : main
  26. * 函數功能                   : 主函數
  27. * 輸    入         : 無
  28. * 輸    出         : 無
  29. *******************************************************************************/
  30. void Conut(void)
  31.         {
  32.          time=TH0*256+TL0;
  33.          TH0=0;
  34.          TL0=0;
  35.        
  36.          S=(time*1.7)/100;     //算出來是CM
  37.                 tj=S;
  38.          if((S>=700)||flag==1) //超出測量范圍顯示“-”
  39.          {         
  40.           flag=0;
  41.          
  42.           DisplayOneChar(0, 1, ASCII[11]);
  43.           DisplayOneChar(1, 1, ASCII[10]);        //顯示點
  44.           DisplayOneChar(2, 1, ASCII[11]);
  45.           DisplayOneChar(3, 1, ASCII[11]);
  46.           DisplayOneChar(4, 1, ASCII[12]);        //顯示M
  47.          }
  48.          else
  49.          {
  50.                         disbuff[0]=S%1000/100;
  51.                         disbuff[1]=S%1000%100/10;
  52.                         disbuff[2]=S%1000%10 %10;
  53.                         DisplayOneChar(0, 1, ASCII[disbuff[0]]);
  54.                         DisplayOneChar(1, 1, ASCII[10]);        //顯示點
  55.                         DisplayOneChar(2, 1, ASCII[disbuff[1]]);
  56.                         DisplayOneChar(3, 1, ASCII[disbuff[2]]);
  57.                         DisplayOneChar(4, 1, ASCII[12]);        //顯示M
  58.                  
  59.                         self[0]=high/10;
  60.                         self[1]=high%10;
  61.                         self[2]=low/10;
  62.                         self[3]=low%10;
  63.                         DisplayOneChar(5, 0, ASCII[self[0]]);
  64.                         DisplayOneChar(6, 0, ASCII[self[1]]);
  65.                   DisplayOneChar(12, 0, ASCII[self[2]]);
  66.                   DisplayOneChar(13, 0, ASCII[self[3]]);
  67.          }
  68.         }

  69. void zd0() interrupt 1                  //T0中斷用來計數器溢出,超過測距范圍
  70.   {
  71.     flag=1;                                                         //中斷溢出標志
  72.   }

  73. void  StartModule()                          //啟動模塊
  74.   {
  75.           Trig=1;                                             //啟動一次模塊
  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.           _nop_();
  97.           Trig=0;
  98.   }

  99. void button()
  100. {
  101.         if(K1==0)
  102.         {
  103.                 delay(30);
  104.                 if(K1==0)
  105.                 {
  106.                         flag2=~flag2;
  107.                 }
  108.         }
  109.         if(K2==0)
  110.         {
  111.                 delay(20);
  112.                 if(K2==0)
  113.                 {
  114.                         if(flag2==0)
  115.                         {
  116.                                 high++;
  117.                                 if(high>=100) high=20;
  118.                         }
  119.                         else
  120.                         {
  121.                                 low++;
  122.                                 if(low>=high) low=high;
  123.                         }
  124.                 }
  125.         }
  126.         if(K3==0)
  127.         {
  128.                 delay(20);
  129.                 if(K3==0)
  130.                 {
  131.                         if(flag2==0)
  132.                         {
  133.                                 high--;
  134.                                 if(high<=low) high=low;
  135.                         }
  136.                         else
  137.                         {
  138.                                 low--;
  139.                                 if(low<=5) low=5;
  140.                         }
  141.                 }
  142.         }
  143.         if(flag2==0)
  144.         {
  145.                 DisplayOneChar(4, 0, 42);
  146.                 DisplayOneChar(11, 0, 58);
  147.         }
  148.         else
  149.         {
  150.                 DisplayOneChar(4, 0, 58);
  151.                 DisplayOneChar(11, 0, 42);
  152.         }
  153. }

  154. void delayms(unsigned int ms)
  155. {
  156.         unsigned char i=100,j;
  157.         for(;ms;ms--)
  158.         {
  159.                 while(--i)
  160.                 {
  161.                         j=10;
  162.                         while(--j);
  163.                 }
  164.         }
  165. }

  166. void bibu()
  167. {
  168.         if(tj>=low&&tj<=high)
  169.         {
  170.                 long d=0;
  171.                 for(d=0;d<=300;d++)
  172.                 {
  173.                         BUZZ=1;
  174.                         delay(100);
  175.                         BUZZ=0;
  176.                 }
  177.         }
  178.         if(tj<low)
  179.         {
  180.                 long d=0;
  181.                 for(d=0;d<=800;d++)
  182.                 {
  183.                         BUZZ=1;
  184.                         delay(100);
  185.                         BUZZ=0;
  186.                 }
  187.         }
  188. }

  189. void main(void)
  190. {

  191.          TMOD=0x01;                   //設T0為方式1,GATE=1;
  192.          TH0=0;
  193.          TL0=0;         
  194.          ET0=1;             //允許T0中斷
  195.          EA=1;                           //開啟總中斷       

  196.         InitLcd1602();
  197.         LcdShowStr(0,0,PuZh);
  198.         while(1)
  199.         {
  200.                  StartModule();
  201.              while(!Echo);                //當RX為零時等待
  202.              TR0=1;                            //開啟計數
  203.              while(Echo);                        //當RX為1計數并等待
  204.              TR0=0;                                //關閉計數
  205.          Conut();                        //計算
  206.                  delayms(80);
  207.                 bibu();
  208.                 button();
  209.         }       
  210. }
復制代碼

所有資料51hei提供下載:
倒車雷達.zip (46.96 KB, 下載次數: 88)


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

使用道具 舉報

沙發
ID:632112 發表于 2020-4-7 17:04 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

板凳
ID:895873 發表于 2021-3-25 10:19 | 只看該作者
有沒有電路仿真圖圖呀
回復

使用道具 舉報

地板
ID:896273 發表于 2021-3-25 16:24 | 只看該作者
用的是超聲波模塊嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人午夜在线视频 | 91日韩在线 | 国产情品 | 福利片在线看 | 成人在线精品视频 | 国产日韩精品一区 | 精品久久网| 欧美精品一区三区 | 国产免国产免费 | 欧美日产国产成人免费图片 | 色综合色综合色综合 | 91精产国品一二三区 | 久久久久久久久久久久久9999 | 亚洲福利一区 | 69av网 | 国产精品123区 | 亚洲人在线观看视频 | 国产成人精品久久二区二区91 | www日本在线播放 | 欧美在线播放一区 | 男人天堂网址 | 国产高清视频在线观看 | 91福利网 | 日本精品视频在线观看 | 成人在线中文 | 天天拍天天操 | 视频三区 | 久久精品国产一区 | 成人午夜免费在线视频 | 野狼在线社区2017入口 | 国产日韩一区二区三免费高清 | 欧美精品在欧美一区二区 | 欧美一级二级三级视频 | 亚洲精品无人区 | 视频一区在线播放 | 91麻豆精品国产91久久久更新资源速度超快 | 天天干视频 | 99久久精品国产一区二区三区 | 久久狠狠 | 国产剧情一区 | 国产一区二区三区四区 |