整理液晶显示温度控制器Word文档下载推荐.docx

上传人:b****6 文档编号:16702094 上传时间:2022-11-25 格式:DOCX 页数:25 大小:31.79KB
下载 相关 举报
整理液晶显示温度控制器Word文档下载推荐.docx_第1页
第1页 / 共25页
整理液晶显示温度控制器Word文档下载推荐.docx_第2页
第2页 / 共25页
整理液晶显示温度控制器Word文档下载推荐.docx_第3页
第3页 / 共25页
整理液晶显示温度控制器Word文档下载推荐.docx_第4页
第4页 / 共25页
整理液晶显示温度控制器Word文档下载推荐.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

整理液晶显示温度控制器Word文档下载推荐.docx

《整理液晶显示温度控制器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《整理液晶显示温度控制器Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。

整理液晶显示温度控制器Word文档下载推荐.docx

显示"

OK"

菜单

ACALLRE_THL;

把EEROM里温度报警值拷贝回暂存器

ACALLTEMP_BJ;

显示温度标记"

C"

JMPTOOP2

TOOP1:

ACALLMEU_ERROR;

ERROR"

显示温度标记

JMP$

--------------------------

TOOP2:

ACALLRE_TEMP

ACALLSET_DATA

ACALLTEMP_COMP;

实际温度值与标记温度值比较子程序

ACALLP_KEY;

键扫描子程序

SJMPTOOP2

---------读取温度数据子程序---------

RE_TEMP:

18B20复位子程序

MOVA,#0CCH;

跳过ROM匹配

ACALLWRITE_1820;

写入子程序

MOVA,#44H;

发出温度转换命令

调写入子程序

调复位子程序

MOVA,#0BEH;

发出读温度命令

写入子程序

ACALLREAD_1820;

调用读入子程序

RET

--------温度数据处理显示子程序----------

SET_DATA:

ACALLCONV_TEMP;

处理温度BCD码子程序

ACALLDISP_BCD;

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

ACALLCONV;

数据转换子程序

-----------按键键扫描子程序----------

P_KEY:

;

按键K1处理

JBK1,PK1;

K1键未按,转到PK1处

ACALLSPK_BZ;

K1键按下,一声鸣响

JNBK1,$;

等按键放开

MOVDPTR,#M_ALAX1;

存M_ALAX1表

MOVA,#1

ACALLLCD_PRINT;

显示字符

ACALLLOOK_ALARM;

显示信息区

JBK3,$;

等待K3按下

一声鸣响

JMPPK2;

转到标号PK2处

PK1:

按键K2处理

JBK2,PK3;

K2键未按,转到PK3处

K2键按下,一声鸣响

JNBK2,$;

等按键放开

MOVDPTR,#TA1;

存#TA1表

MOVA,#1

显示字符

ACALLSET_ALARM;

设定报警值TH、TL

将设定的TH,TL值写入DS18B20内

ACALLWRITE_E2;

PK2:

显示温度标记

PK3:

-----------------------------------

TA1:

DB"

RESETALERTCODE"

----------设定报警值TH、TL子程序---------

设定报警值TH、TL

SET_ALARM:

ACALLLOOK_ALARM

A0:

JBK1,A2

ACALLSPK_BZ

JNBK1,$

CPL20H.1;

UP/DOWN标记

A2:

JB20H.1,A3;

20H.1=1,UP

JMPA8;

20H.1=0,DOWN

A3:

JBK2,A5;

TH值调整(增加)

INCTEMP_TH

MOVA,TEMP_TH

CJNEA,#120,A4

MOVTEMP_TH,#0

A4:

MOVR5,#10

ACALLDELAY

JMPA3

A5:

JBK3,A7;

TL值调整(增加)

INCTEMP_TL

MOVA,TEMP_TL

CJNEA,#99,A6

MOVTEMP_TL,#00H

A6:

JMPA5

A7:

JBK4,A0;

确定调整OK

JNBK4,$

A8:

JBK2,A10;

TH值调整(减少)

DECTEMP_TH

CJNEA,#0FFH,A9

JMPA12

A9:

JMPA0

A10:

JBK3,A13;

TL值调整(减少)

DECTEMP_TL

CJNEA,#0FFH,A11

