《HC-RS04超声波测距c程序》由会员分享,可在线阅读,更多相关《HC-RS04超声波测距c程序(3页珍藏版)》请在金锄头文库上搜索。
1、#include#include/*宏定义*/#define uchar unsigned char#define uint unsigned int/*位定义*/sbit Trig=P26;sbit wexu=P20; /声明位选为P2.0口sbit duxu=P21; /声明段选为P2.1口/*全局变量声明*/uint num,T,m;/*共阴数码管断码*/uchar code duma= /共阴数码管编码0f0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/*延时函数*/voi
2、d delay(uint z) /*1ms延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;)y-;/*启动扫描函数*/void scan()EA=1;TMOD=0x09; TR0=1; /启动定时器0EX0=1; /开外部中断0IT0=1; /下降沿中断Trig=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();Trig=0;/*数码管显示函数*/void display(uint nu
3、m)uchar bai,shi,ge;bai=num/100;shi=(num%100)/10;ge=num%10;duxu=1;P0=dumabai;duxu=0;P0=0xff;wexu=1;P0=0xdf;wexu=0;delay(1);duxu=1;P0=dumashi;duxu=0;P0=0xff;wexu=1;P0=0xbf;wexu=0;delay(1);duxu=1;P0=dumage;duxu=0;P0=0xff;wexu=1;P0=0x7f;wexu=0;delay(1);/*主函数*/void main()Trig=0;while(1)scan();display(num);/*尾部中断0函数*/void int0() interrupt 0 /回响输出端高电平宽度测量(上升沿到来时候开始计时,下降沿到来进入外部中断,关闭计时器,停止计时)?T=(TH0*256+TL0); /计算定时器内的测量值TH0=0; /定时器清0TL0=0;num=T*0.017; /计算距离() INT0=0; /切记,切记num的计算公式不能用num=(T*17)/1000,这样变成取整了