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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

DS18B20实现测温功能Word下载.docx

1、33 pf电容 210 uf电容 14.7k电阻 710k电阻 50.1k电阻 11 k电阻 45V电源 1四硬件原理图 室内温度检测系统硬件原理图五硬件原理图与其软件配合介绍DS18B20的DQ端与单片机的P2.0口相连,进行数据传送。DSl8820内部结构主要由4部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。根据DSl8820的通信协议,主机控制DSl8820完成温度转换必须经过3个步骤:每一次读写之前都要对其进行复位,复位成功后发送1条ROM指令,最后发送RAM指令,这样才能对DSl8820进行预定的操作。复位要求主CPU将数据线下拉500s,然后

2、释放,DSl8820收到信号后等待1660s左右,后发出60240s的存在低脉冲,主CPU收到此信号表示复位成功。由于DSl8820采用的是单线进行控制与读取数据,因此对操作的时序要求非常严格,否则由于时序不匹配,将无法完成对器件的正确操作。P0口与4位LED显示的“字型码”端相连,P1口的低四位与4位LED显示的“位”选择相连,实现将从DS18B20中读取的数据显示出来。P1口的高四位,分别接四个按钮,实现对温度的设置。P1.4接“温度设置”按钮,P1.5接“开始测温”按钮,P1.6接“增加温度”按钮,P1.7接“减小温度”按钮。P3.4口接警铃,当温度高于设定温度时,可实现报警功能。每次用

3、P1口读入数据时,都要先置1,而后读入数据,如:SETB P1.4 相关代码如下:SET_TEMPER ;设置温度上限LCALL INIT_18B20 ;对DS18B20初始化LCALL GET_TEMPER ;获取温度数据 LCALL CHANGE16 ;将得到的16进制温度值转换为10进制数 LCALL DISPLAY ;将得到的温度显示出来MOV DPTR,#NUMTAB ;采用查表法显示温度 MOVC A,A+DPTR六程序流程图 温度上限 初值设置 读温度 初始化DS18B20 写DS18B20 获得温度整数部分 结果送显示七源程序清单;-部分内存分配声明-TEMPER_L EQU

4、31H ;用于保存读出温度的低字节TEMPER_H EQU 30H ;用于保存读出温度的高字节DAT BIT P2.2 ;DS18B20数据线-设置上限温度-ORG 0000H MOV SP,#80H MOV 66H,#26 ;66H为温度初值存储地址(温度上限) CLR C ;欲设温度上限为26度 MOV P3.4,C ;关闭蜂鸣器 MOV R3,#0F0H ;延时WAIT1:MOV 60H,66H ;初始温度 送显示,60H为16进制数暂存地址 LCALL CHANGE16_0 LCALL DISPLAY DJNZ R3,WAIT1 CLR P1.4 CLR P1.5WAIT4:CLR C

5、 SETB P1.4 SETB P1.5 NOP JNB P1.4,SET_TEMPER ;判断是否需要设置温度 JNB P1.5,START AJMP WAIT4-设置温度子程序-SET_TEMPER: CLR P1.6 CLR P1.7 SETB P1.6 SETB P1.7SET_1: JNB P1.6,UP1 ;温度值加1 JNB P1.7,DOWN1 ;温度值减1 JNB P1.5,START ;开始测温 AJMP SET_1-加 温度子程序-UP1:MOV A,66H ADDC A,#01H MOV 66H,A MOV R3,#0FFHWAIT2:MOV 60H,66H DJNZ

6、R3,WAIT2 LJMP SET_TEMPER-减 温度子程序-DOWN1: MOV A,66H SUBB A,#01HWAIT3: DJNZ R3,WAIT3-主函数开始-START: LCALL GET_TEMPER ;调用读温度子程序 LCALL CHANGE16 ;将读出的2字节温度整合,并转换为压缩BCD码 LCALL DISPLAY ;显示温度 LJMP START-DS18B20的温度转换子程序-GET_TEMPER: LCALL INIT_18B20TSS:MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_18B20 MOV A,#44H ;发出温度转换命令L

7、CALL DISPLAY ;用显示温度(持续1s左右)来等待AD转换结束 ;12位的话要转换750msLCALL INIT_18B20 ;准备读温度前先初始化 MOV A,#0CCH ; MOV A,#0BEH ;发出读温度命令 LCALL READ_18B20 RET-DS18B20初始化程序-INIT_18B20: SETB DAT CLR DAT MOV R2,#250 ;主机发出延时500微秒的复位低脉冲 DJNZ R2,$ SETB DAT ;然后拉高数据线 MOV R2,#30 DJNZ R2,$ ;延时240us JNB DAT,INIT1 ;数据变高,初始化成功 LJMP IN

8、IT_18B20 INIT1:MOV R2,#120 DJNZ R2,$ JB DAT,INIT2 LJMP INIT_18B20INIT2:MOV R2,#240-写DS18B20的子程序(有具体的时序要求)-WRITE_18B20: MOV R2,#8 ;一共8位数据 CLR CWR0:CLR DAT MOV R3,#5 DJNZ R3,$ RRC A MOV DAT,C MOV R3,#21 DJNZ R2,WR0-读DS18B20的程序,从DS18B20中读出两个字节的温度数据-READ_18B20: MOV R4,#2 ;将温度高位和低位从DS18B20中读出 MOV R1,#TEM

9、PER_L ;低位存入31H(TEMPER_L)RE0:MOV R2,#8RE1:CLR C NOP MOV R3,#4 MOV C,DAT MOV R3,#30 DJNZ R2,RE1 MOV R1,A DEC R1 ;高位存入30H(TEMPER_H) DJNZ R4,RE0-整合读出的两字节温度(关于DS18B20读出的2字节温度格式请参考资料)-CHANGE16: MOV P3.4,C MOV R0,#65H MOV A,TEMPER_L SWAP A MOV R0,A MOV A,TEMPER_H XCHD A,R0 MOV 60H,A ;获得整数部分(1字节) SUBB A,60H ;判断实际温度是否高于温度上限 JNB ACC.7,CHANGE16_0 SETB C-将得到的16进制温度转化为10进制数-CHANGE16_0: MOV A,60H JB ACC.7,FUSHU ;判断是否为负数 MOV 64H,#00H MOV B,#100 ;将16进制数转换为10进制数 DIV AB MOV 63H,A MOV A,B MOV B,#10 MOV 62H,A MOV 61H,A AJMP BACK1FUSHU:MOV 64H,#0AH CPL A INC A MOV 60H,A MOV B,#100

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

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