A11:

A12:

CPL20H.1

A13:

JMPA7

----------显示信息区子程序-----------

LOOK_ALARM:

MOVDPTR,#M_ALAX2;

指针指到显示信息区

MOVA,#2;

显示在第二行

ACALLLCD_PRINT

MOVA,#0C6H

ACALLTEMP_BJ1

MOVA,TEMP_TH;

加载TH数据

MOVX,#3;

设置位置

ACALLSHOW_LINE2H;

显示数据

MOVA,#0CEH

MOVA,TEMP_TL;

加载TL数据

MOVX,#12;

ACALLSHOW_LINE2L;

-------------------------------

M_ALAX1:

LOOKALERTCODE"

0

M_ALAX2:

TH:

TL:

"

TEMP_BJ1:

ACALLWR_COMM

MOVDPTR,#BJ2;

MOVR1,#0

MOVR0,#2

B0:

MOVA,R1

MOVCA,@A+DPTR

ACALLWR_DATA

INCR1

DJNZR0,B0

BJ2:

DB00H,"

----------------------------------

SHOW_LINE2H:

在LCD的第二行显示数字

MOVB,#100

DIVAB

ADDA,#30H

PUSHB

MOVB,X

ACALLLCDP2

POPB

MOVA,#0AH

XCHA,B

INCX

MOVA,B

-----------------------------

SHOW_LINE2L:

CALLLCDP2

-----------温度值比较子程序------------

TEMP_COMP:

MOVA,TEMP_TH

SUBBA,TEMP_ZH;

减数>

被减数,则

JCTCL1;

借位标志位C=1,转

MOVA,TEMP_ZH

SUBBA,TEMP_TL;

JCTCL2;

MOVDPTR,#BJ5

ACALLTEMP_BJ3

CLRRELAY;

继电器吸合

TCL1:

MOVDPTR,#BJ3;

存入#BJ3表

ACALLTEMP_BJ3;

调用显示高、低温度及加热标记子程序

SETBRELAY;

继电器关闭

TCL2:

MOVDPTR,#BJ4;

存入#BJ4表

调用显示高、低温度及加标记子程序

调用鸣响子程序

---显示高、低温度及加热标记程序----

TEMP_BJ3:

BJJ:

DJNZR0,BJJ

BJ3:

>

H"

BJ4:

<

L"

BJ5:

!

"

---------报警上下线写入暂存器子程序----------

WR_THL:

JBFLAG,WR_T;

WR_T:

ACALLRESET_1820

LCALLWRITE_1820

MOVA,#4EH;

写暂存寄存器

TH(报警上限)

TL(报警下限)

MOVA,#7FH;

12位精确度

---------报警值拷贝到EEROM子程序-----------

WRITE_E2:

MOVA,#48H;

[48H]为拷贝到EEROM的指令代码

----------报警值拷贝回暂存器子程序----------

RE_THL:

MOVA,#0B8H;

把EEROM里的温度报警值拷贝回暂存器

ACALLWRITE_1820

----------处理温度BCD码子程序-----------

处理温度BCD码子程序

CONV_TEMP:

MOVA,TEMPH;

判温度是否零下

ANLA,#80H

JZTC1;

温度零上转

CLRC

MOVA,TEMPL;

二进制数求补(双字节)

CPLA;

取反加1

ADDA,#01H

MOVTEMPL,A

MOVA,TEMPH

CPLA

ADDCA,#00H

MOVTEMPH,A

SJMPTC2

TC1:

MOVTEMPHC,#0AH

TC2:

MOVA,TEMPHC

SWAPA

MOVTEMPHC,A

MOVA,TEMPL

ANLA,#0FH;

乘0.0625

MOVDPTR,#DOTTAB

MOVTEMPLC,A;

TEMPLCLOW=小数部分BCD

整数部分

ANLA,#0F0H;

取出高四位

取出低四位

ANLA,#0FH

ORLA,TEMPL;

重新组合

MOVTEMP_ZH,A

LCALLHEX2BCD1

ANLA,#0F0H

ORLA,TEMPHC;

TEMPHCLOW=十位数BCD

SWAPA;

TEMPLCHI=个位数BCD

ORLA,TEMPLC

