|
#include "12864.h"
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
u16 d,q,s;
u16 distance,distance1,distance2,out_TH0,out_TL0,out_TH1,out_TL1,out_TH2,out_TL2;
//TRIG為控制端
sbit TRIG = P1^0;
//ECHO 為接收端
sbit ECHO = P1^1;
void delay(u16 i)
{
while(--i);
}
void xiangshi()
{
/*超聲波傳感器的使用方法:
控制口發(fā)一個10US 以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開定時器計時,當此口變?yōu)榈碗娖綍r就可以讀定時器的,此時就為此次測距的時間,方可算出距離。如此不斷的周期測, 就可以達到移動測量的值了*/
//控制口發(fā)一個10US 以上的高電平
TRIG = 1;
delay(2);
TRIG = 0;
//等待接收端出現(xiàn)高電平
while(ECHO)s++; //等待高電平結(jié)束
delay(100);
out_TH0 = s; //取定時器的值
distance = out_TH0;
distance =34*out_TH0/1000 ;
}
void main()
{
v_Lcd12864Init_f();
TRIG = 0; // 先給控制端初始化為0
while(1)
{
xiangshi();
v_Lcd12864PutString_f( 0,0, "高度:") ;//顯示字符串
v_Lcd12864SetAddress_f(3,0);
v_Lcd12864SendData_f(distance/100+0x30);//顯示變量
v_Lcd12864SetAddress_f(4,0);
v_Lcd12864SendData_f(distance/10%10+0x30);//顯示變量
v_Lcd12864SetAddress_f(5,0);
v_Lcd12864SendData_f(distance%10+0x30);//顯示變量
v_Lcd12864PutString_f(6,0, "cm") ;//顯示字符串
v_Lcd12864PutString_f( 7,0,'s' ) ;//顯示字符串
delay(5000);
}
}
|
-
-
超聲波12864.zip
2020-10-7 16:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
30.52 KB, 下載次數(shù): 34, 下載積分: 黑幣 -5
超聲波12864顯示
|