




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1 绪论11.1 远程数字采集系统的概述11.2 课题要求12 系统设计方案12.1 系统设计方案论证12.2 系统设计方案选择13 系统的硬件设计23.1 温度采集模块23.1.1DS18B20温度传感器简介23.1.2温度采集模块设计33.2 数据显示模块33.2.1AT89S51单片机介绍:33.2.2液晶显示器介绍43.2.3数据显示模块设计43.4 数据传输模块53.4.1MAX485芯片介绍53.4.2串行通信63.4.3数据传输模块设计124 系统的软件设计124.1 总程序流程图124.2 各模块程序设计144.2.1温度采集模块144.2.2数据显示模块164.2.3数据传输模块185 系统的制作和调试205.1 硬件PCB板的设计215.2 硬件调试215.3 软件调试226 总结22谢辞23参考文献24附录25附录1 硬件原理图:25附录2 硬件PCB图:26附录3 总程序:271 绪论1.1 远程数字采集系统的概述远程数字采集系统是指,从传感器和其它待测设备等模拟和数字被测单元中自动采集信息的过程。远程数据采集系统是结合基于计算机的测量软硬件产品来实现灵活的、用户自定义的测量系统,利用各种通信协议以达到远程采集的目的,采集的目标数据通常有温度或湿度等。本毕业设计课题是远程数字采集系统的设计,利用单片机设计一远程数字采集系统,对远距离参数进行适时的采集,显示及传输。本设计以采集温度数据为例子,需要收集相关资料,了解并掌握常见的温度数据采集方案,确定采集的方式和方法,显示采集温度数据并实现远距离传输。制作出相应的硬件系统并完成软件的调试。1.2 课题要求 利用单片机的串行口设计一个通讯距离要求达到1500m以上的、具有显示功能的数字采集系统,来模拟工业上对数据采集系统的要求。具体就是利用用温度传感器进行采集和转换为数字信号,利用单片机对传感器所输入的信号完成处理与显示,按照RS485通信协议将得到的数据传输给PC机并显示出来。2 系统设计方案2.1 系统设计方案论证根据该课题的目标,在所学范围范围内可采取以下两种方案:方案一:首先用温度传感器DS18B20进行温度数据采集,该传感器传递的是数字信号,其内部集成有AD转换模块,其不加驱动,可传送距离为100米。采用单片机作为控制核心,对温度数据进行采集处理等操作,选用AT89S51单片机。设计中可直接将DS18B20的输出数据传递给单片机,省去AD转换等复杂电路。所得的数字信号经单片机处理后由外接的液晶显示器进行实时显示。采用RS485串口通信协议实现AT89S51单片机和PC机的通信。方案二:首先通过集成温度传感器AD590将温度值转换为电量输出,然后送入多路开关,再分时送入放大电路,经放大以后进入采样-保持器,再由数字转换电路实现模拟信号的数字化,所得的数字量经单片机89C51处理以后由外接的数码显示器对温度数值进行实时显示。在按照RS485串口通信协议和RS232串口通信协议将所得数据传输给电脑,并实时显示出来。2.2 系统设计方案选择 为了设计简单更有效的实现所需功能,笔者选用第一种方案,在硬件电路更加简洁情况下实现了课题的目标。对于远程数据采集部分,将在论文中体现。本设计可以分为三大部分:第一部分是硬件部分设计,其中包括三大模块:分别为温度采集模块,温度显示模块和数据传输模块。本文第二部分是软件部分的设计,主要是通过AT89S51单片机的控制来实现各部分模块的衔接,从而对温度采集系统总体思想的实现。第三部分是系统的调试及总结。3 系统的硬件设计3.1 温度采集模块3.1.1DS18B20温度传感器简介 DS18B20是“一线总线”数字化温度传感器,是DALLAS最新单线数字温度传感器,它支持“一线总线”接口,测量温度范围为 -55C+125C,在-10+85C范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。且适合于恶劣环境的现场温度测量,支持3V5.5V的电压范围,使系统设计更灵活、方便。另外其价格更低廉,体积更小。DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! 继“一线总线”的早期产品后,DS18B20开辟了温度传感器技术的新概念。DS18B20使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图3.1所示: 图3.1 DS18B20管脚图DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。3.1.2 温度采集模块设计依据对DS18B20的介绍和了解,设计的温度采集模块如图3.2所示:由于单总线为开漏所以外接一个4.7K的上拉电阻。将DQ端接到单片机AT89S51的P2.7口。 图3.2 温度采集模块 3.2 数据显示模块3.2.1AT89S51单片机介绍 AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。在本设计中,最核心的器件是AT89S51。AT89S51单片机基本结构示意图如图3.3所示:时钟电路SFR和RAMROMCPU定时/计数器并行端口中断系统串行端口系 统 总 线时钟源T0 T1P0 P1 P2 P3TXD RXD INT0 INT1 图3.3 AT89S51单片机基本结构示意3.2.2液晶显示器介绍显示部分在本设计中是作为一个信息指使部分是很重要的,本论文中使用LCD作为显示部分,因为它与数码管比较起来更具有整体性和连贯性。 LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。 本本所涉及的LCD为字符型点阵式LCD模块(liquid Crystal Display Module)简称LCM,或者是字符型LCD。 字符型液晶显示模块是一种专门用于显示字母,数字,符号等的点阵式液晶显示模块。在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。 目前市面上常用的有16字*1行,16字*2行,20字*2行和40字*2行等的字符模块组。这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。本设计中使用的是1602LCD,属第二种模块组。3.2.3温度显示模块设计 将AT89S51和1602按封转相接,其中数据接受的I/O口接单片机的P0口,RS、RW、E分别接单片机的P2.0、P2.1、P2.2口,滑动变阻器R6作为电位器是用来调节液晶显示的对比度的。温度显示模块设计如图3.4所示: 图3.4 数据显示模块 3.4 数据传输模块3.4.1MAX485芯片介绍MAX485芯片采用单一电源+5 V工作,额定电流为300 A,采用半双工通讯方式。它完成将TTL电平转换为RS485电平的功能。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选100的电阻。MAX485芯片引脚图如图3.5所示。图3.5 MAX485芯片引脚图3.4.2串行通信串口通信的概念 串行通信是指通信的发送方和接收方之间数据信息的传输是在单根数据线上,以每次一个二进制的0、1为最小单位逐位进行传输,如图3.6所示。图3.6 串行通信串行数据传送的特点是:数据传送按位顺序进行,最少只需要一根传输线即可完成,节省传输线。与并行通信相比,串行通信还有较为显著的优点,传输距离长,可以从几米到几千米。在长距离内串行数据传送速率会比并行数据传送速率快,串行通信的通信时钟频率容易提高,串行通信的抗干扰能力十分强,其信号间的互相干扰完全可以忽略。但是串行通信传送速率比并行通信慢得多,并行通信时间为T,则串行时间为NT。串行通信工作模式通过单线传输信息是串行数据通信的基础。数据通常是在两个站(点对点)之间进行传送,按照数据流的方向可分成3种传送模式:单工、半双工、全双工。单工形式:早期的电流环单工形式的数据传送是单向的。通信双方中,一方固定为发送端,另一方则固定为接收端。信息只能沿一个方向传送,使用一根传输线,如图3.7所示。图3.7 单工形式 单工形式一般用在只向一个方向传送数据的场合。如计算机与打印机之间的通信是单工形式,因为只有计算机向打印机传送数据,而没有相反的数据传送。还有在某些通信信道中,如单工无线发送等。半双工形式:RS-485半双工通信使用同一根传输线,即可发送数据又可接收数据,但不能同时发送和接收。在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工形式即可以使用一条数据线,也可以使用两条数据线,如图3.8所示。图3.8 半双工形式半双工通信中每端需有一个收/发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟,信息传输效率低些。但是对于像打印机这样单方向传输的外围设备,用半双工方式就能满足要求了,不必采用全双工方式,可省一根传输线。波仕电子的RS-232/RS-485转换器使用了独特的零延时自动收发转换技术,直接从RS-485信号中用硬件方法提取收发切换控制信号,并且具备零延时的性能。零延时指收发切换过程转变时间为0,在使用时与RS-232通信一样。全双工形式:RS-232、RS-422全双工数据通信分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作,如图3.9所示。图3.9 全双工形式在全双工方式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程监控系统中使用,信息传输效率较高。握手信号握手信号实际上是控制信号,用来控制数据的传送。通过握手信号,发送方可以通知接收方是否有数据要发送。接收方通过握手信号通知发送方它是否已经准备好了接收信号。握手信号遵循某种协议。 当发送方和接收方处理数据的不一样时,可能会造成数据丢失。在传输中,如果发送方的发送速度大于接收方的接收速度,同时接收方处理数据的速度不够快的话,那么接收端的缓冲区必定在一定时间后溢出,从而造成以后发送过来的数据不能进入缓冲区而丢失。发送方何时可以继续发送数据,何时必须暂停发送,从而让接收方有时间处理数据,称为流量控制,必须靠握手信号来解决这个问题。例如,打印机和计算机进行通信时,一些打印机打印速度可能跟不上计算机发送数据的速度,就必须要通过握手信号通知计算机暂停发送数据。硬件握手在硬件握手中,发送方通过将某一个导线拉到高电平或者低电平。来表示发送方可以发送数据。接收方已经准备好接收数据之后,也把某一个导线拉到高电平或者是低电平,来通知发送方,发送方一直在检测这个信号。接收方可以在任何时候把这个信号变为无效,甚至是在接受一个数据块过程中。当发送方检测到这个信号变为无效之后,就必须停止本次发送,直到这个信号变为有效。软件握手在软件握手中,以数据线上的数据信号来代替实际的硬件电路。这种方法用在直接连接或者通过调制解调器连接的两台计算机之间进行双向通信的场合。 对于软件握手现在已经建立了一些标准协议,其中最常用的是通信协议。通信协议是指通信双方的一种约定,包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,通信双方必须共同遵守,也叫做通信控制规程或称传输控制规程,它属于OSI七层参考模型中的数据链路层。自动握手波仕电子的RS-232/RS-485转换器使用了独特的零延时自动收发转换技术。RS-485为半双工通信,收与发不能同时进行,需要进行收与发的切换。一般这需要使用RS-232的一根握手信号线并在软件上进行控制。波仕电子的RS-232/RS-485转换器则省去了这根握手信号线,直接从RS-485信号中用硬件方法提取这个控制信号,并且具备零延时的性能。零延时指收发切换过程转变时间为0,在使用时与RS-232通信一样。通信参数串行端口的通信方式是将字节拆分成一个接着一个的位再传送出去。接到此电位信号的一方再将此一个一个的位组合成原来的字节,如此形成一个字节的完整传送。在传输进行的过程中,双方明确传送信息的具体方式,否则双方就没有一套共同的译码方式,从而无法了解对方所传过来的信息的意义。因此双方为了进行通信,必须遵守一定的通信规则,这个共同的规则就是通信端口的初始化。通信端口的初始化必须对以下几项参数进行设置。数据的传输速度 串行通信的传输受到通信双方配备性能及通信线路的特性所左右,收、发双方必须按照同样的速率进行串行通信,即收、发双方采用同样的数据传输率。数据传输率批量的是串行通信中每一秒所传送的数据位数,单位是bit/s。经常可以看到食品或MODEM的规格书上都写着19200bit/s、38400bit/s,所指的就是数据传输率。 就仪器或工业场合来说,4800bit/s、9600bit/s是最常见的数据传输率,现在的个人计算机 所提供的串行端口的数据传输率都可达到115200bit/s(甚至有921600bit/s),若传输距离较近而设备也提供时,使用最高的数据传输率也可以。例如,在某异步串行通信中,每传送一个字符需要8位,如果采用数据传输率4800bit/s进行传送,则每秒可以传送600个字符。数据的传送单位一般串行通信端口所传送的数据是字符型,若用来传输文件,则会使用二进制的数据类型。当使用字符型时,工业界使用到的有ASCII字符码及JIS字符码;ASCII使用了8位形成一个字符,而JIS码则以7位形成一个字符。欧美的设备多使用8位的字节,而日本的设备多使用7位为一个字节。以实际的RS-232传输上看来,由于工业界常使用的PLC大多只是传送文字码,因此只要7位就可以将ASCII的0127码表达出来(2128,共有128种组合方式),所有的可见字符也落在此范围内,所以只要7个数据位就够了。不同的情形下(依据使用的协议),会使用到不同的传送单位。使用多少位合成一个字节必须先行确定。起始位与停止位 由于异步串行传输中并没有使用同步脉冲作基准,故接收端完全不知道传送端何时将进行数据的传送。发送端准备要开始传送数据时,发送端会在所送出的字符前后分别加上高电位的起始位(逻辑0)及低电位的停止位(逻辑1),它们分别是所谓的起始位和停止位。也就是说,当传送端要开始传送数据时,便将传输线上的电位由低电位提升至高电位;而当传送结束后,再将电位降至低电位。接收端会因起始位的触发(因电压由低电位升至高电位)而开始接收数据,并因停止位的通知(因电压维持在低电位)而明确数据的字符信号已经结束,当加入了起始位及停止位才比较容易达到多字符的接收能力。起始位固定为1位,而停止位则有1、1.5、2位等多种选择,如何选择呢?只要通信双方协议通过即可,没有强制规定。4、校验位 为了预防错误的发生,使用校验位作为检查的机制。校验位即是用来检查所传送数据的正确性的一种核对码,这之中又分成奇校验与偶校验两种,分别是检查字符码中1数目是奇数或偶数。以偶校验为例,“A”的ASCII码是41H(16进制),将它以二进制表示时,是01000001其中1的数目是2,因此校验位便是0,使1的数目保持偶数;同样,校验位是奇校验时,“A”的校验位便是1,使1的数目保持在奇数。接收者重新计算奇偶校验位,如果新的计算值正确,那么表示正常。如果新的计算值错误,那么接收端就会收到一些指示,表示此次接收的数据有误。常见的通信协议RS232通信协议RS-232主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能。例如CRT、打印机与CPU的通信大都采用RS-232接口,MCS-51单片机与PC机的通信也是采用该种类型的接口。由于AT89S51单片机本身有一个全双工的串行接口,因此该单片机用RS-232C串行接口总线非常方便。 RS-232C串行接口总线适用于:设备之间的通信距离不大于15米,传输速率最大为20kB/s。由于RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,即:逻辑“0”:+5V+15V逻辑“1”:-5V-15V因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏。RS232端口是标准的DB9 孔座,引脚定义符合RS232规范。采用的是三线连接。 RS485通信协议针对RS-232芯片的接口的信号电平值较高、易损坏接口电路、传输速率较低、传输距离有限等不足,于是出现RS-485接口标准。RS-485 标准是由两个行业协会共同制订和开发的,即EIA电子工业协会和TIA通讯工业协会。EIA 曾经在它所有标准前面加上RS 前缀英文Rcommended standard 的缩写,因此许多工程师一直延用这种名称。 RS485具有以下特点:1 .RS-485的电气特性:逻辑“1”以两线间的电压差为+(26) V表示;逻辑“0”以两线间的电压差为-(26)V表示。接口信号电平比RS-232降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。 2.RS-485的数据最高传输速率为10Mbps。 3.RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强, 即抗噪声干扰性好。4.RS-485接口的最大传输距离标准值为4000英尺,即1219米, RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。虽然RS485相对RS232有很多优点,但其自身还有一些不足:1.RS485 总线的通讯容量较少,理论上最多仅容许接入32 个设备,不适于楼宇为结点的多用户容量要求。2.RS485 总线的通讯速率低,常用波特率为9600bps。而且其速率与通讯距离有直接关系,当达到数百米以上通讯距离时,其可靠通讯速率1200bps。3.RS485 芯片功耗较大,静态功耗达到2-3mA,工作电流(发送)达到20mA, 若加上电阻及终端电阻,工作电流会更大。增加了线路电压降,不利于远程布线。4.RS485 总线构成的网络只能以串行布线,不能构成星形等任意分支。串行布线对于小区实际布线设计及施工造成很大难度,不遵循串行布线规则又将大大降低通讯的稳定性。5.RS485 总线自身的电气性能决定了其在实际工程应用中稳定性较差,在多节点、长距离场合需对网络进行阻抗匹配等调试,增添工程复杂性。 6.RS485 总线通常不带隔离,当网络上某一节点出现故障会导致系统整体或局部的瘫痪,而且又难以判断其故障位置。7.RS485 总线长距离传输(1200 米以上)时一般暴露于户外,极易因为雷击等原因引入过电压。RS485 收发器工作电压较低(5V 左右),其本身耐压也非常低(-7V+12V),一旦过压引入,就会击穿损坏。通信节点受损后无恢复,因此必须采取多种措施加以保护。3.4.3数据传输模块设计数据传输模块硬件接口电路如图3.10所示。图3.10 数据传输模块先选用其中一路发送/接收。R1OUT接AT89S51单片机的RXD,T1IN接AT89S51的TXD。T1OUT接PC机的RD,R1IN接PC机的TD。因为MAX485具有驱动能力,所以不需要外加驱动电路。4 系统的软件设计软件部分主要是用所编写的语言程序来配合相应的硬件电路,控制所设计电路实现所预期功能的部分。AT89S51单片机的程序可以使用C语言,也可以使用汇编语言,或者是两者的结合,本设计使用汇编语言编写程序实现出租车计价器的各部分功能。4.1 总程序流程图在本设计中,硬件所应用的都是集成的较简单的器件,节约了成本和简化了电路,因此这就给程序设计增加了要求。在以AT89S51单片机为核心的总体设计中,除了各个模块之间的电气连接外,就是要靠程序来实现对它们的协调工作了。程序在其中起到了灵魂的作用。本设计的主流程图如图4.1所示。 开始 设置内存空间 初始化 采集温度 将数据传送给单片机 处理数据 送显示 将数据送入串口发送 结束 图4.1 主流程图主程序如下所示: ORG 0000H 单片机内存分配申明!TEMPER_L EQU 29H;用于保存读出温度的低8位TEMPER_H EQU 28H;用于保存读出温度的高8位FLAG1 EQU 38H;是否检测到DS18B20标志位 RS EQU P2.0RW EQU P2.1E EQU P2.2COUNT EQU 32H A_BIT EQU 20H ;个位数存放内存位置B_BIT EQU 21H ;十位数存放内存位置 TEMP EQU 50H MAIN: LCALL DISPLAY1START:LCALL GET_TEMPER;调用读温度子程序进行温度显示,显示范围00到99度,显示精度为1度。因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位,将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度 MOV A,29HMOV C,40H;将28H中的最低位移入CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,A LCALL DISPLAY2;调用显示子程序AJMP START4.2 各模块程序设计4.2.1 温度采集模块因为DS18B20的硬件比较简单,所以软件设计相对比较复杂,在单片机与DS18B20进行通信时,需要按照DS18B20的通信协议进行通信,严格按照时序对其进行读写操作,通常在汇编语言来保证严格的时序。对于编程人员来说,DS18B20的数据读取和写入需要用移位的方式进行。在本设计中将在单片机与DS18B20之间进行应答来采集温度参数,单片机先将与DS18B20的连线电平拉低500ms以上,将DS18B20复位,再进行操作。先向DS18B20发送指令,跳过ROM后发出转换温度命令,然后初始化后读取温度。下面是对其进行的一系列操作的时序要求和操作。(1)初始化程序在这部分中,需要将DS18B20的一线总线拉低500ms以上,将其复位,然后将总线置高,等待DS18B20的回应,有应答就置标志位,没有应答就清空标志位。本设计中,选择总线上只有一个DS18B20,所以跳过ROM,电路中采用的晶振频率为12MHz,通过计算公式,可以计算出空跑语句行数。复位初始化子程序见附录。(2)读出转换后的温度值在每次操作前都需要将DS18B20置位,先向其温度转化指令,而后需要约750ms的等待时间,通过调用延时子程序来延时。然后向DS18B20发送读取温度的命令,将温度读取出来,放到缓存中取。具体程序见附录。(3)发送指令使用通用的I/O口向DS18B20写数据。本设计中,通过单总线采取移位的方式来向DS18B20写入数据,按照8位的方式写进去。在写的过程中,要严格按照DS18B20的产品说明书的时序进行写操作:每次将1Bit数据写入前,都需要对DS18B20进行写的初始化,将数据线拉低60us以上,完成写初始化后,将1位数据写进DS18B20,然后等待15us以上,写操作完成,继续初始化,写下一位,直到写完一个字节。具体程序见附录。(4)读取数据使用通用I/O口从DS18B20读取数据。在此,也使用移位的方式从DS18B20中读取数据,需要严格按照DS18B20的产品说明书进行读操作,每次将1位数据读入前,都需要对其进行读初始化,将数据线拉高1us以上,等待读的初始化,然后拉低数据线1us以上,使读初始化有效。完成读初始化后,从DS18B20将1位数据读入,然后等待15us以上,读操作完成,等待60us以上,继续初始化,读下1位,直到读完1B。这里完成了温度的计算功能,因为12位转化时每一位的精度为0.0625度,不要求显示小数,所以可以抛弃29H的低4位,将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度,这个转化温度的方法非常简洁,无需乘以系数0.0625。具体程序见附录。为了清楚起见对DS18B20的操作流程图如图4.2所示。Y 温度转换结束? 初始化 写命令:跳过读序列号操作(0CCH) 写命令:启动温度转换 (44H)N 初始化 写命令:跳过读序列号操作(0CCH) 写命令:读温度寄存器 (0BEH) 保存温度数据 开始 结束 图4.2 DS18B20测温程序流程图4.2.2 数据显示模块 数据显示模块程序设计的流程图如图4.3所示。 调用显示特定字符子程序 初始化,设定第一个字符的显示地址 查表,写数据操作,送字符“temp: C”显示 调用温度显示子程序从29H单元中将16进制的温度值转化为十进制 初始化,设定显示温度地址查表,写数据操作,送温度的十位显示查表,写数据操作,送温度的个位显示 返回 返回 开始 结束 图4.3 温度显示流程图 特别提出的是将29H单元中的十六进制的温度值转换为十进制,并分离出十进制的算法是:将十六进制的温度值除以10,所得的商即为所要显示的十进制的温度的十位数,所得余数即为所要显示的十进制的温度的个位数,再分别送显示即可。程序如下:MOV A,29H;将29H中的十六进制数转换成10进制 MOV B,#10 ;10进制/10=10进制DIV ABMOV B_BIT,A ;十位在aMOV A_BIT,B ;个位在b另外,需要指出的是,再每次向LCD写指令或写数据之前,都需要先有个测忙语句,来检测LCD现在是否空闲,或者用一段延时程序也可以实现同样的效果,在本设计中应用的延时程序,较测忙语句不易出错,且简单易实现。其余的详细程序见附录。 4.2.3 数据传输模块 AT89S51单片机发送数据、接收数据利用RXD(串行数据接收端)线、TXD(串行数据发送端)线完成。发送数据时,执行一条将数据写如SBUF的传送指令(例如MOV SBUF,A),即可将要发送的数据按事先设置的方式和波特率从引脚TXD串行输出。接收数据时,当检测到RXD引脚上出现一帧数据的起始位后,便一位一位地将接下来的数据接收保存到SBUF中,然后产生中断标志位,向CPU申请中断,请求CPU接收这一数据,CPU响应中断后,执行一条读SBUF指令(例如MOV A,SBUF)就可将接收到的数据送入存储单元。AT89S51单片机串行接口的控制寄存器有两个特殊功能寄存器SCON和PCON,用以设置串行端口的工作方式、接收/发送的运行状态、接收/发送数据的特征、数据传输率的大小,以及作为运行的中断标志等,其格式如下:SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI(1) 串行口控制寄存器SCON。SCON的字节地址是98H,位地址(由低位到高位)分别是98H一9FH。SCON的格式如下:SM0、SMl:串行口工作方式控制位。 00方式0;01方式1; 10方式2;11方式3。SM2:仅用于方式2和方式3的多机通信控制位。发送机SM21(要求程控设置)。当为方式2或方式3时:接收机 SM21时,若RB81,可引起串行接收中断;若RB80,不引起串行接收中断。SM20时,若RB81,可引起串行接收中断;若RB80,亦可引起串行接收中断。REN串行接收允许位:0禁止接收;1允许接收。TB8:在方式2、3中,TB8是发送机要发送的第9位数据。RB8:在方式2、3中,RB8是接收机接收到的第9位数据,该数据正好来自发送机的TB8。TI:发送中断标志位。发送前必须用软件清零,发送过程中TI保持零电平,发送完一帧数据后,由硬件自动置1。如要再发送,必须用软件再清零。RI:接收中断标志位。接收前,必须用软件清零,接收过程中RI保持零电平,接收完一帧数据后,由片内硬件自动置1。如要再接收,必须用软件再清零。(2) 电源控制寄存器PCON。PCON的字节地址为87H,无位地址,其格式如下:PCON是为在CMOS结构的AT89S51单片机上实现电源控制而附加的,对于HMOS结构的AT89S51单片机,除了第7位外,其余都是虚设的。与串行通信有关的也就是第7位,称作SMOD,它的用处是使数据传输率加倍。SMOD:数据传输率加倍位。在计算串行方式1,2,3的数据传输率时;0表示不加倍;1表示加倍。 在本设计中,使串行口工作于方式1,SMOD=0,设置波特率为1200bps。由公式计算出定时器的时间常数为0E6H。其程序如下所示:MOV TMOD,20H;设置定时器T1工作在方式2MOV PCON,#00H;使SMOD=0MOV SCON,#50H;串行工作方式1MOV TH1,#0E5H;设定定时器初值,使波特率为1200MOV TL1,#0E5HCLR ET1;关闭T1中断CLR ES;关闭串口中断CLR EA;关闭全局中断SETB TR1;打开定时器T1MOV SBUF,A;将a中要发送的数据赋给串口的数据寄存器sbufJNB TI,$;判断数据是否发送完CLR TI;数据发送完,清中断标志位 另外,在串口调试中还要用到串口调试助手,用来接发送数据。其窗口如图4.4所示: 图4.4 串口调试助手5 系统的制作和调试 系统的制作和调试主要是对于硬件电路的制作和软件的调试,下面将对于这部分进行论述。一个系统的应用开发可分为以下五个过程。(1)硬件系统设计调试。根据设计的题目的要求以及系统的功能设计电路部分,在这个环节中要注意电路的合理布局以及对电路的保护。设计完电路后就要制作电路板,完成电路的焊接任务,并且检查电路可以使用。(2)应用程序的设计。根据功能设计程序框图,根据框图编制应用程序,在这个环节中要注意程序的模块化设计,这样可以给自己的程序编制带来很大的便利。(3)应用程序的仿真调试。指用仿真器对硬件进行在线调试或软件仿真调试,在调试中不断修改、完善硬件及软件,在这个环节中同样要注意模块化的感念,先对于各个模块进行仿真,通过后在对整个系统进行仿真,这样可以在部分仿真中解决问题以节约时间。(4)应用程序的烧写。用专用烧写器可将编译过的二进制源程序文件写入芯片内。(5)系统脱机运行检查。进行全面检查,针对出现的问题修正硬件、软件或总体设计方案。在这个环节中也要注意模块化的概念。5.1 系统PCB板的设计电路设计好以后,PCB板的设计也是一个十分重要的内容。电路设计的合理,制成电路板后系统却工作不正常的事情屡见不鲜,究其原因,多半是PCB板的设计存在问题,特别是频率较高的电路和数字模拟混合电路的印刷线路板的设计。确定PCB的大小首先,要考虑PCB尺寸大小。PCB尺寸过大时,印制线条长,阻抗增加,抗噪声能力下降,成本也增加;过小,则散热不好,且邻近线条易受干扰。在确定PCB尺寸后,再确定特殊元件的位置。最后,根据电路的功能单元,对电路的全部元器件进行布局。布局 按照电路的流程安排各个功能电路单元的位置,使布局便于信号流通,并且使信号尽可能保持一致的方向。 以每个功能电路的核心元件为中心,围绕它来进行布局。元器件均匀、整齐、紧凑地排列在PCB上尽量减少和缩短各元器件之间的引线和连接。 尽可能使元器件平行排列。这样,不但美观,而且装焊容易。 布线 输入输出端用的导线尽量避免相邻平行。印制导线拐弯处取圆弧形,因直角或夹角在高频电路中会影响电气性能。此外,尽量避免使用大面积铜箔,否则,长时间受热时,易发生铜箔膨胀和脱落现象。必须用大面积铜箔时,在本系统中,用栅格状敷铜,这样有利于排除铜箔与基板间粘合剂受热产生的挥发性气体。在布线的过程中特别要注意,过孔尽量不要布在芯片的下面,特别是贴片形式的芯片。如果在贴片下有过孔,那么这个布线就是错误的。我们在布线的过程中考虑电路的特殊要求,以及为了更好的保护贴片和电路调试的方便,我们采用在贴片的地方,自己做一个DIP的封装,把贴片放在另外一块小板上,这个小板再插在大电路板的DIP上。在实际的制作过程中还要考虑焊芯片的方便。这样我们尽量将芯片的焊线布在底层,这样焊既方便又美观。5.2 硬件调试在印制电路板工作完成之后,根据设计的步骤要求我对自己的硬件电路板进行了调试工作,这里将调试的过程及在调试的过程中所遇到的问题提出来进行讨论,以便能够进一步的掌握设计工作的要领。检测元器件:检测所有元器件的好坏,是否正常工作,导线是否导通等。具体的实现方法是先检测电容、电阻及导线是否短接,采用的工具是万用表。检测各个引脚信号:给电路接通电源,大概用手摸一下元器件是否发热,有的话,关掉电源,进行再次检测;没有的话,则测试所有芯片的VCC端电压是否达到要求,接地端是否都接地,无误后,则开始对电路中所用到的引脚进行信号波形测试,所使用的工具最好是示波器。当以上检测都没有什么问题的时候,就可以烧写单片机程序,进行整体调试了,调试的结果能达到设计的要求数据,就算硬件设计工作完成。5.3 软件调试本设计系统的控制程序是采用汇编语言编程。关于单片机汇编语言软件调试,在语句中出现的语法错误,软件会提示出来,以便于更正。因此,软件调试主要的工作是检查头文件是否正确,是否与单片机的端口地址相匹配。其次,就是检查初始化程序的正确性,根据设计的要求定义正确的初始化程序,为后面程序的执行做好铺垫作用。然后就是根据软件实现步骤逐个检查程序的可行性,以及程序的嵌套性是否都能达到设计的要求。本系统中首先对要用到的单片机管脚进行宏定义,有利于程序的可读性;然后进行相关变量的定义,单片机初始化,液晶显示器的初始化,温度传感器的初始化;最后就是实现远程数据传输。按照上面提供的程序流程图对以上几大模块分别进行编程并按一定的顺序有机的联系起来以达到系统控制所需要的功能。对程序反复调试,特别要注意可靠性,确定无误后,进行编译并生成Hex文件,烧到单片机进行实物调试。6 总结千里之行,始于足下。论文任务书刚拿到手上,感觉无从下手,后来通过李震老师孜孜不倦的讲解,让我对整个系统的构造有了深刻的认识。设计过程中遇到很多困难,在向导师请教和跟同学讨论的基础上,我认真的研究了任务书的要求,慢慢调整,一步一步先看懂找来的资料,终于有了一点头绪,开始着手设计系统框图,分阶段进行系统设计,认真查阅资料和思考以及老师的答疑,然后一个一个功能攻破它,实现它。通过本次设计,巩固了以前所学的相关知识,拓展了数字系统的知识面,提高了理论结合实际的应用能力,同时加强动手操作能力,从各方面得到了提高。谢 辞特别感谢李震老师细心的指导,从选题的确定,硬件方案的选择和设计,论文的写作、修改到最后定稿都给予了我重要帮忙,才使我顺利成功完成此次设计,在遇到问题和困难时,每次都是李震老师帮我答疑解惑,在此对他的悉心指导表示感谢。也要感谢学院为我们提供了优越的实践、制作条件和百忙中抽出时间来为我评阅论文的院领导和老师,同样感谢在毕业设计中陪着我到图书馆查阅资料、在制作中给于我帮助的同学们,从你们那里我得到了很多的启发,有你们我才能不断进步。在此我向你们表达衷心的感谢!参考文献1 单片机应用技术
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 2820.5-2025往复式内燃机驱动的交流发电机组第5部分:发电机组
- GB/T 45621-2025航天术语空间碎片
- 预防医学专业教学标准(高等职业教育专科)2025修订
- 2025年中国带表数显卡规市场全景评估及投资规划建议报告
- 流感护理指南
- 2019-2025年中国熟食加工市场前景预测及投资规划研究报告
- 2024年全球及中国汽车12V电池BMS行业头部企业市场占有率及排名调研报告
- 汽车尾气净化设备项目安全评估报告
- 中国水质采样器行业发展前景预测及投资战略研究报告
- 中国化工塑料罐行业市场前景预测及投资价值评估分析报告
- 园林绿化树木的修剪方案
- 国企集团公司各岗位廉洁风险点防控表格(廉政)范本
- 反腐败与廉洁行为管理制度
- 高考英语语法专题非谓语动词讲解
- ISO28000:2022供应链安全管理体系
- (2024年)《庄子》二则课件
- 化疗病人的营养膳食课件
- 高考日语复习:日语形容词用法专项课件
- “拍卖委托书–古董拍卖”
- 大型火灾战评报告
- 切口感染护理查房
评论
0/150
提交评论