找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3120|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)超聲波測距,1602顯示,已全部寫成函數(shù),直接調(diào)用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


單片機(jī)源程序如下:
  1. #include"hc_sr04.h"
  2. #include"1602.h"

  3. uchar array[4];
  4. uchar overflow=0;//溢出標(biāo)志
  5. uchar code table[]="distance:";
  6. unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.','-','M'};   //1602顯示

  7. void hc_sr04datadispose()                //數(shù)據(jù)計算
  8. {
  9.         uint dat;
  10.         unsigned long S=0;
  11.         dat=TH0*256+TL0;
  12. //因?yàn)榈诎宋粷M一次即TL0=256便往高八位進(jìn)移位,所以在算時間的時候TH0得*-256
  13.         TH0=0;
  14.         TL0=0;
  15. /*1.7=高電平時間(us)*聲速(340M/S))/2=高電平時間(us)*0.034/2=高電平時間(us)*0.017=1.7cm/us*/
  16.         S=(dat*1.7)/100; //測試距離=(高電平時間(us)*聲速(340M/S))/2;在后面乘以10是為了化成cm,65.536ms=65536μs最大探測距離是65536×0.017
  17.         if((S>400)||overflow==1)  //溢出標(biāo)志
  18.         {
  19.       overflow=0;
  20.           DisplayOneChar(0, 1, ASCII[11]);
  21.           DisplayOneChar(1, 1, ASCII[10]);        //顯示點(diǎn)
  22.           DisplayOneChar(2, 1, ASCII[11]);
  23.           DisplayOneChar(3, 1, ASCII[11]);
  24.           DisplayOneChar(4, 1, ASCII[12]);        //顯示M  
  25.         }
  26.         else
  27.         {
  28.                 array[0]=(S/100);                                //數(shù)據(jù)處理
  29.                 array[1]=(S%100/10);
  30.                 array[2]=(S%10);
  31.           DisplayOneChar(0, 1, ASCII[array[0]]);
  32.           DisplayOneChar(1, 1, ASCII[10]);        //顯示點(diǎn)
  33.           DisplayOneChar(2, 1, ASCII[array[1]]);
  34.           DisplayOneChar(3, 1, ASCII[array[2]]);
  35.           DisplayOneChar(4, 1, ASCII[12]);        //顯示M

  36.         }
  37. }

  38. void delayms(uint xms)                   //延時
  39. {
  40.     uint b;
  41.     for(b=xms;b>0;b--);
  42. }

  43. void main()
  44. {
  45.         uchar aa=0;
  46.         LCDinitialize();          //初始化
  47.         LCDwritecommand(0x80); //發(fā)顯示位置
  48.                 while(table[aa]!='\0')           //顯示文字
  49.         {
  50.         LCDwritedata(table[aa]); //發(fā)數(shù)據(jù)
  51.         aa++;
  52.         }

  53.         hc_sr04read(); //hc——sr04數(shù)據(jù)處理
  54. }
復(fù)制代碼

所有資料51hei提供下載:
實(shí)驗(yàn)25:超聲波測距 - 1602顯示.zip (38.45 KB, 下載次數(shù): 45)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:643576 發(fā)表于 2019-12-8 13:16 來自觸屏版 | 只看該作者
這個程序可以直接燒錄嗎?
回復(fù)

使用道具 舉報

板凳
ID:658889 發(fā)表于 2019-12-8 15:54 | 只看該作者
原理圖有嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表