基于单片机的粮情监控系统毕业设计(含中英文翻译)

上传人:仙*** 文档编号:34561761 上传时间:2021-10-21 格式:DOC 页数:57 大小:803.02KB
收藏 版权申诉 举报 下载
基于单片机的粮情监控系统毕业设计(含中英文翻译)_第1页
第1页 / 共57页
基于单片机的粮情监控系统毕业设计(含中英文翻译)_第2页
第2页 / 共57页
基于单片机的粮情监控系统毕业设计(含中英文翻译)_第3页
第3页 / 共57页
资源描述:

《基于单片机的粮情监控系统毕业设计(含中英文翻译)》由会员分享,可在线阅读,更多相关《基于单片机的粮情监控系统毕业设计(含中英文翻译)(57页珍藏版)》请在装配图网上搜索。

1、前言我国是农业大国,粮食储备技术是关系到人民生活的重要问题。粮食温度检测技术是我国粮食储藏的四大技术之一,它可动态监测仓库粮食温度变化情况,为粮食的储藏安全提供了重要保障。而目前我国许多粮库,由于还运用80年代传统的模拟方式和人工方式进行粮情监控, 这种应用于粮食储藏的粮情检测系统大多采用模拟温度传感器、多路模拟开关、A/D 转换器及单片机等组成的导线传输系统。这种温度采集系统需要在仓库布置大量的测温电缆,安装和拆卸繁杂。同时受到导线电阻和分布电容的影响,测量误差比较大,易受雷击。不但费人费力,还经常出现误报警,甚至断点现象的出现,不能够及时地给工作人员正确的粮情信息,已经严重的影响到日常工作

2、。近年来,随着数字化的普及,给我国的粮储工作带来了新的生机,新型的数字化全方位粮情监控系统摒弃了传统的模拟方式,将现代数字化电子技术应用于监控系统,是传感器创新革命的成果。具有安装简单、成本低、监测精度高,能够及时与主控计算机进行通信,实现温度、湿度的分析、显示、报警等。在此基础上,本文设计了一种基于51单片机的数字粮情监控器,并在实验中对设计进行了检验。相对与传统的模拟方式,本设计有成本低,体积小,硬件电路简单,精度高,可靠性好等技术特点。软件部分负担任务较多,设计相对复杂。系统的温度检测部分采用了干湿球检测原理,但由于技术不是很成熟和实验条件的限制,本设计者没有得到理想的实验数据,所以只在

3、第五章做理论设计分析。 1 绪论本设计主要正对粮仓的温度参数的检测,动态监测仓库粮食温度变化情况,为粮食的储藏安全提供了重要保障。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器;模拟集成温度传感器;智能集成温度传感器。目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。美国Dallas半导体公司的数字化温度传感器DS18B20是世界上第一片支持 “一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组

4、建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得

5、了良好的测温效果。本设计将采用智能集成温度传感器DS18B20,并以AT89C51单片机为控制器的温度测量装置的硬件组成和软件设计。2 粮情监控器设计简介本设计主要是对粮食存储环境的温度参数进行实时监控。主要包括温度采样、数据处理、人机对话键盘、静态显示、报警电路五个部分,系统框图结构(如图2-1)所示:图2-1系统原理框图Fig. 2-1 principle diagram of system粮情监控器的设计的核心部分就是数据处理部分,它负责实时接收传感器的采样信息,进行分析处理,负责人机对话的查看和分析人的按键信息,还要发送字码控制显示部分显示信息和声光报警的控制,是智能系统的“大脑”。温

6、度采样部分负责实时检测参数,并随时准备把检测到得参数信息发送到CPU。人机对话是人相系统发送信息的通道,设定参数值。静态显示是系统表示其工作情况的输出通道,显示检测值和设置参数信息。声光报警则是在CPU发出工作信息时,的执行装置。本设计硬件设计电路简单明了,软件承担了复杂的工作,以下将分章介绍硬件和软件的设计。3 系统的硬件电路设计本设计的技术特点是低成本,体积小,硬件电路简单。硬件电路的数据处理部分采用51系列单片机,低成本,功能适用,占地面积小。温度检测采用DS18B20单总线传输。键盘键入信息,LED显示,声光报警用来表达系统状态。键盘、报警电路和执行电路均低电平有效,不做分节介绍。下面

