logo资料库

智能电热水器的控制系统设计(Proteus仿真).doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
智能电热水器的控制系统设计 一、 设计内容及要求 打开电源后,先设定水温,水温分为八档(30~100,每 10 为一档)。 按下启动键后,开始测量水温并显示,控制电热管加热。上下限水位报警(声光报警)。 设计任务: 1、选用 AT89C51 和适当的存储器芯片,接口芯片完成相应的功能。 2、画出详细的硬件连接图(二号图纸)。 3、画出各程序的详细框图(二号图纸)。 4、给出 RAM 地址分配表及接口电路的端口地址。 5、给出设计思路。 6、给出程序所有清单并加上必要的注释。 7、完成设计说明书。 二、 设计方案及原理 2.1、总体方案设计 本设计中的智能热水器控制器以 AT89C51 单片机为检测控制中心单元,不仅实现了温度和 水位两种参数实时显示功能,而且具有温度设定功能,以及温度、水位控制功能。总体设计框 图如图 2-1 所示 方案一:
外围电路 温度显示器 AT89C51 A/D转换 水位显示 DS18B20 温度显示器 AT89C51 水 位 硬 件电路 送水阀 出水阀 DS18B20 按键控制 方案二: 外围电路 按键控制 2.2、方案比较选择 方案一与方案二的主要区别在于水位控制部分。方案一是采用 ADC0808(A/D 转换)芯片,将水 位模拟量转换为数字量来控制 LED 灯来显示水位状态。而方案二则是用另外设计一个硬件电路, 用电阻来控制水箱的出水和送水。经过比较发现,方案一脱离实际功能,难以应用,所以采用 方案二设计水位控制电路。
三、 单元模块设计 3.1、单片机系统设计 单片机系统由 AT89C51 和一定功能的外围电路组成,包括为单片机提供复位电压的复位电 路,提供系统频率的晶振。这部分电路主要负责程序的存储和运行。下图中 MCS-51 内部时钟方 式电路外接晶体以及电容 C1 和 C2 构成并联谐振电路,接在放大器的反馈回路中。对外接电容 的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、谐振器的稳定性、起振的 快速性和温度的稳定性。晶体可在 1.2MHz~12MHz 之间任选,电容 C1 和 C2 的典型值在 20pF~ 100pF 之间选择,但在 60pF~70pF 时振荡器具有较高的频率稳定性。典型值通常选择为 30pF 左右。 3.2、温度显示接口电路设计
上图中 VDD 接+5V 电源,VSS 接地。D0~D7 数据端口连 AT89C51 的 P0 端口。RS 为数据/命令选择, R/W 为读写选择。RP1 为上拉电阻,用于实现显示器硬件功能。 开始 LCD初始化 延时 设置第一行 显示位置 显示第一 行内容 设置第二 行显示位 置 显示第二 行内容 液晶显示屏可以显示当前传感器所测量出的温度,经过键控切换可以显示 TH(上限温度)、 TL(下限温度)设置范围,实时显示调整上下限温度。 3.3、DS18B20 接口电路设计
VCC 端接+5V 电源;DQ 为数据段;GND 端接地; 时 序: 通过时间隙(time slots)来读写 DSl820 的数据位和写命令字的位。 主要包括初始化、写时间隙、读时间隙三个过程。 3.4、键控接口电路设计 K1 为上调、下调切换键;K2 为设置温度范围及调整 TH(上限温度)复合键;K3 为调整 TL(下限 温度)键;K4 为调整确定键; 当按下 K2 键后,可以通过再次按 K2 键上调 TH(上限温度),或再次按 K3 键上调 TL(下限温度)。 依调整需要可以按 K1 键切换上调、下调功能,此时再次按 K2 键下调 TH(上限温度),或再次 按 K3 键下调 TL(下限温度)。 温度范围调整完毕后按 K4 键确认。 3.5 水位检测电路设计
由 AT89C51 定时功能为 ADC0808 提供时钟,将水箱水位分为 50L、50~199L、200L 三档。将 水位模拟量转换为数字量来控制 LED 灯。水位低于 50 时,红色警报灯亮;水位在 50~199 时, 绿色指示灯亮,水位正常;水位大于 200L 时,水箱满,红色停止灯亮。 四、 整体硬件设计图 五、 程序清单 TEMP_ZH TEMPL TEMPH TEMP_TH TEMP_TL TEMPHC TEMPLC TEMPFC K1 K2 ;实测温度值存放单元 ;高温报警值存放单元 ;低温报警值存放单元 ;正、负温度值标记 EQU 24H EQU 25H EQU 26H EQU 27H EQU 28H EQU 29H EQU 2AH EQU 2BH EQU P1.4 EQU P1.5 ;上调、下调切换键 ;设置/TH 调整键
;TL 调整键 ;确定键 ;蜂鸣器 ;指示灯 ;LCD 字符显示位置 ;LCD 寄存器选择信号 ;LCD 读写信号 ;LCD 允许信号 ;DS18B20 是否存在标志 ;设定按键的增、减标志 ;DS18B20 数据信号 ;ADC0808 引脚信号 EQU P1.6 EQU P1.7 EQU P3.7 EQU P1.3 EQU 2FH EQU P2.0 EQU P2.1 EQU P2.2 EQU 20H.0 EQU 20H.1 EQU P3.3 BIT P2.4 BIT P2.5 BIT P2.6 BIT P2.7 K3 K4 BEEP RELAY LCD_X LCD_RS LCD_RW LCD_EN FLAG1 KEY_UD DQ CLOCK ST EOC OE ORG 0000H LJMP MAIN ORG 000BH LJMP INT_T0 MAIN: MOV TMOD,#10H MOV TH0,#245 MOV TL0,#0 MOV IE,#8AH CLR C SETB TR0 MOV SP,#60H MOV A,#00H MOV R0,#20H MOV R1,#10H CLEAR: MOV @R0,A ;为 ADC0808 提供时钟 ;将 20H~2FH 单元清零 START: START1: START2: FLAG,START1 INC R0 DJNZ R1,CLEAR LCALL SET_LCD LCALL RE_18B20 LCALL RST JNB LCALL MENU_OK MOV TEMP_TH,#055H MOV TEMP_TL,#019H LCALL RE_18B20A LCALL WRITE_E2 LCALL TEMP_BJ JMP LCALL MENU_ERROR LCALL TEMP_BJ SJMP LCALL RST JNB FLAG,START1 MOV LCALL WRITE A,#0CCH START2 $ ;调用 18B20 复位子程序 ;DS1820 不存在 ;DS1820 存在,调用显示正确信息子程序 ;设置 TH 初值 85 度 ;设置 TL 初值 25 度 ;调用暂存器操作子程序 ;写入 DS18B20 ;显示温度标记 ;调用显示出错信息子程序 ;显示温度标记 ;调用 DS18B20 复位子程序 ;DS18B20 不存在 ;跳过 ROM 匹配命令
A,#0CCH MOV A,#44H LCALL WRITE LCALL RST MOV LCALL WRITE MOV A,#0BEH LCALL WRITE LCALL READ LCALL CONVTEMP LCALL DISPBCD LCALL CONV LCALL TEMP_COMP LCALL PROC_KEY ;温度转换命令 ;跳过 ROM 匹配 ;读温度命令 ;调用 DS18B20 数据读取操作子程序 ;调用温度数据 BCD 码处理子程序 ;调用温度数据显示子程序 ;调用 LCD 显示处理子程序 ;调用实测温度值与设定温度值比较子程序 ;调用键扫描子程序 WAIT: ST ST ST EOC,$ OE CLR SETB CLR JNB SETB SJMP START2 ;ADC0808 启动转换 ;循环 ;*************************** 键扫描子程序 ***************************** PROC_KEY: JB K1,PROC_K1 LCALL BEEP_BL JNB K1,$ MOV DPTR,#M_ALAX1 MOV A,#1 LCALL LCD_PRINT PROC_K2 LCALL LOOK_ALARM JB K3,$ LCALL BEEP_BL JMP JB K2,PROC_END LCALL BEEP_BL JNB K2,$ MOV MOV LCALL LCD_PRINT LCALL SET_ALARM LCALL RE_18B20 LCALL WRITE_E2 LCALL MENU_OK LCALL TEMP_BJ DPTR,#RST_A1 A,#1 PROC_K1: PROC_K2: PROC_END: RET ;将设定的 TH,TL 值写入 DS18B20 ;*************************** 设定温度报警值 TH、TL *************************** SET_ALARM: LCALL LOOK_ALARM AS0: K1,AS00 JB LCALL BEEP_BL JNB K1,$ CPL 20H.1 JB 20H.1,ASZ01 AS00: ;UP/DOWN 标记 ;20H.1=1,增加
分享到:
收藏