图52系统主程序
本设计主程序的思想如下:1温度为两位显示,距离为四位显示单位为mm;2温度每隔900ms采样一次,DS18B20在12位精度下转换周期为750ms故900ms满足该速度要求;超声波每隔60ms发送一次。3按键SW2为测量启动键;4系统采用AT89S52的内时钟:12MHz,每记一次数为1us;
图18主程序流程图5340KHz超声波发送子程序
f
超声波每过60ms发送一次,通过定时器T0中断发送超声波,超声波发送后延时一段时间后返回,防止余波被接收头接收误判,流程图如下:
图19超声波发送子程序流程图54DS18B20温度采集程序
DS18B20的工作流程是初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:初始化时序、写时序和读时序。
f
图20温度采集程序流程图55距离计算子程序
距离计算中,实行了温度补偿和角度补偿。流程图如下:
56数据转换子程序
图21距离计算子程序流程图
经过程序求出的数据原码无法直接用于显示,必须转换为LCD所接受的BCD码的形式。
f
57LCD显示子程序
图22数据转换子程序流程图
LCD液晶显示程序分为液晶初始化、读忙、写指令和写数据操作,液晶显示器是一块慢器件,所以在执行每条指令之前必须确定模块忙标志为低电平(不忙),否侧此指令无效。液晶显示子程序流程图如下:
f
图23LCD显示子程序在程序中,我们将测量的各种结果存放到一个数组
um中,然后通过这个数组的数据到预先存放字符的数组中去按
um中的数据的顺序去读取出预存在
umcode中的字符然后送到LCD中显示。58基于Proteus的软件仿真
f
图24Proteus仿真图
图25波形
fr