DS18B20+DS1302项目报告(7)

2020-02-21 18:33

*************************

CONVTEMP: MOV A,TEMPH ;判温度是否零下 ANL A,#08H

JZ TEMPC1 ;温度零上转 CLR C

MOV A,TEMPL ;二进制数求补(双字节) CPL A ;取反加1 ADD A,#01H MOV TEMPL,A MOV A,TEMPH CPL A ADDC A,#00H MOV TEMPH,A

MOV TEMPHC,#0BH MOV TEMPFC,#0BH

;负温度标志

SJMP TEMPC11

TEMPC1: MOV TEMPHC,#0AH ;正温度标志

MOV TEMPFC,#0AH

TEMPC11: MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL

ANL A,#0FH ;乘0.0625 MOV DPTR,#TEMPDOTTAB MOVC A,@A+DPTR

MOV TEMPLC,A ;TEMPLC LOW=小数部分 BCD MOV A,TEMPL ;整数部分 ANL A,#0F0H ;取出高四位 SWAP A

31

MOV TEMPL,A

MOV A,TEMPH ;取出低四位 ANL A,#0FH SWAP A

ORL A,TEMPL ;重新组合 MOV TEMP_ZH,A LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A

ORL A,TEMPHC ;TEMPHC LOW = MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH

SWAP A ;TEMPLC HI = ORL A,TEMPLC MOV TEMPLC,A MOV A,R4 JZ TEMPC12 ANL A,#0FH SWAP A MOV R4,A

MOV A,TEMPHC ;TEMPHC HI = ANL A,#0FH ORL A,R4 MOV TEMPHC,A TEMPC12: RET

;************************

*****************************

十位数 BCD 个位数 BCD 百位数 BCD -十

32

HEX2BCD1: MOV B,#064H DIV AB MOV R4,A MOV A,#0AH XCH A,B

DIV AB SWAP A ORL A,B RET

TEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H ; 小数部分码表 DB 05H,05H,06H,06H,07H,08H,08H,09H ;********************** DS18B20************************** READ: MOV R4,#4 读出

MOV R1,#TEMPL ;存入25H、26H、27H、28H单元 RE00: MOV R2,#8 RE01: CLR CY SETB DQ NOP NOP

CLR DQ NOP NOP NOP

SETB DQ

;开始读总线释放

;读前总线保持为低

;将温度低位、高位、TH、TL从DS18B20中

数据读取操作子程序

MOV R3,#09 ;延时18微妙 DJNZ R3,$ MOV C,DQ

;从DS18B20总线读得一位

33

MOV R3,#3CH

DJNZ R3,$ ;等待100微妙 RRC A ;把读得的位值环移给A DJNZ R2,RE01 ;读下一位 MOV @R1,A INC R1 DJNZ R4,RE00 RET

;*************************** 第

************************* SHOW_DIG2:ADD A,#30H

MOV B,LCD_X LCALL LCDP2 RET

;*************************** 第

************************* LCDP2: PUSH ACC MOV A,B ;设置显示地址

ADD A,#0C0H

;设置LCD的第二行地址 LCALL WCOM ;写入命令 POP ACC

;由堆栈取出A

LCALL WDATA ;写入数据 RET

;******************************** 显示正确信*************************** MENU_OK: MOV DPTR,#M_OK1

;指针指到显示消息

MOV A,#1 ;显示在第一行 LCALL LCD_PRINT MOV DPTR,#M_OK2

;指针指到显示消息

34

息子程

序程

序程序

MOV A,#2 ;显示在第一行 LCALL LCD_PRINT RET M_OK1: DB \M_OK2: DB \

;******************************** 显示出错信息子程序 ***************************

MENU_ERROR:MOV DPTR,#M_ERROR1 ;指针指到显示消息 MOV A,#1 ;显示在第一行 LCALL LCD_PRINT

MOV DPTR,#M_ERROR2 ;指针指到显示消息1 MOV A,#2 ;显示在第一行 LCALL LCD_PRINT RET

M_ERROR1: DB \

M_ERROR2: DB \;************************* LCD**********************

LCD_PRINT:CJNE A,#1,LINE2 ;判断是否为第一行 LINE1: MOV A,#80H ;设置 LCD 的第一行地址 LCALL WCOM ;写入命令 LCALL CLR_LINE ;清除该行字符数据 MOV A,#80H ;设置 LCD 的第一行地址 LCALL WCOM ;写入命令 JMP FILL

LINE2: MOV A,#0C0H ;设置 LCD 的第二行地址 LCALL WCOM ;写入命令 LCALL CLR_LINE ;清除该行字符数据

35

的第一行或第二行显示字符


DS18B20+DS1302项目报告(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教科版三年级科学上册第一单元知识点整理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: