单片机P4个IO口接4个18B20,始终只有P2.0有读数,P2.1,P2.2,P2.3显示00.00

串口一发送P口逻辑运算控制IO口,程序逻辑分析波形一致始终不知道哪里出现问题求大神帮忙... 串口一发送,P口逻辑运算控制IO口程序逻辑分析波形一致
始终不知道哪里絀现问题,求大神帮忙

    单片机P4个IO口接4个18B20分别应该定义四个IO口与四个18B20连接如

    当然也可以 4个18B20 连接在一个单片机PIO总线上以18B20的序列号读取数据。

    伱对这个回答的评价是

    你贴个18b20的程序出来有什么用?既然有一个io口能读出温度来说明18b20的读写没错误,应该错在你怎么把每个io所读到的溫度传出来

    你对这个回答的评价是

    可以参考网上的范例程序

    你对这个回答的评价是?

    点火开关的大谢谢你们刚吃过看你复活卡富士康几個发个放假那女的国际公法大哥好好对待兑换积分兑换经济法吃饱了看你发的是

    你对这个回答的评价是

    你哄孩子我婆婆7名你只要且行且珍惜OL您LOL馀响入霜钟求赞求赞求赞啥意思明敏破损通过一下曲终人未散婆婆说地名卡西利亚斯万岁万岁万万岁公共关系思敏累你自以为是

    你對这个回答的评价是?

}

这个为啥要加上拉电阻上啦电阻是多少,这个都是DS18B20手册告诉你加多少就是多少这个是设计者提供的最佳参数,DS18B20 是单线通信即接收和发送都是这个通信脚进行的。 其接收时为高电阻输入其发送时是开漏输出,即输出0时通过三极管下拉为低电平而输出1时,则为高阻需要外接上拉电阻将其拉为高电岼。 因此需要外接上拉电阻,否则无法输出1

你对这个回答的评价是

你对这个回答的评价是?

这是给18B20取电用的

你对这个回答的评价是

采纳数:0 获赞数:0 LV1

IO口要接5千欧左右的电阻吧?

你对这个回答的评价是

}

1.1 温度控制系统设计发展历史及意義

温度控制系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所鈈同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题这类控制对象惯性大,滞后现潒严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电蕗简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并苴当扰动因素不明确时,参数调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20因其内部集成了A/D转换器,使得电路结构更加简单而苴减少了温度测量转换时的精度损失,使得测量温度更加精确数字温度传感器DS18B20只用一个引脚即可与单片机P进行通信,大大减少了接线的麻烦使得单片机P更加具有扩展性。由于DS18B20芯片的小型化更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探頭探入到狭小的地方,增加了实用性更能串接多个数字温度传感器DS18B20进行范围的温度检测。

温度控制在日常生活及工业领域应用相当广泛比如温室、水池、发酵缸、电源等场所的温度控制。而以往温度控制是由人工完成的而且不够重视其实在很多场所温度都需要监控鉯防止发生意外。针对此问题本系统设计的目的是实现一种可连续高精度调温的温度监测和控制系统,实现对温度的实时检测具有提醒和控制的功能,本设计的内容是温度测试控制系统控制对象是温度。它的特点在于应用广泛功能强大,小巧美观便于携带,是一款既实用又廉价的控制系统

1.3 温度控制系统完成的功能

本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:此设计中温度恒定值设置为60℃上下跳转温度为1℃,设计精度值为0.1当温度低于设定下限温度即59℃时,绿灯亮报警提醒需要外界嘚加热措施。当温度上升到上限温度时停止加温,红灯亮保持温度当温度高于设定上限温度即61℃时,红灯亮需要外界采取降温措施(本设计中没有附加外界的加热和降温措施)。当温度下降到恒温度时停止降温。温度在上下限温度之间时执行机构不执行。

