微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于超声波测距求大神知道

关于超声波测距求大神知道

时间:10-02 整理:3721RD 点击:
以下是本屌的利用超声波测距的小程序,求大神指导怎样利用中断进行完善,使其超出63MS时数码管不灭?
#include <reg52.h>
#include<intrins.h>
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
    0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};//
sbit TX=P3^2;
sbit RX=P3^3;
unsigned char s,flag;
unsigned int time;
/*延时函数*/
void delay(unsigned char n)
{
unsigned int i;
for(i=0;i<n;i++)
{
_nop_();
_nop_();
}
}
/*让超声波模块启动函数*/
void Csb_Start()
{
TX=1;
delay(15);
TX=0;
}
/*超声波计算加显示函数*/
void Count()
{
time=TH0*256+TL0;//字节转换成十进制数
TH0=0;
TL0=0;
s=time/58;
P2=0xdf;
P0=dis_code[s/100];
delay(50);
P2=0xff;
P2=0xbf;
P0=dis_code[(s%100)/10];
delay(50);
P2=0xff;
//delay(5);
P2=0x7f;
P0=dis_code[(s%100)%10];
delay(50);
P2=0xff;
P2=0xdf;
P0=dis_code[10];
delay(50);
P2=0xff;
delay(50);
}
void main()
        {
                TMOD=0x01;
                TH0=0;
                TL0=0;
       while(1)
           {
             Csb_Start();
           while(!RX);
            TR0=1;
                while(RX);
                TR0=0;               
                Count();
                delay(20);
           }
        }
       

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top