51单片机温度报警系统Word文档格式.docx
《51单片机温度报警系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机温度报警系统Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
![51单片机温度报警系统Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/16/18fd6d6c-403a-448c-bcde-da4b74c9c4bc/18fd6d6c-403a-448c-bcde-da4b74c9c4bc1.gif)
14K3EQUP2.3
15K4EQUP2.4
16;
17SPKEQUP3.4;
蜂鸣器引脚
18RELAYEQUP2.0;
继电器引脚
19XEQU2FH;
LCD地址变量
20;
―――――――――――――
21;
LCD控制引脚
22RSEQUP3.5
23RWEQUP3.6
24EEQUP3.7
25;
26FLAGEQU20H.0;
DS18B20是否存在标记
27KEY_UDEQU20H.1;
设定KEY的UP与DOWN标记
28DQEQUP2.5
29
30;
=============主程序==============
31
32MAIN:
33ACALLSET_LCD;
LCD初始化设置子程序
34ACALLWR_THL;
将报警上下线写入暂存寄存器子程序
35TOOP:
ACALLRESET_1820;
调用18B20复位子程序
36JNBFLAG,TOOP1;
DS1820不存在转移TOOP1处
37ACALLMEU_OK;
调用显示"
OK"
信息子程序
38ACALLRE_THL;
把EEROM里温度报警值拷贝回暂存器
39ACALLTEMP_BJ;
显示温度标记"
℃"
40JMPTOOP2
41TOOP1:
ACALLMEU_ERROR;
显示"
ERROR"
信息
42ACALLTEMP_BJ;
显示温度标记
43JMP$;
等待
44;
――――――――――――――
45TOOP2:
46ACALLRE_TEMP;
调用读取温度数据子程序
47ACALLSET_DATA;
调用处理显示温度数据子程序
48ACALLTEMP_COMP;
实际温度值与标记温度值比较子程序
49ACALLP_KEY;
调用按键扫描子程序
50SJMPTOOP2;
循环
51
52;
--------――读取温度数据子程序--------――
53RE_TEMP:
54ACALLRESET_1820;
18B20复位子程序
55JNBFLAG,TOOP1;
DS1820不存在
56MOVA,#0CCH;
跳过ROM匹配
57ACALLWRITE_1820;
写入子程序
58MOVA,#44H;
发出温度转换命令
59ACALLWRITE_1820;
调写入子程序
60ACALLRESET_1820;
调复位子程序
61MOVA,#0CCH;
62ACALLWRITE_1820;
63MOVA,#0BEH;
发出读温度命令
64ACALLWRITE_1820;
写入子程序
65ACALLREAD_1820;
调用读取子程序
66RET
67
68;
--------温度数据处理显示子程序----------
69SET_DATA:
70ACALLCONV_TEMP;
处理温度BCD码子程序
71ACALLDISP_BCD;
显示区BCD码温度值刷新子程序
72ACALLCONV;
LCD显示子程序
73RET
74
75;
-----------按键键扫描子程序----------
76P_KEY:
;
按键K1处理
77JBK1,PK1;
K1键未按,转到PK1处
78ACALLSPK_BZ;
K1键按下,一声鸣响
79JNBK1,$;
等按键放开
80MOVDPTR,#M_ALAX1;
存M_ALAX1表
81MOVA,#1
82ACALLLCD_PRINT;
显示字符
83ACALLLOOK_ALARM;
显示信息区子程序
84JBK3,$;
等待K3按下
85ACALLSPK_BZ;
一声鸣响
86JMPPK2;
转到标号PK2处
87PK1:
按键K2处理
88JBK2,PK3;
K2键未按,转到PK3处
89ACALLSPK_BZ;
K2键按下,一声鸣响
90JNBK2,$;
等按键放开
91MOVDPTR,#TA1;
存#TA1表
92MOVA,#1
93ACALLLCD_PRINT;
显示字符
94ACALLSET_ALARM;
设定报警值TH、TL
95ACALLWR_THL;
将设定的TH,TL值写入DS18B20内
96ACALLWRITE_E2;
调用报警值拷贝EEROM子程序
97PK2:
98ACALLMEU_OK;
99ACALLTEMP_BJ;
显示温度标记子程序
100PK3:
101RET
102;
103TA1:
菜单表
104DB"
RESETALERTCODE"
105;
106
107;
---------设定报警值TH、TL子程序--------
108SET_ALARM:
109ACALLLOOK_ALARM;
调用显示信息区子程序
110A0:
JBK1,A2;
按下K1(查看键),程序向下运行
111ACALLSPK_BZ;
蜂鸣器响一声
112JNBK1,$;
等放开
113CPL20H.1;
UP/DOWN标记反向
114A2:
JB20H.1,A3;
20H.1=1,UP,转移到A3。
115JMPA8;
20H.1=0,DOWN,转移到A8
116;
117;
TH值调整(增加)
118A3:
JBK2,A5;
按下K2(设定键),程序向下运行
119ACALLSPK_BZ;
120INCTEMP_TH;
TH值调整(增加)
121MOVA,TEMP_TH;
TH值送入A
122CJNEA,#120,A4;
TH值增到120,程序向下运行
123MOVTEMP_TH,#0;
TH值清0
124A4:
ACALLLOOK_ALARM;
125MOVR5,#10
126ACALLDELAY;
调用延时程序
127JMPA3;
128;
129;
TL值调整(增加)
130A5:
JBK3,A7;
按下K3(TL值设定键)程序向下运行
131ACALLSPK_BZ;
132INCTEMP_TL;
TL值增加1
133MOVA,TEMP_TL;
TL值送入A
134CJNEA,#99,A6;
比较,若A=99,程序向下运行
135MOVTEMP_TL,#00H;
TL值清0
136A6:
137MOVR5,#10
138ACALLDELAY;
139JMPA5;
程序转移到A5,循环
140;
141;
确定调整OK
142A7:
JBK4,A0;
按下K4(调整确定键),程序向下运行
143ACALLSPK_BZ;
144JNBK4,$;
145RET;
程序返回
146;
147;
TH值调整(减少)
148A8:
JBK2,A10;
149ACALLSPK_BZ;
150DECTEMP_TH;
TH值减1
151MOVA,TEMP_TH;
152CJNEA,#0FFH,A9;
比较,若A=0FF,程序向下运行
153JMPA12;
转移到A12
154A9:
155MOVR5,#10
156ACALLDELAY;
调用延时子程序
157JMPA0;
158;
159;
TL值调整(减少)
160A10:
JBK3,A13;
按K3(TL值设定键),程序向下运行
161ACALLSPK_BZ;
162DECTEMP_TL;
TL值减1
163MOVA,TEMP_TL;
164CJNEA,#0FFH,A11;
165JMPA12;
166A11:
167MOVR5,#10
168ACALLDELAY;
169JMPA0;
转移到A0
170A12:
CPL20H.1;
171JMPA3;
转移到A3,TH值调整(增加)
172A13:
JMPA7;
转移到A7,确定调整OK
173RET;
子程序返回
174
175;
----------显示信息区子程序-----------
176LOOK_ALARM:
177MOVDPTR,#M_ALAX2;
存表
178MOVA,#2;
显示在第二行
179ACALLLCD_PRINT;
调用显示字符子程序
180MOVA,#0C6H;
显示起始地址为第二行第7位
181ACALLTEMP_BJ1;
调用显示温度标记子程序
182MOVA,TEMP_TH;
加载TH数据
183MOVX,#3;
设置位置
184ACALLSHOW_LINE2H;
显示数据
185;
186MOVA,#0CEH;
设定显示起始地址为第二行第15位
187ACALLTEMP_BJ1;
188MOVA,TEMP_TL;
加载TL数据
189MOVX,#12;
190ACALLSHOW_L