7、将对系统原理、CPU部分、温度检测和静态显示做详细介绍。3.1 系统整体电路设计和器件的选择3.1.1系统电路设计原理系统电路中,AT89C51作为CPU,实时进行温度检测,选DS18B20实时温度检测,DS18B20将温度转换的结果送入单片机中,单片机发送信号给CD4511显示检测数据。4位键盘输入报警参数信息,单片机把实时检测的参数与键入数值比较,超过限度,发信号给蜂鸣器报警,报警灯亮同时控制执行电路动作。图3-1整体电路框图Fig. 3-1 diagram of the whole circuit3.1.2 AT89C51单片机简介AT89C51单片机是有ATMEL公司生产的一款8位单片

8、机,属于51系列单片机。包含128字节RAM ,4K Flash程序存储器,32条I/O 口线2个16位定时/计数器,1个串行I/O口可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路。此外由于器件采用了静态设计可提供很宽的操作(频率范围频率可降至0)。可实现两个由软件选择的节电模式空闲模式和掉电模式。本设计中,主要应用的是单片机的并口传输数据,保留了串口以便在总线系统中能够完成多机通信,下面对这两方面进行说明。1)管脚及本设计中应用的并口介绍图3-2 AT89C51引脚图Fig. 3-2 Figure-pin of AT89C51AT89C51单片机的管脚(如图2-1)所示,3

9、2条I/O线分为4个并口,P0P3 。P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的底八位,在访问期间激活内部上拉电阻。P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入“1”后,被内部上拉为高电平,此时可用作输入口,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,此时作

10、为输入口。并且作为输入口使用时,P2口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。 P2口当用于访问外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出数据地址的高8位。在访问8位地址的外部数据存储器时,P2口线上的内容,在整个访问期间不改变。P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并可作位输入端口。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口, 2)串口及多机通信串口为全双工结构,表示可以同时发送和接收,它还具有接

11、收缓冲,在第一个字节从寄存器读出之前,可以开始接收第二个字节。但是如果第二个字节接收完毕时第一个字节仍未读出,其中一个字节将会丢失。串口的发送和接收寄存器都是通过SFR SBUF 进行访问的。写入SBUF 的数据装入发送寄存器,对SBUF的读操作是对物理上分开的接收寄存器进行访问。串口有4 种操作模式模式0串行数据通过RxD 进出。TxD 输出时钟。每次发送或接收以LSB(最低位)作首位,每次8 位。波特率固定为MCU 时钟频率的1/12 。图3-3串口模式0时序图Fig. 3-3 Serial Mode 0 timing plans模式1TxD 脚发送,RxD 脚接收,每次数据为10 位,一

12、个起始位(0 ),8 个数据位(LSB 在前)及一个停止位1 。当接收数据时,停止位存于SCON 的RB8 内,波特率可变,由定时器1 溢出速率决定。图3-4串口模式1时序图Fig. 3-4 Serial Mode 1 timing plans模式2TxD 脚发送RxD 脚接收每次数据为11 位,一个起始位0 8 个数据位LSB 在前,一个可编程第9 位数据及一个停止位1。发送时第9 个数据位SCON 内TB8 位可置为0 或1 。图3-5串口模式2时序图Fig. 3-5 Serial Mode 2 timing plans例如将奇偶位PSW 内P 位移至TB8。接收时第9 位数据存入SCON

