C语言题目连续素数和,超声波测距 :HC-SR04 + 数码管显示

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit Trig = P2^1;

sbit Echo = P2^0;

sbit test = P3^7;

uchar code seg7[10] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};

uchar ge,shi,bai,n;

uint distance,time,th,tl;

bit flag;

void delay_20us()

{ _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

}

void delay(uint n)

{

uint i,j;

for(i = n;i > 0;i--)

for(j = 50;j > 0;j--);

}

void init()

{

Trig = 0;

Echo = 0;

TMOD = 0X01;

TH0 = 0;

TL0 = 0;

ET0 = 1;

EA = 1;

}

void display(uint distance)

{

n = 50;

bai = distance/100;

shi = distance%100/10;

ge = distance%10;

while(n--)

{

P2 = 0X7F;

P1 = seg7[bai];

delay(1);

P2 = 0XBF;

P1 = seg7[shi];

delay(1);

P2 = 0XDF;

P1 = seg7[ge];

delay(1);

}

}

void main()

{

test = 0;

while(1)

{

init();

Trig = 1;

delay_20us();

Trig = 0;

while(Echo == 0);

TR0 = 1;test = ~test;

while(Echo == 1);

TR0 = 0;

th = TH0;tl = TL0;

time = th*256 + tl;

distance = time*0.017;

if(distance > 400)

{display(0);}

else display(distance);

}

}

void timer0() interrupt 1

{

}

请做过这个的帮忙看下程序吖,测试显示距离不准额,当无回波时,LED灯(test)也在以一定频率闪烁,只是频率低很多。求有经验的帮忙看下程序好吗,单片机吧里发了一点人气也没有额。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值