下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 33个毕业设计单片机类温度监控系统的设计温度监控系统的设计

33个毕业设计单片机类温度监控系统的设计温度监控系统的设计.doc

33个毕业设计单片机类温度监控系统的设计温度监控系统的设计

紫馨轩
2018-09-07 0人阅读 举报 0 0 暂无简介

简介:本文档为《33个毕业设计单片机类温度监控系统的设计温度监控系统的设计doc》,可适用于工程科技领域

wwwsfmcucomwwwsfeducn盛方整理版权归作者所有第页共页引言随着“信息时代”的到来作为获取信息的手段传感器技术得到了显著的进步其应用领域越来越广泛对其要求越来越高需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此了解并掌握各类传感器的基本结构、工作原理及特性是非常重要的。由于传感器能将各种物理量、化学量和生物量等信号转变为电信号使得人们可以利用计算机实现自动测量、信息处理和自动控制但是它们都不同程度地存在温漂和非线性等影响因素。传感器主要用于测量和控制系统它的性能好坏直接影响系统的性能。因此不仅必须掌握各类传感器的结构、原理及其性能指标还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解才能将传感器和信息通信和信息处理结合起来适应传感器的生产、研制、开发和应用。另一方面传感器的被测信号来自于各个应用领域每个领域都为了改革生产力、提高工效和时效各自都在开发研制适合应用的传感器于是种类繁多的新型传感器及传感器系统不断涌现。温度传感器是其中重要的一类传感器。其发展速度之快以及其应用之广并且还有很大潜力。为了提高对传感器的认识和了解尤其是对温度传感器的深入研究以及其用法与用途基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术而开发设计了这一温度监控系统。文中传感器理论单片机实际应用有机结合详细地讲述了利用热敏电阻作为热敏传感器探测环境温度的过程以及实现热电转换的原理过程。本设计应用性比较强设计系统可以作为生物培养液温度监控系统如果稍微改装可以做热水器温度调节系统、实验室温度监控系统等等。课题主要任务是完成环境温度检测利用单片机实现温度调节并通过计算机实施温度监控。设计后的系统具有操作方便控制灵活等优点。本设计系统包括温度传感器AD转换模块输出控制模块数据传输模块温度显示模块和温度调节驱动电路六个部分。文中对每个部分功能、实现过程作了详细介绍。整个系统的核心是进行温度监控完成了课题所有要求。设计要求控制要求()生物繁殖培养液的温度要保证在适于细胞繁殖的温度内这主要在控制程序设计中考虑。温度控制范围为~升温、降温阶段的温度控制精度要求为度保温阶段温度控制精度为度。图温度控制曲线()微机自动调节正常情况下系统投入自动。()模拟手动操工作的外围电路设备()温度传感器温度传感器采用补偿型NTC热敏电阻其主要性能如下:①补偿型NTC热敏电阻B值误差范围小对于阻值误差范围在%的产品其一致性、互换性良好。适合于一般精度的温度测量和计量设备。②外型结构和尺寸:图温度传感器结构尺寸图③主要技术参数:时间常数≤S  测量功率≤mW使用温度范围~℃耗散系数≥mW℃额定功率W  ④降功耗曲线:图温度传感器功耗曲线图()核心处理单元MicroChipPICFA单片机MicroChipPCIFA单片机主要性能:具有高性能RISCCPU仅有条单字指令。除程序指令为两个周期外其余的均为单周期指令。运行速度:DCM时钟输入。DCns指令周期。K*个FLASH程序存储器。*个数据存储器(RAM)字节。引脚输出和PICCBB兼容。中断能力(达到个中断源)。级深度的硬件堆栈。直接间接和相对寻址方式。上电复位(POR)。上电定时器(PWRT)和震动启动定时器。监视定时器(WDT)它带有片内可靠运行的RC振荡器。可编程的代码保护。低功耗睡眠方式。可选择的振荡器。低功耗高速CMOSFLASHEEPROM工艺。全静态设计。在线串行编程(ICSP)。单独v的内部电路串行编程(ICSP)能力。处理机读写访问程序存储器。运行电压范围v到v。高输入输出电流mA。商用工业用温度范围。低功耗:在v,MHz时典型值小于mA。在v,KHz时典型值小于uA。典型的静态电流值小于uA。外围特征:Timer:带有预分频的位定时器计数器。Timer:带有预分频的位定时器计数器在使用外部晶体时钟时在SLEEP期间仍能工作。Timer:带有位周期寄存器预分频和后分频器的位定时器计数器个捕捉器比较器和PWM模块。其中:捕捉器是位的最大分辨率为nS。比较器是位的最大分辨率为nS。PWM最大分辨率为是位。位多通道模数转换器。带有SPI(主模式)和IC(主从)模式的SSP。带有位地址探测的通用同步异步接收发送(USARTRCI)。带有RD,WR和CS控制(只引脚)位字宽的并行从端口。带有降压的复位检测电路。()RSC接口电路计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低特别是在远程传输时避免了多条线路特性的不一致而被广泛采用。 在串行通讯时要求通讯双方都采用一个标准接口使不同 的设备可以方便地连接起来进行通讯。 RSC接口(又称 EIA RSC)是目前最常用的一种串行通讯接口。它是在年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”该标准规定采用一个个脚的 DB连接器对连接器的每个引脚的信号内容加以规定还对各种信 号的电平加以规定。①接口的信号内容 实际上RSC的条引线中有许多是很少使用的在计算机通讯中一般只使用条引线。RSC最常用的条引线的信号。②接口的电气特性 在RSC中任何一条信号线的电压均为负逻辑关系。即:逻辑。“”~V逻辑“” ~ V 。噪声容限为V。即 要求接收器能识别低至V的信号作为逻辑“”高到V的信号 作为逻辑“”。③ 接口的物理结构 RSC接口连接器一般使用型号为DB的芯插头座,通常插头在DCE端,插座在DTE端 一些设备与PC机连接的RSC接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。所以采用DB的芯插头座传输线采用屏蔽双绞线。④传输电缆长度 由RSC标准规定在码元畸变小于的情况下传输电缆长度应为英尺其实这个的码元畸变是很保守的在实际应用中约有的用户是按码元畸变~的范围工作的所以实际使用中最大距离会远超过英尺。图Max结构图()继电器继电器是具有隔离功能的自动开关广泛用于遥控遥测通信自动控制机电一体化及电力电子设备中是最重要的控制元件之一。继电器是在自动控制电路中起控制与隔离作用的执行部件它实际上是一种可以用低电压、小电流来控制大电流、高电压的自动开关。在本系统中继电器控制的自动温度调节电路和PCIFA单片机中程序构成温度自动监测电路实现对生物培养液温度的监测和自动控制()半导体降温片及电阻加热丝①半导体制冷器是根据热电效应技术的特点采用特殊半导体材料热电堆来制冷能够将电能直接转换为热能效率较高。其工作原理如图:图半导体降温片工作原理图半导体制冷片由许多N型和P型半导体之颗粒互相排列而成而NP之间以一般的导体相连接而成一完整线路通常是铜、铝或其他金属导体最後由两片陶瓷片像夹心饼乾一样夹起来陶瓷片必须绝缘且导热良好通上电源之後冷端的热量被移到热端导致冷端温度降低热端温度升高。它的外观如图所示。)本控制系统是对生物培养液进行温度监控故太快的温度变化对生物繁殖显图半导体降温片外观图②本控制系统是对生物培养液进行温度监控过快的温度变化对生物繁殖显然是不利的因此在本系统中采用的是高阻抗小功率加热电阻丝进行温度的小范围调节。温度控制系统的组成框图采用典型的反馈式温度控制系统组成部分见图。其中数字控制器的功能由单片机实现。图温度控制系统的组成框图培养皿的传递函数为EMBEDEquation其中τ为电阻加热的时间常数为电阻加热的纯滞后时间为采样周期。AD转换器可划归为零阶保持器内所以广义对象的传递函数为()广义对象的Z传递函数为()所以系统的闭环Z传递函数为()系统的数字控制器为=()写成差分方程即为()令,,得()式中第次采样时的偏差第次采样时的偏差第次采样时的偏差温度控制系统结构图及总述图温度控制系统结构图图中温度传感器和MicroChipPICFA单片机中的AD转换器构成输入通道用于采集培养皿内的温度信号。温度传感器输出电压经过AD转换后的数字量与培养皿内的温度给定值数字化后进行比较即可得到实际温度和给定温度的偏差。培养皿内的温度设定值由MicroChipPICFA单片机中程序设定。由MicroChipPICFA单片机构成的数字控制器进行比较运算经过比较后输出控制量控制由加热和降温电路构成的温度调节电路对培养皿中的培养液温度进行调节。同时通过电平转换电路把当前温度传输到商用计算机的串口中由计算机动态的显示培养皿中的温度正常情况下温度控制由MicroChipPICFA单片机自动控制。必要时计算机也可以通过软件来强制改变培养皿中温度。温度控制系统软件设计MicrochipPICFA单片机温度控制系统软件结构图如图所示。图单片机温度控制系统软件结构图单片机控制流程图图单片机控制流程图温度变换程序模块温度传感器在℃到℃输出VV温度起点为℃满量程为℃。MicroChipPICFA单片机内嵌的位AD转换器对应输出的数字量为B~B(~V)应用以下变换公式进行变换:AX=A(AMA)(NXN)(NMN)式中A为一次测量仪表的下限。AM为一次测量仪表的上限。AX实际测量值。N仪表下限对应的数字量。NM仪表上限对应的数字量。NX测量值对应的数字量。温度非线性转换程序模块采用折线拟合法进行线性化处理如图所示分为以下几段:当V≤Ax<V时T℃=*WN当V≤WN<V时T℃=*WN当V≤WN<V时T℃=*WN当V≤WN<V时T℃=WN表温度曲线实际测量数据温度(℃)电压(V)温度(℃)电压(V)温度(℃)电压(V)温度(℃)电压(V)温度(℃)电压(V)温度(℃)电压(V)温度(℃)电压(V)图图温度分段线限等效图通信协议的设计由于温度采集和实施控制是通过单片机控制系统实现而微机完成温度监控所以需要采用单片机和微机之间的通信协议。本设计应用条件为传输距离不超过米的短距离数据传输且传输数据量较小所以采用在控制领域里应用较广泛RSC串行通信方式。针对近程小批量的数据通信设计时采用线制(RXDTXDGND)软握手的零MODEM方式。即:将PC机和单片机的“发送数据线(TXD)”与“接收数据(RXD)”交叉连接二者的地线(GND)直接相连而其它信号线如握手信号线均不用而采用软件握手。这样即可以实现预定的任务又可以简化电路设计节约了成本。由于RSC是早期为促进公用电话网络进行数据通信而制定的标准其逻辑电平与TTLMOS逻辑电平不同。逻辑电平规定为~V之间逻辑是电平为~V之间。因此在将PC机和单片机的RXD和TXD交叉连接时必须进行电平转换。下图即为通信时的硬件连接图其中器件MAX完成逻辑电平转换的任务。图电平转换电路图注:在PC机中针RS接口中:线:RXD线:TXD线:GND而在针的RS接口中:线:RXD线:TXD线:GND软件设计在进行数据通信的软件设计时必须解决好两个方面的问题:一是可靠性二是速度。而这两方面的问题可靠性是第一位的,速度只能是在可靠的基础上的速度。可靠快速转输的实现需要PC单片机软件以及通信协议等各个环节的可靠和其间的相互配合。通信协议概述在设计PC单片机通信协议时需说明一点:在本系统的实际通信中PC机是主控者单片机只是被动接收者。采用这种通信协议较双方互为主控者时简单。本通信协议的设计思想是基于帧传输方式。即在向RS串口发送命令信号应答信号及数据信号时是一帧一帧地发送的。为了使数据快速可靠地传输将每一帧数据唯一对应一命令帧。此时传输数据即执行命令具体如下:()在PC读数据时遵循“读命令等数据报告”即PC下达一命令等待接收数据根据所接收数据的正误向应用程序报告此命令的执行情况。()在PC写数据时遵循“写命令等回应报告”即PC下达一写命令(此时所要写的数据含于此命令中)等待单片机发来的“已正确接收”的回应信号并向应用程序报告此命令执行完毕。()如果在转输过程中其间PC或MCU所接收任何一帧信号出现错误时均会向对方发送重发此帧信号的请求。如果连续三次转输失败则退出通信并向应用程序报告。通信协议说明信号帧分类()读命令帧:当PC读数据时PC向PICFA发送的命令信号。()写命令帧:当PC写数据时PC向PICFA发送的命令信号(内含所要写的数据)。()数据帧:当PC读数据时PICFA向PC发送的内含数据信息的信号。()正回应帧:当PC写数据时PICFA向PC报告数据已正确接收的信号。()重发命令帧:当PC读写数据时PICFA所接收的信号帧(读写命令帧)有误时向PC发出的请求重发信号。()放弃命令帧:当PC读写数据时出现了使程序无法正常执行时PC或PICFA向对方发出的退出通信的通知信号。信号帧格式()读命令帧格式帧头标志帧类型器件地址起始地址长度校验和帧尾标志帧头标志(Bit):表示此数据包属于本串口通信协议,并为是否接收此包数据的标志。帧类型(Bit):所用信号帧的识别标志,即信号帧分类中的各类型信号的标志字节。器件地址(Byte):PC所要访问的外部器件的地址即是哪一个外部器件。起始地址(Byte):PC所要访问的器件的存贮器起始地址。长度(Byte):一次命令所转输的数据长度。校验和(Byte):此帧信号的校验字节,为异或校验。帧尾标志(Byte):此帧信号的结束标志。()写命令帧帧头标志帧类型器件地址起始地址长度数据区校验和帧尾标志数据区:所要写的数据信息。其它分析同上。()数据帧帧头标志帧类型长度数据区校验字帧尾标志长度:所转输数据的长度。数据区:所转输的数据信息。其它分析同上。()正响应帧帧头标志帧类型空校验字帧尾标志空无意义:为了PICFA编程的方便而加入。其它分析同上。()重发帧帧头标志帧类型空校验字帧尾标志其它分析同上。()放弃帧帧头标志帧类型错误码校验字帧尾标志错误码:H执行PC命令发放弃帧回应被动退出通讯。HPICFA单片机方写入芯片发生错误主动通知PC退出通讯。通信协议处理流程()数据分帧与数据重组图串口数据发送过程将应用程序发送过来的数据作为一个数据流放在发送缓冲区中通过通信协议进行分帧──切割──发送。在接收端分帧的数据去掉帧头重新组合到接收缓冲区中交给应用程序处理发送过程的示意如图接收过程的示意图如图。单片机串口通信软件设计流程图图单片机串口通信软件流程图PC接收数据软件设计流程NNYYYYYYN图PC串口通信软件设计流程图PC上位机的软件设计PC软件设计方法的选择在开发PC上位机的通信程序中,人们常用的编程语言可分为类:()直接面向底层硬件的汇编语言。()DOS环境下的高级编程语言,如:C语言等。()Windows环境下的高级编程语言如:VC等。而在这种方式中Windows环境下的串口编程以其设备无关性可移植性以及界面友好等特征而得到广泛应用。同时在Windows操作系统已经占据统治地位的情况下欲开发良好的通信程序利用Windows环境下的高级语言已渐成为必然的选择。开发Windows环境下的串口通信程序主要有以下种方法:()利用WindowsAPI(ApplicationProgramInterface)用户程序接口函数()利用ActiveX控件后者的主要特点是简单易学但前者的功能更为强大控制手段更为灵活。PC软件通信方式的选择在Win环境下串行通信有两种:主要方式即同步方式异步方式两种方式有各自的特点。在软件设计时应根据实际情况选择合适的方式。()同步方式在同步方式中,读串口的函数试图在串口的接收缓冲区中读取规定数目的数据,直到规定数目的数据全部被读出或设定的超时时间已到时才返回。例如:(以CBuilder编程语言为例下同)…………………………………………COMMTIMEOUTSctointtimeConstant,timeMutiplierctoReadTotalTimeoutConstant=timeConstant设置总超时常数ctoReadTotalTimeoutMultiplier=timeMutiplier设置总超时系数SetCommTimeouts(mhFile,cto)超时设置……………………………………………………ReadFile(hComport,inBuffer,nWantRead,nRealRead,)读串口……………………………………………………COMMTIMEOUTS结构用于设置超时,指定读写函数的等待时间在ReadFile函数中hComport为待读串口句柄inBuffer为输入缓冲区大小nWantRead为每次调用ReadFile时,函数试图读出的字节数nRealRead为实际读出的字节数最后一个参数值代表ReadFile将采用同步文件读写方式。()异步方式异步方式中,利用Win的多线程结构,可以让串口的读写操作在后台进行,而应用程序的其它部分在前台执行例如:………………………………………………………………CreateFile(lpszPort,打开串口GENERICREAD|GENERICWRITE,,,…………………………………………OPENEXISTING,FILEFLAGOVERLAPPED,允许异步操作)OVERLAPPEDlpOverlappedCOMMTIMEOUTSctointtimeConstant,timeMutiplierctoReadTotalTimeoutConstant=timeConstant设置总超时常数ctoReadTotalTimeoutMultiplier=timeMutiplier设置总超时系数SetCommTimeouts(mhFile,cto)超时设置lpOverlappedhEvent=CreateEvent(TRUE,FALSE,)………………………………………………………………ReadFile(hComport,inBuffer,nWantRead,nRealRead,lpOverlapped)读串口……………………lpOverlapped是个OVERLAPPED结构变量,OVERLAPPED结构用于指出读写操作与其它操作的重叠为了实现线程间同步与通信,上面的代码中用CreateEvent函数产生个人工复位事件,并将其句柄赋予lpOverlapped的hEvent成员这样,在异步读写完成时,Windows发送该事件信号。()两种方式的比较异步方式利用多线程结构来监视通信设备其最大优点是程序对接收数据具有自主觉察能力。一旦通信线程查询到数据已发送到串口上线程自动向应用程序发送一个数据接收到的消息应用程序可用该消息来读取通信设备传来的数据。并且使用通信线程还不占用CPU时间这样系统实际上具有了同时控制多个通信设备(如MODEM)的能力。因此在对系统强壮性要求较高的场合下应采用异步方式。异步方式的优点也恰是同步方式的缺点。使用同步方式时容易发生线程阻塞从而使系统性能下降。但在某些场合下该缺点可以通过一些措施尽可能地减小而其简单易用的优点却是很好地体现出来。如果不考虑Win的进程和线程的问题仅在串口有数据时去读串口缓冲区就可以了。此时确定串口读取的时机握手协议及软件纠错的实现是程序员应考虑的主要问题也是减小线程阻塞所带来的负面影响的主要措施。可以采用同步转输方式的场合有如下一些特点:①何时转输数据由PC机来决定下位机只是被动接收并执行命令。②有限时间内PC机命令可以执行完毕并返回结果。而不会使PC机处于长时间等待。③每次所转输的数据的长度是已知的所转输的数据量是有限且比较小。我们在开发串行通信程序时分别应用这两种方式开发都获得了成功。鉴于应用异步方式的安全性和普遍性具体实现方法下面以CBuilder为例叙述PC机通信软件的实现过程:()打开串口在Win中串口和其他通信设备是作为文件处理的。串口的打开并闭读取以及写入所用的函数与操作文件的函数相同。通信会话由调用CreateFile函数打开串口开始CreateFile以读访问权限写访问权限或读写访问权限“打开串口”并设定了对其是异步操作方式。还是同步操作方式调用该函数打开串口进行读写操作的例子如下:mHandle=CreateFile(lpszPort,串口名GENERICREAD|GENERICWRITE,允许读写,独占方式串口不能共享,安全性属性一般设为OPENEXISTING,串口是已存在的不能建新端口lpOverlapped,异步方式串口无模板文件应设为)如果调用成功函数返回串口的句柄赋给Handle如果调用失败则函数返回INVALIDHANDLEVALUE。()初始化串口对串口的初始化工作包括对波特率数据位停止位奇偶校验位IO缓冲大小以及超时等参数的设置。在调用API函数进行串口初始化时波特率数据位奇偶校验停止位的信息包含于一个DCB结构中而超时方面的信息则包含于COMMTIMEOUTS结构中一般在用CreateFile打开串行口后可以调用GetCommState函数来获取串行口的初始配置。要修改串行口的配置应该先修改DCB结构然后再调用SetCommState函数用指定的DCB结构来设置串行口。例如:DCBdcbGetCommState(mHandle,dcb)读取DCB结构…………………………………………dcbBaudRate=设置波特率为bsdcbByteSize=每个字符有位dcbParity=NOPARITY无校验dcbStopBits=ONESTOPBIT一个停止位SetCommState(hCom,dcb)保存至DCB结构使设置值生效调用SetupComm函数可以设置串行口的输入和输出缓冲区的大小。如果通信的速率较高则应该设置较大的缓冲区。例如:……………………………………………………SetupComm(mHandle,*,*)输入输出缓冲区的大小均为K……………………………………………………在用ReadFile和WriteFile读写串行口时需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符那么ReadFile或WriteFile的操作就会结束。要查询当前的超时设置应调用GetCommTimeouts函数。该函数会填充一个COMMTIMEOUTS结构调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时。……………………………………………………TimeOutsReadIntervalTimeout=读间隔超时TimeOutsReadTotalTimeoutMultiplier=读时间系数TimeOutsReadTotalTimeoutConstant=读时间常量TimeOutsWriteTotalTimeoutMultiplier=写时间系数TimeOutsWriteTotalTimeoutConstant=写时间常数SetCommTimeouts(hCom,TimeOuts)保存设置值生效………………………………………………………………………………………………COMMTIMEOUTS结构的成员都以毫秒为单位。总超时的计算公式是:总超时=时间系数×要求读写的字符数时间常数异步方式读写串行口时虽然ReadFile()和WriteFile()在完成操作以前就可能返回但超时仍然是起作用的。这种情况下超时规定的是操作的完成时间而不是ReadFile()和WriteFile()的返回时间。()读写串口初始化工作完成以后便可以根据通信协议合理安排读写函数ReadFile()和WriteFile()以读写各种握手信息和数据信息等。其中何时读取单片机发送过来的数据信息及应答信息是重要的。此时采取的是事件驱动法即:设置通信资源上的事件掩码为EVRXCHAR。当接收到一个字符并放入缓冲区后即通知应用程序例。PC发送一组命令至单片机WriteFile(mHandle,串口句柄pDataBuff,存放数据缓种区iLen,所写数据的长度pdwWritten,已写长度操作前应置为lpOverlapped)异步方式设置通信事件掩码DWORDdwMask=EVRXCHARSetCommMask(mhFile,dwMask))设置通信事件掩码等待通信事件的发生OVERLAPPEDosmemset(os,,sizeof(OVERLAPPED))oshEvent=CreateEvent(TRUEFALSE)if(!WaitCommEvent(mhFile,dwEvtMask,os))重叠操作if(GetLastError()==ERRORIOPENDING){无限等待重叠操作结果GetOverlappedResult(mHandle,os,dwTrans,true)事件已发生安排读操作ReadFile(mHandle,串口句柄pDataBuff,存放数据缓种区iLen,所读数据的长度pdwRead,实际所读长度lpOverlapped)异步方式}在上例中我们无限等待通信事件的发生。如果通信事件一直没有发生则系统将不会继续执行。在实际程序设计中我们可以设置一时限超过此时限通信事件未到则执行相应错误处理此时只需将GetOverlappedResult函数替换为WaitForSingleObject函数此函数的声明形式如下:WaitForSingleObject(HANDLEhEvent,事件句柄unsignedlongmTimeOuts超时设置)()关闭串口通信完毕调用CloseHandle()函数关闭串口例如CloseHandle(mHandle)关闭mHandle为打开串口时返回的句柄单片机软件设计我们知道影响数据转输产生错误的因素有:转输线分布参数上下位机间的波特率误差现场干扰等。而针对近程小批量数据的通信下位机的波特率误差性是影响可靠通信的最主要因素。所以在单片机软件的设计时应重点考虑并设置好波特率。波特率()波特率误差来源分析①单片机的振荡电路是由晶体及电容C和C构成。晶振频率主要由晶体的因有频率决定同时也与电容C、C及外界温度有一定的关系。另外晶体频率的标称值与实际值也不可能完全一致。②波特率最大允许误差分析在异步串行通信方式中单片机以倍波特率的采样速率对接收数据(RXD)不断采样一旦检测到由到的负跳变分频计数器立刻复位使之满度翻转的时刻恰好与输入位的边沿对准。分频计数器把每个接收位的时间分为份在中间三位即状态时位检测器对RXD端的值采样并以取的表决方式确定所接收的数据位。由此可见当波特率的误差使得在接收某位数据位时采样点离该位的中点半位间隔时将会对该位采样两次。即:欲使接收的第N位为正确位时须满足下式成立:所允许的波特率误差N>故当所传输的一帧数据为位时所允许的最大的波特率允许误差为对于其它常用的位位位一帧的串行传输其最大的波特率允许误差分别为和。③减小波特率误差的措施我们知道使用离散度小的晶振是减小波特率误差的关键。如果晶振的离散度已超过所允许的范围此时不宜用其标称值可以采用测量其波特率的方法来得出实际的晶振波特率值。()单片机软件的实现①设置通信方式和波特率的值例………………………………………………………………MOVSCON,#H初始化串口设为方式MOVTMOD,#H利用定时器为波特率发生器并设为模式MOVPCON,#XXH设置SMOD值MOVTH,#XXH设置定时器初始值SETBTR启动定时器………………………………………………………………………………②等待接收PC机发来的信号帧并按通信协议作出相应响应。通信协议设计结论通信可靠性分析通信的可靠性主要体现在所使用通信协议的可靠性上本通信协议的可靠性主要有两点理论基础:()通过判断帧头起始字符来决定一帧的开始这样就避免了部分数据进入到内部数据处理之中。这个可能性在通过停止位的判断可将这个可能性再降低。另外通过帧类型字节的判断可使之进一步降低。()校验字将整帧信号进行异或校验则使误收的可能很小。如果将此异或校验改为CRC校验则出错的可能性更是微乎其微了。本通信所用协议具有纠错功能这体现在当PC发送或接收数据时当所接收的应答信号出现失误时将重新发送或接收此帧数据直至接收到了正确的应答具体在程序中最多允许连续出错三次超过后则放弃通信。在实际应用中应用本通信时传输距离只有几米以内而且环境干扰比较小从而从外部因素上进一步保证了通信的可靠性。通信速度分析如果在不考虑错误发生的情况下PC机每发送一帧数据时需要附加个字节其中个字节用于发送个字节用于应答PC机。每接收一帧数据时需要附加个字节其中个字节用于接收个字节用于应答。如:按每帧传送个字节计算的话其发送和接收的效率为为忽略PC和PICFA单片机的处理时间计算。发送数据速率、接收数据速率计算公式如下:发送数据速率:*=bits接收数据速率:*=bits这是理论上的速率实际中还应包含PC和PICFA单片机的处理信号帧等待信号帧的时间。在本通信协议中不会出现某信号帧已到达但PC或PICFA单片机还未开始准备接收的现象。在实际应用中因具体应用环境不同PC和PICFA单片机处理信号帧的时间会有不同所以具体速率值依具体应用而变化。Protel设计原理图()使用Protel进行电路板设计的第一步便是设计原理图原理图决定了整个电路的基本功能也是接下来生成网络表和设计印刷电路板的基础。①在Protel的初始界面下新建一个设计库该数据库用来管理项目。FileNew改文件名-改保存路径-OK②进入设计库文件中的文件夹Document。③在Document文件夹中新建原理图文件和印制板文件。FileNewSchematicDocumentOk改文件名FileNewPCBDocumentOk改文件名④打开原理图文件。⑤添加原理图文件库。DesignAddRemoveLibrary浏览所需零件库-AddOk⑥放置电路所需的各种元件图件网络标号等元器件。DesignAddRemoveLibrary浏览所需零件库-AddOk从零件库中调出元件Placepart⑦对原图元件进行布局布线构成一个完整的原理图。Placepart⑧编辑和调整。然后进行输出存档。右键-Properies…DesignationPartFootrintSave⑨打印或建立报表。图protel设计的流程图()用PCB系统设计PCB板分以下个步骤:①有关参数的设置。这一步主要设定自动布参数、自动布线参数、板面参数等。②PCB板尺寸设计。在禁止布线层上沿设计的PCB边画边框线即指定自动布局的范围。这一步为自动布局打基础。同时在上层板面(即元器件面)沿禁止布线层的边框图线放置铜线这是PCB板最后成型所必须的。③布局就是根据原理图上元器件之间的连接关系并考虑电磁兼容性以及元器件的安装空间和散热等总是将元器件放置在PCB电路板上适当的位置。布局的好坏直接影响PCB板的电气性能和布局的功能是PCB板设计过程中最费时、最繁琐的。布局工作需要耐心、细致。尽管系统提供了自动布局的功能但是一般而言都需要手工调整。手工布局首先载入SCH生成的网络表通过手工移动元器件PCB板上的排列位置实现布局。移动元器件是最好打开网络连接显示这样就能观察到相邻元器件连线的疏密。自动布局PCB系统环境提供自动布局功能完成元器件放置但在细节处最好使用手工调整。布局时要求相互间连线多的元器件应该就近放置相互间可能造成干扰的元器件应远离:功率器件应考虑散热空间。④自动布线。布线就是在元器件引脚之间放置覆铜连线的过程这一过程可以通过手工完成也可以自动进行。但是Protel的PCB系统提供了强大的自动布线功能建议使用该功能自动布线。在进行自动布线之前设计人员必须先设计好布线参数定义布线规则。如果不适当可能会导致自动布线失败即布线的成功率不高所以这一步要特别注意⑤启动设计规则检查DRC这一步利用PCB提供的DRC功能对完成布线的PCB板进行检查这一步由软件自动完成。检查的结果输出在报告文件*rep中PCB软件将出错处在PCB图上显示出来为检查、修改提供方便。⑥板面字符调整。为了使设计的PCB板美观并且安装焊接元器件方便应将元器件的名称。设计值的字符参数移至元器件框外。大小合适且字符不想重叠。⑦将经过DRC检查无误且版面字符调整好的PCB设计图存盘、输出、制版。⑧印刷板电路设计完成以后整个电路板的设计项目就基本完成。存档以便进行后期的修改及完善。图制作PCB板的流程硬件电路板的制作本设计中需要有个继电器控制外围温度调节系统个LED用来提示串口数据指示还有一个PICFA单片机一个Max电平转换器一个有源晶体振荡器及其外围电阻电容等。在确定电路的正确性可行性之后开始使用Protel对它进行布图。Protel是一个很好用的电子制作工具它还可以进行仿真。在画原理图的过程中原理图中的元件库中可能找不到自己要找的元件如PICFA等所以要自己画元件。在画原理图后选择将元件自动编号然后根据需要更改部分元件的编号。在定好元件编号后使用TOOLS中的ERC进行检查它会提示是否有编号相同的元件等错误。在ERC检查无误后便可以开始封装了。同样部分元件的封装在PCB库中找不到或者是有出入如按键开关位拨码开关在PCB库中找不到所以需要自己根据元件的实际大小和相应的原理图中引脚编号做出正确的封装。图完整的PCB图另外可变电阻在原理图中的引脚编号和PCB库中的引脚编号有点出入(可在原理图中双击元件选上HIDDENPINS则可以观察到元件的引脚编号)可以在PCB库中将该元件的引脚标号改成与原理图相对应的标号。在封装好全部元件后可以生成一个元器件报表在报表中可以清楚的看到各元件的标号和封装代号在进一步检查完毕后就开始建立网络表。在禁止布线层中画一个边框和电路板大小一样的矩形然后开始导入网络表在导入网络表没有错误后便开始正式布局了。根据原理图的走线将器件分别拉入框中放到合适的位置。布局完成后先设置好安全间距为mil布线层选择底层线宽选择mil并将焊盘外径改为mil内径改为mil(部分点要根据需要改小或改大)。然后就开始正式布线。布线不能单靠自动布线特别是在本设计中有众多芯片所以采用根据原理图对整个电路进行手动布线。这样可以使得整个电路看起来整齐些在碰到有时线路布不通的时候采用顶层短跳线的方式进行调整从而完成整个PCB电路板的设计。见图。布好PCB图检查无误后就将PCB图打印到转印纸上然后熨到电路板上腐蚀打孔。熨板前应把铜板用砂纸去掉表面被氧化的部分。腐蚀时用三氯化铁加适量的开水配成三氯化铁溶液进行腐蚀这样腐蚀会比较快腐蚀完后用天那水把电路板清洗接着便开始打孔(选用mm的针头)打完孔后用万用表测量电路线路是否连通然后先涂上松香溶液(酒精松香)这样焊接速度会比较快还能防氧化然后将其放在一边晾干。同时测量部分器件(电阻等)是否有损坏等电路板晾干后就要把器件按PCB图来安装好。然后就可以开始焊接了。焊接时要防止虚焊和未连接上所以在焊好后再用万用表测量元件和线路是否连接好。检测完毕后硬件电路板装配便完成了。设计总结通过本次温度监控系统的设计,我大有收获在制作过程中一定要注意的每个工作步骤的检查确保制作成功。比如在合理布线检查装配无误的情况下如果还出现电路无输出的情况那么可以肯定是原理图错误这时就要回到原理图进行检查。总体的检查顺序应该是原理图、PCB图、装配情况、焊接工艺。从整体来说这是一个复杂的过程要细心谨慎沉着冷静反复检查直到找到原因为止。这次毕业设计历时至少个月从一开始的确定课题到后来的资料查找、理论学习再有就是近来的调试和测试过程这一切都使我的理论知识和动手能力进一步得到频率合成电路课题中包含了通信电路和单片机部分知识可以说是对通信电路知识的一次全面综合。在画原理图、PCB布线、安装和调试过程中不可避免地遇到各种问题这要求保持沉着冷静联系书本理论知识积极地思考实在解决不了可以请教同学或指导老师。虽然在制作过程中不可避免地遇到很多问题但是最后还是在老师以及同学的帮助下圆满解决了这些问题实现了整个系统设计与最后调试相关指标达到期望的要求很好地完成了本次设计任务。经过四年学习的积累在已经掌握相关专业方面知识及其它各方面知识的情况下我认真严肃的完成了我的毕业设计。从得到题目到查找资料从对题目的研究设定到PCB电路板的制作从电路板的调试到失败后再一次全部重新开始……在这一个充满挑战伴随挫折充满热情伴随打击的过程中我感触颇深它已不仅是一个对我四年学习知识情况和我的应用动手能力的检验而且还是对我的钻研精神面对困难的心态做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做毕业设计的意义所在和我一样真正投入了身心去做的人也一定会有同样的感触。本课题的重点、难点是:()初步接触温度传感器要对传感器的原理、结构、应用等各方面从头开始琢磨()考虑从非电量信号到电量信号的电路实现原理以及与单片机的接口()熟悉拉RSC串口编程的技术()考究调整电路的实现过程以及怎么样通过单片机来间接的控制。通过做本课题我了解并掌握了传感器的基本理论知识更深入的掌握单片机的开发应用和PC编程控制。为以后从事单片机软硬件产品的设计开发、PC软件开发打下了良好的基础树立独立从事产品研发的信心并在这种能力上得到了比较充分的锻炼。谢辞在本次毕业设计中我得到了指导老师陈紫强的热心指导。自始至终关心督促毕业设计进程和进度。帮助解决毕业设计中遇到的许多问题。还不断向我们传授分析问题和解决问题的办法并指出了正确的努力方向使我在毕设过程中少走很多弯路。同时他还提供给我们专门的各种设备及场所在调试过程中能够有充足的时间。在这里非常感谢赵老师的指导和帮助并致以诚挚的谢意!同时身边的同学给了我许多的帮助。在此我向身边关心我的同学致以诚挚的谢意!另外系里的领导和老师也给了我们必要的指导我也向系和年级的领导们表示衷心的感谢!最后感谢学院对我这几年的培养。参考文献何立民单片机应用系统设计系统配置与接口技术M北京:北京航空航天大学李晓荃单片机原理与应用M北京:电子工业出版社刘和平单片机原理及应用M重庆:重庆大学出版社徐爱钧单片机高级语言C应用程序设计M北京:电子工业出版社谢自美电子线路设计实验测试(第二版)M武汉:华中科技大学出版社江国强现代数字逻辑电路北京:电子工业出版社张勇PROTELSE电路设计技术入门与应用(第一版)北京:电子工业出版社樊昌信通信原理(第五版)M北京:国防工业出版社,RichardcDorfmodernconctrolsystermMBEIJING:SciencePublishingHouseDonaldANeamenElectroniccircuitanalysisanddesignMTsinghuaUniversityPressandSpringerVerlag附录()本设计使用的单片机程序如下:#include<pich>*************************voidINIT(){ADCON=XTRISC=XTRISB=XTRISD=XRD=RD=TRISA=XfTRISE=X}*************************#include<pich>#include"inith"#include"proch"*************************unsignedchariunsignedintdelayexternunsignedcharaexternunsignedchartemphexternunsignedchartempl***************************voidmain(){初始化INIT()for(delay=delay>delay)asm("clrwdt")temph=xtempl=xdo{asm("clrwdt")PROCDIANPIN()RC=RC=}while()}#include<pich>#include"tranpch"*********************unionadres{intyunsignedcharadre}adresultexternunsignedintdelayunsignedinttempunsignedintyunsignedcharreceiveunsignedcharaexternunsignedcharrxbufunsignedchartemphunsignedchartemplexternunsignedchari******************************voidPROCDIANPIN(){ADCON=XADCON=XADIF=ADGO=for(delay=xffdelay>delay)asm("nop")while(ADIF==){asm("clrwdt")}asm("clrwdt")ADIF=adresultadre=ADRESLadresultadre=ADRESHif((adresulty<=x)(adresulty>=xD)){temp=xfor(y=xadresulty<=yadresulty=adresultyx){tempif(temp==xa)temp=xif(temp==xa)temp=xif(temp==xa)temp=xif(temp==xa)temp=xif(temp==xa)temp=xif(temp==xa)temp=xif(temp==xa)temp=xif(temp==xa)temp=xif(temp==xa)temp=x}}TXPC(temp)RC=RXDATAS()if(rxbuf!=){if((rxbuf==x)(rxbuf==xff))receive=xffelseif(rxbuf==x){templ=rxbuftemph=rxbuf}if(receive==xff){RC=a=xff}}if(temp<=templ){if(a!=xff)RD=elseRD=}elseif(temp>=temph){if(a!=xff)RD=elseRD=}elseif((temp>=templ)(temp<=temph)){a=RD=RD=}for(delay=xFffdelay>delay)asm("nop")}#include<pich>*************************unsignedchartxbufunsignedcharrxbufexternunsignedintdelayunsignedcharsuartbufunsignedcharrxlobufexternunsignedchari*************************voidTXPC(unsignedcharbyte)bs{RC=startbitfor(suartbuf=suartbuf<suartbuf)continueif(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")if(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")if(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")if(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")if(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")if(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")if(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")if(bytex)RC=elseRC=for(suartbuf=suartbuf<suartbuf)asm("nop")RC=stopbitfor(suartbuf=suartbuf<suartbuf)asm("nop")}*************************************************unsignedcharRXPC(void)bs{rxlobuf=while(){if(!RC)break}receivestartbitfor(suartbuf=suartbuf<suartbuf)continuereceivebitfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")if(RC)rxlobuf=rxlobuf|xfor(suartbuf=suartbuf<suartbuf)asm("nop")receivestopbitfor(suartbuf=suartbuf<suartbuf)asm("nop")returnrxlobuf}voidRXDATAS(){开始接收数据for(i=i<i)rxbufi=for(i=xi>i){asm("clrwdt")if(RC==)breakfor(delay=delay>delay){asm("clrwdt")if(RC==)break}}if(RC==){gotorxend}for(i=i<i){rxbufi=RXPC()if(rxbufi==x)break}rxend:asm("clrwdt")}PICfA单片机加热控制电路高阻抗加热丝降温控制电路半导体降温片温度传感器培养皿TTL电平到EIA电平转换电路商用计算机显示终端检测与变送AD转换工程量变换温度非线性转换发送数据到串口比较判断算法温度预设值温度调节电路执行器从串口接受数据命令识别控制程序开始初始化PICFA单片机端口地址读入预设温度值启动AD转换AD转换结果送入NX单元NXFF>FNX>降温加热工程量变换温度非线性温度转换发送数据到串口命令识别程序从串口接受数据YYYNNN串口接受到一帧数据此帧是否正确连续次不正确退出通信并报告读命令信号退出等待下一帧重发命令帧写命令信号分析此命令开始执行分析此命令取出数据信息发数据帧发正回应数据帧退出通信并报告退出等待下帧命令NYYNYYNN应用程序通知通信开始读还是写发送读命令发送写命令串口收到命令此帧是否正确?连续三次否退出通信是帧数据吗?重发命令帧等待下帧信号处理数据是正回应帧吗命令执行完毕是重发帧吗退出通信并报告重发命令帧等待下帧信号读写N正视图侧视图调出元件FindPlaceCompent添加元件库AddRemoveLibrary新建原理图NewSCH元件布局存盘Save连线设置元件属性打印输出报表Print,Rcport建立网络报表CreateNetlist添加元件库AddRemove调用网络表LoadNetlist规划电路板新建印制板图NewPCB打印输出报表手工制板热转印法光印法等交给印制板存盘Save走线设置丝印字元件布局电路板成品unknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknownunknow

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/42

33个毕业设计单片机类温度监控系统的设计温度监控系统的设计

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利