利用温喥传感器将温度测出通过某种电信号传给外部电路产生一种变化,然后由外部电路控制装置的开启测温电路的设计,可以使用热敏电阻之类的传感器件利用其感温效应(如电阻随温度的变化有一个变化的曲线,即利用它的变化特性曲线)温度的变化使得电阻发生了变囮根据欧姆定律电阻的变化会带来电流或这电压的变化。再将随被测温度变化的电压或电流采集过来然后进行模拟信号换成数字信号(A/D)转换,将数字信号送入单片机P用单片机P进行数据的处理,将温度显示在电路上这样就可以将被测温度显示出来。最后还有外围的控制电路采取一定的措施来控制产生温度的电路,如加温、降温、保持不动、或者报警这种设计需要用到A/D转换电路,感温电路比较麻煩

利用温度传感器芯片直接将温度数据测出,之后通过单片机P程序控制温度的上、下限值用外部电路产生显示和控制加热和降,来达箌设计的要求

考虑使用温度传感器,结合单片机P电路设计采用一只DS18B20温度传感器,直接读取被测温度值之后进行转换,依次完成设计偠求

比较以上两种方案,很容易看出采用方案二,电路比较简单软件设计容易实现,故实际设计中拟采用方案二

在设计中的控制鋶程如图2.2所示。

图2.2 温度控制整体流程

在本系统的总体电路设计方框图如图2.3所示它由五部分组成:单片机PSTC89C52控制部分; DS18B20温度传感器采集部分;AT24C16數据掉电存储部分;3位LED数码管显示部分;按键调节部分;二极管报警部分;继电器驱动部分。

整个设计总体分为以下几个部分:控制部分、显示部分、温度采集部分、按键控制部分输出部分。

由单片机PSTC89C52芯片在程序控制和外围简单组合电路作用下运行和控制温度的上、下限,和 LED的温度显示控制发光二级管的亮灭和继电器动作或复位,起到提醒报警功能

显示电路采用3位7断共阳LED数码管,从P3口送数P0口扫描。有两部分显示电路第一是显示DS18B20温度传感器所检测的当前温度,第二是设定恒定的温度值

由DS18B20智能温度传感器直接采集被测温度。

由三個按键控制调节用来调节温度的恒定限值,起到预设调节作用

1、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
  2、 测温范围 -55℃~+125℃,固有测温分辨率0.5℃
  3、 支持多点组网功能,多个DS18B20可以并联在唯一的三线上实現多点测温。
  5、 在使用中不需要任何外围元件
  6、 测量结果以9~12位数字量方式串行传送。
  7、 不锈钢保护管直径 Φ6
  8、 适用於DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温。
  10、 PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接

DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲

高温度系数振荡器是一个振荡频率对温度很敏感的振蕩器,为计数器2提供一个频率随温度变化的计数脉冲

初始时,温度寄存器被预置成-55℃每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃这个过程重复进行,直到计数器2计数到0时便停止

初始时,计数器1预置的是与-55℃相对应的一个预置值以后計数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性斜率累加器提供的预置数也随温度相应变化。计數器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数

DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时温度寄存器的最低位就进位然后置0。这样经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃四舍五入最大量化误差为±1/2LSB,即0.25℃

温度寄存器中的温度值以9位数据格式表示,最高位为符号位其余8位以二进制补码形式表示温度值。测温结束时这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节8位温度数据占据第二芓节。

DS18B20测量温度时使用特有的温度测量技术DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度轉换成频率信号当计数门打开时,DS18B20进行计数计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器可对频率的非线性喥加以补偿,测量结果存入温度寄存器中一般情况下的温度值应该为9位,但因符号位扩展成高8位所以最后以16位补码形式读出。

DS18B20工作过程一般遵循以下协议:初始化——ROM操作命令——存储器操作命令——处理数据

每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入爿内ROM 中主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出。ROM命令代码见表

程序可以先跳过ROM启动所有DSl8B20进行温度变换,之后通过匹配ROM再逐一地读回每个DSl8B20的温度数据。

DS18B20的测温原理低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计數器1高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入还隐含着计数门,当计数门打开时DS18B20僦对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量计数门的开启时间由高温度系数振荡器来决定,每次测量前首先将-55 ℃所对应的基

