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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

水温控制Word格式.docx

1、 10 +85 范围内的测温准确度为05 。4. 通过编程可实现9l2位的数字读数方式,可在至多750 ms内将温度转换成12 位的数字,测温分辨率可达00625 。5.独特的单总线接口方式,与微处理器连接时仅需要一条线即可实现与微处理器双向通讯。DS18B20的内部结构DS18B20内部功能模块如图2所示,主要由4部分组成:64位光刻R0M(图3)、温度传感器、非易失性的温度报警触发器TH和TL、配置寄存器。R0M 中的64位序列号是出厂前被光刻好的,他可以看作是该DSISB20的地址序列码,每个DSI8B20的64位序列号均不相同。高低温报警触发器TH 和TL,配置寄存器均由一个字节的E2

2、PROM组成,使用一个存储器功能命令可对 TH,TL或配置寄存器写入。配置寄存器中R1,R0决定温度转换的精度位数:R1R000,9位精度,最大转换时间为93.75 ms;R1R0 = 01,10位精度,最大转换时间为187.5 ms;R1R0 = 10,11位精度,最大转换时间为375 ms;R1R0 =11,12位精度,最大转换时间为750 ms;未编程时默认为12位精度。本系统采用的也是12位的精度。DS18B20的内存结构DSI8B20温度传感器的内部存储器包括一个高速暂存RAM (便笺式的内部存储器)和一个非易失性的可电擦除的EEPROM,后者存放高温和低温触发器TH,TL和结构寄存

3、器。便笺存储器包含了9个连续字节(08),前两个字节是测得的温度信息(图4),字节0的内容是温度的低8位,字节1是温度的高8位,字节2是TH(温度上限报警),字节3是TL(温度下限报警),字节4是配置寄存器(图5),用于确定输出分辨率9到12位。第5、6、7个字节是预留寄存器,用于内部计算。字节8是冗余检验字节,校验前面所有8个字节的CRC码,可用来保证通信正确。 DS18B20的测温功能当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以

