《单片机应用与仿真训练》设计报告-多机温度检测系统设计.doc_第1页
《单片机应用与仿真训练》设计报告-多机温度检测系统设计.doc_第2页
《单片机应用与仿真训练》设计报告-多机温度检测系统设计.doc_第3页
《单片机应用与仿真训练》设计报告-多机温度检测系统设计.doc_第4页
《单片机应用与仿真训练》设计报告-多机温度检测系统设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南理工大学本科课程设计报告河南理工大学单片机应用与仿真训练设计报告多机温度检测系统设计所在学院: 电气工程与自动化学院 2012年10月25日摘要本设计是以 AT89S52单片机为控制核心,利用新型一线制温度传感器 DS18B20测量温度值,实现环境温度的检测和报警。系统测温范围为0100,测量精度为 0.25。用户可以自定义报警上、下限,一旦温度超过极限值,单片机便启动声光报警。该系统精度高、测温范围广、报警及时,可广泛应用于基于单片机的测温报警场合。系统抗干扰性强、设计灵活方便。系统硬件电路包括传感器数据采集、串行通信、温度显示、模式选择、上下限报警主电路等。整个装置的控制核心是 AT89S52单片机。温度传感器 DS18B20采用外部电源供电,传感器输出引脚直接和单片机相连。电路支持模式选择功能,可以选择设定报警极限值或显示当前温度值。当被测温度越限时,报警主电路利用指示灯报警。通过按键可以任意设定报警温度上下限。采用2片单片机,组成多机温度检测系统;下位单片机采集温度,通过串行通信传送至上位单片机;上位单片机用数码管显示温度大小;基本范围0100;精度误差小于0.25;可以任意设定温度的上下限报警功能。关键字:AT89S52 DS18B20 数码管 测温报警 串行通信1 概述1.1 设计应用背景在现代社会,不管是在工农业生产还是在人们的日常生活中,对温度的测量及控制都扮演着很重要的角色。首先让我们了解一下多点温度检测系统在各个方面的应用领域:电力、电讯设备之过热故障预知检测,空调系统的温度检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械等设备温度过热测。温度检测系统应用十分广阔。单片机的产生,使计算机正式形成了通用计算机系统和嵌入式计算机系统的分支。温度检测系统的应用遍布社会生活的各个层面。1.2系统概述本设计由上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。通过上位机控制下位机进行现场温度采集。温度值由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。上位机采用的是单片机基于数字温度传感器DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便。总体上该系统分为两部分:下位机温度采集发送系统和上位机数码管显示报警系统。下位机温度采集发送系统由温度检测模块、下位机串行通信模块两部分组成,如图1-1所示温度测量系统的系统框图:温 度采 集 上位机串行通信模块下位机串行通信模块图1-1温度测量系统框图上位机数码管显示报警系统:上位机系统的主要功能是接收下位机发送过来的温度数据,与报警温度进行比较,判断是否发送报警信号,并同时直接驱动四位八段数码管进行显示。上位机系统由串口接收模块、处理控制模块、数码管显示模块和报警模块四部分组成,如图1-2上位机系统框图:数码管显示上位机主控模块上位机串口接收模块报警控制模块 图1-2上位机系统框图河南理工大学本科课程设计报告2 系统总体方案及硬件设计2.1 方案比较方案一:此方案采用PC机实现。它可在线编程,可在线仿真的功能,这让调试变得方便。且人机交互友好。但是PC机输出信号不能直接与DS18B20通信。需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。方案二:此方案采用两片AT89S52八位单片机实现。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。经过比较,采用两片AT89S52单片机可以出色完成各项设计要求,而且结构简单,程序调试方便,具有很好的应用前景。2.2总体方案该数字温度检测系统由电源电路、晶振电路、复位电路、下载电路、单片机、数字显示电路、温度测量电路、报警电路和控制电路组成。可以实现基本范围为0100的温度测量和任意设置温度上下限。当所设置的温度高于温度的上限或者低于温度所设置的下限时可通过发光二极管进行报警。系统总体方案图如下:主控制器 LED 显 示复 位 电 路报 警 显 示时 钟 电 路按 键 控 制 电 路温 度 传 感图2-2系统总体方案图2.3 AT89S52引脚图AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.4时钟晶振电路时钟晶振电路模块为单片机提供特定的时钟周期,以备单片机工作使用。单片机内部有一个用于构成振荡器的高增益反相放大器的输入与输出端分别是引脚XTAL1和XTAL2,在两引脚上外接时钟源即可构成时钟电路。其电路图如下图2-4所示:图2-4晶振电路2.5复位电路系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R1/R2分别采用1k、10k的阻值,电容采用电容值为10F的电解电容。具体连接电路如图2-5所示:图2-5复位电路2.6数码管显示设计中用到的数码管为:5461AS 四位共阴极二极管显示器 12345678 是阴极公共端,也是位码,ABCDEFG DP是段码。LED的驱动电路简单,使用方便,具有耗电少、成本低廉、配置简单灵活、安装方便、耐振动、使用寿命长等优点。LED数码管与单片机的接口按显示方法可分为静态显示和动态显示。静态显示就是显示驱动电路具有输出锁存功能,单片机将要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的数据。只要当前显示的数据没有变化,就无须理睬数码显示管。静态显示的数据稳定,占用的CPU时间少。静态显示中,每一个显示器都要占用单独具有琐存功能的I/O口,该接口用于笔画段字型代码。动态扫描方法是用其接口电路把所有显示器的8个笔画字段(ag和dp)同名端连在一起,而每一个显示器的公共极COM各自独立接受I/O线控制。CPU向字段输出端口输出字型码时,所有显示器接受相同的字型码,但究竟使那一位则由I/O线决定。动态扫描用分时的方法轮流控制每个显示器的COM端,使每个显示器轮流电亮。在轮流点亮过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定的显示数据。这里用的是动态扫描显示。如图2.6所示:图2.6四位数码管CPU向字段输出端口输出字型码时,所有显示器接收到相同的字型码,但究竟是使用哪个显示器,则取决于COM端,而这一端是由I/O控制的,由单片机程序设定何时显示哪一位。2.7设置温度上下限电路温度的上下限可以通过按键进行设置。温度上下限设置电路如图2-7所示: 图2.7设置温度上下限电路2.8报警电路电路采用的是二极管发光报警电路,当温度达到设定上下限时二极管发光报警。在图中,P1.0接二极管负极。当P1.0输出低电平“0”时,二极管D1导通,二极管D1获得足够大的电压而发光;当P1.0输出高电平“1”时,二极管D1不亮。另一个二极管的原理和它一样,二者分别控制上下限报警。电路图如下图2-8所示:图2-8 报警电路2.9温度检测电路2.9.1数字温度传感器DS18B20DS18B20一线式数字温度传感器,具有3引脚TO92小体积封装形式。测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出。其工作电源既可在远端引入,也可采用寄生电源方式产生。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口少,可节省大量的引线和逻辑电路。DS18B20的主要特性适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。温范围55125,在-10+85时精度为0.5。可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。DS18B20的外形 图1 DS18B20的外形 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如上图。 DS18B20引脚定义: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。图2: DS18B20内部结构图DS18B20有4个主要的数据部件:、光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。、DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。表1: DS18B20温度值格式表 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。表2: DS18B20温度数据表例如+125的数字输出为07D0H(0x7D),+25.0625的数字输出为0191H,-25.0625的数字输出为FE6FH,-55的数字输出为FC90H。、DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。、配置寄存器 该字节各位的意义如下:表3: 配置寄存器结构TMR1R011111低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)表4: 温度分辨率设置表R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms、高速暂存存储器高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。 单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S =1时,先将补码变为原码,再计算十进制值。表2是对应的一部分温度值。第九个字节是冗余检验字节。表5: DS18B20暂存寄存器分布寄存器内容字节地址温度值低位 (LS Byte)0温度值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当 DS18B20收到信号后等待1660微秒左右后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。表6: ROM指令表指 令约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合 ROM55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。搜索 ROM0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。跳过 ROM0CCH忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。表7: RAM指令表指 令约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器48H将RAM中第3 、4字节的内容复制到EEPROM中。重调EEPROM0B8H将EEPROM中内容恢复到RAM中的第3 、4字节。读供电方式0B4H读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“1”、DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。2.9.2 DS18B20温度检测DS18B20连接从机的P1.6对温度进行检测。DS18B20采用寄生电源供电方式,如下图所示。单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转化操作时,总线上必须有强的上拉,上拉开启时间最长为500ms。采用寄生电源供电方式时,VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。电路图如图2-82所示的温度检测电路:图2-9.2温度检测电路3 软件设计3.1 概述整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。3.2 主程序方案主程序调用了数码管显示程序、温度测试程序、单片机与单片机串行通讯、按键等程序。图3.2 -13.3 DS18B20的相处理子程序 3.3.1初始化子程序 DS18B20的使用必须遵循初始化到 ROM操作命令到存储器操作命令的规定协议。每完成一次测温,要重新进行初始化。单片机先发一个复位脉冲,保持低电平时间最少 480s,最多不能超过960s。然后,单片机释放总线,等待 DS18B20的应答。DS18B20在接收到复位脉冲后等待1560s发出应答脉冲,应答脉冲持续60240s。 3.3.2 写控制字子程序 当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间开始。写一位数据最少需要60s,两个数据位之间最少有 1s的间隔。I/O总线拉低后,DS18B20在15s后开始采样,如果线上是高电平,就写1,如果线上是低电平,就写0,写时间需要1575s,且在 2次独立的写时间之间至少需要 1s的恢复时间。 3.3.3读出温度子程序 读出温度子程序的主要功能是读出RAM的9字节。在读出时需进行CRC校验,校验有错时不进行温度数据的改写。读出温度子程序流程图如下。图3-33读出温度子程序流程图当主机把数据线从高电平拉到低电平时,读时间开始。读出温度子程序的主要功能是读出 RAM中的 9字节,在读出时需进行 CRC校验,校验有错时不进行温度数据的改写。读时间需1560 s,且在 2次独立的读时间之间至少需要 1 s的恢复时间。DSl8B20在读时间开始 15s后开始采样总线电平。3.3.4温度转换子程序 温度转化命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转化时间约为750ms。在本程序设计中,采用1s显示程序。温度转化子程序流程图如下所示。图3-34 温度转换命令子程序流程图3.4工作流程图3.4.1 上位机工作过程图 3-41 上位机工作流程图3.4.2 DS18B20工作过程图 3-42 DS18B20工作流程图本次通讯中,测控系统分位上位机和下位机之间的通信,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用半双工异步串行通信方式,通过RS232的RTS信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。3.4.3 下位机接收过程图 3-43下位机工作流程图下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。3.5上位机与从机通信软件设计上位机和从机之间属于多机通信。多机通信是利用单片机的串行口,实现单片机与另外多个单片机的异步串行通信。在这种方式下,有一台主机和多台从机,主机可以向各个从机或指定的从机发送信息,各个从机发送的信息只能被主机接收,从机之间不能进行通信。图3-5单片机之间的多级通信3.5.1 多机通信软件原理单片机的多机串行通信必须使用串行口的模式2或3。在多级通信中,为了保证主机能够正确识别所选择的从机并进信通信,主从机需要正确的设置和判断多机通信控制位SM2和发送接收的第九位数据,即TB8、RB8。从机主要依靠SM2的设置实现对主机的响应。当从机的SM2=1时该从机只接收地址帧,RB8=1,对数据帧RB8=0不进行处理;当从机的SM2=0时,该从机接收主机发送的所有信息。主机在发送信息时,依靠TB8标志位来区分发送的是地址还是数据,TB8=1时,发送的是地址信号;当TB8=0时发送的是数据信号。3.5.2 主机数据发送程序主机和从机均采用串行接口工作模式3,外接11.0592MHZ的晶振,波特率设置为4800bit/s,数据接收进入中断程序。图3-52主机通信程序流程图3.5.3 从机数据接收程序从机采用中断程序,当进入中断程序后把主机发送的地址信息与本身的地址数据进行比较如果相符则发送温度数据。图3-53从机通程序信流程图4 Proteus软件仿真4.1仿真初始按接线图完成硬件电路如下图图4-1初始电路4.2系统达到设定值报警、温度到达设定报警上限时相应的二极管点亮 图1超上限时二极管报警 图2所设置温度上限值(左) 、温度到达设定报警下限时相应的二极管点亮 图1下限时二极管报警 图2所设置温度下限值(右) 5课程设计体会通过此次课程设计,我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。让我明白纸上得来总觉浅,须知此事要躬行的深刻内涵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在自己的不断调试中得到解决。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。此课程设计,我感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。参考文献1余发山,王福忠 单片机原理及应用技术 徐州: 中国矿业大学出版社, 20082张靖武.单片机原理应用与PROTEUS仿真. 电子工业出版社,20093郭天祥 新概念51单片机C语言教程 北京: 电子工业出版社, 20094戴胜华,蒋大明.单片机原理与应用.北京:清华大学出版社,20055张毅刚.单片机原理及应用.高等教育出版社,20046马忠梅.单片机的C语言应用程序设计(第三版).北京航空航天大学出版社,2004附录附1:源程序代码一、上位机部分上位机主函数代码void main() char i,alarm_tem4=0; float wen_temp; uart_init(); /串行口初始化while(1) for(i=0;i(float)wendu4)/超上限 红灯亮 L1=0; else L1=1; if(wen_temp0;i-) display(i-1,wendu3-i); delay(200); else /显示上下限 alarm_tem0=wendu4/10%10; /上限十位 alarm_tem1=wendu4%10; /上限各位, alarm_tem2=wendu3/10%10; /下限十位 alarm_tem3=wendu3%10; /下限个位, for(i=4;i0;i-) display(i-1,alarm_tem4-i); /yougaidong delay(100); 串口初始化子函数void uart_init(void) TMOD=0x20;TH1=0xf3;TL1=0xf3;TR1=1;SM0=0;SM1=1;REN=1;数码管显示子函数void display(char wei,char duan) /用到三位数码管:时分和小数点 /数码管左右对应30 P2=0xf0; P0=0X00; /共阴 delay(2); if(wei=1)&(wendu5=0) /是显示当前温度,有小数点 P0=dmduan|0x80; else P0=dmduan; delay(5); P2=wmwei; delay(5); 二、下位机部分主函数void main()float convert;unsigned char temp; /精度为10位,即0.25Cunsigned char wendu6=0,0,0,0,0,0;unsigned char TH=22,TL=15,RS=0x3f; uart_init();/串口初始化while(1) convert=rd_temperature(TL,TH,RS);/温度采集 temp=(int)convert; wendu0=temp/10%10;/十位 wendu1=temp%10;/个位 convert*=10.0; wendu2=(int)convert%10;/小数位 wendu3=TL; wendu4=TH; wendu5=flag; /flag=1;显示设定上、下限 uart_tx(wendu,6); delay(100); if(k1=0) /显示切换 ok delay(10); if(k1=0) flag=flag;/要传送到主机显示/wendu5=flag;/判别显示设定值还是温度值while(!k1) ;/等待松手 if(k2=0) /切换 ,按一次 TH;再一次TL delay(10); if(k2=0) flag1=flag1;while(!k2); if(k3=0) /加 delay(10); if(k3=0) if(flag1) /flag1=1;表明对上限的操作 if(TH100) TH+; else if(TLTL) /上限必须大于下限 TH-; else if(TL0) TL-; while(!k4); DS18B20延时void ds_delay(char i) for(;i0;i-) _nop_(); / while(i-); / _nop_(); /若换成此延时就不工作了,适合仿真! DS18B20相关函数/DS18B20初始化函数 ok的void Init_DS18B20(void)bit initflag = 1;while(initflag)DQ = 1;DQ = 0;ds_delay(48); /延时500us,保证复位信号!DQ = 1; /释放单线ds_delay(8); /读18b20状态initflag=DQ;/如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论