基于某51单片机——Ds18B20温度采集,LCD显示总汇编程序(附带proteus仿真图)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TEMP_ZH EQU 24H ;实测温度值存放单元TEMPL EQU 25H

TEMPH EQU 26H

TEMP_TH EQU 27H ;高温报警值存放单元TEMP_TL EQU 28H ;低温报警值存放单元TEMPHC EQU 29H ;正、负温度值标记TEMPLC EQU 2AH

TEMPFC EQU 2BH

K1 EQU P1.4 ;查询按键

K2 EQU P1.5 ;设置/调整键

K3 EQU P1.6 ;调整键

K4 EQU P1.7 ;确定键

BEEP EQU P3.7 ;蜂鸣器

RELAY EQU P1.3 ;指示灯

LCD_X EQU 2FH ;LCD 字符显示位置LCD_RS EQU P2.0 ;LCD 寄存器选择信号LCD_RW EQU P2.1 ;LCD 读写信号

LCD_EN EQU P2.2 ;LCD 允许信号

FLAG1 EQU 20H.0 ;DS18B20是否存在标志KEY_UD EQU 20H.1 ;设定按键的增、减标志DQ EQU P3.3 ;DS18B20数据信号

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV SP,#60H

MOV A,#00H

MOV R0,#20H ;将20H~2FH 单元清零

MOV R1,#10H

CLEAR: MOV R0,A

INC R0

DJNZ R1,CLEAR

LCALL SET_LCD

LCALL RE_18B20

START: LCALL RST ;调用18B20复位子程序JNB FLAG1,START1 ;DS1820不存在

LCALL MENU_OK ;DS1820存在,调用显示正确信息子程序

MOV TEMP_TH,#055H ;设置TH初值85度

MOV TEMP_TL,#019H ;设置TL初值25度

LCALL RE_18B20A ;调用暂存器操作子程序

LCALL WRITE_E2 ;写入DS18B20

LCALL TEMP_BJ ;显示温度标记

JMP START2

START1: LCALL MENU_ERROR ;调用显示出错信息子程序

LCALL TEMP_BJ ;显示温度标记

SJMP $

START2: LCALL RST ;调用DS18B20复位子程序JNB FLAG1,START1 ;DS18B20不存在

MOV A,#0CCH ;跳过ROM匹配命令

LCALL WRITE

MOV A,#44H ;温度转换命令

LCALL WRITE

LCALL RST

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE

MOV A,#0BEH ;读温度命令

LCALL WRITE

LCALL READ ;调用DS18B20数据读取操作子程序

LCALL CONVTEMP ;调用温度数据BCD 码处理子程序

LCALL DISPBCD ;调用温度数据显示子程序

LCALL CONV ;调用LCD显示处理子程序

LCALL TEMP_COMP ;调用实测温度值与设定温度

值比较子程序

LCALL PROC_KEY ;调用键扫描子程序

SJMP START2 ;循环

;*************************** 键扫描子程序*****************************

PROC_KEY:JB K1,PROC_K1

LCALL BEEP_BL

JNB K1,$

MOV DPTR,#M_ALAX1

MOV A,#1

LCALL LCD_PRINT

LCALL LOOK_ALARM

JB K3,$

LCALL BEEP_BL

JMP PROC_K2

PROC_K1: JB K2,PROC_END

LCALL BEEP_BL

JNB K2,$

MOV DPTR,#RST_A1

MOV A,#1

LCALL LCD_PRINT

LCALL SET_ALARM

LCALL RE_18B20 ;将设定的TH,TL值写入DS18B20

LCALL WRITE_E2

PROC_K2: LCALL MENU_OK

LCALL TEMP_BJ

PROC_END:RET

;*************************** 设定温度报警值TH、TL ***************************

SET_ALARM:LCALL LOOK_ALARM

AS0: JB K1,AS00

LCALL BEEP_BL

JNB K1,$

CPL 20H.1 ;UP/DOWN 标记

AS00: JB 20H.1,ASZ01 ;20H.1=1,增加

JMP ASJ01 ;20H.1=0,减小

ASZ01: JB K2,ASZ02 ;TH值调整(增加)

LCALL BEEP_BL

INC TEMP_TH

MOV A,TEMP_TH

CJNE A,#120,ASZ011

MOV TEMP_TH,#0

ASZ011: LCALL LOOK_ALARM

MOV R5,#10

LCALL DELAY

JMP ASZ01

ASZ02: JB K3,ASZ03 ;TL值调整(增加) LCALL BEEP_BL

INC TEMP_TL

MOV A,TEMP_TL

CJNE A,#99,ASZ021

MOV TEMP_TL,#00H

ASZ021: LCALL LOOK_ALARM

MOV R5,#10

LCALL DELAY

JMP ASZ02

ASZ03: JB K4,AS0 ;确定调整

LCALL BEEP_BL

JNB K4,$

RET

ASJ01: JB K2,ASJ02 ;TH值调整(减少)LCALL BEEP_BL

DEC TEMP_TH

MOV A,TEMP_TH

相关文档
最新文档