MOVTEMPLC,A

MOVA,R4

JZTC3

MOVR4,A

MOVA,TEMPHC;

TEMPHCHI=百位数BCD

ORLA,R4

TC3:

HEX2BCD1:

MOVB,#064H;

十六进制->

BCD

DIVAB;

B=A%100

MOVR4,A;

R7=百位数

B=A%B

ORLA,B

-------------------------

小数部分码表

DOTTAB:

DB00H,00H,01H,01H,02H,03H,03H,04H

DB05H,05H,06H,06H,07H,08H,08H,09H

---------显示区BCD码温度值刷新子程序----------

显示区BCD码温度值刷新

DISP_BCD:

MOVA,TEMPLC

MOV70H,A;

小数位

MOV71H,A;

个位

MOV72H,A;

十位

MOV73H,A;

百位

CJNEA,#010H,DI0

SJMPDI2

DI0:

JNZDI2;

十位数是0

MOV73H,#0AH;

符号位不显示

十位数显示符号

DI2:

-------------------DS18B20复位初始化子程序----------------------

RESET_1820:

复位(有具体的时序要求)

SETBDQ

NOP

CLRDQ

――――――――――――

主机发出延时537微秒的复位低脉冲

MOVR1,#3

DLY:

MOVR0,#107

DJNZR0,$

DJNZR1,DLY

然后拉高数据线

――――――――――――

MOVR0,#25H

T2:

JNBDQ,T3;

等待DS18B20回应

DJNZR0,T2

JMPT4

T3:

SETBFLAG;

置标志位,表示DS1820存在

JMPT5

T4:

CLRFLAG;

清标志位,表示DS1820不存在

JMPT7

T5:

MOVR0,#117

T6:

DJNZR0,T6;

时序要求延时一段时间

T7:

RET;

复位子程序

-------------------写入DS18B20子程序-----------------------

WRITE_1820:

写入DS18B20(有具体的时序要求)

MOVR2,#8;

一共8位数据

WR1:

CLRDQ;

总线低位,开始写入

MOVR3,#6

DJNZR3,$;

保持16微秒以上

RRCA;

把字节DATA分成8个BIT环移给C

MOVDQ,C;

写入一个BIT

MOVR3,#23

等待

SETBDQ;

重新释放总线

DJNZR2,WR1;

写入下一个BIT

---------------------读出DS18B20子程序--------------------

READ_1820:

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

MOVR4,#4;

movr4,#4

MOVR1,#TEMPL;

存入25H、26H、27H、28H

RE0:

数据一共有8位

RE1:

NOP

读前总线保持为低

开始读总线释放

MOVR3,#9

延时18微妙

MOVC,DQ;

从总线读到一个BIT

MOVR3,#23;

等待50微秒

把读得的位价值环移给A

DJNZR2,RE1;

读下一个BIT

MOV@R1,A

INCR1;

R1内数据递增

DJNZR4,RE0

读出子程序

===================LCD1602显示程序======================

初始化设置

SET_LCD:

对LCD做初始化设置及测试

CLRE

CALLINIT_LCD;

初始化LCD

CALLSTORE_DATA;

将自定义字符存入LCD的CGRAM

-----------LCD初始化子程序-----------

INIT_LCD:

8位I/O控制LCD接口初始化

MOVA,#38H

CALLWR_COMM

calldelay1

MOVA,#0CH;

开显示,显示光标,光标不闪烁

MOVA,#01H;

清除LCD显示屏

-----------显示温度标记子程序------------

显示温度标记子程序

TEMP_BJ:

MOVA,#0CBH

MOVDPTR,#BJ;

指针指到显示消息

MOVR1,#0

MOVR0,#2

TP1:

DJNZR0,TP1

BJ:

-----------自定义字符子程序------------

将自定义字符写入LCD1602的CGRAM中

STORE_DATA:

MOVA,#40H

MOVR2,#08H

MOVDPTR,#D_DATA

MOVR3,#00H

S_DATA:

MOVA,R3

ACALLWR_DATA;

写入数据

INCR3

DJNZR2,S_DATA

---------------------------

D_DATA:

DB0CH,12H,

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

当前位置:首页 > 工程科技 > 电力水利

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

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