13、 的RB8 位停止位忽略。波特率可编程为MCU 时钟频率的1/32 或1/64由PCON 内SMOD1 位决定。模式3TxD 脚发送RxD 脚接收每次数据为11 位,一个起始位0 8 个数据位LSB 为首位,一可编程的第9 位数据及一个停止位1 。事实上模式3 除了波特率外均与模式2 相同其波特率可变并由定时器1 溢出率决定。图3-6串口模式3时序图Fig. 3-6 Serial Mode 3 timing plans多机通信时,UART 模式2 及模式3 有一个专门的应用领域即多机通信。在这些模式时,接收为9 位数据。第9 位存入RB8。 接下来为停止位UART 可编程为接收到停止位时,仅当

14、RB8=1 时串口中断才有效。可通过置位SCON 内SM2 位来选择这一特性。下述为多机系统利用这一特性的一种方法。当主机需要发送一数据块给数台从机之一时,首先发送出一个地址字节对目标从机进行识别。地址与数据字节通过第9 位数据区别,其中地址字节的第9 位为1 ,而数据字节为0 SM2=1 时,数据字节不会使各从机产生中断,而地址字节则令所有从机中断,这样各从机可以检查接收到的数据判断是否被寻址。被寻址的从机即可清除SM2 位以准备接收随后数据内容。未被寻址的从机的SM2 位仍为1 则不理睬随后数据继续各自工作。模式0 时SM2 无效,模式1 时SM2 用于检验停止位是否有效在模式1 时,如果

15、SM2=1 ,那么只有接收到有效的结束位才可产生接收中断。3.1.3 DS18B20数字温度传感器本设计中,温度采样部分选择了DS18B20这款数字温度传感器。其自身的特点可以概括为如下几点: 独特的单线接口,只需1 个接口引脚即可通信 多点能力使分布式温度检测应用得以简化 不需要外部元件 可用数据线供电 不需备份电源 3 引脚排列信息经过单线接口送入DS18B20或从DS18B20 送出,因此从中央处理器到DS18B20 仅需连接一条线(和地)。读、写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。这是这款数字温度传感器最大的有点,也是本设计选择这款传感器的主要原因。此外,D

16、S18B20测量范围从一55 至l25 ,增量值为0.5 ,等效的华氏温度范围是币7F 至257F , 增量值为0.9F 以9-12位数字值方式读出温度。 在1 秒(典型值)内把温度变换为数字,用户可定义的。非易失性的温度告警设置告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况)。 应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统。图3-7 DS18B20引脚图Fig. 3-7 Figure-pin of DS18B20引脚说明如下;GND:接地端VDD: 可选电源端DQ:单线运用的数字输入输出引脚3.2 温度采样电路的设计本设计中,温度采样要实时检测粮情的环境温

17、度,传入数据处理部分。数据处理本分的CPU,负担着温度采样信号的接受和分析。由于单总线的DS18B20 的特殊结构,使得硬件传输电路十分方便,只需一根总线。3.2.1 DS18B20的工作原理图3-8 DS18B20结构图Fig. 3-8 frame of DS18B20DS18B20的主要部件(如图3-7)所示。DS18B20有三个主要的数据部件:1) 64位激光ROM . 2)温度灵敏元件,3)非易失性温度告警触发器TH和TL。器件从单线的通信线取得其电源,在信号线为高电平的时间周期内,把能量贮存在内部的电容器中。在单信号线为低电平的时间期内断开此电源,直到信号线变为高电平重新接上寄生(电

18、容)电源为止。作为另一种可供选择的方法,DS1820 也可用外部SV 电源供电。与DS18B20 的通信经过一个单线接口。在单线接口情况下,在ROM操作未定建立之前不能使用存贮器和控制操作。主机必须首先提供五种ROM 操作命令之一:1) Read ROM , 2) Match ROM(符合ROM ) , 3) Search 即(搜索ROM ) , 4) Skip ROM(跳过ROM ),或5 ) Alarm Search(告警搜索)。这些命令对每一器件的64 位激光ROM 部分进行操作,如果在单线上有许多器件,那么可以挑选出一个特定的器件。并给总线上的主机指示存在多少器件及其类型。在成功地执行

