电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

用51单片机实现HC-SR04超声波测距程序

用51单片机实现HC-SR04超声波测距程序_第1页
1/3
用51单片机实现HC-SR04超声波测距程序_第2页
2/3
用51单片机实现HC-SR04超声波测距程序_第3页
3/3
#include //包括一个 52 标准内核的头文件#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned longsbit Trig = P1^0; //产生脉冲引脚sbit Echo = P3^2; //回波引脚sbit test = P1^1; //测试用引脚uchar code SEG7 [ 10]= { ~ 0xC0, ~ 0xF9, ~ 0xA4,~0xB0 , ~ 0x99 , ~0x92, ~0x82,~0xF8,~0x80,~0x90};//数码管 0—9uint distance[4]; //测距接收缓冲区uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定义寄存器bit succeed_flag; //测量成功标志//********函数声明void conversion(uint temp_data);void delay_20us();void main(void) // 主程序{ uint distance_data,a,b;uchar CONT_1; i=0;flag=0;test =0;Trig=0; //首先拉低脉冲输入引脚TMOD=0x11; //定时器 0,定时器 1,16 位工作方式TR0=1; //启动定时器 0IT0=0; //由高电平变低电平,触发外部中断ET0=1; //打开定时器 0 中断EX0=0; //关闭外部中断EA=1; //打开总中断 0 while(1) //程序循环{ EA=0;Trig=1;delay_20us();Trig=0; //产生一个 20us 的脉冲,在 Trig 引脚 while(Echo==0); //等待 Echo 回波引脚变高电平succeed_flag=0; //清测量成功标志EX0=1; //打开外部中断TH1=0; //定时器 1 清零TL1=0; //定时器 1 清零TF1=0; //TR1=1; //启动定时器 1EA=1;while(TH1 〈 30);//等待测量的结果,周期 65.535 毫秒(可用中断实现) TR1=0; //关闭定时器 1EX0=0; //关闭外部中断if(succeed_flag==1) { distance_data=outcomeH*256+outcomeL;distance_data= (distance_data*1.87)/100; } //为什么除以 58 等于厘米, Y 米=(X 秒*344)/2 // X 秒=( 2*Y 米)/344 ==》X 秒=0。0058*Y 米 ==》厘米=微秒/58 if(succeed_flag==0) { distance_data=0; //没有回波则清零 test = !test; //测试灯变化 }/********************************************每循环 3 次就显示结果一次*********************************************/ a=distance_data; if(b==a) CONT_1=0; if(b!=a) CONT_1++; if(CONT_1>=3) { CONT_1=0; b=a; conversion(b);} }}//***...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

用51单片机实现HC-SR04超声波测距程序

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部