logo资料库

用AT89C51单片机设计智能家用电热水器.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
用AT89C51单片机设计智能家用电热水器
用 AT89C51 单片机设计智能家用电热水器 【转自互联网,如需引用请联系原作者】 电热水器是一种可供浴室、洗手间及厨房使用的家用电器,市场上传统的机械式电热水器控 制精度低、可靠性差,随着人们生活质量的提高,人们对电热水器的要求越来越趋向于智能 化和数字化,笔者采用 AT 89C 51 单片机作为控制器设计了一款智能家用电热水器,基本 实现了智能控制功能。 1 .系统功能及其工作原理 该智能热水器具有以下功能: (1) 使用高清晰度数码管实时显示水温,范围 0 ~ 102 ℃ : (2) 可用键盘方便地设定水温,并显示设定的温度; (3) 按设定温度加热到相应水温,并 具有保温功能。 系统利用集成温度传感器 AD590 完成温度测量并转换成模拟电压信号,经由 A / D 转换 器 ADC0804 转换成数字信号送到 AT 89C 51 单片机中,单片机将采集到的温度值与通过键 盘设定的温度值进行比较,根据比较结果,控制加热器的开断,同时将温度值实时显示在 LED 显示器上。 2 .系统设计 2 . 1 系统硬件设计 系统设计硬件原理结构如图 1 所示。系统以高性价比的 AT 89C 51 单片机为核心,由 AD590 测温电路、 ADC0804 模数转换电路、键盘/显示电路、双向可控硅驱动电路 MOC3041 、双 向可控硅 TLC 336A 组成加热器控制电路。 2 . 1 . 1 控制器电路设计
本系统选择 AT 89C 51 作为主控制器, P0 口作为 ADC0804 转换数据的输入端。 P1 . 4 接 ADC0804 的 INTR 端检测数据转换是否结束, P1 . 0 ~ P1 . 3 的输出信号接到译 码器 7447 上作为数码管的显示数据, P1 . 5 ~ P1 . 7 则作为 4 个数码管的位选信 号控制。 P2 口用来连接矩阵键盘,实现电热水器加热水温的动态设定。 P3 . 1 用于控 制加热器电路的通断, P3 . 2 连接加热状态指示灯, P3 . 3 连接电源状态指示灯, P3 . 6 用于控制 ADC 转换器的启动, P3 . 7 用于控制读取 ADC 的转换结果。 2 . 1 . 2 键盘/显示接口电路设计 系统中键盘的功能主要用于用户输入和修改设定的温度。键盘设计 12 个按键,其中 0 ~ 9 数字键用于温度的输入和修改。功能键一个 (* 号键 ) ,具有双重功能,第一次按为“设 定”温度,用于进入设定温度模式,第二次按为“确认”设定温度,用于设定温度输入结束 后的 确认。 # 号键未定义,可用于其它扩展。键盘采用行列式设计, 12 个按键排成 3 × 4 矩 阵。设计中用单片机 P2 口的 P2 . 0 ~ P2 . 3 接键盘的 4 根行线, P2 . 5 ~ P2 .7 接 3 根列线。 温度显示电路由 3 位七段码 LED 显示器组成,单片机用 P1 口输出段码和控制信号,通过 7447 TTL BCD 译码器译码,用 3 个共阳极 LED 动态显示温度的各个数位。 2 . 1 . 3 AD590 测温电路设计 AD590 测温范围为- 55 %~ + 150 ℃ ,满足人们日常生产和生活中的温度范围;电源电 压可在 4V ~ 6V 范围变化,可以承受 44V 正向电压和 20V 反向电压,因而器件反接也不 会被损坏; AD590 产生的电流与绝对温度成正比,具有非常好的线性输出性能,温度每增 加 1 ℃ ,其电流增加 1 μ A 。 为了提高精度,扩大测量范围,在 A / D 转换前还要将信号加以放大并进行零点迁移。当 温度变化时, AD590 会产生电流变化, AD590 的电流通过一个 10k Ω的电阻时。这个电 阻上的压降为 10mV ,即转换成 10mV / K ,为了让 10k Ω电阻精确,可用一个 9k Ω的 电阻与一个 2 k Ω电位器串联,然后通过调节电位器来获得精确的 10k Ω。运算放大器 A1 接成电压跟随器形式,以增加信号的输入阻抗,由运放 A2 减去 2 . 732 做零位调整 ( 即 把绝对温度转成摄氏温度 ) ,最后由运放 A3 反相并放大 5 倍输送给 A / D 转换器。 2 . 1 . 4 ADC 模数转换电路设计
AD590 测温电路输出的电压信号为模拟信号,要进行数码显示和温度控制,还需将此信号转 换成数字信号。为此我们通过 ADC0804 将输入的模拟值转换成数字值,然后再经 AT 89C 51 单片机处理。 ADC0804 是用 CMOS 集成工艺制成的逐次比较型摸数转换芯片,分辨率 8 位,转换时间 100 μ s ,输入电压范围为 0 ~ 5V ,增加某些外部电路后,输入模拟电压可为 5V, ,该芯 片内有输出数据锁存器,当与计算机连接时,转换电路的输出可以直接连接在 CPU 数据总 线上。无须附加逻辑接口电路 2 . 1 . 5 加热器控制电路设计 该部分采用了 Motorola 公司推出的单片集成可控硅驱动器件 MOC3041 ,作为对加热器的 驱动和控制。 MOC3041 芯片是一种集成的带有光耦合的双向可控硅驱动电路,它由输入和 输出两部分组成,其内部集成了发光二极管、双向可控硅和过零触发电路等器件。其工作过 程是:当单片机的 P3 . 1 口输出低电平时, MOC3041 输入部分的发光二极管导通。发出 足够强度的红外光去触发输出部分,即控制可控硅的导通,从而打开加热器;同理,当 P3 .1 口输出为高电平时, MOC3041 输入部分的发光二极管截止,可控硅断开,关闭加热器。 该系统具体电路图如图 2 所示。
2 . 2 系统软件设计与编程 本系统软件包括主程序模块、定时器中断子程序模块、键盘扫描处理子程序模块、十进制数 据调整转换子程序模块、 LED 数码显示子程序模块和延时子程序等模块。 2 . 2 . 1 系统主程序 在主程序中,系统上电自动复位以后首先进行初始化,清除温度缓存区中的数据,然后启动 ADC0804 转换温度传感器输入的电信号。同时检测是否有键按下设定温度,有则跳至键盘扫 描处理子程序,没有则待 ADC 数据转换结束读入累加器 A 。然后进行十进制数据转换调整, 输出给温度显示电路。主程序流程图如图 3 所示。 2 . 2 . 2 键盘扫描处理子程序 当主程序检测到有键按下时,就转到键盘扫描子程序扫描按键值,取得按键值之后,判断是 否按下 * 号键 ( 温度设定/完成键 ) ,不是则回到主程序,是则进入温度设定模式, LED 显示设定的温度值。进入温度设定模式后,再进行键盘扫描,判断按下的键值,如果是 * 号
键,则说明设定完毕,不是则更新设定温度显示缓冲区的数据。具体程序流程图如图 4 所 示。 2 . 2 . 3 定时器中断子程序 定时器 T0 每 50ms 中断一次,比较采集的电热水器温度和设定的温度,低于设定温度时。 使 P3 . 1 输出低电平,电热器加热,高于设定温度时,使 P3 . 1 输出高电平,电热器 停止加热。程序流程图如图 5 所示。
附系统具体汇编语言源程序: ORG 000011 JMP START ORG000BH ;定时器中断子程序入口 JMP TIME0 START : MOVSP , #60H OFF : SETB P3 . 1 :测量温度 >= 设定温度,停止加热 CLR P3 . 2 ;加热状态灯灭 ......
...... ...... RETLJRN : POP PSW POP ACC RETI DELAY : MOV R7 , #06 ;延时子程序 D1 : MOVR6 , #248 DJNZ R6 , $ DJNZ R7 , D1 RET TABLE : DB 01 H , 02H , 03H 键盘码 1 , 2 , 3 DB 04H , 05H , 06H 4 , 5 , 6 DB 07H , 08H , 09H 7 , 8 , 9 DB 0AH , 00H , 0BH * , 0 , # END 3 .结语 本文采用 AT 89C 51 单片机做主控芯片,利用温度传感器 AD590 采集温度。并配上键盘/ 显示接口电路以及加热器控制电路等,电路简单、运行稳定、工作精度高,且通过键盘可以 方便地进行温度设定
分享到:
收藏