19、了ROM 操作序列之后。可使用存贮器和控制操作,然后主机可以提供六种存贮器和控制操作命令之一。一个控制操作命令指示DS18B20完成温度测量。该测量的结果将放入DS18B20的高速暂存(便笺式)存贮器(Scratchpad memory ),通过发出读暂存存储器内容的存储器操作命令可以读出此结果。每一温度告警触发器TH 和TL 构成一个字节的EEROM。如果不对DS18B20 施加告警搜索命令,这些寄存器可用作通用用户存储器。使用存储器操作命令可以写TH 和TL。对这些寄存器的读访问通过便笺存储器。所有数据均以最低有效位在前的方式被读写。图3-9 DS18B20测温原理图Fig. 3-9 Te

20、mperature Detect Principle of DS18B20DS18B20 通过门开通期间内低温度系数振荡器经历的时钟周期个数计数来测量温度,而门开通期由高温度系数振荡器决定。计数器于置对应于-55 的基数,如果在门开通期结束前计数器达到零,那么温度寄存器一它也被予置到一55 的数值 将增量,指示温度高于-55 。同时,计数器用斜坡累加器电路所决定的值进行予置。为了对遵循抛物线规律的振荡器温度特性进行补偿,这种电路是必需的。时钟再次使计数器计值至它达到零。如果门开通时间仍未结束,那么此过程再次重复。斜坡累加器用于补偿振荡器温度特性的非线性,以产生高分辩率的温度测量。通过改变温度每

21、升高一度。计数器必须经历的计数个数来实行补偿。因此,为了获得所需的分辩率,计数器的数值以及每一位温度值都必须知道。3.2.2 DS18B20电源设计图3-10 寄生电源电路Fig. 3-10 Parasitic power circuit图3-11 VDD供电电路Fig. 3-11 Power uses VDD同时进行温度测量如果某处温度超过极限,那么可以识别出正在告警的器件并立即将其读出而不必读出非告警的器件。寄生电源的优点是双重的:l)利用此引脚,远程温度检测无需本地电源,2)缺少正常电源条件下也可以读ROM 。另一种电源的提供方法是通过+5V电源在VDD端直接供电。这样可以减轻在DQ总线

22、上的负担。本设计采用这种接线方式,接线电路(如图3-11)所示。3.3 显示电路的设计3.3.1 设计电路所选器件1)LED数码管显示电路采用4个LED数码管进行数字显示。精度可达到0.01位。7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示09等10个数字和小数点,使用非常广泛,它的引脚图(如图3-12)所示:图3-12 LED的引脚图Fig. 3-12 Figure-pin of LED对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为110脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。

23、3脚和8脚是连通的,这两个都是公共脚。这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点)。2)LED译码驱动器4511本设计中,LED显示电路的需要一个译码驱动的部分来完成LED所需要的电流驱动和段码的编译。4511 是BCD7 段所存译码驱动器,在同一单片结构上由COS/MOS 逻辑器件和npn 双极型晶体管构成。这些器件的组合,使CC4511具有低静态耗散和高抗干扰及源电

24、流高达25mA的性能。由此可直接驱动LED及其它器件。LT 、BI 、LE 输入端分别检测显示、亮度调节、存储或选通一BCD码等功能。当使用外部多路转换电路时,可多路转换和显示几种不同的信号。这种驱动器与LED数码管相接使得逻辑简洁明了,段码清晰易懂,并且可以锁存要显示的LED数码管,可以较好的完成静态显示电路的工作,实现实时的显示粮仓的温度湿度等各个参数。它的引脚(如图3-13)所示: 图3-13 MC4511的引脚图Fig. 3-13 Figure-pin of MC4511引脚说明:A0A3 二进制数据输入端BI 输出消隐控制端LE 数据锁定控制LT 灯测试VDD 正电源Vss 地YaY

