锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2024-05-01 07:07:09

测试环境MPLAB IDE v8.73a
单片机型号PIC18F4520
所需器件超声波模块
电路连接图如下:


超声波测距子函数:
unsigned int chaosheng()
{
unsigned int temp1,temp2;//定义两个无符号整型的变量用于存储距离值
INPUT = 1;
delay(50);//延时
INPUT = 0;
while(!OUTPUT);//当超声波的输出引脚输出高电平时,打开定时器0,开始计时
TMR1 = 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句话向老太太讲清楚什么是数据库。乔布斯说:“最好的东西就是关注简单”,因为简单的东西比复杂的东西更难做到。

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章