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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機超聲波測距防近視臺燈程序

[復制鏈接]
跳轉到指定樓層
樓主
程序代碼

仿真圖


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. /*********************宏定義************************/
  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. /************位定義*****************************/
  7. sbit Trig=P3^7; //超聲波模塊觸發位
  8. sbit LEDRED=P1^0;
  9. sbit LEDGREEN=P1^2;
  10. sbit speaker=P1^7;
  11. sbit person=P1^6;
  12. sbit TLED= P1^5;
  13. /************全局變量聲明***********************/
  14. uint H,T;  //定義全局變量,H--距離,T--時間

  15. /***********共陰數碼管段碼表********************/
  16. uchar a_code[]={                                          //共陰數碼管編碼0~9
  17. 0x3f,0x06,0x5b,0x4f,0x66,
  18. 0x6d,0x7d,0x07,0x7f,0x6f,
  19. /*0x77,0x7c,0x39,0x5e,0x79,
  20. 0x71*/};

  21. /***************延時函數************************/
  22. void delay(uint z)                                   //*1ms延時函數
  23. {
  24.         uint x,y;
  25.         for(x=z;x>0;x--)
  26.                 for(y=110;y>0;y--);
  27. }

  28. /*************超聲波模塊啟動函數**************/
  29. void start()
  30. {
  31.         
  32.         Trig=1; //拉高觸發信號,啟動超聲波模塊發射超聲波
  33.         _nop_();  //延時10us
  34.         _nop_();
  35.         _nop_();
  36.         _nop_();
  37.         _nop_();
  38.         _nop_();
  39.         _nop_();
  40.         _nop_();
  41.         _nop_();
  42.         _nop_();
  43.         _nop_();
  44.         _nop_();
  45.         _nop_();
  46.         _nop_();
  47.         Trig=0;  //拉低觸發信號
  48. }


  49. /*****************數碼管顯示函數*****************/
  50. void  display(unsigned int a,unsigned int b,unsigned int c,unsigned int d)
  51. {
  52.     P2=0xfe;
  53.     P0=a_code[a];
  54.     delay(5);
  55.     P2=0xfd;
  56.     P0=a_code[b];
  57.     delay(5);
  58.         P2=0xfb;
  59.     P0=a_code[c];
  60.     delay(5);
  61.         P2=0xf7;
  62.     P0=a_code[d];
  63.     delay(5);

  64. }


  65. /*****************主函數*************************/
  66. void main()
  67. {
  68.           Trig=0;
  69.          LEDRED=1;
  70.          LEDGREEN=1;
  71.          speaker=0;
  72.      EA=1;
  73. TMOD=0x19;//定時器0工作模式:
  74.                /*GATE=1(由外部中斷0引腳及TR0共同啟動定時器0)
  75.                C/T=0(定時模式)
  76.                                 M1M0=01(16位定時)*/
  77.         TH1=64580/256;
  78.         TL1=65480%256;
  79.         ET1=1;
  80.         TR0=1;        //啟動定時器0
  81.         EX0=1;        //開外部中斷0
  82.         IT0=1;        //外部中斷0設置為下降沿觸發方式
  83.         while(1)
  84. {
  85. start();   //調用超聲波模塊啟動函數
  86. display(H/1000,H%1000/100,H%1000%100/10,H%10); //調用數碼管顯示函數
  87. if(person==1)  
  88.          {
  89.                 TLED=1;
  90.                 if(H<=25)
  91.                 {
  92.                         LEDRED=0;
  93.                         LEDGREEN=1;
  94.                         TR1=1;
  95.                 }
  96.                 else
  97.                 {
  98.                         LEDRED=1;
  99.                         LEDGREEN=0;
  100.                         TR1=0;
  101.                 }
  102.         }
  103.         else
  104.         {
  105.                 TLED=0;
  106.                 LEDRED=1;
  107.                 LEDGREEN=1;
  108.                 TR1=0;
  109.         }
  110. }
  111. }

  112. /***************外部中斷0函數************************
  113. 回響輸出端高電平寬度測量(上升沿到來時啟動定時器0開始計時,
  114. 下降沿到來進入外部中斷,關閉定時器0,停止計時,計算距離
  115. ********************************************************/
  116. void int0() interrupt 0         
  117. {
  118.          TR0=0;                //關閉定時器0
  119.         EX0=0;                //關閉外部中斷0
  120.         T=(TH0*256+TL0);//計算超聲波傳輸時間,CPU采用12M時鐘,則計算的單位為us
  121.          TH0=0;                        //定時器清0
  122.          TL0=0;
  123.          H=T*0.017;         //計算距離,單位cm(注意:不能用H=(T*17)/1000,這樣變成取整了)
  124.          H=H+2;
  125.         TR0=1;                //開啟定時器0
  126.         EX0=1;                //開啟外部中斷0        
  127. }
  128. void time1() interrupt 3
  129. {
  130.         TR1=0;
  131.         TH1=65480/256;
  132.         TL1=65480%256;
  133.         speaker=~speaker;
  134.         TR1=1;
  135. }
復制代碼




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

使用道具 舉報

沙發
ID:841148 發表于 2020-12-8 16:26 | 只看該作者
有沒有文件呢?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜a级理论片915影院 | 台湾a级理论片在线观看 | 国产精品一区二区av | 国产一区二区三区 | 亚洲国产中文字幕 | 大香在线伊779 | 中文字幕亚洲在线 | 日韩在线看片 | 成人国产精品色哟哟 | 久久中文免费视频 | 国产精品日韩欧美一区二区三区 | 免费一级大片 | 午夜精品久久久 | 国产精品一区二区三区久久久 | 久久国内精品 | 久久精品一级 | 国产三级精品三级在线观看四季网 | 麻豆视频在线免费看 | av天天干 | 久久综合九色综合欧美狠狠 | 欧美精品一区二区在线观看 | 一级全黄少妇性色生活免费看 | 亚洲国产成人在线观看 | 国产999精品久久久影片官网 | 亚洲精品国产一区 | 综合久久一区 | 免费激情网站 | 成人一级视频在线观看 | 免费看一区二区三区 | 国产成人免费在线 | 热久久久久 | 久久久久久亚洲欧洲 | 黄色三级毛片 | 国产91色在线 | 亚洲 | 黄色国产在线视频 | 黄色欧美| 日本高清在线一区 | 久久新视频| 亚洲精品中文字幕在线观看 | 久久精品国产亚洲一区二区三区 | 久久男人天堂 |