超声波测距仪编程_超声波测距仪程序
l Inc,2001.
這個網上可以找到的~~我幫你找了這個程序,是別人測試成功的~~共陰的~ 你試試
#include <REG2051.H>
#define k1 P3_4
#define csbout P3_5 //超聲波發送
#define csbint P3_7 //超聲波接收
#define csbc=0.034
#define bg P3_3
unsigned char csbds,opto,digit,buffer[3],xm1,xm2,xm0,key,jpjs;//顯示標識
unsigned char convert[10]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9段碼
unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;
bit cl;
void csbcj();
void delay(j); //延時函數
void scanLED(); //顯示函數
void timeToBuffer(); //顯示轉換函數
void keyscan();
void k1cl();
void k2cl();
void k3cl();
void k4cl();
void offmsd();
void main() //主函數
{
EA=1; //開中斷
TMOD=0x11; //設定時器0為計數,設定時器1定時
ET0=1; //定時器0中斷允許
ET1=1; //定時器1中斷允許
TH0=0x00;
TL0=0x00;
TH1=0x9E;
TL1=0x57;
csbds=0;
csbint=1;
csbout=1;
cl=0;
ōpto=0xff;
jpjs=0;
sj1=45;
sj2=200;
sj3=400;
k4cl();
TR1=1;
while(1)
{
keyscan();
if(jpjs<1)
{
csbcj();
if(s>sj3)
{
buffer[2]=0x76;
buffer[1]=0x76;
buffer[0]=0x76;
}
else if(s<sj1)
{
buffer[2]=0x40;
buffer[1]=0x40;
buffer[0]=0x40;
}
else timeToBuffer();
}
else timeToBuffer(); //將值轉換成LED段碼
offmsd();
scanLED(); //顯示函數
if(s<sj2)
bg=0;
bg=1;
}
}
void scanLED() //顯示功能模塊
{
digit=0x04;
for( i=0; i<3; i++) //3位數顯示
{
P3=~digit&opto; //依次顯示各位數
P1=~buffer; //顯示數據送P1口
delay(20); //延時處理
P1=0xff; //P1口置高電平(關閉)
if((P3&0x10)==0) //判斷3位是否顯示完
key=0;
digit>>=1; //循環右移1位
}
}
void timeToBuffer() //轉換段碼功能模塊
{
xm0=s/100;
xm1=(s-100*xm0)/10;
xm2=s-100*xm0-10*xm1;
buffer[2]=convert[xm2];
buffer[1]=convert[xm1];
buffer[0]=convert[xm0];
}
void delay(i)
{
while(--i);
}
void timer1int (void) interrup
總結
以上是生活随笔為你收集整理的超声波测距仪编程_超声波测距仪程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lin总线可以控制几个节点_[LIN].
- 下一篇: LIN 通信概述