独闷闷网
标题:
超声波测距程序,求解
[打印本页]
作者:
yjmm10
时间:
2014-7-31 19:47
标题:
超声波测距程序,求解
#include<reg51.h>
#include<intrins.h>
sbit TRIG=P2^0;
sbit ECHO=P2^1; //
unsigned int S;
void count_HC_SR04() //计算模块
{
unsigned int time; //距离
time=TH0*256+TL0;
TH0=0;TL0=0; //便于下次测距
S=(time*1.7)/100; //cm
}
//触发TRIG模块
void start_HC_SR04() //启动模块一次
{
TRIG=1;
_nop_(); //11us,大于10us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TRIG=0;
}
void get_HC_SR04() //通过定时器计算TH,TL
{
while(!ECHO);
TR0=1;
while(ECHO);
TR0=0;
}
void disp(unsigned int num)
{
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff};
unsigned char i,num_b,num_s,num_g;
num_b=num%1000/100;
num_s=num%1000%100/10;
num_g=num%1000%10 %10;;
P0=~table[num_b];
P1=0x7f;
i=100;
while(i--);
P0=~table[num_s];
P1=0xbf;
i=100;
while(i--);
P0=~table[num_g];
P1=0xdf;
i=100;
while(i--);
}
void init_timer0()
{
TMOD=0x01;
TH0=0;
TL0=0;
EA=1;
ET0=1;
}
void main()
{
unsigned char i;
init_timer0();
while(1)
{
unsigned int S;
start_HC_SR04();
get_HC_SR04();
count_HC_SR04();
disp(S);
i=255;
while(i--);
}
}
问题是:为什么当有障碍物时候,数码管只是稍微暗一点,数值没有改变,求大神助攻。朱老师快来呀
欢迎光临 独闷闷网 (http://dumenmen.com/)
Powered by Discuz! X3.2