双超声波模块的TRIG引脚分别连接到单片机的P1.0、P1.1 引脚,ECHO引脚连接到单片机的P3.2、P3.3 引脚,控制外部中断。
3.3 LCD1602显示模块
显示电路如图3-3所示,单片机的P0作为8位数据、指令端口,P2.6输出使能信号,P2.7输出数据/命令选择信号。因为单片机不从1602读取任何数据,所以1602读写选择端RW接地。当P2.6为高电平,P2.7为高电平时,1602读入8位数据码;当P2.6为高电平,P2.7为低电平是,1602读入8位指令码。此外,调节电位器RV1可改变LCD对比度。另有背光电源接口,图中未画出。
图 3-3
5
3.4 DS18B20模块
DS18B20的特性:
1. 独特的单线接口仅需一个端口引脚进行通讯。 2. 简单的多点分布引用。 3. 无需外部器件。 4. 可通过数据线供电。 5. 零待机功耗。
6. 测温范围-55 +125摄氏度,以0.5摄氏度递增。 7. 温度数字量转换时间200ms(典型值)。 说明:
DS1820数字温度计以12位数字量的形式反映器件的温度值DS1820通过一个单线接口发送或接收信息,由此在中央微处理器和DS1820之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。因为每个DS1820都有一个独特的片序列号,所以多只DS1820可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。DS18B20的引脚图如图3-4所示。
图 3-4
6
DS18B20电路连接图如图3-5所示,DS18B20数据输出端必须接上拉电阻,阻值为4.7K。
图 3-5
7
第四章 软件设计
超声波测距仪的软件设计主要由主程序、超声波测距程序、1602显示程序、温度测量程序,键盘扫描程序、车宽设置程序组成。程序使用C51编写,具有简便易读可移植的特点。 4.1 主程序
主程序流程图如图所示,主程序首先是对系统环境初始化,设置TRIG引脚为低电平、设置LCD1602 工作模式,调用车宽设置子程序,等待用户输入车宽。随即进入主循环。在主循环中读取温度值,计算当前声速。接着发出距离测量命令,获得两个距离值,接着利用已知参数计算实际距离,并判断有效性。若两个距离值相差大于20cm,则认为距离值无效,并停止报警。若距离值有效且小于所设定的报警距离,则使P3.6口为低电平,蜂鸣器响,二极管发光报警。
其程序流程图如图4-1所示。
图 4-1
8
其源程序如下: void main(){ Trig1=0; Trig2=0; lcd_init();
//lcd初始化
width_set(); //输入车宽 displayword(c);
rate=(width/2-1)/2; //计算参数 while(1){ //主循环 tmprchange(); //启动温度转换
getspeed(); //获得温度并计算声速 measure1(); //超声波测距1 measure2(); //超声波测距2 keyscan(); //键盘扫描 if( distance1 > distance2 ){ //计算实际距离
distance=distance2-(distance1-distance2)*rate;
}else{ distance=distance1-(distance2-distance1)*rate;
}
if ( abs( distance1 - distance2 ) < 2 || distance1 == 30 || 30 ){ //判断距离有效性 if ( distance < alarmdis ){
warn=0;
}else{ warn=1;
}
}else{
warn=1;
9
distance2 ==