数字温度计设计汇编源程序.doc

上传人:b****3 文档编号:2596943 上传时间:2022-11-03 格式:DOC 页数:15 大小:287.50KB
下载 相关 举报
数字温度计设计汇编源程序.doc_第1页
第1页 / 共15页
数字温度计设计汇编源程序.doc_第2页
第2页 / 共15页
数字温度计设计汇编源程序.doc_第3页
第3页 / 共15页
数字温度计设计汇编源程序.doc_第4页
第4页 / 共15页
数字温度计设计汇编源程序.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数字温度计设计汇编源程序.doc

《数字温度计设计汇编源程序.doc》由会员分享,可在线阅读,更多相关《数字温度计设计汇编源程序.doc(15页珍藏版)》请在冰豆网上搜索。

数字温度计设计汇编源程序.doc

;================================================================

;DS18B20温度计

;采用4位LED共阳显示器显示测温值,显示精度0.1℃,测温范围-55~+125℃

;用AT89C51单片机,12MHz晶振

;DS1302时钟芯片实现日历年月日时分秒的显示

;============================常数定义=============================

TIMEL EQU0E0H;20ms,定时器0时间常数

TIMEH EQU0B1H

SECONDEQU30H

MINUTEEQU31H

HOUREQU32H

DAYEQU33H

MONTHEQU34H

WEEKEQU35H

YEAREQU36H

TEMPHEAD EQU38H

TEMP_UPPEREQU2AH

TEMP_LOWEREQU2BH

;==========================工作内存定义============================

BITST DATA20H

TIME1SOK BITBITST.1

TEMPL DATA26H

TEMPH DATA27H

TEMPHC DATA28H

TEMPLC DATA29H

;=============================引脚定义===========================

TEMPDIN BITP3.7

ALARMDINBITP1.6

RSTBITP1.2

CLKBITP1.1

IOBITP1.0

;=============================中断向量区=========================

ORG 0000H

LJMP START

ORG 000BH

LJMP T0IT

;=============================系统初始化==========================

ORG 0100H

START:

MOV SP,#60H

CLSMEM:

MOV R0,#20H

MOV R1,#60H

CLSMEM1:

MOV @R0,#00H

INC R0

DJNZ R1,CLSMEM1

MOV TMOD,#00010001B;定时器0工作方式1(16BIT)

MOV TH0,#TIMEH

MOV TL0,#TIMEL;20ms

MOVSECOND,#00H

MOVMINUTE,#00H

MOVHOUR,#14H

MOVDAY,#17H

MOVMONTH,#01H

MOVWEEK,#01H

MOVYEAR,#13H

MOVTEMP_UPPER,#0AH

MOVTEMP_LOWER,#8AH

SETB ET0

SETB EA

MOV PSW,#00H

;=================================================================

;=============================主程序=============================

;=================================================================

LCALLSETDS1302

START1:

LCALL READ_TEMP ;读出温度值子程序

LCALL CONVTEMP ;温度BCD码计算处理子程序

LCALL REFBCD ;显示区BCD码温度值刷新子程序

LCALLGETDS1302

SETB TR0

LCALLALARM_JUDGE

JNBF0,MAIN

LCALLALARM_BEEP

MAIN:

LCALL DISP_TEMP ;调用显示子程序

LCALLDISPLAY_TIME

JNB TIME1SOK,MAIN

CLR TIME1SOK;测温每1s一次

MAIN1:

LCALL DISP_TEMP ;调用显示子程序

LCALLDISPLAY_DATE

JNB TIME1SOK,MAIN1

CLR TIME1SOK;测温每1s一次

LJMPSTART1

;======================定时器0中断服务程序=======================

T0IT:

PUSH PSW

MOV PSW,#10H

MOV TH0,#TIMEH

MOV TL0,#TIMEL

INC R7

CJNE R7,#50,T0IT1

MOV R7,#00H

SETB TIME1SOK ;1s定时到标志

T0IT1:

POP PSW

RETI

;=================================================================

;=============================子程序区===========================

;=================================================================

;=============================初始化DS18B20=======================

INITDS1820:

SETB TEMPDIN

NOP

NOP

CLR TEMPDIN

MOV R6,#0A0H

DJNZ R6,$

MOV R6,#0A0H

DJNZ R6,$

SETB TEMPDIN

MOV R6,#32H

DJNZ R6,$

MOV R6,#3CH

LOOP1820:

MOV C,TEMPDIN

JC INITDS1820OUT

DJNZ R6,LOOP1820

MOV R6,#064H

DJNZ R6,$

SJMP INITDS1820

INITDS1820OUT:

SETB TEMPDIN

RET

;======读DS18B20的程序,从DS18B20中读出一个字节的数据=============

READDS1820:

MOV R7,#08H

SETB TEMPDIN

NOP

NOP

READDS1820LOOP:

CLR TEMPDIN

NOP

NOP

NOP

SETB TEMPDIN

MOV R6,#07H ;DELAY15us

DJNZ R6,$

MOV C,TEMPDIN

MOV R6,#3CH ;DELAY120us

DJNZ R6,$

RRC A

SETB TEMPDIN

DJNZ R7,READDS1820LOOP

MOV R6,#3CH ;DELAY120us

DJNZ R6,$

RET

;========写DS18B20的程序,从DS18B20中写一个字节的数据=============

WRITEDS1820:

MOV R7,#08H

SETB TEMPDIN

NOP

NOP

WRITEDS1820LOP:

CLR TEMPDIN

MOV R6,#07H ;DELAY15us

DJNZ R6,$

RRC A

MOV TEMPDIN,C

MOV R6,#34H ;DELAY104us

DJNZ R6,$

SETB TEMPDIN

DJNZ R7,WRITEDS1820LOP

RET

;=========================READTEMP===========================

READ_TEMP:

LCALL INITDS1820

MOV A,#0CCH

LCALL WRITEDS1820 ;SKIPROM

MOV R6,#34H ;DELAY104us

DJNZ R6,$

MOV A,#44H

LCALL WRITEDS1820 ;STARTCONVERSION

MOV R6,#34H ;DELAY104

DJNZ R6,$

READTEMP1:

LCALL INITDS1820

MOV A,#0CCH

LCALL WRITEDS1820 ;SKIPROM

MOV R6,#34H ;DELAY104us

DJNZ R6,$

MOV A,#0BEH

LCALL WRITEDS1820 ;SCRATCHPAD

MOV R6,#34H ;DELAY104us

DJNZ R6,$

MOV R5,#09H

MOV R0,#TEMPHEAD

MOV B,#00H

READTEMP2:

LCALL READDS1820

MOV @R0,A

INC R0

DJNZ R5,READTEMP2

MOV A,TEMPHEAD+0

MOV TEMPL,A

MOV A,TEMPHEAD+1

MOV TEMPH,A

READTEMPOUT:

RET

;==================处理温度BCD码子程序==========================

CONVTEMP:

MOV A,TEMPH

ANL A,#80H

JZ TEMPC1

CLR C

MOV A,TEMPL

CPL A

ADD A,#01H

MOV TEMPL,A

MOV A,TEMPH ;-

CPL A

ADDC A,#00H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1