版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目:室内温度检测系统一 实验要求:用温度传感器DS18B20实现能检测室内环境温度(-10oC40。,要求用2位或多位LED 显示;要求能有报警功能,当温度超过报警上限时要能报警,报警上限要能通过键盘设定;自己制作电路板。 (可考虑留有上传温度数据的接口)二 设计思想和说明:室内温度检测系统是由 AT89C51 单片机和温度传感器 DS18B20 和实现对温度检测。由 DS18B20 将测得的温度通过 DQ 端传给单片机,再通过单片机在 LED 上显示,完成测温功三器件清单器件名称数量 TOC o 1-5 h z AT89C51 单片机1温度传感器 DS18B2014 位 LED 数码显示器
2、1晶振 11.0592 Mhz174LS2451蜂鸣器1三极管 2N39045按钮533 pf 电容210 uf 电容14.7k 电阻710k 电阻50.1k 电阻11 k 电阻45V 电源1四硬件原理图0打四硬件原理图0打R45 卜10k丿2A0B0A1B1A2B2A3B3A4B4A5B5A6B6A7B7CEPO.O/ADtP0.1/AD-PO.2/AD2P0.3/AD:P0.4/AD4PO.5/AD5PO.6/AD6PO.7/AD7P2.O/A8P2.1/A9P2.2/A1tP2.3/A1- P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15P3.2/INT(P3.3/
3、INTP3.4/T0P3.5/T1 :3 6/WRP3.7/RD室内温度检测系统硬件原理图五硬件原理图与其软件配合介绍DS18B20的DQ端与单片机的P2.0 口相连,进行数据传送。DS1882O内部结构主要由 4部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄 存器。根据 DSl8820 的通信协议,主机控制 DSl8820 完成温度转换必须经过 3 个步骤:每 一次读写之前都要对其进行复位,复位成功后发送 1 条 ROM 指令,最后发送 RAM 指令, 这样才能对DS18820进行预定的操作。复位要求主CPU将数据线下拉500戶,然后释放, DS18820收
4、到信号后等待166oys左右,后发出6o240/的存在低脉冲,主CPU收到 此信号表示复位成功。由于 DSl8820 采用的是单线进行控制与读取数据,因此对操作的时 序要求非常严格,否则由于时序不匹配,将无法完成对器件的正确操作。P0 口与 4位 LED 显示的“字型码”端相连, P1 口的低四位与 4位 LED 显示的“位” 选择相连,实现将从 DS18B20 中读取的数据显示出来。 P1 口的高四位,分别接四个按钮,实现对温度的设置。P1.4接“温度设置”按钮,P1.5接“开始测温”按钮,P1.6接“增加 温度”按钮, P1.7 接“减小温度”按钮。 P3.4 口接警铃,当温度高于设定温度
5、时,可实现 报警功能。每次用P1 口读入数据时,都要先置1,而后读入数据,如:SETB P1.4相关代码如下:SET_TEMPER相关代码如下:SET_TEMPERLCALL INIT_18B20LCALL GET_TEMPERLCALL CHANGE16LCALL DISPLAYMOV DPTR,#NUMTABMOVC A,A+DPTR六程序流程图;对 DS18B20 初始化;获取温度数据;将得到的 16 进制温度值转换为 10 进制数;采用查表法显示温度度上限Q始测温?否修改温是否要是否开Q设温度上限初值设置温度上限开始测温结束;将得到的温度显示出来;采用查表法显示温度度上限Q始测温?否修
6、改温是否要是否开Q设温度上限初值设置温度上限开始测温结束温度上限 初值设置开始开始初始化DS18B20向 DS18B20 送 OCCH, 命令跳过ROM区向DS18B20送温度转 换命令44H,等750ms 复位读取温度值送TEMPER_H和TEMPER_L两单元中结束读温度初始化 DS18B20取 TEMPER_L 和 TEMPER_H 两 单元中的数据,将 TEMPER_H 的低半字节和TEMPER_L的高 半字节整合再一起,获得温度值 的整数部分将16进制温度值转换为十进 制数结束写 DS18B20获得温度整数部分结果送显示MOV66H,#26CLRMOV66H,#26CLRCMOVP3
7、.4,CMOVR3,#0F0HWAIT1:MOV60H,66HLCALLCHANGE16LCALLDISPLAYDJNZR3,WAIT1CLRP1.4CLRP1.5MOV SP,#80HWAIT4:七源程序清单部分内存分配声明TEMPER_LEQU31H;用于保存读出温度的低字节TEMPER_HEQU30H;用于保存读出温度的高字节DATBITP2.2; DS18B20 数据线设置上限温度ORG 0000H;66H 为温度初值存储地址(温度上限);欲设温度上限为 26 度;关闭蜂鸣器;延时;初始温度 送显示,60H为16进制数暂存地址CLRCSETB P1.4SETB P1.5NOPJNB P
8、1.4,SET_TEMPER ;判断是否需要设置温度JNB P1.5,STARTAJMP WAIT4设置温度子程序SET_TEMPER:CLRP1.6CLRP1.7CLRP1.5NOPNOPSETBP1.6SETBP1.7SETBP1.5NOPSET_1:JNBP1.6,UP1;温度值加 1JNBP1.7,DOWN1;温度值减 1JNBP1.5,START;开始测温AJMP SET_1 加 温度子程序UP1:MOVA,66HADDCA,#01HMOV66H,AMOVR3,#0FFHWAIT2:MOV60H,66HLCALLCHANGE16_0LCALLDISPLAYDJNZR3,WAIT2LJ
9、MPSET_TEMPER9 减 温度子程序DOWN1:MOV A,66HSUBB A,#01HMOV 66H,AMOV R3,#0FFHWAIT3:MOV 60H,66HLCALL CHANGE16_0LCALL DISPLAYDJNZLJMPR3,WAIT3SET_TEMPER9START:主函数开始-LCALLGET_TEMPER;调用读温度子程序LCALLCHANGE16;将读出的 2 字节温度整合,并转换为压缩 BCD 码LCALLDISPLAY;显示温度LJMPSTART;DS18B20 的温度转换子程序GET_TEMPER:LCALLINIT_18B20TSS:MOVA,#0CCH
10、;跳过 ROM 匹配LCALLWRITE_18B20MOVA,#44H;发出温度转换命令LCALLWRITE_18B20LCALLDISPLAY;用显示温度(持续 1s 左右)来等待 AD 转换结束;12 位的话要转换 750msLCALLINIT_18B20;准备读温度前先初始化MOVA,#0CCH;跳过 ROM 匹配LCALLWRITE_18B20MOVA,#0BEH;发出读温度命令LCALL WRITE_18B20LCALL READ_18B20RETDS18B20 初始化程序INIT_18B20:SETBDATNOPCLRDATMOVR2,#250;主机发出延时 500 微秒的复位低脉
11、冲DJNZR2,$SETBDAT;然后拉高数据线MOVR2,#30DJNZR2,$;延时 240usJNBDAT,INIT1;数据变高,初始化成功LJMPINIT_18B20INIT1:MOVR2,#120DJNZR2,$JBDAT,INIT2LJMP INIT_18B20INIT2:MOV R2,#240DJNZ R2,$RET;写 DS18B20 的子程序(有具体的时序要求)WRITE_18B20: MOV R2,#8 ;一共 8 位数据CLR CWR0:CLR DATMOV R3,#5DJNZ R3,$RRC AMOV DAT,CMOV R3,#21DJNZ R3,$SETB DATNO
12、PDJNZ R2,WR0SETB DATRET; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18B20:MOVR4,#2;将温度高位和低位从 DS18B20 中读出MOVR1,#TEMPER_L;低位存入 31H(TEMPER_L)RE0:MOV R2,#8RE1:CLR CSETB DATNOPNOPCLR DATNOPNOPSETB DATMOV R3,#4DJNZ R3,$MOV C,DATRRC AMOV R3,#30DJNZ DJNZ MOV DECDJNZ RETR3,$R2,RE1R1,AR1 ;高位存入 30H(TEMPER_H)R4,RE0;整
13、合读出的两字节温度(关于DS18B20读出的2字节温度格式请参考资料)CHANGE16:CLRCMOVP3.4,CMOVR0,#65HMOVA,TEMPER_LSWAPAMOVR0,AMOVA,TEMPER_HSWAPAXCHDA,R0MOV60H,A;获得整数部分(1 字节)MOVA,66HCLRCSUBBA,60H;判断实际温度是否高于温度上限JNB ACC.7,CHANGE16_0SETB CMOV P3.4,C; 将得到的 16 进制温度转化为 10 进制数CHANGE16_0:MOVA,60HJBACC.7,FUSHU;判断是否为负数MOV64H,#00HMOVB,#100;将 16
14、 进制数转换为 10 进制数DIVABMOV63H,AMOVA,BMOVB,#10DIVABMOV62H,AMOVA,BMOV61H,AAJMPBACK1FUSHU:MOV64H,#0AHMOVA,60HCPLAINCAMOV60H,AMOVB,#100DIVABMOV63H,AMOVA,BMOVB,#10DIVABMOV62H,AMOVA,BMOV61H,ABACK1:RET9DS18B20 的温度转换子程序DISPLAY:MOVR0,#61H;61H 为暂存地址MOVR1,#04H;4 位数MOVR2,#00000001B;从低位开始显示LOOP:MOVA,#0FFHMOVP0,AMOVA,R0MOVDPTR,#NUMTAB;查表MOVCA,A+DPTRCPLAMOVP0,A;送字型码MO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上海市徐汇区工会人员招聘笔试参考试题及答案详解
- 2026-2031年中国化成箔行业市场调查与发展前景预测研究报告
- 2026年秋部编版六年级语文开学第一课 教学课件
- 财务管理岗位考核试题
- 工程管理考试试题及答案获取
- 新手课后考核题目和答案
- 植物生理作用考卷题目与答案
- 2026中国药品市场细分咨询服务行业市场现状供需分析及投资评估规划分析研究报告
- 2026中国新材料产业技术创新及市场前景预测报告
- 健身房岗位招聘试题及答案解析
- 园林绿化修剪培训课件
- 人教版七年级数学下册尖子生培优必刷题专题5.8平行线的性质与判定大题专项提升训练(基础篇重难点培优30题)(原卷版+解析)
- 山东省广播电视有线网络安全播出规章制度样本
- 股骨颈骨折闭合复位空心钉内固定术
- 无锡旅游景点攻略惠山古镇
- 护士在合理使用抗菌药物中的作用
- 建筑工程施工人员团体意外伤害保险条款(2022版A款)
- 基于pvsyst的光伏发电系统工程设计
- 仪表技术员个人简历表格
- 质量意识与质量基础知识
- 工程量清单计算规则与计价规则 高墩桥梁施工(公路工程计量与支付)
评论
0/150
提交评论