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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

做了一個超聲波測距報警器

  [復制鏈接]
跳轉到指定樓層
#

Trig -------  P2^1;
Echo -------  P2^0;
VCC  -------- +5v
GND  -------- GND

請在上電之前,檢查好接線是否正確。

可以按鍵調節報警距離,LCD顯示當前距離

單片機源程序如下:

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

  4. sbit Trig = P2^1;
  5. sbit Echo = P2^0;
  6. sbit LED5 = P2^7;
  7. sbit beep = P1^5;
  8. sbit jia_key=P3^2;
  9. sbit jian_key=P3^3;
  10. sbit Reset_key = P3^0;

  11. //全局變量 ,音符索引數
  12. unsigned char musicNum;
  13. //音符播放時定時寄存器處值TH0
  14. unsigned char code high_buff[] = {240,229,240, 229,240, 229};
  15. //音符播放時定時寄存器處值TL0
  16. unsigned char code low_buff[] = {6,13,6,13,6,13};


  17. unsigned char arm[]=" Alarm ";
  18. unsigned char arm1[]=" NowDis ";


  19. unsigned char num=0;


  20. unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'};

  21. static unsigned char DisNum = 0;                                   
  22.        unsigned int  time=0;
  23.            unsigned long S=0;
  24.            unsigned long m=20;
  25.            bit      flag =0;
  26.            unsigned char disbuff[4]           ={0,0,0,0,};
  27.            unsigned char disbuff1[4]   ={0,0,0,0,} ;
  28. /*延時函數單位為毫秒*/
  29. void delayms(unsigned int ms)
  30. {
  31.         unsigned char i=100,j;
  32.         for(;ms;ms--)
  33.         {
  34.                 while(--i)
  35.                 {
  36.                         j=10;
  37.                         while(--j);
  38.                 }
  39.         }
  40. }
  41. //延時函數用于蜂鳴器的延時
  42. void delayfm(unsigned int x)
  43. {
  44.   unsigned char i;
  45. while(x--)
  46. {
  47.    for(i = 0;i < 120;i++);
  48. }
  49. }

  50. /*蜂鳴器主函數*/
  51. void fengmingqi(void)
  52. {
  53.         // TMOD = 0x00;    //定時器0工作在模式0
  54.          TH1 = (8192 - 700) / 32;  //定時器賦初值
  55.          TL1 = (8192 - 700) % 32;
  56.         // EA = 1;       //開總中斷
  57.          ET1 = 1;      //開定時器0定時溢出中斷
  58.          beep = 0;
  59.           for(musicNum = 1;musicNum < 6;musicNum++)
  60.           {
  61.             TR1 = 1;
  62.             delayfm(500);
  63.             TR1 = 0;
  64.             delayfm(50);
  65.           }
  66.          
  67. }

  68. //無源蜂鳴器中斷采用t1定時器
  69. void Timer1(void) interrupt 3
  70. {
  71.   //蜂鳴器輸出電平取反
  72.   beep = ~beep;   
  73.   TH1 = high_buff[musicNum];
  74.   TL1 = low_buff[musicNum];  
  75. }


  76. /*計數程序用于將超聲波發出的信號時間與收到的作差通過計算公式從而求出距離*/
  77. void Conut(void)
  78.         {
  79.          time=TH0*256+TL0;
  80.          TH0=0;
  81.          TL0=0;
  82.        
  83.          S=(time*1.7)/100;     //算出來是CM
  84.          if((S>=700)||flag==1) //超出測量范圍顯示“-”
  85.          {         
  86.           flag=0;
  87.          
  88.           DisplayOneChar(0+9, 1, ASCII[11]);
  89.           DisplayOneChar(1+9, 1, ASCII[10]);        //顯示點
  90.           DisplayOneChar(2+9, 1, ASCII[11]);
  91.           DisplayOneChar(3+9, 1, ASCII[11]);
  92.           DisplayOneChar(4+9, 1, ASCII[12]);        //顯示M
  93.          }
  94.          else
  95.          {
  96.           disbuff[0]=S%1000/100;
  97.           disbuff[1]=S%1000%100/10;
  98.           disbuff[2]=S%1000%10 %10;
  99.           DisplayOneChar(0+9, 1, ASCII[disbuff[0]]);
  100.           DisplayOneChar(1+9, 1, ASCII[10]);        //顯示點
  101.           DisplayOneChar(2+9, 1, ASCII[disbuff[1]]);
  102.           DisplayOneChar(3+9, 1, ASCII[disbuff[2]]);
  103.           DisplayOneChar(4+9, 1, ASCII[12]);        //顯示M
  104.          
  105.          }
  106.          delayms(80);
  107. }
  108. /*報警距離顯示函數*/
  109. void dispose()
  110. {       
  111.                           disbuff1[0]=m%1000/100;
  112.                           disbuff1[1]=m%1000%100/10;
  113.                           disbuff1[2]=m%1000%10 %10;
  114.                           DisplayOneChar(0+9, 0, ASCII[disbuff1[0]]);
  115.                           DisplayOneChar(1+9, 0, ASCII[10]);        //顯示點
  116.                           DisplayOneChar(2+9, 0, ASCII[disbuff1[1]]);
  117.                           DisplayOneChar(3+9, 0, ASCII[disbuff1[2]]);
  118.                           DisplayOneChar(4+9, 0, ASCII[12]);        //顯示M                       
  119. }
  120. /*按鍵處理函數*/
  121. void key()
  122. {
  123.         while(jia_key==0)
  124.         {
  125.                 delayms(10);
  126.                 if(jia_key==0)
  127.                 {
  128.                         m++;
  129.                         dispose();
  130.                         if(m==81)
  131.                         {
  132.                                 m=80;
  133.                                
  134.                         }
  135.                        
  136.                 }       
  137.         }
  138.         while(jian_key==0)
  139.         {
  140.                 delayms(10);
  141.                 if(jian_key==0)
  142.                 {
  143.                         m--;
  144.                         dispose();
  145.                         if(m==19)
  146.                         {
  147.                                 m=20;
  148.                        
  149.                         }
  150.                          
  151.                 }
  152.         }
  153.         while(Reset_key==0)
  154.         {
  155.                 delayms(10);
  156.                 if(Reset_key==0)
  157.                 {
  158.                         m=20;
  159.                         dispose();
  160.                 }               
  161.         }
  162.        
  163. }




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

  168. void  StartModule()                          //啟動模塊
  169.   {
  170.           Trig=1;                                             //啟動一次模塊
  171.           _nop_();
  172.           _nop_();
  173.           _nop_();
  174.           _nop_();
  175.           _nop_();
  176.           _nop_();
  177.           _nop_();
  178.           _nop_();
  179.           _nop_();
  180.           _nop_();
  181.           _nop_();
  182.           _nop_();
  183.           _nop_();
  184.           _nop_();
  185.           _nop_();
  186.           _nop_();
  187.           _nop_();
  188.           _nop_();
  189.           _nop_();
  190.           _nop_();
  191.           _nop_();
  192.           Trig=0;
  193.   }





  194. void main(void)
  195. {

  196.          TMOD=0x01;                   //設T0為方式1,GATE=1;
  197. ……………………

  198. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
超聲波測距報警(LCD1602顯示).zip (48.41 KB, 下載次數: 257)



評分

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

查看全部評分

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

使用道具 舉報

11#
ID:640699 發表于 2019-11-12 20:21 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

10#
ID:617693 發表于 2019-9-28 19:18 | 只看該作者
太強了感謝
回復

使用道具 舉報

9#
ID:602896 發表于 2019-9-2 22:08 | 只看該作者
太強了,就是沒看懂,蜂鳴器主函數
回復

使用道具 舉報

8#
ID:487508 發表于 2019-4-4 20:41 | 只看該作者
太強了,瘋狂打扣
回復

使用道具 舉報

7#
ID:448852 發表于 2018-12-18 13:54 | 只看該作者
好資料,收藏了
回復

使用道具 舉報

6#
ID:448811 發表于 2018-12-18 13:01 | 只看該作者
感謝分享
回復

使用道具 舉報

5#
ID:448741 發表于 2018-12-18 11:35 | 只看該作者
感謝分享
回復

使用道具 舉報

地板
ID:241242 發表于 2018-9-14 19:54 | 只看該作者
感謝分享,正是需要的
回復

使用道具 舉報

板凳
ID:392145 發表于 2018-9-12 20:17 | 只看該作者
怎么沒有電路圖?
回復

使用道具 舉報

沙發
ID:218953 發表于 2017-7-11 21:35 | 只看該作者
感謝分享~
回復

使用道具 舉報

樓主
ID:89286 發表于 2017-7-2 08:23 | 只看該作者
thanks for sharing
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频播放 | 欧美黄色网络 | 91精品国产91 | 一本一道久久a久久精品综合蜜臀 | 亚洲视频在线播放 | 久久成人精品一区二区三区 | 午夜欧美一区二区三区在线播放 | 国产真实乱对白精彩久久小说 | 天天色天天射天天干 | 国产69精品久久久久777 | 色婷婷一区| 中文av在线播放 | 久久久久久久久99 | 欧美激情视频一区二区三区在线播放 | 日韩在线一区二区 | 亚洲一区二区三区在线观看免费 | 久久国产香蕉 | 中文字幕视频在线 | 欧美区日韩区 | 一级免费毛片 | 成人乱人乱一区二区三区软件 | 欧美第一区 | 乱一性一乱一交一视频a∨ 色爱av | 青青草视频网 | 国产区免费视频 | 日韩成人一区二区 | 国产免费让你躁在线视频 | 国产高清一区二区 | 中文字幕一区在线观看视频 | 毛片毛片毛片毛片 | 亚洲第一天堂 | 一级欧美一级日韩片 | 亚洲一区二区三区国产 | 国产精品国产精品国产专区不卡 | 超碰精品在线观看 | 国产成人一区 | 欧美中文一区 | 精品国产一区二区三区性色av | 91麻豆精品国产91久久久久久久久 | 婷婷色网| 欧美专区日韩 |