采用DS18B20作为温度传感器进行温度检测。 对采集温度进行显示(显示温度分辨率0.1℃)。设计相应的温度控制电路,若测得的温度高于设定的温度值,则开启风扇降温。否则关闭电风扇。 通过按键设置温度上下限,超限通过LED、蜂鸣器报警。用汇编语言编写,单片机为AT89C51,用的普中的开发板。
以下是一个基于AT89C51单片机和DS18B20温度传感器的温度控制电路设计方法,并提供大致的汇编代码框架:
硬件设计
该电路的主要硬件元件包括AT89C51单片机、DS18B20温度传感器、LED灯、蜂鸣器、电风扇等。其中,AT89C51单片机作为控制中心,通过IO口连接LED、蜂鸣器和电风扇。
具体的硬件设计步骤如下:
连接DS18B20温度传感器:将DS18B20的VCC引脚连接到单片机的5V电源,GND引脚连接到单片机的地线,DQ引脚连接到单片机的IO口。
连接LED灯:将LED的正极连接到单片机的IO口,负极连接到地线。
连接蜂鸣器:将蜂鸣器的一端连接到单片机的IO口,另一端连接到地线。
连接电风扇:将电风扇的正极连接到单片机的IO口,负极连接到地线。
软件设计
该电路的主要软件部分包括温度检测和温度控制两个模块,具体的软件设计步骤如下:
定义IO口:定义单片机控制DS18B20、LED、蜂鸣器和电风扇的IO口,并初始化IO口状态。
初始化DS18B20:发送DS18B20初始化序列,进行温度采集前的预处理。
读取温度:发送温度采集命令,读取DS18B20返回的温度值,并将温度值转换为十进制表示,并保留一位小数。
显示温度:将温度值显示在LCD屏幕上,并且在最后一位小数之后加上一个小数点。
控制电风扇:根据设定的温度上限,判断当前温度是否高于上限,如果是,则打开电风扇,否则关闭电风扇。
控制LED和蜂鸣器:根据设定的温度上下限,判断当前温度是否超过上下限范围,如果是,则同时打开LED和蜂鸣器,否则关闭LED和蜂鸣器。
以下是大致的汇编代码框架,具体实现需要根据硬件设计和软件需求进行调整和完善:
DELAY_1ms MACRO
MOV R2,#06H ;5.92us
DELAY_1ms_LOOP1:
MOV R3,#7FH
DELAY_1ms_LOOP2: DJNZ R3,$
DJNZ R2,DELAY_1ms_LOOP1
ENDM
DELAY_US MACRO X
MOV R2,#0FFH
DELAY_US_LOOP1:
DJNZ R2,$
DJNZ X,DELAY_US_LOOP1
ENDM
MAIN PROC
; 定义IO口
; 初始化DS18B20
; 读取温度
; 显示温度
; 控制电风扇
; 控制LED和蜂鸣器
SJMP MAIN
MAIN ENDP
; DS18B20初始化序列
DS18B20_INIT_SEQ:
; ...
; 温度采集命令
DS18B20_READ_TEMP_CMD:
; ...
; 读取温度值
READ_TEMP:
; ...
; 将温度值显示在LCD屏幕上
DISPLAY_TEMP:
; ...
; 判断当前温度是否高于设定的温度上限
CHECK_TEMP_UPPER_LIMIT:
; ...
; 判断当前温度是否超过设定的温度上下限范围
CHECK_TEMP_RANGE:
; ...
; 打开电风扇
TURN_ON_FAN:
; ...
; 关闭电风扇
TURN_OFF_FAN:
; ...
; 打开LED和蜂鸣器
TURN_ON_LED_BUZZER:
; ...
; 关闭LED和蜂鸣器
TURN_OFF_LED_BUZZER:
; ...