標題:
51單片機超聲波測距,1602顯示,已全部寫成函數(shù),直接調用
[打印本頁]
作者:
hb-l
時間:
2018-7-13 15:13
標題:
51單片機超聲波測距,1602顯示,已全部寫成函數(shù),直接調用
H54Z)V27@EDF)LI~A(KZ]56.png
(207.46 KB, 下載次數(shù): 64)
下載附件
2018-7-13 15:13 上傳
單片機源程序如下:
#include"hc_sr04.h"
#include"1602.h"
uchar array[4];
uchar overflow=0;//溢出標志
uchar code table[]="distance:";
unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'}; //1602顯示
void hc_sr04datadispose() //數(shù)據(jù)計算
{
uint dat;
unsigned long S=0;
dat=TH0*256+TL0;
//因為第八位滿一次即TL0=256便往高八位進移位,所以在算時間的時候TH0得*-256
TH0=0;
TL0=0;
/*1.7=高電平時間(us)*聲速(340M/S))/2=高電平時間(us)*0.034/2=高電平時間(us)*0.017=1.7cm/us*/
S=(dat*1.7)/100; //測試距離=(高電平時間(us)*聲速(340M/S))/2;在后面乘以10是為了化成cm,65.536ms=65536μs最大探測距離是65536×0.017
if((S>400)||overflow==1) //溢出標志
{
overflow=0;
DisplayOneChar(0, 1, ASCII[11]);
DisplayOneChar(1, 1, ASCII[10]); //顯示點
DisplayOneChar(2, 1, ASCII[11]);
DisplayOneChar(3, 1, ASCII[11]);
DisplayOneChar(4, 1, ASCII[12]); //顯示M
}
else
{
array[0]=(S/100); //數(shù)據(jù)處理
array[1]=(S%100/10);
array[2]=(S%10);
DisplayOneChar(0, 1, ASCII[array[0]]);
DisplayOneChar(1, 1, ASCII[10]); //顯示點
DisplayOneChar(2, 1, ASCII[array[1]]);
DisplayOneChar(3, 1, ASCII[array[2]]);
DisplayOneChar(4, 1, ASCII[12]); //顯示M
}
}
void delayms(uint xms) //延時
{
uint b;
for(b=xms;b>0;b--);
}
void main()
{
uchar aa=0;
LCDinitialize(); //初始化
LCDwritecommand(0x80); //發(fā)顯示位置
while(table[aa]!='\0') //顯示文字
{
LCDwritedata(table[aa]); //發(fā)數(shù)據(jù)
aa++;
}
hc_sr04read(); //hc——sr04數(shù)據(jù)處理
}
復制代碼
所有資料51hei提供下載:
實驗25:超聲波測距 - 1602顯示.zip
(38.45 KB, 下載次數(shù): 45)
2018-7-13 15:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
單片機老司機
時間:
2019-12-8 13:16
這個程序可以直接燒錄嗎?
作者:
1072686085
時間:
2019-12-8 15:54
原理圖有嗎
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1