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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51/52單片機(jī)的倒車?yán)走_(dá)代碼 (超聲波+LCD1602)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:560467 發(fā)表于 2020-3-5 23:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基本內(nèi)容是利用超聲波制作一個(gè)到場雷達(dá),可設(shè)定兩段距離分別產(chǎn)生兩種報(bào)警聲音

單片機(jī)源程序如下:

  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;                //選擇調(diào)節(jié)high 或者 low
  8. sbit K2=P3^0;                //調(diào)節(jié)high/low ++
  9. sbit K3=P3^2;                //調(diào)節(jié)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:第一次報(bào)警位置   low:第二次報(bào)警位置   第二次報(bào)警的蜂鳴器響的時(shí)間較長
  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. * 函 數(shù) 名         : main
  26. * 函數(shù)功能                   : 主函數(shù)
  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]);        //顯示點(diǎn)
  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]);        //顯示點(diǎn)
  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中斷用來計(jì)數(shù)器溢出,超過測距范圍
  70.   {
  71.     flag=1;                                                         //中斷溢出標(biāo)志
  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;                   //設(shè)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);                //當(dāng)RX為零時(shí)等待
  202.              TR0=1;                            //開啟計(jì)數(shù)
  203.              while(Echo);                        //當(dāng)RX為1計(jì)數(shù)并等待
  204.              TR0=0;                                //關(guān)閉計(jì)數(shù)
  205.          Conut();                        //計(jì)算
  206.                  delayms(80);
  207.                 bibu();
  208.                 button();
  209.         }       
  210. }
復(fù)制代碼

所有資料51hei提供下載:
倒車?yán)走_(dá).zip (46.96 KB, 下載次數(shù): 88)


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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频网| 91精产国品一二三区 | 色婷婷精品久久二区二区蜜臂av | 久久免费精彩视频 | 亚洲国产成人av好男人在线观看 | 欧美一区二区免费 | 国产精品久久久久久 | 国产99久久 | 97视频在线免费 | 亚洲高清在线 | 五月婷婷激情网 | 成人免费网站 | v亚洲| 精品一区二区av | 国产精品一区二区福利视频 | 精品国产乱码久久久久久蜜柚 | 免费黄色大片 | 欧美高清成人 | 一区视频 | 91久久国产 | 九九九久久国产免费 | 成人二区 | 欧美视频区 | 奇色影视 | 久久国产欧美日韩精品 | 久久久久久亚洲 | 久草久 | 四虎成人免费视频 | 日韩免费高清视频 | 久久精品久久综合 | 久久国产精品99久久久久久丝袜 | 日韩欧美三级电影 | 欧美国产视频 | 成人午夜精品 | www.黄色片视频 | 久草视频在线播放 | 欧美亚洲国产成人 | www.国产精品| 中文字幕日韩欧美一区二区三区 | 久久精品一级 | 国产一区二区精品在线观看 |