標(biāo)題:
用51單片機(jī)怎么實(shí)現(xiàn)HC-SR04測(cè)距
[打印本頁(yè)]
作者:
趙文斌
時(shí)間:
2016-6-15 19:00
標(biāo)題:
用51單片機(jī)怎么實(shí)現(xiàn)HC-SR04測(cè)距
用12864 51單片機(jī) HC-SR04
超聲波測(cè)距設(shè)計(jì)。
要求:
1. 第一排顯示:超聲波測(cè)距儀
2. 第二排顯示 超聲波測(cè)距儀
3. 第三排顯示:電子科學(xué)與技術(shù)
4. 第四排顯示:當(dāng)前距離為:
.
同時(shí)蜂鳴器的報(bào)警聲隨距離縮短而加快(倒車?yán)走_(dá)設(shè)計(jì))
作者:
美猴王HLM
時(shí)間:
2017-4-20 20:10
/***********************************************************************************************************/
//HC-SR04 超聲波測(cè)距模塊 DEMO 程序
//晶振:11。0592
//接線:模塊模塊 TRIG接 P2.0 ECH0 接P2.1 VCC接單片供電正極5V,GND接單片系統(tǒng)板的GND
//蜂鳴器接p2.5
/***********************************************************************************************************/
#include <AT89X51.H>
#include <intrins.h>
#include <STDIO.H>
#define uchar unsigned char
#define uint unsigned int
#define RX P2_1
#define TX P2_0
#define buzzer P2_5
unsigned int time=0;
unsigned int timer=0;
float S=0;
bit flag =0;
/********************************************************/
void delayms(unsigned int ms)
{
unsigned char i=60,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.87)/100; //算出來是CM
if((S>=42000)||flag==1) //超出測(cè)量
{
flag=0;
buzzer=1;//printf("S=-----CM\n");
}
else
{
buzzer=1;
//delayms(500);
delayms(S); //printf("S=%fCM\n",S);
buzzer=0;
delayms(S);
}
}
/********************************************************/
void zd0() interrupt 1 //T0中斷用來計(jì)數(shù)器溢出,超過測(cè)距范圍
{
flag=1; //中斷溢出標(biāo)志
}
/********************************************************/
void StartModule() //T1中斷用來掃描數(shù)碼管和計(jì)800MS啟動(dòng)模塊
{
TX=1; //800MS 啟動(dòng)一次模塊
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
/********************************************************/
void main(void)
{
TMOD=0x21; //設(shè)T0為方式1,GATE=1;
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TH0=0;
TL0=0;
TR0=0;
ET0=1; //允許T0中斷
TR1=1; //開啟定時(shí)器
TI=1;
EA=1; //開啟總中斷
//delayms(100);
//printf("超聲波串口測(cè)量系統(tǒng)\n");
//delayms(100);
while(1)
{
StartModule();
while(!RX); //當(dāng)RX為零時(shí)等待
TR0=1; //開啟計(jì)數(shù)
while(RX); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0; //關(guān)閉計(jì)數(shù)
Conut(); //計(jì)算
//delayms(50);
}
}
作者:
美猴王HLM
時(shí)間:
2017-4-20 20:11
距離越短蜂鳴器頻率越高
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1