专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

PIC18F4520单片机超声波测距主要部分程序

作者:huqin   来源:本站原创   点击数:  更新时间:2014年04月03日   【字体:
测试环境MPLAB IDE v8.73a
单片机型号PIC18F4520
所需器件超声波模块
电路连接图如下:


超声波测距子函数:
unsigned int chaosheng()

 unsigned int temp1,temp2;//定义两个无符号整型的变量用于存储距离值
 INPUT = 1;
 delay(50);//延时
 INPUT = 0;
 while(!OUTPUT);//当超声波的输出引脚输出高电平时,打开定时器0,开始计时
 TMR1ON = 1;
 while(OUTPUT);//当超声波的输出引脚输出低电平时,关闭定时器0,停止计时
 TMR1ON = 0;
 //计算超声波测出的距离
 temp1 = TMR1L;//将TMR1的低8位赋值给temp1变量
 temp2 = TMR1H;//将TMR1的高8位赋值给temp2变量
 temp2 = (temp2 << 8) + temp1;//temp2左移8位,加上temp1
 TMR1H = 0;//TMR1的高8位清零,为下一次测距做准备
 TMR1L = 0;//TMR1的低8位清零,为下一次测距做准备
 
 //距离 = 时间/2 * 速度
 //距离:distance;时间:temp2/2单位为μs;速度:340m/s
 //这里注意下单位,需要进行换算让最终距离的单位为cm/s
 distance = temp2 * 1.7/100;//有一定的误差,可以软件填补误差,根据实测值,在右侧的表达式上加减一误差数值。
   
 return distance;//返回超声波测得的距离值,这里的distance为全局变量,可以在其他程序中用到,例如液晶显示部分,可以作为实参传递给其对应程序,用于显示。
 
}

最后:很欣赏Google的面试题:用3句话向老太太讲清楚什么是数据库。乔布斯说:“最好的东西就是关注简单”,因为简单的东西比复杂的东西更难做到。
关闭窗口

相关文章