25、g 数据输出端锁存器的作用是避免在计数过程中出现跳数现象,便于观察和记录。用译码器将BCD码转换成7段码,即将其锁存后译成数码管所需要的驱动信号,再经过大电流反相器,驱动共阴极LED数码管,从而使数码管显示出BCD码的数值。译码器属于非时序电路,其输出状态与时钟无关,仅取决于输入的BCD码。因此,在本设计系统中使用MC14511B芯片通过动态扫描来驱动四位LED数码管。MC4511的真值表,如表3-1所示。令其中LE=GND(“0”),=+5V(“1”),单片机的4位I/O口做为MC14511B的字形码输入,4位I/O口做为数码管的字位码选择。A、B、C、D BCD码输入端;a、b、c、d、e

26、、f、g 译码输出端,输出“1”有效,用来驱动共阴极LED数码管。表3-1 MC14511B真值表Tab.3-1 truth table of MC4511 测试输入端,“0”时,译码输出全为“1”。 消隐输入端,“0”时,译码输出全为“0”。LE 锁定端,LE“1”时译码器处于锁定(保持)状态,译码输出保持在LE0时的数值,LE0为正常译码。图3-14位显示电路Fig. 3-14 a bit display Circuit3)74LS138片选电路显示电路公4个LED加译码驱动电路,分别显示十位,个位,0.1位和0.01位。要完成静态显示的工作,就必须要有译码驱动电路的片选环节。本设计中,选

27、用74LS138做片选,74LS138是3-8线译码器,能够把通过CPU送出的16位数字信号进行译码,从而实现片选环节。74138的引脚及逻辑电平分别如图3-15,表3-2所示:图3-15 74138的引脚图Fig. 3-15 Figure-pin of 74138表3-2 74138真值表Tab.3-2 truth table of 74138G1G2+G3A2A1A0Y0Y1Y2Y3Y4Y5Y6Y71O00001111111100011011111110010110111111001111101111101001111011110101111110111011011111101101111

28、111111111111111011111111使能信号G1:高电平有效; G2A、 G2B :为低电平有效通过图表可以看出,我们只要通过输入端输入一个相应的二进制代码,就可以把输出端8个端的其中一段选通。如果把138的输出端接到我们要选的译码驱动电路,在通过CPU发送二进制代码,便可以实现片选功能,这种设计方法不仅节省了单片机的I/O端口,还实现了多路片选。3.3.2 其他硬件电路分析1)显示电路在本系统中,显示电路要负担起温度湿度等粮情参数的实时显示,并能显示人机对话键盘键入的信息,而这些信息都是经过单片机计算分析得到的,要实现参数的显示,就是要显示单片机发送的代码信息。我们把单片机一个并

29、口的低4位做段选,发送要显示的数字信号给4511做段码,高3位发送片选信息给74138,可以做位选。显示电路中,采用138编码器,可以顺利实现译码驱动电路的片选工作。公4片4511译码驱动器,把Y0与十位相连,并以此类推,从而从Y0-Y3的信号分别选中了4位显示电路。CPU可以通过发送000,选通十位显示电路,001选通个位显示电路,010选通0.1位显示电路,发送011选通0.01位显示电路。2)键盘电路键盘电路是将P0口的高4位通过按键和1K电阻接地,以低电平有效。3)声光报警报警电路是采用蜂鸣器报警同时P0.1口接D2放光管发光报警。4 系统的软件设计本设计中,软件部分的设计是重点部分。

30、基于本设计的低成本,硬件电路简单的特点,软件设计将要负担大部分工作处理和计算。软件的设计要事实现的功能是,实时的控制DS18B20进行温度的检测和显示,要查看键盘的按键信息,控制风机的启停和声光报警。其中,DS18B20的软件设计是主要部分。4.1 系统软件设计思路本设计的整体思路(如图4-1)所示:图4-1 系统软件流程图Fig. 4-1 System software flow chart系统的软件设计要完成温度传感器的温度检测接受,并对数据进行分析处理,发送至显示电路显示。同时,还要实时检测键盘的按键情况,如果有建按下,要分析按键的的情况,并加以显示。键盘键入的信息就是系统的高温和低温的