4、0062 5LSB形式表示。温度值格式如图4所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。图4下面的表是对应的一部分温度值。DSI8B20完成温度转换后,就把测得的温度值与 TH做比较,若TTH或T RoM操作命令 - 存储器操作命令- 处理数据1 初始化 单总线上的所有处理均从初始化开始 2 ROM操作品令 总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如 指令代码 Read ROM(读ROM) 33H Match ROM(匹配ROM) 55H Skip ROM(跳过ROMCCH

5、Search ROM(搜索ROM) F0H Alarm search(告警搜索)ECH 3 存储器操作命令 指令 代码 Write Scratchpad(写暂存存储器) 4EH Read Scratchpad(读暂存存储器) BEH Copy Scratchpad(复制暂存存储器) 48H Convert Temperature(温度变换) 44H Recall EPROM(重新调出)B8H Read Power supply(读电源) B4H温度传感器与单片机通讯时序2.温度转换算法及分析由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高5位

6、是用来保存温度的正负(标志为S的bit11bit15),高字节(MS Byte)低3位和低字节来保存温度值(bit0 bit10)。其中低字节(LS Byte)的低4位来保存温度的小数位(bit0 bit 3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机

7、的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位,百位的BCD码存入RAM中。由于百位没有用,默认情况是置为0A,在显示屏上没有任何显示。温度算法核心代码DATA_DEAL:MOVA,TEMPERATURE_H ;TEMPERATURE_H存放的是DS18B20转换后的高8位的值(上图的MS Byte)ANLA,#80H ;判温度是否零下JZTEMPC1A为0,说明是正数,跳往TEMPC1,如果是负数,则对低8为进行补码处理CLRCA,TEMPERATURE_L;为负数,对低8 位(上图的LS Byte)求补CPLA取反加1ADDA,#01HTEM

8、PERATURE_L,A取补码后存回TEMPERATURE_L,此时TEMPERATURE_L里面的值就可以表示温度了 MOVA,TEMPERATURE_HAADDCA,#00H高位TEMPERATURE_H取反,加上从低位TEMPERATURE_L进来的位TEMPERATURE_H,A写回TEMPERATURE_HTEMPERATURE_HC,#0BHSJMPTEMPC11TEMPC1:TEMPERATURE_HC,#0AHTEMPC11:A,TEMPERATURE_HCSWAPTEMPERATURE_HC,AA,TEMPERATURE_LANLA,#0FH取A低4位(小数位,单位是0.06

9、25),得出来的数要乘以0.0625,通过查表来算出值DPTR,#TEMPDOTTABMOVCA,A+DPTR查表TEMPERATURE_LC,ATEMPERATURE_LC的低四位保存 小数部分 BCDDIS_BUF_X,A小数位的BCD码送入显示buffer中整数部分A,#0F0H得到个位单个数值SWAP后就得到个位真正的个位A,#0FHORLTEMPERATURE_ZH,A组合后的值存入TEMPERATURE_ZHLCALLHtoB转换HEx值成为BCD码TEMPERATURE_L目前存入的是十位和个位的BCD编码A,#0F0HA,TEMPERATURE_HCTEMPERATURE_HC

10、 低4位 存放 十位数 BCDTEMPERATURE_LC高4位 存放 个位数 BCDA,TEMPERATURE_LCTEMPERATURE_LC,AA,R7TEMPC12R7,ATEMPERATURE_HC高4位 存放 百位数 BCDTEMPC12:RET小数部分码表TEMPDOTTAB:DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H结果温度值的BCD码存放到TEMPERATURE_HC(百位和十位),TEMPERATURE_LC(个位和小数位)中七硬件设计说明1系统总体电路图2各个模块电路图输入系统1键盘

11、模块我们用的下面四个独立键盘中的三个,分别是:K2,K3,K4。温度测量模块DS18B20通过P3.3口和AT89S52进行通讯。输出系统继电器模块下图是一个蜂鸣器和一个继电器的图,我们只用到了继电器的图,继电器和单片机的P1.3口进行通讯。显示模块 该显示模块的动态显示数码管,我们用到前面四个数码管,P0口是送字符的,P2口是用来位选数码管的。芯片系统本系统采用的是AT89S52芯片。下面是它的引脚图。八软件设计说明本系统采用的是循环查询方式,来显示和控制温度的。1总模块的流程图2各个模块的流程图读取温度DS18B20模块的流程键盘扫描处理流程九操作指引按键功能 Enter P1.5(k2)

12、2. UpP1.6(k3)3. DownP1.7(k4)显示温度 未插DS18B20时,数码管显示错误888.8. 插入DS18B20是,数码管显示当前温度XX.X设定温度1按下Enter,数码管温度显示停止,显示的数字变的比以前亮。2这时可以按Up和Down来调节当前温度。3调节好后,按Enter退出。这时数字变的又暗了,数码管继续显示当前温度继电器随着设定的温度,依据情况跳变。十参考文献1. 单片机原理与应用技术 .江力 主编 .清华大学出版社 .20062. 微型计算机接口技术 . 王兆月等 编著. 机械工业出版社 .20063. 数字电子技术 . 江晓安等 编著. 西安电子科技大学出版

13、社 .19934. ME300B说明书 .伟纳电子 编著. 伟纳电子出版 .20065. DS18B20官方英文文档 . DS18B20官方英文站点下载 .程序源代码 TEMPERATURE_L DATA 31H ;DS18B20低8位Buffer TEMPERATURE_H DATA 30H ;DS18B20高8位Buffer TEMPERATURE_HC DATA 32H ;计算后的百位和十位的BCD码存放BUFFER TEMPERATURE_LC DATA 33H ;计算后的个位和小数位的BCD码存放BUFFER TEMPERATURE_ZH DATA 34H ;计算后十位和个位HEX码

14、的存放BUFFER DIS_BUF_X DATA 35H ;数码管小数位Buffer DIS_BUF_G DATA 36H ;数码管个位Buffer DIS_BUF_S DATA 37H ;数码管十位Buffer DIS_BUF_B DATA 38H ;数码管百位Buffer KEY_BUF_G DATA 39H ;键盘输入后,的个位值 KEY_BUF_S DATA 49H ;键盘输入后,的十位值 KEY_BUF_B DATA 41H ;键盘输入后,的百位值 K_UP EQU P1.5 ;上调按钮 K_DOWN EQU P1.6 ;下调按钮 K_ENTER EQU P1.7 ;输入数据确认按钮

15、 P_DS18B20 EQU P3.3 ;读取DS18B20的输入端口 P_SWITCH EQU P1.3 ;继电器控制端口,1风扇,0电炉 FLAG EQU 20H.0 ;标志位,确定是否存在DS18B20 ENTER_FLAG EQU 20H.1 ;键盘输入的标志位,为0说明键盘正在输入,为1说明键盘输入退出;程序开始执行 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,#60H ;初始化 MOV KEY_BUF_G,#00H ;由于KEY_BUF是由用户输入的,所以先赋值初始化 MOV KEY_BUF_S,#00H MOV KEY_BUF_B,#00H

16、NEXT: LCALL READ_TEMP ;调用读温度子程序 JB FLAG,NORMAL ;判断是否有DS18B20的存在 CALL ERR ;不存在时显示错误信息AJMP NEXTNORMAL: LCALL DATA_DEA ;处理从DS18B20得到的数据 LCALL SET_DIS_BUF ;赋值给DIS_BUF_X,G,S,B LCALL DISPLAY ;调用数码管显示子程序 LCALL SCAN_KEY ;扫描键盘 LCALL SWITCH ;处理继电器 AJMP NEXT程序名称:ERR功能:程序出错处理,显示四个8,即8888入口参数:无出口参数:DIS_BUF_X,DIS

17、_BUF_G, DIS_BUF_S, DIS_BUF_BERR: MOV DIS_BUF_X,#08H ;如果没有找到DS18B20,那么就显示错误,错误显示为888 MOV DIS_BUF_G,#08H MOV DIS_BUF_S,#08H MOV DIS_BUF_B,#08H LCALL DISPLAY RETDATA_DEAL处理采集后的的数据TEMPERATURE_LDIS_BUF_G, DIS_BUF_S, DIS_BUF_B MOV A,TEMPERATURE_H ; ANL A,#80H JZ TEMPC1 ; CLR C MOV A,TEMPERATURE_L ;二进制数求补(

18、双字节) CPL A ; ADD A,#01H MOV TEMPERATURE_L,A ;取补码后存回TEMPERATURE_L,此时TEMPERATURE_L里面的值就可以表示温度了,不过还要继续处理一下。 MOV A,TEMPERATURE_H CPL A ADDC A,#00H ; MOV TEMPERATURE_H,A ; MOV TEMPERATURE_HC,#0BH SJMP TEMPC11 MOV TEMPERATURE_HC,#0AH MOV A,TEMPERATURE_HC SWAP A MOV TEMPERATURE_HC,A MOV A,TEMPERATURE_L ANL