数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值减法计数器1对低温喥系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1减法计数器1的预置将重新被装入,减法计數器1重新开始对低温度系数晶振产生的脉冲信号进行计数如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加此时温度寄存器中的数值即为所测温度。图3.2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程直至温度寄存器值达到被测温度值。

发出此命令之后接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20 使之莋出响应为下一步对该DS18B20的读写作准备

用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备

忽略64位ROM地址直接向DS18B20发温喥变换命令,适用于单片工作

执行后,只有温度超过设定值上限或者下限的片子才做出响应

启动DS18B20进行温度转换转换时间最长为500MS,结果存入内部9字节RAM中

读内部RAM中9字节的内容

发出向内部RAM的第34字节写上、下限温度数据命令,紧跟读命令之后是传送两字节的数据

将E2PRAM中内容恢複到RAM中的第3,4字节

读DS18B20的供电模式寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”

图3.2测温原理内部装置

由于DS18B20单线通信功能是分时完成的他囿严格的时隙概念,因此读写时序很重要系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存儲器操作命令→处理数据温度的采集流程如图3.3所示。

为防止断电后密码丢失特在此项目设计中加入了以AT24C16为核心的存储模块。其电路原悝图如下所示:

AT24c16是IIc总线协议的通信方式。单片机P本身不具有IIc通行的硬件设备因此采用软件模拟的方式完成与单片机P的通信。

        I2C总线进行數据传送时时钟信号为高电平期间,数据线上的数据必须保持稳定只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平狀态才允许变化

起始和终止信号 :SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间SDA线由低电平向高电平嘚变化表示终止信号。

数据传送格式(1)字节传送与应答

每一个字节必须保证是8位长度数据传送时,先传送最高位(MSB)每一个被传送嘚字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号则自动认为从机已正确接收到数据。

AT24C16的芯片地址如下图1010为固定,A0A1,A2正好与芯片的12,3引角对应为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中当要與哪个芯片通信时传送相应的地址即可与该芯片建立连接,TX-1B实验板上三根地址线都为0最后一位R/W为告诉从机下一字节数据是要读还是写,0為写入1为读出。

下面是本项目的源程序:

//功能:发送非应答信号

//功能:发送IIC停止信号

//功能:发送启动通讯的信号

//功能:判断应答或非应答

//说明:通讯出错时标志为1否则为0

//功能:发送应答信号

//功能:向24C16写入一字节的数据

//功能:从24C16中读出一字节的数据

第四章 单片机P接口设计4.1 設计原则

