DS18B20数码管实现温度报警系统程序设计

需积分: 9 5 下载量 191 浏览量 更新于2024-09-15 1 收藏 20KB DOCX 举报
"这篇内容是关于使用数码管和DS18B20温度传感器来设计一个温度报警器的程序实现。程序中包含了数码管显示、温度读取、报警阈值设定以及蜂鸣器报警功能。" 在电子工程领域,温度报警器是一种常见的应用,它能够实时监测环境温度并在超出预设范围时发出警告。这个项目中,设计者使用了数码管(七段显示器)作为显示界面,DS18B20作为温度传感器,以及微控制器的IO口来驱动蜂鸣器和报警灯。 DS18B20是一款单线数字温度传感器,它可以直接通过一根数据线与微控制器进行通信,读取到精确的温度值。在程序中,`DQ=P3^6`被定义为DS18B20的数据线接口,`sounder=P3^7`定义为蜂鸣器的接口,`D1=P1^4`和`D2=P1^5`分别定义为高温和低温报警灯的接口。 程序中使用了`uchar`(无符号字符型)和`uint`(无符号整型)数据类型,`temperature1`和`temperature0`用来存储温度值的高八位和低八位,`TH`和`TL`为高温和低温报警阈值。`tt`和`t`是浮点型和整型变量,用于处理和存储温度值。`baojing`数组存储了高温和低温报警阈值(将数值乘以10),这是因为数码管可能无法直接显示小数点。 `mg`和`mg1`数组包含了共阴极数码管的编码,用于显示温度值。共阴极数码管是指公共阴极接地,阳极连接到每个段的显示驱动电路。`mg`用于无小数点的显示,`mg1`则包含小数点的编码。 延迟函数如`delayms`和`delay5us`等,是实现系统延时的关键,它们使用了循环计数的方式实现不同时间长度的延时。例如,`delayms`通过两个嵌套循环来实现毫秒级别的延时,而`delay5us`、`delay10us`和`delay102us`则是微秒级别的延时,这些延时函数在数码管显示刷新和数据传输中起到关键作用。 整个程序的流程大致如下: 1. 初始化接口,设置数码管、DS18B20、蜂鸣器和报警灯的IO口。 2. 定义报警阈值并持续检测DS18B20提供的温度值。 3. 使用数码管显示当前温度。 4. 比较温度值与报警阈值,当温度超过阈值时,启动蜂鸣器和相应的报警灯。 5. 延时函数确保了显示和报警的稳定性和准确性。 这个设计可以应用于家庭、工业或其他需要实时温度监控的场合,提供直观的温度读取和超限报警功能。