ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:81.03KB ,
资源ID:20788527      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20788527.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DS18B20的温度采集系统显示Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DS18B20的温度采集系统显示Word文档格式.docx

1、高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 图1: DS18B20测温原理框图三 理论分析与计算系统程序主要包括主程序,读出温度子程序,温度转换命令子

2、程序,计算温度子程序,显示数据刷新子程序等。3.1主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图2所示。图2 程序流程图3.2读出温度子程序流程图读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,验有错时不进行温度数据的改写。其程序流程图如图3所示:图3 温度转换器流程图3.3温度转换命令子程序流程图温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令

3、子程序流程图如上图3所示 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4所示。图4 计算温度流程图四 电路与程序设计4.1电路图4.2程序temp1 equ 5ah ;符号位和耗电量位公用的存放单元temp2 equ 5bh ;十位存放单元temp3 equ 5ch ;个位存放单元temp4 equ 5dhtemp5 equ 5eh ;数据临时存放单元temp6 equ 5fhtemp7 equ 60htemp8 equ 61horg 0000hajmp mainorg 0030hmain:mov sp,#70hlcall int ;调用DS1

4、8B20初始化函数main1: lcall gettemp ;调用温度转换函数lcall chuli ;调用温度计算函数 lcall disp ;调用温度显示函数ajmp main1 ;循环int:l0: setb p3. 6 ;先释放DQ总线mov r2,#250 ;给R2赋延时初值,同时可让DQ保持高电平2usl1: clr p3.6 ;给DQ一个复位低电平djnz r2,l1 ;保持低电平的时间至少为480ussetb p3.6 ;再次拉高DQ释放总线mov r2,#25l2:djnz r2,l2 ;保持15us-60usclr corl c,p3.6 ;判断是否收到低脉冲jc l0mo

5、v r6,#100l3:orl c,p3.6djnz r6,l3 ;存在低脉冲保持60us-240us;jc l0 ;否则继续从头开始,继续判断setb p3.6ret;gettemp:clr psw.4setb psw.3 ;设置工作寄存器当前所在的区域clr ea ;使用DS18B20前一定要禁止任何中断初始化DS18B20mov a,#0cch ;送入跳过ROM命令 lcall writemov a,#44h ;送入温度转换命令lcall write温度转换完成,再次初始化mov a,#0beh ;送入读温度暂存器命令lcall readmov temp4,a ;读出温度的低字节存在TE

6、MP4mov temp5,a ;读出温度的高字节存在TEMP5setb eachuli: mov a, temp5 ;将温度的高字节取出jnb p3.6,zheng ;判断最高们是否为0,为则表示温度为正,则转到ZHENG否则温度为负,将温度的低字节取出mov a, temp4cpl a ;求反inc a ;加工厂mov temp8,a ;存到TEMP8anl a,#0fh ;保留低四位lcall muld ;调用乘以625子程序lcall hb2 ;调用双字节16进制数转成BCD码子程序mov a,r4 ;将结果的千位百位取出anl a,#0f0h ;保留千位swap amov temp7,

7、a ;把小数结果保存在TEMP7中mov a,temp4 ;再次取出温度低字节anl a,#0ffh ;判断是否为0jz xx ;为何则转到XX执行mov a,temp5;不为则直接将温度的高字节取反sjmp yyxx: mov a,temp5 ;为0则求补码cpl ainc ayy: anl a,#0f0h ;保留高字节的低四位swap a ;将其换到高4位mov r5,a ;暂时保存于R5中mov a,temp8 ;取出求反后的低位字节取其高四位将其换到低四位orl a,r5 ;合并成温度的整数部分mov temp6,a ;将整数部分存到TEMP6中lcall hbcd ;调用一字节的16

8、进制转换BCD数的子程序mov temp1,#0bh ;将号的段选值存到符号位mov a,temp2 ;取出十位cjne a,#00h,nextmov temp2,#0ch ;十位为0不显示zheng: mov a,temp4 ;将温度的低字节取出调用双字节16进制数转换成BCD码子程序再次取出温度的低字节anl a,#0f0h 保留高4位换到低4位mov a,temp5 ;取出温度的高字节保留低4位换到高4位整数部分存到TEMP6中单字节的16进制转换成BCD码mov a,temp1 ;取出百位cjne a,#00h,next ;百位不为0则转NEXTmov temp1,#0ch ;为0则不

9、显十位为0也不是next:muld:mov b,#71hmul ab mov r7,amov r6,bmov b,#02hmul abadd a,r6mov r6,awrite:mov r3,#8 ;一个字节共8位wr1: setb p3.6 ;先释放总线 mov r4,#8rrc a ;把要写的字节的最低位右环移到C中clr p3.6 ;把C中的位写到DQ总线中wr3:djnz r4,wr3 ;保持低电平0-15usmov p3.6, c;mov r4 ,#20djnz r4,$djnz r3,wr1read:mov r6,#8re1:nop nop ;写开始mov r4,#4 ;将C中的位

10、写到DQ总线上re2:djnz r4,re2 ;产生读时间mov c,p3.6 ;将总线上的位读到Cmov r5,#30djnz r5,$ ;持续60us将C里的位右环移到A里djnz r6,re1 ;读下一位ret hbcd:mov a,temp6mov b,#10div abmov temp3,b ;将个位存到TEMP3mov temp2, ;将十位存到TEMP2mov temp1,a ;将百位存到TEMP1hb2:clr amov r3,amov r4,amov r5,amov r2,#10h hb3:mov a,r7rlc amov a,r6mov a,r5addc a,r5da am

11、ov a,r4addc a,r4mov a,r3addc a,r3djnz r2,hb3disp:mov dptr,#disptabmov r0,#4dp1: mov r1,#140loop: mov a,temp7 ;取出小数部分movc a,a+dptr ;取出相应的字型码mov p1,a ;显示在数码管上setb p3.0 ;数码管位选acall delay100 ;延时clr p3.0 ;清数码管位选mov a,temp3 ;取个位movc a,a+dptranl a,#7fh ;显示小数点mov p1,asetb p3.1取十位clr p3.1mov a,temp2setb p3.2

12、acall delay100clr p3.2取符号位或百位setb p3.3clr p3.3djnz r1,loop ;循环显示djnz r0,dp1delay100:mov r7,#8 0 ;djnz r7,$disptab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh,0bfh,0ffhend五 结果分析该课程设计我们完成了最基本的温度采集,如下图:总 结本系统采用采用单片机和数字温度转换器DS18B20 来实现,具有主机接口简单,结构灵活,调试方便等特点,实验结果表明这种测温系统转换速度快、精度高。这次实习不仅巩固了以前所学过

13、的知识,而且学到了很多在书本上没有的知识。通过这次课程设计,懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。虽然在课堂上我学了不少东西,但当付诸于实际时却摸不着头脑,所以我们不但要学习知识,还要在实践中运用知识,做到游刃有余。不管是在以后的工作或学习中,我都会全力以赴,积极思考,勇于探索,不断创新。在设计中遇到了很多编程方面的调试问题还没有解决,例如仍没有设计出报警系统、温度上下限的限制。我想在以后我会继续查找各方面资料、请教老师、与同学共同探讨,一起来解决这些问题。同时在以后的日子里我会慢慢改正在这次课程设计中所犯的错误、把学过的知识掌握的更加牢固。参考文献电子设计自动化技术基础马建国、孟宪元编 清华大学出版 2004年4月实用电子系统设计基础 姜威 2008年1月单片机系统的PROTEUS设计与仿真 张靖武 2007年4月

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

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