此可见,超声波的速度和温度密切关系,即温度每增加1°C,超声波速度约增加0.61m/s,本次我们考虑温度补偿,以使我们的设计更加精确,温度的采集通常使用DS18B20一线式数字温度传感器,电路非常简洁,具体电路图如下图3.16所示。
图3.16 DS18B20温度补偿电路
DS18B20是美国DALLS公司推出的DS1820的替代产品,具有9、10、11、12位的转换精度,未编程时默认的精度是12位,测量精度一般为0.5°C,软件处理后可以达到0.1°C,温度输出以16位符号扩展的二进制数形式提供,低位在先,以0.0625°C/LSB形式表达。其中高五位为扩展符号位。转换周期与转换精度有关,9位转换精度时,最大转换时间为93.7 ms,12位转换精度时,最大转换时间为750ms。DS18B20引脚判断方法是:字面朝人,从左到右依次是1 (GND)、2(输入/输出)、3(VDD)。图中的R13为上拉电阻,阻值选5K左右。
3.6LCD显示电路
本设计采用LCD液晶显示屏显示。其具有体积小、功耗低、界面美观大方等优点,这里使用YB1602液晶屏,1602显示模块用点阵图形显示字符,显示模式分为2行16个字符。如下图3.17所示:
图3.17LCD显示电路
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,'A’。
1602通过D0~D7的8位数据端传输数据和指令。 显示模式设置: (初始化)
0011 0000 [0x38]设置16×2显示,5×7点阵,8位数据接口; 显示开关及光标设置: (初始化)
0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效) 0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1), N=0(读或写一个字符后地址指针减1 &光标减1), S=1 且 N=1 (当写一个字符后,整屏显示左移) s=0 当写一个字符后,整屏显示不移动 数据指针设置:
数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H) 其他设置:
01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针 =0)。
3.7电源电路
电源电路采用普通可调电源供电,该电源不含稳压器,所以在设计中需要用稳压器进行稳压,我们选用LM7805来获得稳定的+5V直流电压,LM7805引脚排列和典型应用如下图3-18所示:
图3.18LM7805引脚和典型应用
本设计电源电路如下3.19:
输入电压(<21V)经过7805的稳压输出+5V的电压,图中的IN4007为保护7805,防止电源极性接反损坏7805,滤波电容采用100uF电解和104瓷片电容并联使用,电磁兼容的实践证明,两个差100倍的电容并联使用效果很好。
图3.19电源电路
第四章 系统软件的设计
4.1系统程序的结构
(1)DS18B20温度传感器接口模块,分为初始化程序、写入命令以及读取子程序等部分;
(2)基于YB1602的显示模块,分为初始化子程序、写入子程序以及显示子程序;
(3)温度补偿与距离计算模块、分为超声波发送控制程序、接收处理程序、温度补偿子程序等;
(4)(本次设计使用C语言编写程序,C语言相比汇编有许多的优势;编译器使用Keil ?Version2进行程序编译,Keil功能强大使用方便。
(5)主程序,分为系统初始化、按键处理以及各个子程序的调度管理等部分。如图4.1所示描述了各个模块的关系:
图4.1软件系统框图
4.2系统主程序
本设计主程序的思想如下:
(1)温度为两位显示,距离为四位显示单位为mm;
(2)温度每隔900ms采样一次,DS18B20在12位精度下转换周期为750ms ,故900ms满足该速度要求;超声波每隔60ms发送一次。
(3)按键S为测量启动键;
(4)系统采用AT89S52的内时钟:12MHz; (5)没有使用看门狗功能;
(6)超声波发送一定时间后才开始启动检测,避免直达信号造成误判。所以系统最小测量约为112mm;
系统主程序见附件里。
4.340KHz超声波发送程序
超声波的每过60ms发送一次,通过定时器T0中断中发送超声波,超声波发送后延时一段时间后返回,防止余波被接收头接收误判,程序见附录:/定时器0溢出中断函数,每60MS溢出/
4.4超声波的接收和处理
超声波由超声波接收头接收,经过CX20106检波放大变换后送到单片机的P2.6脚,程序中通过指令:
Wile(0==CSBIN);
来查询,接收到超声波信号后往下面执行,进行计算处理。本设计中需注意当距离过远或者没有返回信号时候,定时器T1的溢出必须处理。
4.5DS18B20温度采集程序
DS18B20的工作流程是,初始化?ROM操作指令?存储器操作指令?数据传输。其工作时序包括:初始化时序、写时序和读时序。
4.5.1DS18B20的初始化
DS18B20的初始化的实质是使DS18B20复位,主要是通过判断存在脉冲