標(biāo)題:
寫一個(gè)簡單的單片機(jī)超聲波測距程序,數(shù)碼管顯示距離,單位厘米
[打印本頁]
作者:
落日手工
時(shí)間:
2020-5-3 20:03
標(biāo)題:
寫一個(gè)簡單的單片機(jī)超聲波測距程序,數(shù)碼管顯示距離,單位厘米
寫一個(gè)簡單地超聲波測距程序,數(shù)碼管顯示距離,單位厘米
單片機(jī)源程序如下:
#include "reg51.h"
unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
#define uint unsigned int
#define uchar unsigned char
sbit D1= P2^7;
sbit Trig = P2^2;
sbit Echo = P3^2;
sbit SMG_q = P1^0;
sbit SMG_b = P1^1;
sbit SMG_s = P1^2;
sbit SMG_g = P1^3;
uint time = 0;
uint timeH = 0;
uint timeL = 0;
uint succeed_flag;
void display(uint da);
void delay(uint z);
void delay_20us();
void main(void)
{
uint distance;
Trig=0; //首先拉低脈沖輸入引腳
EA=1; //打開總中斷0
TMOD=0x10; //定時(shí)器1,16位工作方式
while(1)
{
EA=0; //關(guān)總中斷
Trig=1; //超聲波輸入端
delay_20us(); //延時(shí)20us
Trig=0; //產(chǎn)生一個(gè)20us的脈沖
while(Echo==0); //等待Echo回波引腳變高電平
succeed_flag=0; //清測量成功標(biāo)志
EA=1;
EX0=1; //打開外部中斷0
TH1=0; //定時(shí)器1清零
TL1=0; //定時(shí)器1清零
TF1=0; //計(jì)數(shù)溢出標(biāo)志
TR1=1; //啟動定時(shí)器1
delay(20); //等待測量的結(jié)果
TR1=0; //關(guān)閉定時(shí)器1
EX0=0; //關(guān)閉外部中斷0
if(succeed_flag==1)
{
time=timeH*256+timeL;
distance=time*0.0172; //厘米
display(distance );
if(distance<=150 && distance>=80)
{
D1=0;
}
else D1=1;
}
if(succeed_flag==0)
{
distance=9999;
D1=1;
delay(24);
}
}
}
void display(uint da)
{
SMG_q=0;
P0=table[da/1000];
delay(1);
P0=0XFF;
SMG_q=1;
SMG_b=0;
P0=table[da/100%10];
delay(1);
P0=0XFF;
SMG_b=1;
SMG_s=0;
P0=table[da%100/10];
delay(1);
P0=0XFF;
SMG_s=1;
SMG_g=0;
P0=table[da%10];
delay(1);
P0=0XFF;
SMG_g=1;
}
void exter() interrupt 0 // 外部中斷0是0號
{
timeH =TH1; //取出定時(shí)器的值
timeL =TL1; //取出定時(shí)器的值
succeed_flag=1;//至成功測量的標(biāo)志
EX0=0; //關(guān)閉外部中斷
}
//****************************************************************
//定時(shí)器1中斷,用做超聲波測距計(jì)時(shí)
void timer1() interrupt 3 //
{
TH1=0;
TL1=0;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void delay_20us()
{
uchar a ;
for(a=0;a<100;a++);
}
復(fù)制代碼
所有程序51hei提供下載:
超聲波測距—數(shù)碼管顯示距離(單位厘米)程序.rar
(28.34 KB, 下載次數(shù): 31)
2020-5-3 20:00 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時(shí)間:
2020-5-5 14:27
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者:
單片機(jī)編程好難
時(shí)間:
2020-5-24 15:16
你好,請問數(shù)碼管怎么連接的,我在仿真上沒有結(jié)果
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1