求US-100(模块)超声波测距的C语言程序,基于51单片机的,3Q哦~
答案:2 悬赏:40 手机版
解决时间 2021-03-14 23:07
- 提问者网友:听门外雪花风
- 2021-03-14 14:09
求US-100(模块)超声波测距的C语言程序,基于51单片机的,3Q哦~
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-03-14 14:44
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};
sbit tr=P1^0;
sbit ec=P1^1;
uint distance,time,tl,th;
void delay_20us(void )
{
uchar a ;
for(a=0;a<100;a++);
}
void delay(uint a )
{
while(a--);
}
void display(void )
{
P2=0xff;
P2=0xfe;
P0=smg[distance/100];
delay(200);
P2=0xff;
P2=0xfd;
P0=smg[distance%100/10];
delay(200);
P2=0xff;
P2=0xfb;
P0=smg[distance%10];
delay(200);
}
void main(void )
{
uchar i;
TMOD=0x10;
while(1)
{
tr=1; //超声波输入端
delay_20us(); //延时20us
tr=0; //产生一个20us的脉冲
while(ec==0); //等待Echo回波引脚变高电平
TH1=0; //定时器1清零
TL1=0; //定时器1清零
TF1=0; //计数溢出标志
TR1=1; //启动定时器1
while(ec==1);
th=TH1;
tl=TL1;
TL1=0;
TH1=0;
TR1=0; //关闭定时器1
time=th*256+tl;
distance=time*0.017; //厘米 */
display();
}
}
不懂M我
#define uchar unsigned char
#define uint unsigned int
unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};
sbit tr=P1^0;
sbit ec=P1^1;
uint distance,time,tl,th;
void delay_20us(void )
{
uchar a ;
for(a=0;a<100;a++);
}
void delay(uint a )
{
while(a--);
}
void display(void )
{
P2=0xff;
P2=0xfe;
P0=smg[distance/100];
delay(200);
P2=0xff;
P2=0xfd;
P0=smg[distance%100/10];
delay(200);
P2=0xff;
P2=0xfb;
P0=smg[distance%10];
delay(200);
}
void main(void )
{
uchar i;
TMOD=0x10;
while(1)
{
tr=1; //超声波输入端
delay_20us(); //延时20us
tr=0; //产生一个20us的脉冲
while(ec==0); //等待Echo回波引脚变高电平
TH1=0; //定时器1清零
TL1=0; //定时器1清零
TF1=0; //计数溢出标志
TR1=1; //启动定时器1
while(ec==1);
th=TH1;
tl=TL1;
TL1=0;
TH1=0;
TR1=0; //关闭定时器1
time=th*256+tl;
distance=time*0.017; //厘米 */
display();
}
}
不懂M我
全部回答
- 1楼网友:孤独的牧羊人
- 2021-03-14 16:11
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};
sbit tr=P1^0;
sbit ec=P1^1;
uint distance,time,tl,th;
void delay_20us(void )
{
uchar a ;
for(a=0;a<100;a++);
}
void delay(uint a )
{
while(a--);
}
void display(void )
{
P2=0xff;
P2=0xfe;
P0=smg[distance/100];
delay(200);
P2=0xff;
P2=0xfd;
P0=smg[distance%100/10];
delay(200);
P2=0xff;
P2=0xfb;
P0=smg[distance%10];
delay(200);
}
void main(void )
{
uchar i;
TMOD=0x10;
while(1)
{
tr=1; //超声波输入端
delay_20us(); //延时20us
tr=0; //产生一个20us的脉冲
while(ec==0); //等待Echo回波引脚变高电平
TH1=0; //定时器1清零
TL1=0; //定时器1清零
TF1=0; //计数溢出标志
TR1=1; //启动定时器1
while(ec==1);
th=TH1;
tl=TL1;
TL1=0;
TH1=0;
TR1=0; //关闭定时器1
time=th*256+tl;
distance=time*0.017; //厘米 */
display();
}
}
#define uchar unsigned char
#define uint unsigned int
unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};
sbit tr=P1^0;
sbit ec=P1^1;
uint distance,time,tl,th;
void delay_20us(void )
{
uchar a ;
for(a=0;a<100;a++);
}
void delay(uint a )
{
while(a--);
}
void display(void )
{
P2=0xff;
P2=0xfe;
P0=smg[distance/100];
delay(200);
P2=0xff;
P2=0xfd;
P0=smg[distance%100/10];
delay(200);
P2=0xff;
P2=0xfb;
P0=smg[distance%10];
delay(200);
}
void main(void )
{
uchar i;
TMOD=0x10;
while(1)
{
tr=1; //超声波输入端
delay_20us(); //延时20us
tr=0; //产生一个20us的脉冲
while(ec==0); //等待Echo回波引脚变高电平
TH1=0; //定时器1清零
TL1=0; //定时器1清零
TF1=0; //计数溢出标志
TR1=1; //启动定时器1
while(ec==1);
th=TH1;
tl=TL1;
TL1=0;
TH1=0;
TR1=0; //关闭定时器1
time=th*256+tl;
distance=time*0.017; //厘米 */
display();
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