31、报警信息,软件通过键入信息与温度传感器检测的信息进行比较,如果温度传感器检测的温度超过的键盘键盘键入的范围,软件控制报警电路声光报警,控制光电耦合器件导通,驱动执行电路工作。下面要进行各部分的分析和编写。4.2 温度检测4.2.1 延时程序的测试单总线数字温度传感器DS18B20在检测温度时,数据的传输,只用DQ一根总线,没有参考脉冲。对DS18B20的任何操作,都要通过DQ总线写命令进行控制,而读写字节时DS18B20的字节传输有严格的时序规定,我们读写字节,必须要按照他的时序规定,所以,要实现DS18B20程序的设计,首先要解决延时程序的精确测试问题。为了简明,本设计的程序中加入宏定义:#

32、define uint unsigned int#define uchar unsigned char本设计中,共有三种延时办法,均不采用定时器延时办法。采用12M晶振51单片机,每执行一条指令,是1微秒的时间,但是C语言通过keil编译软件,编译成汇编语言后,会有一定误差,所以必须在实验中调试。方法一:精确的1毫秒延时程序,C程序如下:void mdelay(uint Delay)uint pdata i;for(;Delay0;Delay-)for(i=0;i124;i+);调用这条子程序,把传入参数Delay代入1,可以精确的完成1毫秒延时,程序中的参数由实验中调试得到,在测试是,我们可

33、以做一个一这条子程序为宽度的脉冲来检验延时效果,仿真软件采用Proteus,检测仪表采用逻辑分析仪,可以精确检验电平宽度,延时脉冲如图4-1所示,其中8个逻辑电平测试中,第一条为毫秒延时程序脉冲的波形。图4-2 毫秒延时波形Fig. 4-2 Millisecond delay waveform由于DS18B20的很多读写时间片限制在微秒级的时间范围内,所以还要测试微秒级的延时程序。方法二:粗略的微秒延时程序,void delay(uchar i) while(i) i-;图4-3 方法二延时波形Fig. 4-3 Method 2 delay waveform这是个粗略的微秒级延时程序,在调用这

34、条子程序是,传入参数i代入1,可以延时1517微秒。传入参数每增加1,延时效果增加57微秒。基本按照线性的趋势递增。实验数据见表(4-1):表4-1 方法二延时数据Tab.4-1 truth table of 74138i12345102030延时(s)172632394475135196方法三:5微秒延时程序设计在以上两种方法中,均采用调用子程序的办法来实现。在编译时就会存在误差。第三种方法是在程序需要延时地方直接加入for(i=0;i1;i+) 循环语句,这样便可以增加延时的精确性。可达到5微秒延时效果。仿真波形如图4-4所示:图4-4 方法三延时波形Fig. 4-4 Method 3 d

35、elay waveform4.2.2 DS18B20的初始化在对DS18B20做任何一项操作之前,都要对DS18B20进行初始化。DS18B20如果被检测到,并且可以接受操作指令,就会返回一个存在脉冲,以说明DS18B20可以接受CPU的读写操作。总线主机发送一个复位脉冲(最短为480微秒的低电平信号)。接着总线主机要释放总线。由于总线上逻辑上是线与的关系,经过5K的上拉电阻拉至高电平,释放总线以便能够接受到DS18B20发送的返回脉冲。DS18B20检测到IO口的上升沿之后,等待1560微秒,发送一个最短为240微秒的存在脉冲如(图4-5)所示:图4-5 复位脉冲Fig. 4-5 reset

36、 pulseDS18B20的初始化程序:sbit DQ=P03;uchar reset(void) uchar x; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay(14); x=!DQ; return x;初始化函数中x=!DQ;return x;是将总线释放后的情况取反存入X,返回值为X。当有存在脉冲返回是,X的值为1,没有则为0。4.2.3 DS18B20的字节读写由于DS18B20没有参考脉冲,并且是单总线传输,还要做寄生电源供电,所以DS18B2

