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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機控制超聲波測距控制程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:225798 發表于 2017-8-8 16:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
全部資料下載地址(內容經典):
18.超聲波測距實驗.zip (37.46 KB, 下載次數: 43)

  1. /*******************************************************************************  
  2. * 文件名稱:超聲波測距實驗
  3. * 實驗目的:1.掌握超聲波測距原理
  4. *           2.掌握51單片機定時器工作模式和配置方法
  5. * 程序說明:無
  6. * 日期版本:2012-9-6/V1.0a
  7. *******************************************************************************/

  8. #include "reg52.h"  //定義51單片機特殊功能寄存器
  9. #include "intrins.h"
  10. #include "absacc.h"

  11. #define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();\
  12.                  _nop_();_nop_();_nop_();_nop_(); _nop_();}
  13. sbit TX = P1^0;  //發射引腳
  14. sbit RX = P1^1;  //接收引腳

  15. code unsigned char tab[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,\
  16.                              0xff};
  17. unsigned char dspbuf[8] = {10,10,10,10,10,10,10,10};  //顯示緩沖區
  18. unsigned char dspcom = 0;

  19. unsigned int intr = 0;
  20. bit s_flag;
  21. unsigned int t = 0;

  22. void send_wave(void);
  23. void display(void);

  24. void main(void)
  25. {
  26.     unsigned int distance;

  27.     TMOD |= 0x11;  //配置定時器工作模式
  28.     TH0 = (65536-2000)/256;
  29.     TL0 = (65536-2000)%256;  
  30.     TH1 = 0;
  31.     TL1 = 0;  
  32.   
  33.     EA = 1;
  34.     ET0 = 1;  //打開定時器0中斷
  35.     TR0 = 1;  //啟動定時器   

  36.     while(1)
  37.     {
  38.         /** 200毫秒更新一次數據 */
  39.                 if(s_flag)
  40.         {
  41.             s_flag = 0;
  42.             /** 關閉定時器0中斷:計算超聲波發送到返回的時間 */
  43. //                         ET0 = 0;
  44.             send_wave();  //發送方波信號
  45.             TR1 = 1;  //啟動計時
  46.                         while((RX == 1) && (TF1 == 0));  //等待收到脈沖
  47.                         TR1 = 0;  //關閉計時

  48.                         //發生溢出
  49.                         if(TF1 == 1)
  50.                         {
  51.                                 TF1 = 0;
  52.                                 distance = 9999;  //無返回
  53.                         }
  54.                         else
  55.                         {
  56.                                 /**  計算時間  */
  57.                                 t = TH1;
  58.                                 t <<= 8;
  59.                                 t |= TL1;
  60.                                 distance = (unsigned int)(t*0.017);  //計算距離                               
  61.                         }
  62.                         TH1 = 0;
  63.                         TL1 = 0;
  64.         }
  65.                 /** 數據處理                      */
  66.                      
  67.                 dspbuf[5] = distance/100;
  68.                 dspbuf[6] = distance%100/10;
  69.                 dspbuf[7] = distance%10;        
  70.     }
  71. }

  72. //定時器0中斷服務函數
  73. void isr_timer_0(void)  interrupt 1  //默認中斷優先級 1
  74. {
  75.     TH0 = (65536-2000)/256;
  76.     TL0 = (65536-2000)%256;  //定時器重載
  77.      
  78.         display();  //2ms執行一次

  79.         if(++intr == 200)
  80.         {
  81.         s_flag = 1;
  82.         intr = 0;
  83.     }
  84. }

  85. //顯示函數  
  86. void display(void)
  87. {
  88.         XBYTE[0xE000] = 0xff;  //去除鬼影

  89.         XBYTE[0xC000] = (1<<dspcom);
  90.         XBYTE[0xE000] = tab[dspbuf[dspcom]];
  91.        
  92.         if(++dspcom == 8){
  93.                 dspcom = 0;
  94.         }       
  95. }

  96. //TX引腳發送40KHz方波信號驅動超聲波發送探頭
  97. void send_wave(void)
  98. {
  99.         unsigned char i = 8;  //發送8個脈沖
  100.        
  101.         do
  102.         {
  103.                 TX = 1;
  104.                 somenop;
  105.                 TX = 0;
  106.                 somenop;
  107.         }
  108.         while(i--);
  109. }
復制代碼


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

使用道具 舉報

沙發
ID:369119 發表于 2018-7-10 23:04 | 只看該作者
學習學習!!!
回復

使用道具 舉報

板凳
ID:369922 發表于 2018-7-12 09:28 | 只看該作者
謝謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91网站视频在线观看 | 在线看av的网址 | 中文字幕欧美一区 | www.一区二区三区 | 午夜精品福利视频 | 国产精品免费在线 | 欧美激情久久久 | 欧美日本高清 | 天天影视网天天综合色在线播放 | 日本久久综合网 | 特a毛片 | 国产高清在线精品一区二区三区 | 久久精品91久久久久久再现 | 日韩精品一区二区三区免费视频 | 亚洲视频免费观看 | 午夜寂寞影院列表 | 久久亚洲一区二区 | 日韩视频中文字幕 | 日韩小视频 | 亚洲91视频 | 操视频网站 | 日韩午夜影院 | 天天干天天想 | 99免费 | 国产一级片在线播放 | 免费一级做a爰片久久毛片潮喷 | 日本精品视频一区二区三区四区 | 一区二区三区在线免费观看视频 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 亚洲综合中文字幕在线观看 | 欧美一区二区在线视频 | 久久99精品国产99久久6男男 | 草草视频在线观看 | 色综合久久久久 | 日本午夜网站 | 日韩精品一区二区三区视频播放 | 国产成人精品久久二区二区91 | 亚洲欧美日韩电影 | 黄色av网站在线观看 | 国产69精品久久99不卡免费版 | 成人在线视频免费观看 |