AT89S52单片机超声波测距仪设计+电路图+原理+流程图
第 3 章 软件设计
系统软件设计包括主程序、温度校正子程序、距离计算子程序、LCD显示子程序、和定时中断子程序的设计。
3.1 主程序设计
主程序主要完成初始化和各个子程序的调用。主程序完成初始化后调用定时器中断子程序的设计,由555振荡电路发射一个脉冲,驱动超声波传感器发射超声波,并关外部中断,计数器T1开始计时;为防止虚假回波的干扰,在延时一段时间后,开中断,当有外部中断信号时,单片机就停止T1的计时,计算出渡越时间T;然后调用测温子程序,采集超声波测距时的环境温度,并换算出准确的声速C;单片机再调用距离计算子程序,计算出传感器到目标物体之间的距离,最后把测量结果存储并通过LCD电路显示出来,完成一次测量。主程序流程如图3-1所示。
图 3-1 主程序流程图
3.2 定时中断子程序设计
T1初值TH0、TL0分别是03CH、0B0H,直到T1中断,读出时间值,最长时间是65536μs,直到中断INT1发生中断停止,即关断中断控制位TR0。
在启动发射脉冲的同时,AT89S52的内部计数器T1开始计数。T1的作用就是测量从超声波发射至接收到回波的时间。中断程序开始后,首先进行初始化,然后发射电路开始发射超声波,计时器开始计时,待发射完后,停止计时后返回,没发射完,继续发射。定时中断的流程图如图3-2所示。
3.3 温度校正子程序设计
温度测量是利用温度传感器 DS18B20与单片机AT89S52组成最小系统。测得的温度速度由串口输出,AT89S52的串口接收。DS18B20工作是严格讲究时序的,在使用中特别注意。首先检测DS18B20是否存在。
① 延时640μs;
② 复位D18B20;
③ 写跳过DS18B20的ROM匹配命令,即写入0XCCH;
④ 发出温度转换命令,即写入0X44H;
⑤ 延时750ms,750ms是最大转换时间;
⑥ 重复(4),读取温度。即写入0XBEH;
⑦ 依据温度,得到即0度时的2A72+T 0X14该数据即为温度数据;
⑧ 串口输出,将结果输出到AT89S52上。
测温模块子程序流程图,如图3-3所示。 图 3-3 温度校正模块流程图
● DS18B20的初始化辣/文^论'文.网
http://www.751com.cnDS18B20的初始化实质是使DS18B20复位,主要通过判断存在脉冲的形式来实现的。首先,主机发复位脉冲,及宽度范围为480μs≦t≦960μs的负脉冲,拉高15~90μs以延时等待,然后通过输入/输出线读存在脉冲,为低则说明存在,复位成功;否,则说明不存在,复位失败,必须对DS18B20重新初始化。
● 字节写DS18B20程序
字节写的时序是拉低输入/输出线中少15μs以作为起始信号,按从低位到高位顺序取出欲写字节中的一位数据,写入输入/输出线,延时等待15μs后输入/输出线拉高作为停止信号,以等待下一位的写入。字节写DS18B20的程序设计只要严格按照上述时序即可。
● 字读DS18B20程序
字读DS18B20程序设计思想主要参照附录中的主要源程序 ,这里不再介绍。从附录中程序可以看出,16位数据是从低位到高位被逐一读出并存储的。而且由于读出的温度值是补码形式,在使用前必须进行补码转换。
3.4 距离计算子程序设计
距离计算程序设计的关键在与根据温速值进行声速的补偿,得到声速以及超声波的发送与接收的时间差的获取。温度补偿及声速计算已在上节作了介绍,时间差的获取是通过定时器1的计数来实现的,即在发射后启动该定时器计数,得到第1回波信号停止计数。假设时间值为2字节(单位:微秒),高字节在JSH中,低字节在JSL中。计数值为两字节整数值,由于定时器的计数对象为机器周期,其折合为时间还必须乘以机器周期,考虑运算的复杂性和为常数的特点,该乘法运算已在声速的温度补偿过程中事先进行,不需要在程序中处理了。其程序流程图如图 3-4 所示。
3.5 LCD显示子程序设计
显示程序的作用是将非压缩BCD码形式的现实代码写入对应的LCD显示RAM寄存器中,常用的0~9和A~F的显示代码对应为00H~09H和0AH~0FH。首先要对液晶屏进行初始化,初始化完成后读取温度值,再读取单片机内计数值后计算距离值,得出的结果存储并在LCD上显示出来。其流程图如3-5所示上一页 [1] [2] [3] [4] [5] [6] [7] 下一页
AT89S52单片机超声波测距仪设计+电路图+原理+源程序流程图 第6页下载如图片无法显示或论文不完整,请联系qq752018766