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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9589|回復: 11
收起左側

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

  [復制鏈接]
ID:168149 發表于 2017-7-1 10:35 | 顯示全部樓層 |閱讀模式

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

請在上電之前,檢查好接線是否正確。
QQ圖片20170701103356.jpg
可以按鍵調節報警距離,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 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:640699 發表于 2019-11-12 20:21 | 顯示全部樓層
感謝樓主分享
回復

使用道具 舉報

ID:617693 發表于 2019-9-28 19:18 | 顯示全部樓層
太強了感謝
回復

使用道具 舉報

ID:602896 發表于 2019-9-2 22:08 | 顯示全部樓層
太強了,就是沒看懂,蜂鳴器主函數
回復

使用道具 舉報

ID:487508 發表于 2019-4-4 20:41 | 顯示全部樓層
太強了,瘋狂打扣
回復

使用道具 舉報

ID:448852 發表于 2018-12-18 13:54 | 顯示全部樓層
好資料,收藏了
回復

使用道具 舉報

ID:448811 發表于 2018-12-18 13:01 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品亚洲精品国产欧美 | 成人午夜免费视频 | 色婷婷九月 | 精品三区| 一级毛片视频 | 亚洲 精品 综合 精品 自拍 | 成人av在线播放 | 久久国产精品精品国产色婷婷 | 日本国产一区二区 | 高清欧美性猛交xxxx黑人猛交 | 婷婷色成人 | 精品一区二区三区在线观看国产 | 四色永久 | 99视频在线免费观看 | 高清视频一区二区三区 | 成人夜晚看av | 日韩欧美一区二区三区免费看 | 逼逼网 | 黑人巨大精品欧美一区二区免费 | 久久久这里只有17精品 | 欧美一二三区 | 亚洲黄色高清视频 | 老司机成人在线 | 日韩毛片播放 | 99re视频在线免费观看 | 91中文字幕在线观看 | 精品不卡 | 久久综合香蕉 | 久久在线| 亚洲 中文 欧美 日韩 在线观看 | 国产在线一区二区 | 妹子干综合 | 欧美一级片免费看 | 国产激情在线 | 日韩综合一区 | 在线观看日本网站 | 精品国产一区二区三区久久影院 | 色免费在线视频 | 中文字幕精品视频 | 久久99精品国产自在现线小黄鸭 | 午夜免费精品视频 |