1、摘 凌阳, 拇指 凌阳 要 :随着现代信息技术的飞速发展和传统工业改造的逐步实现能够独立工作的温度检测和显示系统应用于诸多领域 。 食指 本文将介绍一种基于 AT89C51 凌阳, 拇指 凌阳 单片机 的 数字温度计 , 拇指 本温度计 与传统的温度计相比 , 拇指 具有读数方便 , 拇指 测温范围广 ,拇指 测温准确 , 拇指 其输出温度采用数字显示 , 拇指 主要用于对测温比较准确的场所 , 拇指 或科研实验室使用 , 拇指 该设计控制器使用单片机 AT89C51, 拇指 测温传感器使用 DS18B20, 拇指用 4 位共阳极 LED 数码管采用动态扫描方式 ,实现温度显示 。 食指 凌阳
2、, 拇指 凌阳 关键词 : AT89C51 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 数字温度 计 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 DS18B20 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳2 AT89C51 基本结构和原理 凌 阳 , 拇指 凌阳 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器( FPEROM Falsh 凌阳, 拇指 凌阳Programmable 凌阳, 拇指 凌阳 and 凌阳, 拇指 凌阳 Erasable 凌阳, 拇指 凌阳 Read 凌阳, 拇指 凌阳 Only 凌阳, 拇指 凌阳 Memory)的低电压 , 拇指 高性能 CMOS8 位微处理器
3、, 拇指 俗称单片机 。 食指 AT89C2051 是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机 。 食指 单片机的可擦除只读存储器可以反复擦除 100次 。 食指 该器件采用 ATMEL高密度非易失存储器制造技术制造 , 拇指 与工业标准的 MCS-51 指令集和输出管脚相兼容 。 食指 由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中 , 拇指 ATMEL 的 AT89C51是一种高效微控制器 , 拇指 AT89C2051 是它的一种精简版本 。 食指 AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案 。 食指 外形及引脚排列如图所示 凌阳, 拇指
4、凌阳 1.1 主要特性: 凌阳, 拇指 凌阳 ( 1) 与 MCS-51 凌阳, 拇指 凌阳 兼容 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 ( 2) 4K 字节可编程闪烁存储器 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 ( 3) 寿命: 1000 写 /擦循环 凌阳, 拇指 凌阳 ( 4) 数据保留时间: 10 年 凌阳, 拇指 凌阳 ( 5) 全静态工作: 0Hz-24MHz 凌 阳, 拇指 凌阳 ( 6) 三级程序存储器锁定 凌阳, 拇指 凌阳 ( 7) 1288 位内部 RAM 凌阳, 拇指 凌阳 ( 8) 32 可编程 I/O 线 凌 阳, 拇指 凌阳 ( 9) 两个 16 位定时器 /计数
5、器 凌阳, 拇指 凌阳 ( 10) 5 个中断源 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 ( 11) 可编 程串行通道 凌阳, 拇指 凌阳 ( 12) 低功耗的闲置和掉电模式 凌阳, 拇指 凌阳 ( 13) 片内振荡器和时钟电路 凌阳, 拇指 凌阳 3 1.2 管脚说明: 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 VCC:供电电压 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 GND:接地 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P0 口: P0 口为一个 8 位漏级开路双向 I/O 口 , 拇指 每脚可吸收 8TTL 门电
6、流 。 食指当 P1 口的管脚第一次写 1 时 , 拇指 被定义为高阻输入 。 食指 P0 能够用于外部程序数据存储器 , 拇指 它可以被定义为数据 /地址 的第八位 。 食指 在 FIASH 编程时 , 拇指 P0 凌阳, 拇指 凌阳 口作为原码输入口 , 拇指 当 FIASH 进行校验时 , 拇指 P0 输出原码 , 拇指 此时 P0 外部必须被拉高 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口 , 拇指 P1 口缓冲器能接收输出 4TTL 门电流 。 食指 P1 口管脚写入 1 后 , 拇指 被
7、内部上拉为高 , 拇指 可用作输入 , 拇指 P1口被外部下拉为低电平时 , 拇指 将输出电流 , 拇指 这是由于内部上拉的缘故 。 食指 在 FLASH编程和校验时 , 拇指 P1 口作为第八位地址接收 。 食指 凌阳, 拇指 凌阳凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P2 口: P2 口为一个内部上拉电阻的 8 位双向 I/O 口 , 拇指 P2 口缓冲器可接收 , 拇指输出 4 个 TTL 门电流 , 拇指 当 P2 口被写 “1”时 , 拇指 其管脚被内部上拉电阻拉高 , 拇指 且作为输入 。 食指 并因此作为输入时 , 拇指 P2 口的管脚被外部拉低 , 拇指
8、将输出电流 。 食指 这是由于内部上拉的缘故 。 食指 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时 , 拇指 P2 口输出地址的高八位 。 食指 在给出地址 “1”时 , 拇指 它利用内部上拉优势 , 拇指当对外部八位地址数据存储器进行读写时 , 拇指 P2 口输出其特殊功能寄存器的内容 。食指 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3 口: P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口 , 拇指 可接收输出 4 个 TTL门电流 。 食指 当 P3 口写入
9、“1”后 , 拇指 它们被内部上拉为高电平 , 拇指 并用作输入 。 食指 作为输入 ,拇指 由于外部下拉为低电平 , 拇指 P3 口将输出电流( ILL)这是由于上拉的缘故 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3 口也可作为 AT89C51 的一些特殊功能口 , 拇指 如下表所示: 凌阳 ,拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 口管脚 凌阳, 拇指 凌阳 备选功能 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.0 凌阳, 拇指 凌阳 RXD(串行输入口) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.1
10、 凌阳, 拇指 凌阳 TXD(串行输出口) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.2 凌阳, 拇指 凌阳 /INT0(外部中断 0) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.3 凌阳, 拇指 凌阳 /INT1(外部中断 1) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.4 凌阳 ,拇指 凌阳 T0(记时器 0 外部输入) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.5 凌阳, 拇指 凌阳 T1(记时器 1 外部输入) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.6 凌阳, 拇
11、指 凌阳 /WR(外部数据存储器写选通) 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3.7 凌阳, 拇指 凌阳 /RD(外部数据存储器读选通) 凌阳, 拇指 凌阳 4 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 P3 口同时为闪烁编程和编程校验接收一些控制信号 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 RST:复位输入 。 食指 当振荡器 复位器件时 , 拇指 要保持 RST 脚两个机器周期的高电平时间 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 ALE/PROG:当访问外部存储器时 , 拇指 地址锁存允许的输出电平用于锁存
12、地址的地位字节 。 食指 在 FLASH 编程期间 , 拇指 此引脚用于输入编程脉冲 。 食指 在平时 , 拇指 ALE 端以不变的频率周期输出正脉冲信号 , 拇指 此频率为振荡器频率的 1/6。 食指 因此它可用作对外部输出的脉冲或用于定时目的 。 食指 然而要注意的是:每当用作外部数据存储器时 , 拇指 将跳过一个 ALE 脉冲 。 食指 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。 食 指此时 , 拇指 凌阳, 拇指 凌阳 ALE 只有在执行 MOVX, 拇指 MOVC 指令是 ALE 才起作用 。 食指 另外 , 拇指 该引脚被略微拉高 。 食指 如果微处理器在外部执行状
13、态 ALE 禁止 , 拇指 置位无效 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 /PSEN:外部程序存储器的选通信号 。 食指 在由外部程序存储器取指期间 , 拇指 每个机器周期两次 /PSEN 有效 。 食指 但在访问外部数据存储器时 , 拇指 这两次有效的 /PSEN 信号将不出现 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 /EA/VPP:当 /EA保持低电平时 , 拇指 则在此期间外部 程序存储器( 0000H-FFFFH) ,拇指 不管是否有内部程序存储器 。 食指 注意加密方式 1 时 , 拇指 /EA 将内部锁定为 RESET
14、;当 /EA 端保持高电平时 , 拇指 此间内部程序存储器 。 食指 在 FLASH 编程期间 , 拇指 此引脚也用于施加 12V 编程电源( VPP) 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 XTAL2:来自反向振荡器的输出 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 1.3 振荡器特性 :凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 XTAL1 和 XTAL2 分别为反向放大器的输入和输出 。 食指 该反向放大器可
15、以配置为片内振荡器 。 食指 石晶振荡和陶瓷振荡均可采用 。 食指 如采用外部时钟源驱动器件 , 拇指 XTAL2 应不接 。 食指 有余输入至内部时钟信号要通过一个二分频触发器 , 拇指 因此对外部时钟信号的脉宽无任何要求 , 拇指 但必须保证脉冲的高低电平要求的宽度 。 食指 凌阳, 拇指 凌阳 1.4 复位电路: 凌阳, 拇指 凌阳 单片机复位的条件是:必须使 RST/VPD 凌阳, 拇指 凌阳 或 RST 引( 9)加上持续两个机器周期(即24 个振荡周期)的高电平 。 食指 例如 , 拇指 若时钟频率为 12 凌阳, 拇指 凌阳 MHz, 拇指 每机器周期为 1 s,拇指 则只需 2
16、 s 以上时间的高电平 , 拇指 在 RST 引脚出现高电平后的第二个机器周期执行复位 。 食指 单片机常见的复位如图所示 。 食指 电路为上电复位电路 , 拇指 它是利用电容充电来实现的 。 食指 在接电瞬间 , 拇指 RESET 端的电位与 VCC 相同 , 拇指 随着充电电流的减少 , 拇指 RESET的电位逐渐下降 。 食指 只要保证 RESET 为高电平的时间大于两个机器周期 , 拇指 便能正常5 复位 。 食指 该电路除具有上电复位功能外 , 拇指 若要复位 , 拇指 只需按图中的 RESET 键 , 拇指 此时电源 VCC 经电阻 R1、 R2 分压 , 拇指 在 RESET 端
17、产生一个复位高电平 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 凌 阳, 拇指 凌阳 温度传感器 DS18B20 测温原理 凌阳, 拇指 凌阳 DS18B20 的性能特点 凌阳, 拇指 凌阳 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器 , 拇指 与传统的热敏电阻等测温元件相比 , 拇指 它能直接读出被测温度 , 拇指 并且可根据实际要求通过简单的编程实现 9-12 位的数字值读数方式 。 食指 DS18B20 的性能特点如下: 凌
18、阳, 拇指 凌阳 ( 1)独特的单线接口仅需要一个端口引脚进行通信 , 拇指 DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯 。 食指 凌阳, 拇指 凌阳 ( 2) DS18B20 支持多点组网功能 , 拇指 多个 DS18B20 可以并联在惟一的三线上 , 拇指 实现多点组网测温; 凌阳, 拇指 凌阳 ( 3)无须外部器件 , 拇指 全部传感元件及转换电路集成在形如一只三极管的集成电路内 ; 凌阳, 拇指 凌阳 ( 4)可通过数据线供电 , 拇指 电压范围为 3.0-5.5; 凌阳, 拇指 凌阳 ( 5)零待机功耗; 凌阳, 拇指 凌阳 ( 6
19、)温度以 9 或 12 位数字 , 拇指 对应的可分辨温度分别为 0.5 、 0.25 、 0.125和 0.0625 , 拇指 可实现高精度测温 ; 凌阳, 拇指 凌阳 ( 7)用户可定义报警设置; 凌阳, 拇指 凌阳 ( 8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 凌阳, 拇指 凌阳 ( 9)负电压特性 , 拇指 电源极性接反时 , 拇指 温度计不会因发热而烧毁 , 拇指 但不能正常工作; 凌阳, 拇指 凌阳 ( 10) 测量结果直接输出数字温度信号 , 拇指 以 “一线总线 “串行传送给 CPU, 拇指 同时可传送 CRC 校验码 , 拇指 具有极强的抗干扰纠 错
20、能力 凌阳, 拇指 凌阳 6 DS18B20 组成及结构 凌阳, 拇指 凌阳 DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装 , 拇指 其 引脚排列及 内部结构框图如图 2 及图 3 以及图 4 的测温原理图如下 所示 : 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 图 2 凌阳, 拇指 凌阳 引脚排列 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 图 3 凌阳, 拇指 凌阳 内部 结构框图 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇
21、指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 图 4 凌阳, 拇指 凌阳 DS18B20 测温原理图 凌阳, 拇指 凌阳 64 位 ROM 的结构开始 8 位是产品类型的编号 , 拇指 接着是每个器件的惟一的序号 , 拇指共有 48 位 , 拇指 最后 8 位是前面 56 位的 CRC 检验码 , 拇指 这也是多个 DS18B20 可以采用一线进行通信的 原因 。 食指 温度报警触发器 TH 和 TL, 拇指 可通过软件写入户报警上下限 。食指 凌阳, 拇指 凌阳 DS18B20温度传感器的内部存储器还包括一个
22、高速暂存 RAM和一个非易失性的可电擦除的 EERAM。 食指 高速暂存 RAM 的结构为 8 字节的存储器 , 拇指 结构如图 4 所示 。 食指头 2 个字节包含测得的温度信息 , 拇指 第 3 和第 4 字节 TH 和 TL 的拷贝 , 拇指 是易失的 ,预置 斜率累加器 比较 低温度系 数振荡器 计数器 1 温度寄存器 Tx 预置 =0 高温度系 数振荡器 -0 计数器 2 T1 加 1 停止 T2 7 拇指 每次上电复位时被刷新 。 食指 第 5 个字节 , 拇指 为配置寄存器 , 拇指 它的内容用于确定温度值的数字转换分辨率 。 食指 DS18B20 工作时寄存器中的分辨率转换为相
23、应精度的温度数值 。 食指 该字节各位的定义如图 5 所示 。 食指 低 5 位一直为 1, 拇指 TM 是工作模式位 , 拇指 用于设置 DS18B20 在工作模式还是在测试模式 , 拇指 DS18B20 出厂时该位被设置为 0, 拇指 用户不要去改动 , 拇指 R1 和 R0 决定温度转换的精度位数 , 拇指 来设置分辨率 。 食指 TM R1 R0 1 1 1 1 1 图 5 凌阳, 拇指 凌阳 DS18B20 的字节定义 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 DS18B20 的分辨率定义如表 2-1 所示 凌阳, 拇指 凌阳 表 2-1 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳,
24、 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 分辨率设置表 R0 R1 分辨率 最大温度转移时间 0 0 9 位 96.75ms 0 1 10 位 187.5ms 1 0 11 位 375ms 1 1 12 位 750ms 由表 1 可见 , 拇指 DS18B20 温度转换的时间比较长 , 拇指 而且分辨率越高
25、 , 拇指 所需要的温度数据转换时间越长 。 食指 因此 , 拇指 在实际应用中要将分辨率和转换时间权衡考虑 。 食指 凌阳, 拇指 凌阳 主机控制 DS18B20 完成温度转换过程是:每一次读写之前都要对 DS18B20 进行复位 , 拇指 即将数据总线下拉 500us, 拇指 然后释放 , 拇指 DS18B20 收到信号后等待 16-60us 左右 , 拇指 之后发出 60-240us 的存在低脉冲 , 拇指 主 CPU 收到此此信号表示复位成功;复位 成功后发送一条 ROM 指令 , 拇指 然后发送 RAM 指令 , 拇指 这样才能对 DS18B20 进行预订的读写操作 。 食指 凌阳,
26、 拇指 凌阳 表 2-2 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 ROM 指令集 温度 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 LSB 温度 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳
27、 MSB TH 用户字节 1 TL 用户字节 2 配置寄存器 保留 保留 保留 CRC 8 指令 约定代码 功能 读 ROM 33H 读 DS18B20 中的编码 凌阳, 拇指 凌阳 符合 ROM 凌阳, 拇指 凌阳 55H 发出此命令后 , 拇指 接着发出 64 位 ROM 编码 , 拇指 访问单线总线上与该编辑相对应的 DS18B20 使之做出响应 , 拇指 为下一步对该 DS18B20 的读写作准备 搜索 ROM 0F0H 用于确定挂接在同一总线上的 DS18B20 个数和识别 64 位ROM 地址 , 拇指 为操作各器件作准备 跳过 ROM 0CCH 忽略 64 位 ROM 地址 ,
28、拇指 直接向 DS18B20 发送温度变换指令 告警搜索命令 0ECH 执行后 , 拇指 只 有温度跳过设定值上限或下限的片子才能做出反应 凌阳, 拇指 凌阳 表 2-3 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳,
29、拇指 凌阳 凌阳, 拇指 凌阳 RAM 指令集 指令 约定代码 功能 温度转换 44H 启动 DS18B20 进行温度转换 读暂存器 0BEH 读暂存器 9 个字节内容 写暂存器 4EH 将数据写入暂存器的 TH、 TL 字节 复制暂存器 48H 把暂存器的 TH、 TL 字节写到 E2RAM 中 重调 E2RAM 0B8H 把 E2RAM 中的 TH、 TL 字节写到暂存器 TH、 TL 字节 读供电方式 0B4H 启动 DS18B20 发送电源供电方式的信号给主 CPU 凌阳, 拇指 凌阳 DS18B20 的测温原理 凌阳, 拇指 凌阳 DS18B20 的测温原理是这这样的 ,器件中低温度
30、系数晶振的振荡频率受温度的影响很小 , 拇指 用于产生固定频率的脉冲信号送 给减法计数器 1;高温度系数晶振随温度变化其振荡频率明显改变 , 拇指 所产生的信号作为减法计数器 2 的脉冲输入 。 食指 器件中还有一个计数门 , 拇指 当计数门打开时 , 拇指 DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量 。 食指 计数门的开启时间由高温度系数振荡器来决定 , 拇指 每次测量前 , 拇指 首先将最低温所对应的一个基数分别置入减法计数器 1、温度寄存器中 , 拇指 计数器 1 和温度寄存器被预置在最低温所对应的一个基数值 。 食指 凌阳, 拇指 凌阳 减法计数器 1
31、对低温度系数晶振产生的脉冲信号进行减法计数 , 拇指 当减法计数器 1的 预置值减到 0 时 , 拇指 温度寄存器的值将加 1, 拇指 减法计数器 1 的预置将重新被装入 ,拇指 减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数 , 拇指 如此循环直到减法计数器计数到 0 时 , 拇指 停止温度寄存器的累加 , 拇指 此时温度寄存器中的数值就是所测温度值 。 食指 其输出用于修正减法计数器的预置值 , 拇指 只要计数器门仍未关闭就重复上述过程 , 拇指 直到温度寄存器值大致被测温度值 。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 系统软件设计 凌阳, 拇指 凌阳 5.1 主程
32、序设计 凌阳, 拇指 凌阳 9 整个系统的功能是由硬件电路配合软件来实现的 , 拇指 当硬件 基本定型后 , 拇指 软件的功能也就基本定下来了 。 食指 从软件的功能不同可分为两大类:一是监控软件(主程序) , 拇指 它是整个控制系统的核心 , 拇指 专门用来协调各执行模块和操作者的关系 。 食指 二是执行软件(子程序) , 拇指 它是用来完成各种实质性的功能如测量、计算、显示、通讯等 。 食指 每一个执行软件也就是一个小的功能执行模块 。 食指 这里将各执行模块一一列出 , 拇指 并为每一个执行模块进行功能定义和接口定义 。 食指 各执行模块规划好后 , 拇指 就可以规划监控程序了 。 食指
33、 首先要根据系统的总体功能选择一种最合适的监控程序结构 , 拇指 然后根据实时性的要 求 , 拇指 合理地安排监控软件和各执行模块之间地调度关系 。食指 主程序流程见图 5-1。 食指 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指
34、凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 10 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳,
35、拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 凌阳, 拇指 凌阳 当前温度 上限温度或下限温度 蜂鸣器不报警 绿色 LED 灯指示 开始 初始化端口 数码管显示“ 8888” 蜂鸣器报警 红色 LED 灯指示 温度传感器工作 显示当前温度值 显示下限温度 按 K2、 K3 调 节下限温度值 按键 K1,调节 st 的值 显示上限温度 按 K2、 K3 调 节上限 温度值 st=2 st=3 st=1 ON YES 判断 st 的值