37、0的字节传输有严格的时序规定,我们读写字节,必须要按照他的时序规定。通过使用时间片来读出和写入DS18B20 的数据,时间片用于处理数据位和指定进行何种操作的命令字。1)写时间片当主机把数据线从高逻辑电平拉至低逻辑电平时,产生写时间片。有两种类型的写时间片:写1 时间片和写0时间片。图4-6 写字节时间片Fig. 4-6 Write Time Slots所有时间片必须有最短为60 微秒的持续期,在各写周期之间必须有最短为1 微秒的恢复时间。在I/O 线由高电平变为低电平之后,DS18B20在15微秒至60微秒的窗口之间对I/O 线采样。如果线为高电平,写1 就发生,如果线为低电平,便发生写0(

38、见图4-5)。本设计中,DS18B20写字节的C语言子函数如下:void write1820(uchar dat) uint data i,data1; data1=dat; for(i=0;i=1; /准备下一位delay(4);/8位写完2)读时间片时间片当主机把数据线从高逻辑电平拉至低逻辑电平时,产生写时间片。有两种类型的写时间片:写1 时间片和写0时间片所有时间片必须有最短为60 微秒的持续期,在各写周期之间必须有最短为1 微秒的恢复时间。在I/O线由高电平变为低电平之后,DS18B20在巧15微秒 至60微秒 的窗口之间对I/O 线采样。如果线为高电平,写1 就发生,如果线为低电平,

39、便发生写0,如图4-7所示。读写时序要尽可能接近本设计中推荐的时序,见图4-8和4-9.图4-7 读时间片Fig. 4-7 read time slots读取DS18B20一个字节的子函数如下:uchar read1820(void) uint data i,data2=0; for(i=0;i=1; /准备读下一位 DQ=1; for(i=0;i3;i+); /精确延时10微秒 if(DQ) data2|=0x80; delay(4); /做延时 return data2; /返回读数图4-8 采样时序Fig. 4-4 Sampling timing图4-9 推荐采样时序Fig. 4-9 R

40、ecommended Sampling timing 4.2.4 DS18B20的温度读取当发出ConvertT (44H)的指令后,DS18B20就开始转换温度。温度转换时间可长达500毫秒 。接到温度转换的协议后,如果器件不是从VDD 供电的话,I/O线就必须至少保持500毫秒高电平。这样,发出一个ConvertT 命令之后,单线总线上在这段时间内就不能有其他活动。存储器操作命令如下:Write Scratchpad 4E h这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。Read S

41、cratchpad BEh 这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9 位(字节8 , CRC ) 。Copy Scratchpad 48h 这条命令把暂存器的内容拷贝到DS18B20 的存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10毫秒 。ConvertT 44h 这条命令启动一次温度转换而无需其他数据。温度转换命

42、令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20 又忙于做时间转换的话,DS18B20将在总线上输出 0 ,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500毫秒 。Recall EZ B5h 这条命令把报警触发器里的值拷回暂存器。这种拷回操作在DS182O 上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标识:0=寄生电源,1=外部电源。Read Power supply B4h 若把这条命令发给DS18B20后

43、发出读时间隙,器件会返回它的电源模式: 0=寄生电源,1=外部电源。DS18B20读取的温度将保存在暂存器中,暂存器的前两个字节就是温度的低8位和高8位。DS18B20温度检测有4种工作模式,如表4-1所示:表4-2 DS18B20的工作模式Table 4-2 Mode of DS18B20R0R1温度位数最大转换时间00993.75ms0110187.5ms1011370ms1112750msDS18B20的默认工作方式是12位转换转换精度是0.0625。本设计中也采用12位转换。转换结果的形式如图4-10所示:图4-10 温度转换的形式Fig. 4-10 Temperature in th

44、e form of conversion本设计中DS18B20的C语言程序如下;float dis,temp;void readtemp1820(void) uchar x,temp1,temp2;float temp; x=reset();/复位 if(x) write1820(0xCC);/跳过读ROM write1820(0x44);/开始转换温度 mdelay(10); x=reset();/复位 if(x) write1820(0xCC);/跳过读ROMwrite1820(0xBE);/读暂存器mdelay(10);temp1=read1820();/读LSBtemp2=read18

45、20();/读MSBtemp1=(temp28)|temp1; temp=(float)(temp1*0.0625);4.3 键盘的软件设计本设计中共设置4个按键,标号为1、2、3、4。其中1号键是要用作设置温度和湿度模式的按键,在这里不做程序处理。2号键是确认键,按下则设定的参数被确认,显示返回当前环境温度的数字。3号键是设置的参数+1,4号键是设置的参数1。键盘可以完成报警温度的设定。C语言程序如下:void key(void) if(P0&0x0f)!=0x0f)&(flagkey=0)mdelay(25);if(P0&0xf0)!=0xf0)switch(P0&0xf0)case 0x

