基于ds18b20的温度显示与报警系统设计毕业设计论文(编辑修改稿)内容摘要:
位及数据总线的分时复用端口。 作为通用 I/O 口时需加上 拉电阻,作为普通 I/O 口输入时应先向端口的输出锁存器写入 1。 P1 口: 8 位,准双向 I/O 口,具有内部上拉电阻。 作为普通 I/O输入时,先向端口输出锁存器写入 1。 P2 口: 8 位,准双向 I/O 口,具有内部上拉电阻,作为普通 I/O输12 入时同上。 P3 口: 8 位,准双向 I/O 口,具有内部上拉电阻,作为普通 I/O输入时同上, P3 口还可以提供第二功能,其第二功能定义如表 31 所示: 表 31 P3 口第二功能 引脚 第二功能 说明 RXD 串行数据输入口 TXD 串行数据输出口 INT0 外部中断 0 输入 INT1 外部中断 1 输入 T0 定时器 0外部技术输入 T1 定时器 1外部计数输入 WR 外部数据存储器写选通输出 RD 外部数据存储器读选通输出 单片机 系统 整个系统的核心部件就是单 片机,搭建一个稳定的单片机系统对于系统的正常工作是很重要的。 13 图 33 单片机系统 单片机 系统如图 33所示,其中有 4个双向的 8位并行 I/O端口,分别记作 P0、 P P P3,都可以用于数据的输出和输入, P3 口具有第二功能为系统提供一些控制信号。 时钟电路用于产生单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。 单片机内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚 XTAL1,输出端为 XTAL2。 这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。 电路中的微调电容通常选择为 30pF 左右,该电容的大小会影响到振荡器 频率的高低、振荡器的稳定性和起振的快速性。 晶体的振荡频率采用 12MHz。 MCS51 的复位是由外部的复位电路来实现,采用最简单的上电复位电路。 14 温度检测电路及 DS18B20 测温原理 DS18B20 介绍 DS18B20引脚如图 34所示: 图 34 DS18B20 的管脚排列 DALLAS 半导体公司的单线数字温度传感器 DS18B20 是一种新型的“一线器件”,其体积小、适用于多种场合。 DS18B20 是世界上第一片支持“一线总线”接口的温度传感器。 温度测量范围为 55~ +125 176。 C,可编程为 9 位~ 12 位转换精度,测温分辨率可达 176。 C。 被测温度用符号扩展的 16位数字量方式串行输出。 多个 DS18B20可以并联到 3根或 2根线上, CPU 只需一根端口线就能与诸多 DS18B20 通信,占用微处理器的端口很少,可节省大量的引线和逻辑电路。 DS18B20 特性 ( 1)适应电压范围宽: V~ ,在寄生电源方式下可由数据线供电。 ( 2)独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器 与 DS18B20的双向通讯。 15 ( 3) DS18B20 在使用中 不需要任何外围元件,全部传感元件及转换电路集成在形 如一只三极管的集成电路内。 ( 4)测温范围- 55℃~+ 125℃,在 10℃~ +85℃时精度为177。 ℃。 ( 5)可编程的分辨率为 9~ 12 位,对应的可分辨温度分别为 ℃、℃、 ℃和 ℃,可实现高精度测温。 ( 6)在 9 位分辨率时最多在 内把温度转换为数字, 12 位分辨率时最多在 750ms 内把温度值转换为数字。 ( 7)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传 送 CRC校验码,具有很强的 抗干扰纠错能力。 ( 8)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 DS18B20 硬件电路 在硬件上, DS18B20与单片机的连接有两种方法,一种是 VCC 接外部电源, GND 接地, I/O 与单片机的 I/O线相连;另一种是用寄生电源供电,此时 VDD、 GND接地, I/O接单片机 I/O。 无论是内部寄生电源还是外部供电, I/O 口线要接 10KΩ左右的上拉电阻。 我们采用的是第一种连接方法,如图 35 所示,把 DS18B20的数据线与单片机的 ,再加上上拉电阻。 16 图 35 DS18B20 连接图 报警温度调节电路 本系统一共设置了 3个按键,系统运作时按 key1键切换到下限温度设置模式,同时数码管显示下限温度,按 key2, key3 可以对相应的下限温度进行加减设置。 再按 key1键切换到上限温度设置模式,同时显示上限温度,同样按 key2, key3可以进行设置。 再按 key1 切换到正常显示温度模式,同时将上下限温度值储存到 AT24C02 中。 按键电路如图 36所示,直接将 I/O 口通过按键接地即可,程序运行时检测到低电平即为按键按下。 17 图 36 温度调整按键电路 报警温度存 储电路 系统需要通过按键对报警温度上下限进行灵活设置,而设置后若系统断电重启单片机复位后温度上下限值将会回到最初的值而不是设置值,所以需要利用 FLASH把上下限值储存起来,这里用到 AT24C02。 AT24C02是美国 Atmel公司的低功耗 CMOS型 EEPROM,内含 256*8位存储空间,具有工作电压宽 (~),擦写次数多 (大于 10000次 ),写入速度快 (小于 10ms),抗干扰能力强,数据不易丢失,体积小等特点。 并且它是采用 I2C总线式进行数据读写的串行操作,只占用很少的资源和 I/O 线。 AT24C02 有一个 16 字节页写缓冲器,该器件通过 I2C总线接口进行操作,还有一个专门的写保护功能。 AT24C02的引脚如图 37,各引脚功能如下 : 18 图 37 AT24C02 引脚图 SCL:串行时钟输入管脚,用于产生器件所有数据发送或接收的时钟。 SDA:双向串行数据 /地址管脚,用于器件所有数据的发送或接收。 A0、 A A2:器件地址输入端。 这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为 0。 使用 AT24C02 最大可级联 8 个器件。 WP:写保护。 如果 WP 管脚连接到 VCC,所有的内容都被写保护,只能进行读操作。 当 WP管脚连接到 GND 或悬空,允许器件进行正常的读 /写操作。 GND:电源地 (GND)。 VCC:电源电压 (5V)。 AT24C02通过 IIC总线与单片机进行通信,电路连接如图 38 19 图 38 AT24C02 电路 报警及控制电路 由于只对温度太高和太低报警,报警功能并不复杂,这里没有采用语音报警功能,而用蜂鸣器代替,这样系统更简洁,软件方面也比较好控制,成本也更低。 蜂鸣器电路如图 39,采用 PNP 三极管驱动蜂鸣器。 20 图 39 蜂鸣器电路 在温度控制方面,降温利用小风扇实现,而考虑到成本和简便,加热器用红色 LED灯模拟。 电路如图 310 图 310 温度控制电路 21 显示电路 显示部分可以用液晶显示和数码管显示,由于本系统需要显示的只有数字,故用数码管显示即可。 7 段 LED数码管是利用 7 个 LED(发光二极管)外加一个小数点的 LED 组合而成的显示设备,可以显示 0~9 等 10个数字和小数点,使用非常广泛。 这种数码管可以分为共阳极和共阴极两种,共阳极就是把所有LED 的阳极连接到共同节点,而每个 LED的阴极分别为 a、 b、 c、 d、e、 f、 g 及 dp(小数点),如图 311 图 311 LED 共阳极接法 共阴极则是把所有 LED的阴极连接到共同接点,每个 LED的阳极分别为 a、 b、 c、 d、 e、 f、 g及 dp(小数点),如图 312 22 图 312 LED 共阴极接法 如图 313,图中的 8个 LED 分别与图中的 a、 b、 c、 d、 e、 f、 g及 dp 各段位相对应,通过控制各个 LED的亮灭来显示 0~9 不同数字及小数点。 如图 313 LED 各段对应图 如图 314,这里采用的是共阴 极 数码管。 23 图 314 共阴极数码管 S2, S3, S4 分别为十,个,小数位的阴极,阴极由 NPN 三极管加上拉电阻驱动,如图 315 图 315 数码管阴极驱动 图中 shi, ge, xiao相应连接单片机 , , ,控制 S2, S3, S4 的电平高低。 整体 硬件电路图请见附录 1。 24 第四章 系统软件设计 软件总体设计方案 本设计的软件分 4 个大部分:温度测量部分,温度显示部分,报警温度设置部分和温度处理部分 ,其中温度测量部分为软件设计的关键,此部分决定温度精度的大小。 系统上电后首先加载 EEPROM 中的上下限温度值,然后初始化定时器用于对蜂鸣器的控制。 然后进入系统主循环,在主循环中首先对温度进行测量,然后进行显示,下一步对温度进行处理,对超出温度范围的情况进行控制及报警处理,然后扫描键盘,如果扫描到按键 1按下将进入温度设置模式,通过按键 1, 2, 3对上下限温度进行调节,设置完成后把上限值和下限值储存到 EEPROM的相应地址中。 系统主流程图如图 41: 25 图 41 系统主流程 主程序设计 系统软件主要在温度显示和键盘扫描之间循环,隔一段时间才对DS18B20 进行温度获取,所以显示和扫描循环 50 次后再和温度测量部分构成系统大循环,即大约每一秒获取一次温度数据。 系统主程序: void main() { uint j。 //计数器 xia=read_add(2)。 26 delayms(10)。 shang=read_add(4)。 //读出保存的上限数据 TMOD=0x01。 //定时器工作在方式 1 ET0=1。 EA=1。 TH0=(65536250)/256。 TL0=(65536250)%256。 TR0=0。 //先关闭定时器 while(1) { tempchange()。 //温度转换 dis_temp(temp)。 //显示温度 dis_temp(temp)。 get_temp()。 //获取温度 dis_temp(temp)。 dis_temp(temp)。 deal()。 //温度处理 j=50。 while(j) { 27 dis_temp(temp)。 if(KEY1==0)set()。 //键盘扫描 } } } 测温程序设计 DS18B20与单片机通信采用的是单总线技术,它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的,因而这种单总线技 术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。 DS18B20 测温过程主要分三个步骤: DS18B20 温度转换, DS18B20度暂存数据,数据求出十进制,如图 42: 图 42 测温流程 28 温度转换工作流程 ROM的字节命令 0xcc 0x44 750~900ms 读暂存器数据流程 ROM的字节命令 0xcc 0xee 0个字节 LS,转换结果低八位 1个字节 MS,转换结果高八位 ,表示读取暂存结果 数据求出十进制 LS和 MS数据 (由于本系统测量范围在 0到 ,故不要 ) ,本系统要求精度为 176。 C,故将测得的数据乘以。 报警温度设置及储存设计 温度设置采用三按键设置,利用按键 1 转换模式,按键 2和按键29 3 分别进行加和减。 按键设置程序 按键 1 对应键值 key1 的大小进行模式转换,每扫描到键 1 按下时 key1 加 1,当 key1=1时为下限设置模式, key1=2 时为上限设置模式, key1=3 时满足“ key12”,此时将 key1 清零。 将上下限值储存在 EEPROM 中然后退出设置模式。 进入设置模式时数码管显示相应的设置温度,利用显示用于 KEY2和 KEY3 扫描的消抖延时。 流程图如图43: 图 43 按键设置流程图 温度储存程序 EEPROM采用 I2C总线与单片机进行通信。 I2C 总线是由飞利浦公司推出,是近年来微电子通信控制领域广。基于ds18b20的温度显示与报警系统设计毕业设计论文(编辑修改稿)
相关推荐
门用于显示数字、字母、符号等点阵式 的液晶显示屏。 目前常用 型号有 16 1, 16 2, 20 2和 40 2行等的模块。 下面 以 16 2型号的 1602 字符型液晶显示器为例,介绍其 一般 用法。 LCD1602 的基本参数及引脚功能 LCD1602 分为带背光和不带背光两种。 基控制器 一般都 为 HD44780。 带背光的 要 比不带背光的厚 一点。 是否带背光在 使 用中并无
用 ATMEL 公司 的高密度、非易失性存储技术生产,兼容标准 MCS51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元, STC89C52可以按照常规方法进行 编程,也可以在线编程。 其将通用的微处理器和 Flash 存储器结合在一起,特别是可反复擦写的 Flash 存储器可有效地降低开发成本。 STC89C52 单片机在电子行业中有着广泛的应用 [4]。 STC89C52
作,在对象 选择器窗口中,已有了 7SEGMPX6CABLUE、 AT89C5RES 三个元器件对象,若单击 AT89C51,在预览窗口中,见到 AT89C51 的实物图,如图所示;若单击 RES 或 7SEGMPX6CABLUE,在预览窗口中,见到 RES 和7SEGMPX6CABLUE 的实物图,如图所示。 此时,我们已注意到在绘图工具栏中的元器件按钮 处于选中状态。 (
( 1) 单片机的 P0 口 单片机中的 P0口既可以作为通用的 I/O 口进行数据的输入和输出,也可以作为单片机系统的地址 /数据线使用 ,并且 P0 口得电路中有一个多路转换电路 MUX。 在控5 制信号的作用下,多路接电路可以分别接通锁存器输出或地址 /数据线。 我出于对此的考虑,所以在 P0口在做输入输出接口时,加上 了 拉电阻,其 阻止我查资料,可以选择 千欧到 10千欧。 又因为
第 9页 机上。 NRF24L01P+PA+LNA 无线模块工作于免许可证的 频段,可以点对点应用,也可组成星形网络。 NRF24L01P+PA+LNA 无线模块的核心为挪威NORDIC 公司最新的高性能无线数传芯片 NRF24L01,经过国内的专业设计和改造,增加大功率 PA 和 LNA 芯片,射频开关,带通滤波器等组成了专业的全双向的射 频功放,即现在的 Nrf24l01 模块
换精度,测温分辨率可达 摄氏度,分辨率设定参 数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。 被测温度用符号扩展的 16 位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个 DS18B20可以并联到 3 根或 2 根线上, CPU 只需一根端口线就能与诸多 DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。