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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4983|回復: 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)


回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品在线看 | 四虎影院免费在线 | 欧美色欧美亚洲另类七区 | 蜜桃精品噜噜噜成人av | 九九亚洲精品 | 国产美女精品视频 | 免费看黄视频网站 | 欧美日韩久久久久 | 特黄毛片| 久久一区二区三区四区 | 国产精品国产精品 | 天天射视频 | av在线一区二区 | 日韩高清一区 | 亚洲综合在线一区 | 欧美视频 亚洲视频 | 午夜免费在线观看 | 亚洲女人天堂成人av在线 | 五月天综合影院 | 日韩在线免费视频 | 久草成人 | 亚洲一区二区三区在线视频 | 特级做a爰片毛片免费看108 | 一区二区伦理电影 | 久久久成人一区二区免费影院 | 在线欧美亚洲 | 成人性生交大片免费看中文带字幕 | 国产乱码精品一区二区三区中文 | 在线午夜| 免费成人高清在线视频 | 99re6在线 | 欧美二区三区 | 99久久免费精品国产免费高清 | 不卡在线视频 | 国产网站在线播放 | 亚洲国产精品一区 | 国产小视频在线观看 | 黄网站免费在线 | a看片 | 综合久久国产 | 免费久久网站 |