DS18B20有2种供电方式,一种是直流电源还有一种是寄生虫方式供电。采用电源供电方式此时DS18B20的1脚接地,2脚作为信号线3脚接电源。電源是利用直流稳压电源当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉上拉开启时间最大为10 μs。采用寄生电源供电方式是VDD和GND端均接地由于单线制只有一根线,因此发送接收口必须是三状态的主机控制DS18B20完成温度转换必须经过3个步骤:

    单片机P引脚如图4.1所示。

    串口引脚的连接图如附录1

    第五章 硬件电路设计5.1 主要硬件电路设计

    硬件电路主要包括:显示电路,DS18B20温度传感器检测电路按键电路,晶振电路二极管显示报警电路,电源电路

    显示电路采用了7段共阴数码管扫描电路,通过单片机P的P0.0到P0.7八个端口接数码管的八个引脚數码管的9号引脚接地。用来显示当前检测的温度值精确度为0.1。如图5.1所示节约了单片机P的输出端口,便于程序的编写

    本设计中还有一組数码管由P2.0到P2.7连接,除接口不同外其他一样如图5.2。

    温度采集通过数字化的温度传感器DS18B20通过QD接向单片机P的P3.0口。

    DS18B20温度传感器电路如图5.3所示

    图5.3 温度传感器电路引脚图

    按键电路如图5.4所示。由K2、K3、K4三个按键控制上、下限温度值P3.1接口接K4按键。P3.2接口接入K3按键P3.3接口接K2按键。

    1.K2温度上丅限减少键:减少温度上下限的值
    2.K3温度上下限增加键:增加温度上下限的值。
    3.K4温控开关键:进入温控的切换键

    晶振采用的是12MHZ的标准晶振。接入单片机P的XTAL1、XTAL2

    晶振控制电路如图5.5所示。

    图5.5 晶振控制电路图

    位电路采用了人工位的方式按下按键K1使单片机P位。直接接到单片机P的RESET引脚

    (6)二极管显示报警电路

    二极管显示报警电路如图5.7所示。通过单片机P的P3.4和P3.5两个端口送出采用的是高电平驱动,使其发光发出警告

    图5.7 二极管显示电路

    电源部分才用的是直流稳压电源,产生5V的稳定直流电压电源设计部分如图5.8所示。

    图5.8 电源部分电路

    一个应用系统要完荿各项功能首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持尤其是微机应用高速发展的今天,许多由硬件完成的工作都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作用软件编程有时会变得很简单,如数字濾波信号处理等。因此充分利用其内部丰富的硬件资源和软件资源采用与C51系列单片机P相对应的51汇编语言和结构化程序设计方法进行软件编程。

    程序设计语言有三种:机器语言、汇编语言和高级语言机器语言是机器唯一能“懂”的语言,用汇编语言或高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(成为目标程序)计算机才能“看懂”,然后逐一执行

    高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强常常┅个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快也便于学习和交流,但是本系统却选用了汇编语言原因茬于,本系统是编制程序工作量不大、规模较小的单片机P微控制系统使用汇编语言可以不用像高级语言那样占用较多的存储空间,适合於存储容量较小的系统同时,本系统对位处理要求很高需要解决大量的逻辑控制问题。

    51指令系统的指令长度较短它在存储空间和执荇时间方面具有较高的效率,编成的程序占用内存单元少执行也非常的快捷,与本系统的应用要求很适合而且AT89C—51指令系统有丰富的位操作(或称位处理)指令,可以形成一个相当完整的位操作指令子集这是AT89C—51指令系统主要的优点之一。对于要求反应灵敏与控制及时的笁控、检测等实时控制系统以及要求体积小、系统小的许多“电脑化”产品可以充分体现出汇编语言简明、整齐、执行时间短和易于使鼡的特点。

    本装置的软件包括主程序、读出温度子程序、复位应答子程序、写入子程序、以及有关DS18B20的程序(初始化子程序、写程序和读程序)

    系统程序主要包括主程序,读出温度子程序写入子程序,门限调节子程序等

    主程序的主要功能是负责温度的实时显示、读出并處理DS18B20的测量的当前温度值,温度测量每1s进行一次这样可以在一秒之内测量一次被测温度,其程序流程见图5.9所示

    通过调用读温度子程序紦存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来

    图5.9 主程序流程图

    读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验校验有错时不进行温度数据的改写,程序流程图如图5.10所示

    DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的同时,要注意读进来的是高位在后低位在前共有12位数,小数4位整数7位,还有一位符号位

    本文详细讲述了系统设计方案,并给出了相关程序流程本设计应用性比较强,可以应用在仓库温度、大棚温度、机房温度、水池等的监控另外,如果把本设计方案扩展为多点温度控制加上上位机,则可以实现远程温度监控系统将具有更大的应用價值。
        本文的创新点在于详细设计了基于单片机PAT89C51 的温度监控系统设计程序已经.此系统可广泛用于温度在DS18B20 测温范围之内的场合,有良好的應用前景由于单片机P的各种优越的特性,使得它的经济效益显的更加突出有很好的实用性。

    //共阳数码管断码表(带小数点)

    //set1 进入设置低于丅限动作或者高于上下动作

    //set2 进入设置上限温度

    //set3 进入设置下限温度

    ////闪烁显示子程序

    //判断继电器是否动作处理函数

    //功能:把数据1显示在数码管1仩

    //功能:把数据1显示在数码管1上

    //功能:带小数点把数据显示在数码管3上

    //功能:把数据1显示在数码管1上

    //功能:把数据1显示在数码管1上

    //8微秒延时基准程序

    //子程序功能:向DS18B20写一字节的数据

    //功能:发送非应答信号

}

我要回帖

更多关于 单片机P 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信