用汇编语言编写51单片机温控报警系统

采用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:
   ; ...