19、 A,#0FH ; MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR ; MOV TEMPERATURE_LC,A ;TEMPERATURE_LC LOW=小数部分 BCD MOV DIS_BUF_X,A ; ANL A,#0F0H ;得到个位单个数值 SWAP A ; MOV TEMPERATURE_L,A ANL A,#0FH ORL A,TEMPERATURE_L MOV TEMPERATURE_ZH,A ; LCALL HtoB ; ANL A,#0F0H ORL A,TEMPERATURE_HC ;TEMPERATURE_HC LOW位 = 十位数 BCDTEMP

20、ERATURE_LC HI位 = 个位数 BCD ORL A,TEMPERATURE_LC MOV TEMPERATURE_LC,A MOV A,R7 JZ TEMPC12 MOV R7,A MOV A,TEMPERATURE_HC ;TEMPERATURE_HC HI = 百位数 BCD ORL A,R7 小数部分码表 DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H0.0625-00H0.0625*2 = 0.125-01H0.0625*3 = 0.1875-0.0625*4 = 0.25-02H0.062

21、5*5 = 0.3125-03H以此类推.HtoB十六进制转 BCDR7HtoB: MOV B,#064H ;100 DIV AB ;a/100 MOV R7,A ; MOV A,#0AH XCH A,B DIV AB ORL A,BINIT_TEMP初始化DS18B20,确定DS18B20是否是存在的FLAGINIT_TEMP: SETB P_DS18B20 NOP CLR P_DS18B20 ;主机发出延时537微秒的复位低脉冲 MOV R0,#6BH MOV R1,#04HTSR1: DJNZ R0,$ MOV 40,#6BH DJNZ R1,TSR1 SETB P_DS18B20 ;然后拉高数据线,释放总线进入接受状态 NO

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

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