46、70:keynum=1;flagkey=1;break;case 0xb0:keynum=2;flagkey=1;break;case 0xd0:keynum=3;flagkey=1;break;case 0xe0:keynum=4;flagkey=1;break;default: keynum=0;flagkey=0; /*键盘处理*/void keydeal(void)if(flagkey=1)&(keynum!=0)switch(keynum)case 1:break;case 2:mdelay(100);dis=temp;P0_2=1;break;case 3:max+;dis=max

47、;P0_2=0;break;case 4:max-;dis=max;P0_2=0;break;default:keynum=0;keynum=0;其中, keynum和flagkey是全局变量,按键的编码和按键的情况。Max、dis也是全局变量,用来表示参数报警的值和要显示的值。子函数key和keydeal作用是查看按键的情况和按键后的处理。4.4 静态显示软件设计本设计中的静态显示是定点的显示模式,精度为0.01。在软件中要显示的数放大100倍后分别取其个位,十位,百位和千位。段码设置成数组的形式:uchar tab10=0x0f,0x1f,0x2f,0x3f,0x4f,0x5f,0x6f,

48、0x7f,0x8f,0x9f;显示的段码由P0口的高8位送出经4511编译后显示。程序在系统程序清单中写明。4.5 系统程序清单本设计中的系统整体C程序如下:#include #include #include #define uint unsigned int#define uchar unsigned charsbit DQ=P03;sbit P0_0=P00;sbit P0_1=P01;sbit P0_2=P02;sbit P1_4=P14;uchar max,flagkey;keynum;float dis,temp;uchar tab10=0x0f,0x1f,0x2f,0x3f,0x

49、4f,0x5f,0x6f,0x7f,0x8f,0x9f;/*延时程序*/void delay(uchar i)while(i-);void mdelay(uint delay) uint i;for(;delay0;delay-)for(i=0;i124;i+);/*复位程序*/uchar reset(void) uchar x; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay(14); x=!DQ; return x;/*写1820数据,写一个字节*/v

50、oid write1820(uchar dat) uint data i,data1; data1=dat; for(i=0;i=1; /准备下一位delay(4);/8位写完/*读1820数据,读一个字节*/uchar read1820(void) uint data i,data2=0; for(i=0;i=1; /准备读下一位 DQ=1; for(i=0;i3;i+); /精确延时10微秒 if(DQ) data2|=0x80; delay(4); /做延时 return data2; /返回读数/*温度读取*/void readtemp1820(void) uchar x,temp1,

51、temp2;float temp; x=reset();/复位 if(x) write1820(0xCC);/跳过读ROM write1820(0x44);/开始转换温度 mdelay(10); x=reset();/复位 if(x) write1820(0xCC);/跳过读ROMwrite1820(0xBE);/读暂存器mdelay(10);temp1=read1820();/读LSBtemp2=read1820();/读MSBtemp1=(temp2max) /如果温度过高 P0_1=0; /声光报警,执行电路动作 P0_0=0; P1_4=0; else P0_1=1; P0_0=1;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!