基于51单片机的温度采集系统Word下载.docx
- 文档编号:17085461
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:17
- 大小:212.12KB
基于51单片机的温度采集系统Word下载.docx
《基于51单片机的温度采集系统Word下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度采集系统Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
该子程序调节温度,当温度高于上限温度时(本程序设为30℃),P1.0输出驱动控制信号,驱动外设工作降温;
当温度下降到下限温度时(本程序设为25℃),P1.0停止输出,温度上升,周而复始;
工作状态有LED1-LED4指示。
(6)十进制转换子程序METRICCON
将存放于内部RAM21H单元的当前温度值得二进制数形式转换为十进制数(BCD码)形式,以便输出显示,转换结果存放在片内RAM的32H单元(百位)、31H(十位)、30H单元(个位)。
(7)数码显示子程序DISP
该子程序利用89C51串口的方式0串行移位寄存器工作方式,将片内RAM的30H、31H、32H单元的BCD码查表转换为七段码后由RXD端串行发出去,然后经74LS164串并转换,将七段值传送给数码管,以十进制形式显示出当前温度值。
根据以上分析画出的部分程序设计流程图如图1-0至图1-4所示。
图1-0部分程序设计流程图的设计框架
图1-1主程序流程图
图1-2T0中断服务程序流程图
图1-3温度采样及模数转换子程序流程图
图1-4温度计算子程序流程图
3、具体内容
(1)温度控制器电器原理图设计
按以上分析及相关知识设计出的温度控制器电路原理图如图1-5所示。
图1-5温度控制电路原理图
(2)温度数据表
在图1-5所示的电路中,热敏电阻的连接如图1-6所示。
R8
100k
图1-6热敏电阻的连接
本设计所使用的热敏电阻的分度表及ADC0809转换后的电压数字量见附表1-1所示
转换后的电压数字量的计算方法为:
热敏电阻与R8并并联后的总电阻:
R=(Rt*R8)/(Rt+R8)
R与R7串联电路中R的分压值(即输入ADC0809的模拟量):
V=5R/(R+R7)
5V被分成256等分(8位量化),则每份的电压值:
△=5/256
输入的模拟量电压经8位量化后的数字量:
D=V/△
例如,热敏电阻在温度为20℃时的阻值为62.254千欧,则根据上述方法计算出的电压数字量为169,注意在计算中R7用实测值19.6千欧代入进入计算。
在实际做该电路时,可根据自己所选择的热敏电阻的分度表计相关电路参数,按上述方法计算出ADC0809转换后的各温度对应的电压数字量。
程序中的温度数据表构成:
1个温度数据占2个字节,前一字为温度值,后一个字节为该温度下热敏电阻上的模拟电压转换成德8位数字量。
如在20℃时,热敏电阻对应的电压数字量为169,则20,169组成一个温度为20℃的温度数据。
按这样方法组成的0-49℃的温度数据表如下:
DATATAB:
DB0,194,1,193,2,192,3,191,4,190
DB5,189,6,188,7,187,8,186,9,185
DB10,184,11,182,12,181,13,180,14,178
DB15,177,16,175,17,174,18,173,19,171
DB20,169,21,168,22,166,23,165,24,163
DB25,161,26,159,27,158,28,,156,29,154
DB30,152,31,150,32,149,33,147,34,145
DB35,143,36,141,37,139,38,147,39,135
DB40,133,41,131,42,129,43,127,44,125
DB45,123,46,121,47,118,48,116,49,114
在温度采样机模数转换子程序中,采样得到的当前温度下热敏电阻上的数字电压存于20H单元,在温度计算子程序中通过查表的方法从表中的第一个温度(0℃)下热敏电阻上的数字电压开始,依次取出各温度下热敏电阻上的十字电压,与与存于20H单元的当前温度下热敏电阻上的的数字电压比较,如小于当前温度的数字电压,则在取出下一温度的数字电压与当前温度的数字电压比较;
直到大于或等于当前的温度数字电压,比较结束。
如大于则取出前一温度作为当前温度存于21H单元,如等于则将该温度作为但前温度存于20H单元。
这种温度计算方法,避免了温度特性曲线的非线性对温度计算精确性的影响,计算出的温度非常精确。
(3)温度控制程序设计
在本设计中,晶体振荡器频率为6MHz,T0定时时间为100ms,T0工作于方式1,则T0的初值为:
X=(最大计数值M―定时时间t/及其周期Tm)=216-100ms/2us=15536=3CB0H
按以上任务分析设计出的源程序如下:
ORG0000H;
跳转到主程序
LJMPMAIN;
ORG000BH;
LJMPT0INT;
跳转到T0中断服务程序;
主程序
ORG0100H;
MAIN:
MOVR1,#10;
T0100马上定时溢出计数寄存器R1赋初值10
MOVP1,#0FFH;
所有指示灯灭
MOVSP,#60H;
堆栈指针赋初值60H
MOVTMOD,#01H;
T0定时、方式1、软启动
MOVTL0,#0B0H;
T0赋初值
MOVTH0,#3CH;
MOVIE,#82H;
开放T0中断
SETBTR0;
启动T0
SJMP$;
定时/计数器0中断服务程序
ORG0200H;
T0INT:
DJNZR1,NEXT;
T0溢出10次,即1s进一次采样处理
LCALLADCON;
调用温度采样及模数转换子程序
LCALLCALCU;
调用温度计算子程序
LCALLDRVCON;
调用驱动控制子程序
LCALLMETRICCON;
调用十进制转换子程序
LCALLDISP;
调用数码管显示子程序
R1重赋值10
NEXT:
T0重装初值
RETI;
温度采样及模数转换子程序
ORG0300H;
ADCON:
MOVDPTR,#0F0FFH;
选通ADC0809通道0
MOVA,#00H;
MOVX@DPTR,A;
启动A/D转换
HERE:
JNBP3.3,HERE;
判断数据转换是否结束,没结束则等待
MOVXA,@DPTR;
读取转换后的数据
MOV20H,A;
将从ADC0809中读取的当前温度下热敏电阻上的电压值存于20H单元
RET;
温度计算子程序
ORG0400H;
CALCU:
MOVR2,#01H;
R2为数据表的索引值寄存器
MOVDPTR,#DATATAB;
温度数据表首地址送DPTR
NEXT1:
MOVA,R2;
索引值送A
MOVCA,@A+DPTR;
查表取出某一温度的数字电压值
CJNEA,20H,K1;
与当前温度的数字电压值比较
DECR2;
等于当前温度的数字电压值,则查表取出该温度值作为当前温度值
LJMPK3;
K1:
JNCK2;
大于当前温度的数字电压值,则继续取出下一温度的数字电压进行比较
小于当前温度的数字电压值,则查表取出前一个温度值作为当前温度值
DECR2
K2:
INCR2;
LJMPNEXT1;
K3:
MOV21H,A;
将当前温度值存于21H单元
RET;
DATATAB;
DB0,194,1,193,2,192,3,191,4,190;
温度数据表
DB5,189,6,188,7,187,8,186,9,185
DB10,184,11,182,12,181,13,180,14,178
DB15,177,16,175,17,174,18,173,19,171
DB20,169,21,168,22,166,23,165,24,163
DB25,161,26,159,27,158,28,156,29,154
DB30,152,31,150,32,149,33,147,34,145
DB35,143,36,141,37,139,38,137,39,135
DB40,133,41,131,42,129,43,127,44,125
DB45,123,46,121,47,118,48,116,49,114
驱动控制子程序
ORG0500H;
DRVCON:
MOVA,21H;
取出当前温度值
CJNEA,#30,J1;
与上限温度值(30℃)比较
LJMPGO;
J1:
JNCDRV1;
若高于上限温度,则输出驱动信号,同时高于上限温度指示灯点亮
CJNEA,#25,J2;
与显现温度(25℃)比较
J2:
JCDRV2;
弱低于下限温度,则驱动信号停止输出,同时点亮低于下限温度的指示灯
DRV1:
CLRP1.0;
SETBP1.1;
CLRP1.2;
SETBP1.3;
LJMPOVER;
DRV2:
SETBP1.0
SETBP1.0;
SETBP1.2;
CLRP1.3;
GO:
CLRP1.1;
在下线温度(25℃)至上限温度(30℃)之间,则驱动信号保持前面状态,同时温度正常指示灯点亮
OVER:
;
十进制转换子程序
ORG0600H;
METRICCON:
MOVR3,#00H;
将存于21H单元中的当前温度转换为BCD码
MOVR4,#00H;
百位存于32H单元,十位存于31H单元,个位存于30H单元
CLRC;
W1:
SUBBA,#100;
JCW2;
INCR4;
AJMPW1;
W2:
ADDA,#100;
W3:
SUBBA,#10;
JCW4;
INCR3;
AJMPW3;
W4:
ADDA,#10;
MOV30H,A;
MOV31H,R3;
MOV32H,R4;
数码管显示子程序
ORG0700H;
DISP:
MOVR5,#03H;
将存于32H单元、31H单元、30H单元中的温度BCD码查表转换为七段码
MOVR0,#30H;
通过串行通信方式0输出驱动3个数码管,显示当前温度
MOVDPTR,#TAB;
LOOP:
MOVA,@R0;
MOVSBUF,A;
WAIT:
JNBT1,WAIT;
CLRT1;
INCR0;
DJNZR5,LOOP;
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;
七段码数据表
附表:
1-1
热敏电阻分度表及经ADC0809转换后的电压数字量
温度(℃)
热敏电阻阻值(千欧)
转换后的电压数字量
161.608
194
1
153.6308
193
2
146.0833
192
3
138.9435
191
4
132.01901
190
5
125.8025
189
6
119.7608
188
7
114.046
187
8
108.6397
186
9
103.5243
185
10
98.6833
184
11
94.1006
182
12
89.7613
181
13
85.6511
180
14
81.7564
178
15
78.0646
177
16
74.5637
175
17
71.2425
174
18
68.0903
173
19
65.0972
171
20
62.254
169
21
59.5519
168
22
56.9829
166
23
54.5392
165
24
52.2138
25
50
161
26
47.8916
159
27
45.8829
158
28
43.9683
156
29
42.1428
154
30
40.4017
152
31
38.7405
150
32
37.1552
149
33
35.6418
147
34
34.1967
145
35
32.8164
143
36
31.4979
141
37
30.238
139
38
29.0339
137
39
27.883
135
40
26.7828
133
41
25.7308
131
42
24.725
129
43
23.763
127
44
22.843
125
45
21.9629
123
46
21.1211
121
47
20.3158
118
48
19.5453
116
49
18.8082
114
18.1028
112
51
17.4241
110
52
16.7787
108
53
16.1643
104
54
15.5788
102
55
15.0199
100
56
14.4861
99
57
13.9754
97
58
13.4866
95
59
13.018
93
60
12.5686
91
参考文献:
1.贾好来主编.MCS-51单片机原理及应用.北京:
机械工业出版社,2006.
2.江太辉,石秀芳主编.MCS-51单片机原理及应用.广东:
华南理工大学出版社,2004.
3.曹龙汉,刘安才主编.MCS-51单片机原理及应用.重庆:
重庆出版社,2004.
4.劳动和社会保障部教材办公室主编.单片机应用技术(汇编语言).北京:
中国劳动社会保障出版社,2006.
5.何立民主编.MCS-51单片机应用系统设计.北京:
北京航天航空大学出版社,1990.
6.朱定华主编.单片机原理及接口技术实验.北京:
北京大学出版社,2002.
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 温度 采集 系统