已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 目 录 摘 要 1 关键词 1 1 前言 2 1 1 研究的目的及意义 2 1 2 车载饮水机的发展趋势 2 1 3 主要研究的内容 3 2 系统总体的设计 3 2 1 硬件总体的设计 3 2 2 软件总体的设计 4 3 硬件系统设计 5 3 1 硬件电路分析和设计报告 5 3 1 1 单片机最小系统电路 5 3 1 2 水位检测电路 7 3 1 3 键盘电路 7 3 1 4 数码管及指示灯显示电路 8 3 1 5 温度采集电路 9 3 1 6 电源电路 14 3 1 7 报警电路设计 15 3 1 8 加热管控制电路设计 16 3 2 系统硬件总图 17 4 系统总设计 18 4 1 主程序流程图 18 4 2 各个模块的流程图 19 4 2 1 读取温度 DS18B20 模块的流程 19 4 2 2 键盘扫描处理流程 22 2 4 2 3 报警处理流程 22 4 3 系统源代码 23 5 系统调试 31 5 1 软件调试 31 5 2 系统操作说明 32 5 3 数据测试 32 5 4 社会效益 33 6 结论 33 参考文献 34 致谢 34 附录 35 3 基于单片机的车载自动饮水机控制系统的设计基于单片机的车载自动饮水机控制系统的设计 摘 要 温度控制系统可以说是无所不在 热水器系统 空调系统 冰箱 电饭煲 电风 扇等家电产品以至手持式高速高效的计算机和电子设备 均需要提供温度控制功能 本系统的设 计可以用于热水器温度控制系统和饮水机等各种电器电路中 它以单片机AT80C51为核心 通过3 个数码管显示温度和4个按键实现人机对话 使用单总线温度转换芯片DS18B20实时采集温度并通 过数码管显示 并提供各种运行指示灯用来指示系统现在所处状态 如 温度设置 加热 停止 加热等 整个系统通过四个按键来设置加热温度和控制运行模式 关键词 单片机 数码管显示 单总线 DS18B20 The Design of Automatic Drinking Machine Control System Based On Single Chip Microcomputer On board Abstract Temperature control system can be said to be ubiquitous water heaters system air conditioning systems refrigerators rice cookers electric fans and other home appliances as well as high speed and efficient hand held computers and electronic equipment are required to provide temperature control The system design can be used for drinking water heater temperature control systems and other electrical circuits AT80C51 microcontroller as the core of it through the three temperature digital display and 4 keys to achieve man machine dialogue the use of single chip bus temperature conversion temperature DS18B20 real time acquisition and through the digital display and offers a variety of operating light to indicate system now live in the state such as temperature setting heating and stop heating the entire system through the four buttons to set the heating temperature and control the operating mode Key words Microcontroller Digital Display Single Bus DS18B20 1 前言 1 1 研究的目的及意义 本设计是基于单片机的车载自动饮水机控制系统的设计 此设计主要是要求采用 单片机为控制核心 设计车载自动饮水机电控系统 并对饮水机的温度控制 使其在 4 工作中达到预期的目的效果 而车载饮水机的温度控制 无论是在工业生产过程中 还是在日常生活中都起着 非常重要的作用 过低的温度或过高的温度都会使水资源失去应有的作用 从而造成 水资源的巨大浪费 特别是在当前全球水资源极度缺乏的情况下 我们更应该掌握好 对水温的控制 把身边的水资源好好地利用起来 本次设计为一个基于单片机的车载饮水机的温度控制系统 该系统可以实时检测 饮水机水箱的水温 并且可以通过数码管显示饮水机水箱水温度数 可以通过键盘或 开关选择制冷或加热 可以人为设置水的温度的上下限 如加热 当温度在设定的范 围内时正常工作 当低于水温下限时控制加热器加热 如制冷 当温度高于水温上限 时控制压缩机制冷 温度检测范围 0 95 精度 1 当温度超过设定值时具有示 警功能 1 2 车载饮水机的发展趋势 从 1992 年安吉尔生产出中国第一台饮水机开始 饮水机加桶装水的方便 快捷 健康的饮水方式便在中国兴起 到了 1999 年 饮水机市场逐渐成熟 美的 沁园 浪木等企业也开始生产符合国家标准的饮水机 2006 年以后 研究发现 有内胆饮水 机的水垢和节能问题渐渐暴露 所以安吉尔和美的推出了外置加热的沸腾胆饮水机产 品 以独特的热胆外置方式加热饮用水 现喝现烧更节能 更易清洁加热内壁 沁园 推出了无热胆系列产品 由于宣传角度和内部造型新颖 曾热卖一时 但是火爆之后 大量的问题暴露 水垢 二次污染 节能 安全这些问题都没有解决 导致顾客投诉 增多 身败名列 所以饮水机的发展趋势近 10 年左右还会以外形优美的外热饮水机 为主 传统饮水机为辅 中国水家电行业发展十余年 2002 年以前少数有规模的企业在做全国市场 并进 行了一些宣传推广工作 虽然是独步难行 可也很好的推动了市场的发展 在 2002 年前后 更多企业认识到了中国水处理市场的巨大商机 进来的企业多了 据有关部 门统计中国在国家有关部门登记在册的水家电企业有 2000 余家 还有一些未在统计 范围之内 这些企业多半在从事水家电的 OEM 生产 规模不足给中国家电中小企业 形成几大风险 一是规模成本不经济 产品在市场最终还是缺乏竞争力 二是规模不 足导致企业在产业环境即上下游的博弈能力不强 一旦产业环境发生变化 企业的应 变力不足 三是规模不足导致企业抗风险能力差 尤其是难以抗拒大品牌大资本企业 的进入 在未来中国饮水机结构就产生了二极分化 一极为末流品牌 或称为弱势品 牌 的产品阵营 一极为主流品牌未来的市场份额也将由他们主宰 5 本设计是基于单片机车载自动饮水机系统的设计 单片机对对温度的控制是工业 生产中经常使用的控制方法 单片机主要用于控制 它的应用领域遍及各行各业 大 到航天飞机 小至日常生活中的冰箱 彩电 单片机都可以大显其能 采用单片机对 整个测量电路进行管理和控制 使得整个系统智能化 功耗低 使用电子元件较少 内部配线少 成本低 制造 安装 调试及维修方便 我相信此设计是非常有前景的 1 3 主要研究的内容 1 本系统上电后数码管显示当前测量温度 此时加热指示灯和保温指示灯均不 点亮 若此时按 自动加热 键 则单片机自动将预加热温度设置为 80 并开始加热 送出一个加热信号 并点亮加热指示灯 若按 温度设置 键 则进入预加热温度设 置界面 此时数码管闪烁显示预设置温度 此时通过按键 和 进行设置温 度 预设置温度按 5 递增或递减 设置好温度后再按一次 温度设置 键确定 单片机保存预设置温度 并开始加热 2 如果实测温度大于或等于预设置温度 则单片机发出停止加热信号并熄灭加 热指示灯 点亮保温指示灯 且当超过预设温度时发出报警 3 当温度下降到预设置温度以下 5 度时 单片机再次发出加热信号 同时熄灭 保温指示灯 点亮加热指示灯 依次循环控制 4 完成加热管控制电路 报警电路设计 重点设计好临界点问题 5 必要时有防冻功能 当冬天气温太低 要有防止管内结冰装置 有人工可以 选择语音是否播放的功能 2 系统整体的设计 2 1 硬件整体的设计 设计并制作一个基于单片机的热水器温度控制系统的电路 其结构框图如图 1 6 电源 单片机 AT80C51 数码管显示 继电器 温度传感器 DS18B20 报警 指示灯 图 1 系统机构框图 Fig1 The system block diagram 硬件系统子模块 1 单片机最小系统电路部分 2 键盘扫描电路部分 3 数码管温度显示和运行指示灯电路部分 4 温度采集电路部分 5 继电器控制部分 6 报警部分 2 2 软件整体的设计 良好的设计方案可以减少软件设计的工作量 提高软件的通用性 扩展性和可读 性 本系统的设计方案和步骤如下 1 根据需求按照系统的功能要求 逐级划分模块 2 明确各模块之间的数据流传递关系 力求数据传递少 以增强各模块的独立 性 便于软件编制和调试 3 确定软件开发环境 选择设计语言 完成模块功能设计 并分别调试通过 4 按照开发式软件设计结构 将各模块有机的结合起来 即成一个较完善的系 统 首先接通电源系统开始工作 系统开始工作后 通过按键设定温度值的上限值和 7 下限值 确定按键将设定的温度值存储到指定的地址空间 温度传感器开始实时检测 调用显示子程序显示检测结果 调用比较当前显示温度值与开始设定的温度值比较 如果当前显示值低于设定值就通过继电器起动加热装置 直到达到设定值停止加热 之后进行保温 如果温度高于上限进行报警 3 硬件系统设计 3 1 硬件电路分析及设计报告 本次设计主要思路是通过对单片机编程将由温度传感器 DS18B20 采集的温度外加 驱动电路显示出来 包括对继电器的控制 进行升温 当温度达到上下限蜂鸣器进行 报警 P1 7 开关按钮是用于确认设定温度的 初始按下表示开始进入温度设定状态 然后通过 P1 5 和 P1 6 设置温度的升降 再次按下 P1 7 时 表示确认所设定的温度 然后转入升温或降温 P2 3 所接的发光二极管用于表示加热状态 P2 5 所接的发光二 极管用于表示保温状态 P2 3 接继电器 P3 1 是温度信号线 整个电路都是通过软件 控制实现设计要求 3 1 1 单片机最小系统电路 因为80C51单片机内部自带8K的ROM和256字节的RAM 因此不必构建单片机系 统的扩展电路 如图2 单片机最小系统有复位电路和振荡器电路 值得注意的一点 是单片机的31脚必须接高电平 否则系统将不能运行 因为该脚不接时为低 VPEA 电平 单片机将直接读取外部程序存储器 而系统没有外部程序存储器 所以 必须接VCC 在按键两端并联一个电解电容 滤除交流干扰 增加系统抗干扰 VPEA 能力 1 C2 30PF C3 30PF 1 12M EA VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P1 1 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE P 30 TXD 1 1 RXD 10 U2 C4 10UF VCC R3 10K VCC AT80C5 1 VCC 1 1 2 2 3 4SW5 8 图 2 单片机最小系统图 Fig2 The system block diagram AT80C51 的管脚说明 VCC 供电电压 本设计供电电压为 5V GND 接地 P0 口 P0 口为一个 8 位漏极开路双向 I O 口 每个管脚可吸收 8 个 TTL 门电流 当 P1 口的管脚第一次写 1 时 被定义为高阻输入 P0 口能够作为外部程序数据 存储器 它可以被定义为数据 地址的低八位 在 Flash 编程时 P0 口作为原码输入 口 当 Flash 进行校验时 P0 输出原码 此时 P0 外部必须被拉高 P1 口 P1 口是一个内部提供上拉电阻的 8 位双向 I O 口 P1 口缓冲器能接收输 出 4 个 TTL 门电流 P1 口管脚写入 1 后 被内部上拉为高电平 可用作输入 P1 口被外部下拉为低电平时 将输出电流 这是由于内部上拉的缘故 在 FLASH 编程 和校验时 P1 口作为低八位地址接收 P2 口 P2 口为一个带内部上拉电阻的 8 位双向 I O 口 P2 口缓冲器可接收 输 出 4 个 TTL 门电流 当 P2 口被写 1 时 其管脚被上拉电阻拉高 且作为输入 P2 口的管脚被外部下拉为低电平时 将输出电流 这是由于内部上拉的缘故 P2 口 当用于外部程序存储器或 16 位地址外部数据存储器进行存取时 P2 口输出地址的高 八位 在给出地址 1 时 它利用内部上拉电阻 当对外部八位地址数据存储器进 行读写时 P2 口输出其特殊功能寄存器的内容 P2 口在 Flash 编程和校验时接收高八 位地址信号和控制信号 P3 口 P3 口管脚是 8 个带内部上拉电阻的双向 I O 口 可接收输出 4 个 TTL 门 电流 当 P3 口写入 1 后 它们被内部上拉为高电平 并用作输入 作为输入 由 于外部下拉为低电平 P3 口将输出电流 这是由于上拉的缘故 RST 复位输入端 当振荡器复位器件时 要保持 RST 脚两个机器周期的高电平 时 ALE 当访问外部存储器时 地址锁存于锁存地址的低位字节 在 FLASH 编程 期间 该引脚用于输入编程脉冲 在平时 ALE 端口以不变的频率周期输出正脉冲信 号 此频率为振荡器频率的 1 6 因此它可用作对外部输出的脉冲或用于定时目的 然而 要注意的是 每当其用作外部数据存储器时 将跳过一个 ALE 脉冲 如想禁 止 ALE 的输出 可将 SFR8EH 地址置 0 此时 ALE 只有在执行 MOVX MOVC 指令时 ALE 才起作用 1 9 PSEN 外部程序存储器的选通信号 在由外部程序存储器取指令期间 每个机 器周期 PSEN 两次有效 但在访问外部数据存储器时 这两次有效的 PSEN 信号将不 出现 EA EA 功能为内外程序存储器选择控制端 当 EA 保持低电平时 单片机访问 外部程序存储器 当 EA 端保持高电平时 单片机访问内部程序存储器 XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入端 XTAL2 来自反向振荡器的输出端 3 1 2 水位监测电路 水位检测传感器采用两根不锈钢针 一根和地连接 另一根通过 100K 电阻接到 5V 电源 控制芯片采用 NE555 当水位低时 不足以使两个电极导通时 NE555 的 2 脚为高电平 第 3 脚输出低电平 即 P1 2 1 单片机通过检测 P1 2 的电平 可以 判断热水箱水位是否满 2 水位检测电路原理图如图 3 所示 V5V 103 C4 SHUIWEI 5 2 4 6 U2NE555N 8 3P12 7 CTL TRIG RST THR GND R7 100K GND OUT DISC 1 GND 图3 水位监测电路原理图 Fig3 Level monitoring circuit principle diagram 3 1 3 键盘电路 键盘是单片机应用系统中的主要输入设备 单片机使用的键盘分为编码键盘和非 编码键盘 编码键盘采用硬件线路来实现键盘的编码 每按下一个键 键盘能够自动 生成按键代码 并有去抖功能 因此使用方便 但硬件较复杂 非编码键盘仅仅提供 键开关状态 由程序来识别闭合键 消除抖动 产生相应的代码 转入执行该键的功 能程序 非编码键盘中键的数量较少 硬件简单 在单片机中应用非常广泛 图为按键和AT80C51的接线图 检测仪共设有4个按键 每个按键由软件来决定 其功能 4个按键功能分别为 3 10 1 SW1 设定按键 设定按键 2 SW2 加法按键 当前位加5 3 SW3 减法按键 当前位减5 4 SW4 退出设置键 系统初始化 EA VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE P 30 TXD 11 RXD 10 U2 AT80C51 1 1 2 2 34 SW3 SW PB 1 1 2 2 34 SW4SW PB 1 1 2 2 34 SW2SW PB 1 1 2 2 34 SW1 SW PB P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 图 4 单片机按键和 AT80C51 的接线图 Fig 4 Keys of single chip microcomputer and AT80C51 3 1 4 数码管及指示灯显示电路 1 数码管显示说明 表 1 数码管编码表 Table1 Digital code table 段码 位码 显示器状态 08H 01H 0 abH 02H 1 12H 04H 2 22H 08H 3 a1H 10H 4 24H 20H 5 04H 40H 6 aaH 80H 7 11 各个数码管的段码都是单片机的数据口输出 即各个数码管输入的段码都是一样的 为了使其分别显示不同的数字 可采用动态显示的方式 即先只让最低位显示 0 含点 经过一段延时 再只让次低位显示 1 如此类推 由视觉暂留 只要我们的延时时间 足够短 就能够使得数码的显示看起来非常的稳定清楚 过程如表 1 本论文中使用了 3 个数码管 其中前两位使用动态扫描显示实测温度 在设置加 热温度的时候 两个数码管是闪烁 以提示目前处在温度设置状态 第三位数码管静 态显示符号 2 运行指示灯说明 本热水器温度控制系统中共使用到 3 个 LED 指示灯和 3 个数码管 右上角的红色 LED 是电源指示灯 数码管右边的红色LED是加热指示灯 当刚开机或温度降到设定温度5 以下时 该灯会亮 表示目前处于加热状态 当温度上升到设定温度时 该LED灭 同时数码 管右边的绿色LED亮 表示目前处于保温状态 用户可以使用热水器 当温度再次下 降到设定温度5 以下时 绿色LED灭 红色加热的LED灯亮 不断循环 7 V CC E 1 C 3 B 2 Q1 PNP E 1 C 3 B 2 Q3 PNP R6 470 R7 470 R8 470 R9 470 R10 470 R11 470 R12 470 R13 470 V CC EA V P 31 X 1 19 X 2 18 RESET 9 RD 17 WR 16 IN T0 12 IN T1 13 T 0 14 T 1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE P 30 T X D 11 RX D 10 U2 R16 4 7K R17 4 7K S8550 3 a bf c g d e DPY 1 2 3 4 5 6 7 a b c d e f g 8 dp dp a bf c g d e DPY dp com1 9 com2 10 DP1 两两两两两 a bf c g d e DPY 1 2 3 4 5 6 7 a b c d e f g 8 dp dp COM 9 DP2 DPY 7 SEG DP R14 470 V CC 图 5 LED 数码管显示电路图 Fig5 LED digital tube display circuit diagram 12 3 1 5 温度采集电路 此处省略 NNNNNNNNNNNN 字 如需要完整说明书和设计图纸 等 请联系 扣扣 九七一九二零八零零 另提供全套机械毕业设 计下载 该论文已经通过答辩 3 1 6 电源电路 采用L7805稳压块 输出为5V 电子组件要正常运作都需要电源电压供电 一般 常用的电源电压为 5V或 12V 因为数字IC Ingegrated Circuit 集成电路 所供给的 电压为 5V 而CMOS IC所供给的电压为 12V 7805是一个稳压块 7805稳压管把高 电压转换到低电压 7805稳压管具有保护单片机的作用 L7805输出端要并联上一个 电解电容 滤除交流电干扰 防止损坏单片机系统 本设计采用两种供电方式 一种 为DC7 18V直流稳压电源变换成5V的直流电 另一种为四节干电池共6V经二极管加 压后得到将近5V的直流电源 电源配以开关和指示灯 以方便使用 黄色发光二极管 表示保温 红色的表示加热状态 8 VCC D2 IN4007 1 1 2 2 J2 2P GND 2 VCC12V 1 GND 3 J1 两两两 VCC12V D1 IN4007 IN 1 GND 2 OUT 3 U1 L7805 两 12 C1 220UF VCC R1 1K 12 D3 LED 图 13 系统电源设计图 13 Fig13 The system power supply design 3 1 7 报警电路设计 同时可以在系统里设定温度上限值 由于加热停止后 加热管还有余热当采集到 的外界温度高于当前所设定温度上限值时 程序就会进入报警子程序 触发蜂鸣器进 行报警 报警电路原理图如图14所示 V CC R19 4 7K E 1 C 3 B 2 Q4 8550 FM1 BELL P2 7 图 14 报警电路图 Fig14 Alarm circuit diagram 图中的三极管8550的作用是增加驱动能力 比9012的驱动电流还大些 因此选用 8550 9 当程序进入报警子程序时 把P2 7置0 就会触发蜂鸣器 为了使报警声音 效果更好 对P2 7取反 发出报警嘟噜声音 3 1 8 加热管控制电路设计 继电器是常用的输出控制接口 可以做交直流信号的输出切换 它具有控制系统 又称输入回路 和被控制系统 又称输出回路 通常应用于自动控制电路中 它 实际上是用较小的电流去控制较大电流的一种 自动开关 故在电路中起着自动调 节 安全保护 转换电路等作用 继电器控制接点操作说明如下 COM Common 共同点 输出控制接点的共同接点 NC Normal Close 常闭点 以 Com 为共同点 NC 与 COM 在平时是呈导通状态 的 Normal Open常开点 NO与COM在平时是呈开路状态的 当继电器动作时 NO 与COM导通 NC与COM则呈开路状态 当89S52的P2 5输出高电平时 继电器不导通 反之当输出低电平时 继电器导 通 这样就激活了连接回路 10 14 图 14 单片机控制继电器电 Fig 14 MCU control relay 3 2 系统硬件总图 15 4 系统总设计 16 本系统采用的是循环查询方式 来显示和控制温度的 主要包括四段程序的设计 DS18B20读温度程序 数码管的驱动程序 键盘扫描程序 以及抱经处理程序 4 4 1 主程序流程图 自动加热 设置温度 N Y N Y 温度 温度 设置完成 NN YY N 加热 控制 开始 初始化 读D18B20 温度转换 显示温度 加热温度设置80 预设温度 5预设温度 5 Y 图 15 主程序流程图 1 Fig15 The flow chart of main program 17 实测温度 预设温度 保温指示灯亮 停止加热加热指示灯亮 开始加热 设置温度 温度 预设温度加5 温度 预设温度减5 设置完成 加热 控制 实测温度 预设温度 加热指示灯亮 开始加热 实测温度 预设温度 保温指示灯亮 停止加热 Y Y Y N N Y Y N N N N N YY 图 16 主程序流程图 2 Fig16 The flow chart of main program2 4 2 各模块的流程图 4 2 1 读取温度DS18B20模块的流程 由于DS18B20采用的是一根数据线实现数据的双向传输 而对AT89S52单片机来 说 硬件上并不支持单总线协议 因此 我们必须采用软件的方法来模拟单总线的协 议时序来完成对DS18B20芯片的访问 DS18B20单线通信功能是分时完成的 它有严格的时隙概念 因此系统对 18 DS18B20的各种操作必须按协议进行 操作协议为 初始化DS18B20 发复位脉冲 发ROM功能命令 发存储器操作命令 处理数据DS18B20虽然具有测温系统简单 测温精度高 连接方便 占用口线少等优点 DS18B20必须首先调用启动温度转换函数 根据数据手册上对应转换时间来超作 如为12位转换 则应该是最大750mS 另外在对DS18B20超作时 时序要求非常严格 因此最好禁止系统中断 由于DS18B20是在一根I O线上读写数据 因此 对读写的数据位有着严格的时序 要求 DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性 该协议定 义了几种信号的时序 初始化时序 读时序 写时序 11 所有时序都是将主机作为 主设备 而每一次命令和数据的传输都是从主机主动启动写时序开始 如果要求单总 线器件回送数据 在进行写命令后 主机需启动读时序完成数据接收 数据和命令的 传输都是低位在先 DS18B20的读时序 1 对于DS18B20的读时序分为读0时序和读1时序两个过程 2 对于DS18B20的读时隙是从主机把单总线拉低之后 在15秒之内就得释放单 总线 以让DS18B20把数据传输到单总线上 DS18B20在完成一个读时序过程 至少 需要60us才能完成 DS18B20的写时序 1 对于DS18B20的写时序仍然分为写0时序和写1时序两个过程 2 对于DS18B20写0时序和写1时序的要求不同 当要写0时序时 单总线要被拉 低至少60us 保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的 0 电 平 当要写1时序时 单总线被拉低之后 在15us之内就得释放单总线 12 系统程序设计主要包括三部分 读出温度子程序 温度转换命令子程序 显示温 度子程序 流程图如图17所示 19 开始 初始化 DS18B20存在吗 ROM操作命令 存储操作命令 读取温度值 返回 Y N 图 17 读取温度 DS18B20 模块的流程图 Fig 17 Read the temperature DS18B20 module flow chart 程序代码为 GET TEMPER SETBDQ 读出转换后的温度值 LCALL INIT 1820 先复位 DS18B20 JB FLAG1 TSS2 RET 判断 DS1820 是否存在若 DS18B20 不存在则返 回 TSS2 MOVA 0CCH DS18B20 已经被检测到 跳过 ROM 匹配 LCALL WRITE 1820 MOVA 44H 发出温度转换命令 LCALL WRITE 1820 LCALL DISPLAY 这里通过调用显示子程序实现延时一段时间 等 待 AD 转换结束 12 位的话 750 微秒 LCALL INIT 1820 准备读温度前先复位 MOVA 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 MOVA 0BEH 发出读温度命令 LCALL WRITE 1820 20 LCALL READ 18200 将读出的温度数据保存到 35H 36H RET 13 4 2 2 键盘扫描处理流程 此流程为键盘扫描处理 CPU 通过检测各数据线的状态 0 或 1 就能知道是否有 按键闭合以及哪个按键闭合 14 键盘管理程序的功能是检测是否有按键闭合 如果 有按键闭合 消除抖动 根据键号转到相应的键处理程序 按键流程图如图 18 所示 开始 温度设置键是否按下 调设置功能子程序 温度 5键是否按下 温度 5键是否按下 返回键是否按下 调温度 5功能子程序 调温度 5功能子程序 调显示子程序 返回主程序 Y N N Y Y Y N 温度设置键是否按下 Y N N Y N 图 18 键盘扫描子程序流程图 Fig18 Keyboard scanning subroutine flow chart 4 2 3 报警处流程图 21 运行程序后 温度传感器 DS18B20 即可对环境进行温度采集 并送 LED 数码管 显示 我们可以在程序里设定温度上限值 当采集到的外界温度高于当前所设定温度 上限值时 程序就会进入报警子程序 触发蜂鸣器进行报警 其程序流程图如图 4 4 所示 14 开始 P2 7取反 启动蜂鸣器 不启动蜂鸣器 正常显示温度 进行温度比较 超过上限值 N Y 图 19 报警子程序流程图 Fig 19 Alarm subroutine flow chart 4 3 系统源代码 EMPER L EQU 29H 用于保存读出温度的低 8 位 TEMPER HEQU 28H 用于保存读出温度的高 8 位 FLAG1EQU 38H 是否检测到 DS18B20 标志位 A BIT EQU 20H 数码管个位数存放内存位置 B BIT EQU 21H 数码管十位数存放内存位置 B1 EQU 70H 温度小数点位 A1EQU 71H 设定温度值 DQEQU P3 1 DQ 为 DS18B20 数据位 BELL EQU P2 7 蜂鸣报警 ORG 0000H 单片机内存分配申明 AJMP MAIN0 前面的都是定义 MAIN MOV R0 10 M1 CPL P2 3 ACALLDELAY125 DJNZ R0 M1 此段为灯闪 5 次 无实际意义 22 MAIN0 MOV A1 80 默认加热为 80 度 MAIN1 LCALL D1820 调用读温度子程序 LCALL DISPLAY 调用数码管显示子程序 MOVA 29H CLRC CJNEA A1 MAIN1 1 SETBBELL 温度相等 关闭蜂鸣器 AJMPMAIN1 1 A 下等不用叫蜂鸣器 MAIN1 1 JC MAIN1 2 为 1 转移 表示小于设定温度 CPLBELL 蜂鸣器断续鸣叫 MAIN1 1 A CLRP2 3 下面是表示没达到温度 SETBP2 5 AJMP MAIN2 主要是检测温度是否小于设定的温度 则 开发热管 CLR P2 3 MAIN1 2 SETBBELL 关闭蜂鸣器 CLRP2 5 开发热管 SETBP2 3 上面的是大于 关发热管 MAIN2 JB P1 0 MAIN1 看 P1 0 有否按下 ACALL DELAY125 延时防抖动 常用的手法 网上很多介绍 的 JBP1 0 MAIN1 再次查看 CLRP2 3 JNB P1 0 等按键完全松手才进入 SETBP2 3 SETBP2 5 检测到 P1 0 按键后后进入设定温度 MAIN2 1 ACALLDISPLAY1 JBP1 2 MAIN2 2 ACALL DELAY125 JBP1 2 MAIN2 2 23 JNB P1 2 MOVA 5 ADD A A1 CLRC CJNE A 100 MAIN2 1 1 MOV A 99 AJMPMAIN2 1 3 上面这一段是 5 度按键 按下 5 度 MAIN2 1 1 JC MAIN2 1 3 MAIN2 1 2 CLRC MOVA 99 MAIN2 1 3 MOVA1 A MAIN2 2 JB P1 4 MAIN2 3 ACALLDELAY125 JB P1 4 MAIN2 3 JNBP1 4 MOVA A1 CJNEA 99 ZY1 MOVB 4 AJMPZY2 ZY1 MOV B 5 ZY2 CLRC MOVA A1 SUBBA B MAIN2 2 1 JNCMAIN2 2 2 MOVA1 0 AJMPMAIN2 3 上面这一段是 5 度按键 按下 5 度 MAIN2 2 2 MOVA1 A MAIN2 3 JB P1 6 MAIN2 1 ACALLDELAY125 JB P1 6 MAIN2 1 CLRP2 3 24 JNBP1 6 SETBP2 3 AJMPMAIN1 上面这一段是退出的意思的 D1820 LCALL GET TEMPER 调用读温度子程序 MOVB1 29H MOVA 29H MOVC 40H 将 28H 中的最低位移入 C RRCA MOVC 41H RRCA MOVC 42H RRCA MOVC 43H RRCA MOV29H A MOVA B1 MOVB 10H MULAB MOVB 10H DIVAB MOVB 10 MULAB MOVB 10H DIVAB MOVB1 A RET 上面这一段是读取温度后进行转换的意思 INIT 1820 SETBDQ 这是 DS18B20 复位初始化子程序 NOP CLRDQ 主机发出延时 537 微秒的复位低脉冲 MOVR1 3 TSR1 MOVR0 107 25 DJNZR0 DJNZR1 TSR1 SETBDQ 然后拉高数据线 NOP NOP NOP NOP MOVR0 25H TSR2 JNBDQ TSR3 等待 DS18B20 回应 DJNZR0 TSR2 LJMPTSR4 延时 TSR3 SETBFLAG1 置标志位 表示 DS1820 存在 LJMPTSR5 TSR4 CLRFLAG1 清标志位 表示 DS1820 不存在 LJMPTSR7 TSR5 MOVR0 117 TSR6 DJNZR0 TSR6 时序要求延时一段时间 TSR7 SETBDQ RET GET TEMPER SETBDQ 读出转换后的温度值 LCALL INIT 1820 先复位 DS18B20 JB FLAG1 TSS2 RET 判断 DS1820 是否存在 若 DS18B20 不存在则返 回 TSS2 MOVA 0CCH DS18B20 已经被检测到 跳过 ROM 匹配 LCALL WRITE 1820 MOVA 44H 发出温度转换命令 LCALL WRITE 1820 LCALL DISPLAY 这里通过调用显示子程序实现延时一段时间 等 待 AD 转换结束 12 位的话 750 微秒 26 LCALL INIT 1820 准备读温度前先复位 MOVA 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 MOVA 0BEH 发出读温度命令 LCALL WRITE 1820 LCALL READ 18200 将读出的温度数据保存到 35H 36H RET WRITE 1820 MOVR2 8 一共 8 位数据 CLRC 写 DS18B20 的子程序 有具体的时序要求 WR1 CLRDQ MOVR3 6 DJNZR3 RRCA MOVDQ C MOVR3 23 DJNZR3 SETBDQ NOP DJNZR2 WR1 SETBDQ RET READ 18200 MOVR4 2 将温度高位和低位从 DS18B20 中读出 MOVR1 29H 低位存入 29H TEMPER L 高位存入 28H TEMPER H RE00 MOVR2 8 数据一共有 8 位 RE01 CLRC 读 DS18B20 的程序 从 DS18B20 中读出两个字 节 的温度数据 SETBDQ NOP NOP 27 CLRDQ NOP NOP NOP SETBDQ MOVR3 9 RE10 DJNZR3 RE10 MOVC DQ MOVR3 23 RE20 DJNZR3 RE20 RRCA DJNZR2 RE01 MOV R1 A DECR1 DJNZR4 RE00 RET 上面的这些都是温度采集的 DISPLAY MOVA 29H 将 29H 中的十六进制数转换成 10 进制 MOVB 10 10 进制 10 10 进制 DIVAB 显示子程序 MOVA BIT A 十位在 A MOVB BIT B 个位在 B MOVDPTR NUMTAB 指定查表启始地址 MOVR0 1 DPL1 MOVR1 25 显示 1000 次 DPLOP MOVA B BIT 取个位数 MOVC A A DPTR 查个位数的 7 段代码 MOVP0 A 送出个位的 7 段代码 CLRP2 2 开个位显示 ACALLD1MS 显示 1MS SETBP2 2 MOVA A BIT 取十位数 28 MOVC A A DPTR 查十位数的 7 段代码 MOVP0 A 送出十位的 7 段代码 CLRP2 1 开十位显示 ACALLD1MS 显示 1MS SETBP2 1 MOVP0 0FFH DJNZR1 DPLOP 100 次没完循环 DJNZR0 DPL1 4 个 100 次没完循环 RET 上面这段显示实时温度 DISPLAY1 MOVA A1 将 29H 中的十六进制数转换成 10 进制 MOVB 10 10 进制 10 10 进制 DIVAB 显示子程序 MOVA BIT A 十位在 A MOVB BIT B 个位在 B MOVDPTR NUMTAB 指定查表启始地址 MOVR0 1 DPL11 MOVR1 25 显示 1000 次 DPLOP1 MOVA B BIT 取个位数 MOVC A A DPTR 查个位数的 7 段代码 MOVP0 A 送出个位的 7 段代码 CLRP2 2 开个位显示 ACALL D1MS 显示 1MS SETBP2 2 MOVA A BIT 取十位数 MOVC A A DPTR 查十位数的 7 段代码 MOVP0 A 送出十位的 7 段代码 CLRP2 1 开十位显示 ACALLD1MS 显示 1MS SETBP2 1 MOVP0 0FFH DJNZR1 DPLOP1 100 次没完循环 29 DJNZR0 DPL11 4 个 100 次没完循环 RET 上面这段显示设置温度 D1MS MOVR7 50 1MS 延时 DJNZR7 RET DELAY10 MOVR6 20 10MS 延时 D3 MOVR5 255 DJNZR5 DJNZR6 D3 RET DELAY125 MOVR6 255 125MS 延时 D1 MOVR5 255 DJNZR5 DJNZR6 D1 RET DELAY1S MOVR7 8 1S 延时 D2 LCALL DELAY125 DJNZR7 D2 RET NUMTAB DB 0C0H 0F9H 0A4H 0B0H DB 99H 92H 82H 0F8H DB 80H 90H 88H 83H DB 0C6H 0A1H 86H 8EH 数码管的具体值 END 15 5 系统调试 仔细检查所接电路 按照硬件原理图接线 理论上是能实现的 如果数码管不显 示 则应该检查线路是否正确 或是因为单片机没有工作 还有集电极和发射极是否 接对 如果只显示两个八 则可能是DS18B20没有接正确 检查上拉电路是否接好 另外要注意的是 由单片机输出的控制信号比较小 需要进行放大才能驱动继电器工 作 否则就不能实现升温过程 通常选用8550三极管来进行放大 16 还有220V交流 电绿色接头和加热管黄色接头必须接正确 否则导致电路烧坏 蜂鸣器是低电平有效 30 如果能注意这些问题 电路基本不会出错 5 1 软件调试 如果硬件电路检查后 没有问题却实现不了设计要求 则可能是软件编程的问题 首 先应检查初始化程序 然后是读温度程序 显示程序 以及继电器控制程序 对这些 分段程序 要注意逻辑顺序 调用关系 以及涉及到了标号 有时会因为一个标号而 影响程序的执行 除此之外 还要熟悉各指令的用法 以免出错 还有一个容易忽略 的问题就是 源程序生成的代码是否烧入到单片机中 如果这一过程出错 那不能实 现设计要求也是情理之中的事 本人在设计的时候在伟福仿真软件进行调试 通过此 软件进行调试可以很方便的观察单片机内部各个寄存器及内部存储器变化情况 以方 便进行调试 17 硬件与软件调试相结合 仔细检查各个模块的设计 旧能顺利完成任务 实现设 计要求 在调试过程中必须认真耐心 不能有一点马虎 否则遗漏一个小的问题就会 导致整个设计的失败 5 2 系统操作说明 本系统上电后数码管显示当前测量温度 此时加热指示灯和保温指示灯均不点亮 若此时按 自动加热 键 则单片机自动将预加热温度设置为80 并开始加热 送出 一个加热信号 并点亮加热指示灯 若按 温度设置 键 则进入预加热温度设置界 面 此时数码管闪烁显示预设置温度 此时通过按键 和 进行设置温度 预设置温度按 5 递增或递减 设置好温度后再按一次 温度设置 键确定 单片 机保存预设置温度 并开始加热 此时单片机通过数码管显示实时检测的温度并和预 设置温度进行对比 如果实测温度大于或等于预设置温度 则单片机发出停止加热信 号并熄灭加热指示灯 点亮保温指示灯 且当超过预设温度时发出报警 当温度下降 到预设置温度以下5度时 单片机再次发出加热信号 同时熄灭保温指示灯 点亮加 热指示灯 依次循环控制 18 5 3 社会效益 随着电子技术的发展 特别是随着大规模集成电路的产生 给人们的生活带来了 根本性的变化 如果说微型计算机的出现使现代的科学研究得到了质的飞跃 那么单 片机技术的出现则是给现代工业控制测控领域带来了一次新的革命 目前 单片机在 工业控制系统诸多领域得到了极为广泛的应用 特别是其中的C51系列的单片机的出 现 具有更好的稳定性 更快和更准确的运算精度 推动了工业生产 影响着人们的 工作和学习 31 现代工业设计 工程建设及日常生活中常常需要用到温度控制 早期温度控制主 要应用于工厂中 例如钢铁的水溶温度 不同等级的钢铁要通过不同温度的铁水来实 现 这样就可能有效的利用温度控制来掌握所需要的产品了 在现代社会中 温度控制不仅应用在工厂生产方面 其作用也体现到了各个方面 随着人们生活质量的提高 酒店厂房及家庭生活中都会见到温度控制的影子 温度控 制将更好的服务于社会 5 4 经济效益 当前社会上的饮水机种类繁多 功能差异也很大 而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南省2025年公务员行测常识判断专项卷
- 初中生演讲稿三分钟青春励志
- 2025年护理服务知识试题及答案
- 2025年天津市公务员考试面试专项训练
- 2025年服务业试题及答案
- 2025年玻璃成型工试题及答案
- 2025年小学二年级语文下学期单元测试
- 2025年土木工程师考试岩土上学期试卷
- 2025防火门采购合同
- 高效利用相对孔径提升图像质量
- 2025年煤矿安全生产管理人员安全资格考试题库及答案
- 重塑医美格局:驾驭中国医美新潮流
- 检验科生物安全培训课件2024
- 加盟瑞幸合伙合同范本
- 医疗器械定期风险评价报告
- 合并财务报表模板案例含抵消分录公式及数据-直接生成报表
- 高填方路基施工危险源辨识及风险评价
- 蛙心起搏点分析医学PPT课件
- 污泥运输合同
- 如何唤醒孩子的内驱力
- 妊娠期急性脂肪肝
评论
0/150
提交评论