基于DS18B20的温度采集系统显示Word文档格式.docx
- 文档编号:20788527
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:15
- 大小:81.03KB
基于DS18B20的温度采集系统显示Word文档格式.docx
《基于DS18B20的温度采集系统显示Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度采集系统显示Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图1:
DS18B20测温原理框图
三理论分析与计算
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
3.1主程序流程图
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图2所示。
图2程序流程图
3.2读出温度子程序流程图
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,验有错时不进行温度数据的改写。
其程序流程图如图3所示:
图3温度转换器流程图
3.3温度转换命令子程序流程图
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图3所示
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4所示。
图4计算温度流程图
四电路与程序设计
4.1电路图
4.2程序
temp1equ5ah;
符号位和耗电量位公用的存放单元
temp2equ5bh;
十位存放单元
temp3equ5ch;
个位存放单元
temp4equ5dh
temp5equ5eh;
数据临时存放单元
temp6equ5fh
temp7equ60h
temp8equ61h
org0000h
ajmpmain
org0030h
main:
movsp,#70h
lcallint;
调用DS18B20初始化函数
main1:
lcallgettemp;
调用温度转换函数
lcallchuli;
调用温度计算函数
lcalldisp;
调用温度显示函数
ajmpmain1;
循环
int:
l0:
setbp3.6;
先释放DQ总线
movr2,#250;
给R2赋延时初值,同时可让DQ保持高电平2us
l1:
clrp3.6;
给DQ一个复位低电平
djnzr2,l1;
保持低电平的时间至少为480us
setbp3.6;
再次拉高DQ释放总线
movr2,#25
l2:
djnzr2,l2;
保持15us-60us
clrc
orlc,p3.6;
判断是否收到低脉冲
jcl0
movr6,#100
l3:
orlc,p3.6
djnzr6,l3;
存在低脉冲保持60us-240us
;
jcl0;
否则继续从头开始,继续判断
setbp3.6
ret
;
gettemp:
clrpsw.4
setbpsw.3;
设置工作寄存器当前所在的区域
clrea;
使用DS18B20前一定要禁止任何中断
初始化DS18B20
mova,#0cch;
送入跳过ROM命令
lcallwrite
mova,#44h;
送入温度转换命令
lcallwrite
温度转换完成,再次初始化
mova,#0beh;
送入读温度暂存器命令
lcallread
movtemp4,a;
读出温度的低字节存在TEMP4
movtemp5,a;
读出温度的高字节存在TEMP5
setbea
chuli:
mova,temp5;
将温度的高字节取出
jnbp3.6,zheng;
判断最高们是否为0,为则表示温度为正,则转到ZHENG否则温度为负,将温度的低字节取出
mova,temp4
cpla;
求反
inca;
加工厂
movtemp8,a;
存到TEMP8
anla,#0fh;
保留低四位
lcallmuld;
调用乘以625子程序
lcallhb2;
调用双字节16进制数转成BCD码子程序
mova,r4;
将结果的千位百位取出
anla,#0f0h;
保留千位
swapa
movtemp7,a;
把小数结果保存在TEMP7中
mova,temp4;
再次取出温度低字节
anla,#0ffh;
判断是否为0
jzxx;
为何则转到XX执行
mova,temp5;
不为则直接将温度的高字节取反
sjmpyy
xx:
mova,temp5;
为0则求补码
cpla
inca
yy:
anla,#0f0h;
保留高字节的低四位
swapa;
将其换到高4位
movr5,a;
暂时保存于R5中
mova,temp8;
取出求反后的低位字节
取其高四位
将其换到低四位
orla,r5;
合并成温度的整数部分
movtemp6,a;
将整数部分存到TEMP6中
lcallhbcd;
调用一字节的16进制转换BCD数的子程序
movtemp1,#0bh;
将号的段选值存到符号位
mova,temp2;
取出十位
cjnea,#00h,next
movtemp2,#0ch;
十位为0不显示
zheng:
mova,temp4;
将温度的低字节取出
调用双字节16进制数转换成BCD码子程序
再次取出温度的低字节
anla,#0f0h保留高4位
换到低4位
mova,temp5;
取出温度的高字节
保留低4位
换到高4位
整数部分存到TEMP6中
单字节的16进制转换成BCD码
mova,temp1;
取出百位
cjnea,#00h,next;
百位不为0则转NEXT
movtemp1,#0ch;
为0则不显
十位为0也不是
next:
muld:
movb,#71h
mulab
movr7,a
movr6,b
movb,#02h
mulab
adda,r6
movr6,a
write:
movr3,#8;
一个字节共8位
wr1:
setbp3.6;
先释放总线
movr4,#8
rrca;
把要写的字节的最低位右环移到C中
clrp3.6;
把C中的位写到DQ总线中
wr3:
djnzr4,wr3;
保持低电平0-15us
movp3.6,c;
movr4,#20
djnzr4,$
djnzr3,wr1
read:
movr6,#8
re1:
nop
nop;
写开始
movr4,#4;
将C中的位写到DQ总线上
re2:
djnzr4,re2;
产生读时间
movc,p3.6;
将总线上的位读到C
movr5,#30
djnzr5,$;
持续60us
将C里的位右环移到A里
djnzr6,re1;
读下一位
ret
hbcd:
mova,temp6
movb,#10
divab
movtemp3,b;
将个位存到TEMP3
movtemp2,;
将十位存到TEMP2
movtemp1,a;
将百位存到TEMP1
hb2:
clra
movr3,a
movr4,a
movr5,a
movr2,#10h
hb3:
mova,r7
rlca
mova,r6
mova,r5
addca,r5
daa
mova,r4
addca,r4
mova,r3
addca,r3
djnzr2,hb3
disp:
movdptr,#disptab
movr0,#4
dp1:
movr1,#140
loop:
mova,temp7;
取出小数部分
movca,@a+dptr;
取出相应的字型码
movp1,a;
显示在数码管上
setbp3.0;
数码管位选
acalldelay100;
延时
clrp3.0;
清数码管位选
mova,temp3;
取个位
movca,@a+dptr
anla,#7fh;
显示小数点
movp1,a
setbp3.1
取十位
clrp3.1
mova,temp2
setbp3.2
acalldelay100
clrp3.2
取符号位或百位
setbp3.3
clrp3.3
djnzr1,loop;
循环显示
djnzr0,dp1
delay100:
movr7,#80;
djnzr7,$
disptab:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh,0bfh,0ffh
end
五结果分析
该课程设计我们完成了最基本的温度采集,如下图:
总结
本系统采用采用单片机和数字温度转换器DS18B20来实现,具有主机接口简单,结构灵活,调试方便等特点,实验结果表明这种测温系统转换速度快、精度高。
这次实习不仅巩固了以前所学过的知识,而且学到了很多在书本上没有的知识。
通过这次课程设计,懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
虽然在课堂上我学了不少东西,但当付诸于实际时却摸不着头脑,所以我们不但要学习知识,还要在实践中运用知识,做到游刃有余。
不管是在以后的工作或学习中,我都会全力以赴,积极思考,勇于探索,不断创新。
在设计中遇到了很多编程方面的调试问题还没有解决,例如仍没有设计出报警系统、温度上下限的限制。
我想在以后我会继续查找各方面资料、请教老师、与同学共同探讨,一起来解决这些问题。
同时在以后的日子里我会慢慢改正在这次课程设计中所犯的错误、把学过的知识掌握的更加牢固。
参考文献
《电子设计自动化技术基础》马建国、孟宪元编清华大学出版2004年4月
《实用电子系统设计基础》姜威2008年1月
《单片机系统的PROTEUS设计与仿真》张靖武2007年4月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 温度 采集 系统 显示