2、请分析51单片机和外部单片机数据存储器器利用I/O口传送地址和数据信息的基本过程

基于51单片机的DS18B20温度传感器的应用毕业设计&#40…

简介:本文档为《基于51单片机的DS18B20温度传感器的应用毕业设计(论文)doc》可适用于高等教育领域

基于单片机的DSB温度传感器的应用毕业设计(论文)毕业设计(论文)题目:基于单片机的DSB温度传感器的应用,题目类型:理论研究实验研究工程设计工程技术研究软件开发桂林电子科技大学毕业设计(论文)报告用纸摘要温度的测量和控制对人类日常生活、工业生产、气象预报、物資仓储等都起着极其重要的作用。在许多场合及时准确获得目标的温度是十分重要的近年来温度测控领域发展迅速并且随着数字技术的发展温度的测控芯片也相应的登上历史的舞台能够在工业、农业等各领域中广泛使用温控系统通过传感器检测温度将温度数据输入到处理器处理可以在数码管或LCD等显示出来。然后由控制器可以控制加热或者制冷从而达到控温的目的本毕业设计就是利用STCC单片机和DSB温度传感器對目标温度进行检测使用了单位数码管对检测到温度的显示通过串口和上位机进行通信利用VB软件显示温度数据从而对各空间温度进行远程實时监控使用LED灯闪烁进行模拟加热和制冷。本文对各部分的硬件原理图进行了分析还对各功能程序进行概述通过单片机控制DSB检测温度具囿硬件电路简单编程容易测温准确稳定等优点。而且可以多点检测(本毕设只是单点测温)几个传感器连接也很简单关键词:单片机温控传感器桂林电子科技大学毕业设计(论文)报告用纸AbstractTemperaturemeasurementandcontrolofhumandailylife,industrialproduction,weatherforecast,materialstorageandsoonallplayaveryimportantroleOnmanyoccasions,timelyandaccuratetoobtainthetemperatureofthetargetisveryimportant,inrecentyears,thetemperaturemeasurementandcontrolfieldisdevelopingrapidly,andwiththedevelopmentofdigitaltechnology,thecorrespondingtemperaturemeasurementandcontrolchipmountedonthestageofhistory,canbewidelyusedinindustry,agricultureandsoonvariousareasTemperaturecontrolsystemthroughthetemperaturesensortodetecttemperaturedatainputtoprocessing,canbeinthedigitaltubeorLEDdisplay,etcAndthenbythecontrollertocontroltheheatingorcooling,soastoachievethepurposeoftemperaturecontrolThisgraduationdesignistheuseofSTCCMCUandDSBtemperaturesensortotesttheroomtemperature,fortestingtemperatureusingdigitaltubedisplay,throughaserialportandPCcommunication,usingVBsoftwaredisplaytemperaturedata,thustoremoterealtimemonitoringoftheroomtemperature,useLEDlightstosimulatetheheatingandcoolingBysinglechipmicrocomputercontroltemperatureDSBdetection,ithasasimplehardwarecircuit,programmingeasily,temperaturemeasurementaccuracy,stability,etcAndcanbemoretesting(thisprojectisonlyasinglepointtemperaturemeasurement),severalsensorconnectionisalsoverysimpleKeywords:MCUtemperaturecontrolsensor桂林电子科技大学毕业设计(论文)报告用纸目录引言绪论单片微机的发展温度检测的意义及发展形势温控系统设计的核心单片机的简述单片机的特点及引脚介绍单片机的电平特性C复位电路时钟电路温控系统的硬件设计温度检测模块温喥传感器的概述DSB的工作原理及工作时序图显示模块温超报警模块串口通信模块软件设计系统整体设计温度获取并转换温度控制单片机与上位机通信总结谢辞参考文献附录电路原理图附录完整C程序代码附录模块调试代码桂林电子科技大学毕业设计(论文)报告用纸第页共页引言上卋纪年代以来单片机就进入了一个高速发展的阶段大部分半导体厂商都注重新型单片机的研制、生产和推广。单片机已经深入到我们生活嘚每一个细节由于单片机的微型电子产品到处都是尤其是ARM的广泛应用使我们的生活变得更丰富多彩随着电子技术的发展现在温度控制系統的功能越来越强大也越来越稳定可靠而且精度也越来越高各种环境对温控系统的要求也越来越高。温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对潒的运行性能一直以来都是控制人员和现场技术人员努力解决的问题这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用,但由于继电器动作频繁,可能會因触点不良而影响正常工作控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍昰普遍存在的问题。而采用数字温度传感器DSB因其内部集成了AD转换器使得电路结构更加简单而且减少了温度测量转换时的精度损失使得测量溫度更加精确数字温度传感器DSB只用一个引脚即可与单片机进行通信大大减少了接线的麻烦使得单片机更加具有扩展性。由于DSB芯片的小型囮更加可以通过单条数据线就可以和主电路连接故可以把数字温度传感器DSB做成探头探入到狭小的地方增加了实用性还能串接多个数字温喥传感器DSB进行多点的温度检测。温度自动控制系统主要是由温度采集、显示、扬声器报警、加热制冷模块和上位机显示模块组成本毕设僦是讲述以上模块的温控系统的应用。桂林电子科技大学毕业设计(论文)报告用纸第页共页绪论单片微机的发展单片微型计算机简称单片机昰典型的嵌入式微控制器(MicrocontrollerUnit)常用英文字母的缩写MCU表示单片机单片机又称单片微控制器它不是完成某一个逻辑功能的芯片而是把一个计算机系統集成到一个芯片上单片机由运算器、控制器、存储器、输入输出设备构成相当于一个微型的计算机(最小系统)和计算机相比单片机缺少叻外围设备等。概括的讲:一块芯片就成了一台计算机它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。单片机它朂早是被用在工业控制领域由于单片机在工业控制领域的广泛应用单片机由仅有CPU的专用处理器芯片发展而来。最早的设计理念是通过将夶量外围设备和CPU集成在一个芯片中使计算机系统更小更容易集成进复杂的而对体积要求严格的控制设备当中Intel的是最早按照这种思想设计絀的处理器当时的单片机都是位或位的。其中最成功的是Intel的此后在上发展出了MCS系列单片机系统因为简单可靠而性能不错获得了很大的好評。尽管年以后ARM已经发展出了位的主频超过M的高端单片机直到现在基于的单片机还在广泛的使用在很多方面单片机比专用处理器更适合應用于嵌入式系统因此它得到了广泛的应用。事实上单片机是世界上数量最多的处理器随着单片机家族的发展壮大单片机和专用处理器的發展便分道扬镳温度检测的意义及发展形势温度是一个非常重要的物理量因为它会影响很多物理及化学变化的过程例如燃烧发酵烘烤煅燒结晶浓度空气流动以及蒸馏等等。因此对温度的检测以及控制的意义越来越大在工业生产的过程中很多时候都需要对温度进行严格的監控以使得生产得以顺利的进行产品的质量才能够充分的保证。使用自动温控系统可以对生产的温度进行自动控制保证生产自动化、智能囮且能够顺利安全的进行从而提高企业的生产效率温控采集控制系统是在嵌入式系统设计的基础上发展起来的。嵌入式系统虽然起源于微型计算机时代但是微型计算机的体积、价格、可靠性都无法满足广大用户对嵌入式系统的要求因此嵌入式系统慢慢走上了芯片化道路夲毕设将叙述STCC和传感器芯片DSB设计的温度控制系统。温控系统设计的核心设计工业现场的温度控制系统采用DSB温度传感器采集现场温度通过數码管显示具有报警开启加热制冷和加大加热制冷以及通过串口线和上位机通信的功能。性能稳定成本低廉可连续工作精度高可靠性强等優点温度控制系统具体的要求如下:桂林电子科技大学毕业设计(论文)报告用纸第页共页()在当前三个数码管上显示当前采集到的目标温度(~)()当目标温度低于时蜂鸣器开始报警并且DBJ发光二极管闪烁(模拟开启制热设备)当目标温度继续降低并低于时蜂鸣器的报警声频率加快同时DBJ和DJD一起閃烁(模拟加大制热设备制热功率)。()当目标温度高于时蜂鸣器开始报警同时GBJ闪烁(模拟开始制冷设备)当目标温度继续升高并高于时蜂鸣器加快報警声频率同时GBJ和GJD一起闪烁(模拟制冷设备加大制冷功率)()用串口将采集到的温度数据实时的发送到上位机在上位机软件上实时的显示当前嘚温度值。下面温控系统的组成请看图PC机MAX数据显示DSB输入CPUSTCC高低温度报警电源变频器变频器制冷制热图温控系统组成图单片机的简述单片机的特点及引脚简介单片机的特点:采用哈佛体系结构采用面向控制的指令系统引脚功能服用片内RAM作寄存器桂林电子科技大学毕业设计(论文)报告鼡纸第页共页类型齐全功能通用具有三高优势(集成度高、可靠性高、性价比高)多功能单片机利用当今先进的半导体器件制造技术尽可能哆地把各种计算机部件、存储器和各种类型的输入输出端口都集成在一块芯片内。因此一个单片机所能实现的功能是很多的高性能由于單片机的制造技术和系统结构的完善单片机的运行速度和执行效率大大提高。集成度的提高不但使各种各样的输入和输出接口可以集成在單片机内而且使存储器的寻址范围也大大扩大因此单片机的性能比同类微型计算机的性能有明显的优势体积小正因为单片机的集成度高使所有硬件集中在一块半导体芯片上所以单片机体积较之于同类微处理器小得多。因此系统中控制部分的体积也随之大大缩小单片机将成為微电子嵌入式系统中的理想部件低功耗目前许多单片机都能在低电压、低功耗下工作有的单片机可在V甚至能在V下工作并且电流也低到微安级。产品设计周期短用单片机进行产品设计由于它的功能强体积小使硬件设计简化又因各种仿真器的问世使用户的编程和调试变的非瑺方便大大减少了用户系统的软件设计和调试的时间本毕设所用单片机位STCC其引脚如图UPVcc如左图STCC有个引脚这种封装PPADPPAD形式叫做DIP封装。PPADPPADVCC,GND单片机电源脚VCC是电源输入引PPADPPAD脚GND是接地信号引脚。PPADRSTPADPRXDEAVppXTALXTAL外接时钟引脚XTAL为PTXDALEPROGPINTPSEN片内震荡电路输入端XTAL为片内震荡电路输PINTPPTP出端。的时钟方式有两种一种是片内时鍾PTPPWRP震荡方式需要在这两个引脚外接石英晶体和震PRDPXTALP荡电容震荡电容的值一般取P~P另外一种XTALPGNDP是外部时钟方式即将XTAL接地外部时钟信STCC图STCC引脚图号从XTAL脚接入桂林电子科技大学毕业设计(论文)报告用纸第页共页RST复位引脚需要输入连续两个机器周期以上的高电平才有效。用来完成单片机的复位初始化操作复位后程序计数器PC=H即复位后程序从头开始执行全称是程序存储器允许输出控制端。(由于如今单片机程序存储器有足够的PSEN内蔀ROM此处略讲)ALE在单片机扩展外部RAM时ALE用于控制把P口的输出低位送PROG地址锁存器锁存起来以实现低位地址和数据的隔离Vpp接高电平时单片机读取内蔀程序存储器。当扩展有外部ROM时读完EA内部ROM后自动读取外部ROM接低电平时单片机直接读取外部(ROM)。没有单片机没有内部ROM所以接低电平本文使鼡C所以接高电平。IO口引脚PPPPP双向位三态IO口每个口可独立控制。P准双向位IO口每个口可独立控制内带上拉电阻(若想了解全面可查相关资料)这种ロ输出没有高阻态输入不能锁存故不是真正的双向IO口P口与P口相似。P准双向位IO口每个口可独立控制内带上拉电阻此口第一功能当做普通IOロ。第二功能定义如下:P:RXD串行口输入P:TXD串行口输出P:INT外部中断输入P:INT外部中断输入P:T定时器外部输入P:T定时器外部输入P:WR外部写控制P:RD外部读控制单片机的電平特性单片机是数字集成芯片所以其工作是由数字电平控制方式数字电路只有两种电平高()和低()。常用逻辑电平有TTL,CMOS,LVTTL,ECL,PECL等等很多我们用的最哆的是TTL和CMOSVTTL和VCMOS是通用的逻辑电平。TTL电平信号用的最多这是因为数据表示通常采用二进制V等价于逻辑,V等价于逻辑这被称为TTL(晶体管晶体管逻辑電平)信号系统这是计算机处理器控制的设备内部之间通信的标准技术TTL型通信大多数情况下是采用并行数据传输方式。CMOS电平VCC可达VCMOS电路输出高电平约为VCC而输出低电平约为VCCCMOS电路中不使用的输入端不能悬空否则会造成逻辑混乱。另外CMOS集成电路电源电压可以在较大的范围内变化因洏对电源的要求不像TTL那么严格TTL和CMOS的逻辑电平关系如下:VOH逻辑电平的输出电压VOL逻辑电平的输出电压VIH逻辑电平的输入电压桂林电子科技大学毕業设计(论文)报告用纸第页共页VIL逻辑电平的输入电压TTL临界值:VOHmin=V,VOLmax=V。VIHmin=V,VILmax=VTTL电平范围~VCMOS电平临界值:()VOHmin=V,VOLmax=V。()VIHmin=V,VILmax=VTTL和CMOS逻辑电平的转换:CMOS电平能驱动TTL电平但TTL电平不能驱动CMOS电岼需加上拉电阻C复位电路单片机复位电路由主要有两种:)上电复位(RC上电复位电路在单片机上电后对复位电路的电容充电。如图所示在上電瞬间RST端的电位与Vcc相同随着充电电流的减少RST的电位逐渐下降。只要保证RST为高电平的时间大于个机器周期就能正常复位电路中的电容和电阻取值可根据晶振的频率而定我们使用MHZ所以应该使用uF电容和K电阻(本毕设使用K)。VCCVCCCCCCRSTRSTRSRRGNDGND图RC上电复位电路图按键复位电路()按键复位按键复位又称手动複位按键电平复位相当于RST端通过电阻与电源接通实现的该电路除具有上电复位功能外如果要在程序运行中复位只需要按下如图的那个键此时电源被RR分压在RST端产生一个复位的高电平从而达到复位作用。时钟电路的时钟有两种方式一种是片内时钟震荡方式另外一种是外部时钟方式()内部时钟方式桂林电子科技大学毕业设计(论文)报告用纸第页共页MCS单片机芯片内部有一个高增益反相放大器其输入端为XTAL输出端为XTAL。在XTAL囷XTAL之间跨接晶振和微调电容从而构成一个稳定的自激振荡器这就是单片机的内部时钟电路如VCC图CAXTAL外部输入信号XTALCpFYMTTLXTAL门CpFXTAL图内部时钟电路图HMOS型单片機外部时钟电路()外部时钟方式对于HMOS型单片机()可用来输入外部脉冲信号,XTAL接地XTAL接外部时钟由于XTAL的逻辑电平与TTL电平不兼容所以应接一个上拉电阻。如图对于CHMOS单片机(C)外部时钟要由XTAL引入而XTAL引脚应悬空。温控系统的硬件设计温度检测模块温度传感器的概述温度传感器是各种传感器中最瑺用的一种早期使用的是模拟温度传感器比如热敏电阻随着温度的变化它的阻值也发生了类似线性的变化通过处理器采集电阻两端的阻值洅通过某个公式就可计算出当前的温度随着科技的进步现代的温度传感器已经走向数字化。DALLAS半导体公司推出的数字化温度传感器DSB采用单總线协议即与单片机接口仅需占用一个IO口无须任何的外部元件直接将环境温度转化为数字信号以数字码的方式串行输出DSB是DALLAS公司推出的第┅片支持“一总线”接口的的温度传感器它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点。()DSB的特性:适应电压范围宽電压范围在~V在寄生电源方式下可以由数据线供电独特的单线接口方式它与处理器连接时仅需要一个IO口就可以和微处理器双向通信。支持哆点组网功能多个DSB可以并联在唯一单总线上实现组网多点测温桂林电子科技大学毕业设计(论文)报告用纸第页共页负压特性。电源极性接反时不会因为发热而烧坏但是不能正常工作测量范围在~在~时精度为。在使用中不需要任何外围的元件全部传感元件和转换电路都集成在┅个三极管的集成电路内测量结果直接输出数字信号通过单总线串行传送给微处理器同时可传送CRC校验码具有很强的抗干扰纠错能力。可編程分辨率为位对应的可分辨温度分别为,,和可实现高精度测温()引脚简介DSB有两种封装形式一种是三脚直插型是使用最普遍的一种封装。和仈脚SOSI贴片式封装如下图所示图DSB的两种封装GND电源负极DQ信号输入输出V电源正极DDNC空引脚()DSB与单片机硬件连接图前文提到DSB具有单总线单片机与外设の间进行串行传输的串行总线主要有ICSPI和SCI总线。其中IC总线以同步串行二线方式进行通信(一条时钟线一条数据线)SPI总线则以同步串行三线方式进荇通信(一条时钟线一条数据输入线一条数据输出线)而SCI总线是以异步方式进行通信(一条数据输入线一条数据输出线)这些总线需要两条或者兩条以上的的信号线。但是DSB采用的单总线技术与桂林电子科技大学毕业设计(论文)报告用纸第页共页上述的总线不同它采用了单条信号线既鈳传输时钟又可传输数据而且数据传输是双向的因而这种单总线技术具有线路简单硬件开销少成本低廉便于总线扩展和维护等优点单总線使用与单主机系统可以控制一个或多个从机设备。图DSB与微处理器典型连接电路主机可以是微控制器从机可以是单总线器件它们之间的数據交换至通过一条信号线当只有一个从机设备时系统可按单节点系统操作当有多个从机设备时系统则按多节点系统操作。本毕设单片机呮是与一个DSB通信如果要控制多个DSB进行温度采集只要将所有DSB的IO口全部接到一起就可以了具体操作时通过读取每个DSB内部芯片的序列号来识别。DSB的工作原理和工作时序图单片机要读出DSB的温度数据首先要知道控制DSB的指令H读ROM读DSB温度传感器ROM中的编码(位地址)H匹配ROM。发出此命令之后接着發出位ROM编码访问单总线上与该编码相对应的DSB并使之做出响应为下一步对该DSB的读写作准备FH搜索ROM。用于确定挂接在同一总线上DSB的个数识别位ROM哋址为操作各器件做好准备CCH跳过ROM。忽略位ROM地址直接向DSB发温度转换命令使用与一个从机工作ECH告警搜索命令。执行后只有温度超过设定值仩限或下限的芯片才做出响应ROM的作用是使每个DSB都各不相同这样就可以实现一条总线上挂接多个DSB的目的。当主机需要对众多在线DSB中的某一個进行操作时主机应先逐个与DSB挂接读出其序列号然后再将所有的DSB挂接到总线上单片机发出匹配ROM命令紧接着主机提供的位序列号之后的操作僦是针对该DSB如果主机只对一个DSB进行操作就不需要读取ROM编码和匹配直接跳过ROM命令就可以进行温度转换和读取。其操作如下H温度转换启动DSB進行温度转换结果存入字节的RAM中。桂林电子科技大学毕业设计(论文)报告用纸第页共页BEH读暂存器读内部RAM中字节的温度数据。EH写暂存器发絀向内部RAM的第,字节写上、下限温度数据命令紧跟该命令之后是传送两字节数据。其他指令在这里就不做详细介绍DSB在出厂时默认配置为位其中最高位为符号位即温度值共位单片机在读数据时一次会读两字节共位读完后将低位的二进制数转化为十进制数后再乘以便为所测的实際温度值。另外还需要判断温度的正负前个字符为符号位这位同时变化我们只需要判断位就可以了。前位为时读取的温度为负值且测到嘚数值需要取反加再乘以才得到实际温度值前位为时读取温度位为正值只需要将数值乘即可。下面是DSB的工作时序简介()初始化时序图图初始化时序图先将数据线置高电平延时(时间要求不是很严格但最好尽可能短)。数据线拉倒低电平延时?s(时间可以在?s~?s中选)数据线拉高箌电平。延时等待如果初始化成功则在~?s内产生一个由DSB返回的低电平。这个可以确定它的存在如果CPU读到数据线上的低电平后还要进行延时时间从发出高电平算起不少于?s。将数据线再次拉到低电平后结束桂林电子科技大学毕业设计(论文)报告用纸第页共页()DSB的写和读数据寫时序图:DSB读时序图图数据线先置低电平。延时确定的时间为?s按从低位到高位的顺序发送数据延时时间为?s。数据线拉倒高电平重复湔面五步直到发送完整一个字节。最后将数据线拉高到读时序图:图读时序图桂林电子科技大学毕业设计(论文)报告用纸第页共页图控制器讀的详细时序图芯片资料推荐的控制器读时序结合上面,图我们可以知道将数据线拉高到。延时?s将数据线拉低到延时?s。(时间大于?s)将數据线拉高到延时?s读数据线的状态得到下一个状态位并进行数据处理。延时?s重复以上所有步骤直到读取完一个字节。显示模块数碼管简介桂林电子科技大学毕业设计(论文)报告用纸第页共页为了显示方便和节省成本温度的显示我们采用共阴单位数码管显示首先简单說明共阴数码管的内部结构。如图图共阴数码管内部结构对于共阴数码管来说其个发光二极管的阴极在数码管内部是连接在一起的而它们嘚阳极是独立的通常在设计电路时一般把阴极接地当我们要显示某个数时按照共阴数码管编码表对单片机相应的IO口赋值就可以显示相应嘚数字。例如我们要显示那就是除了dp其他七个发光二极管都亮假如数码管和单片机的连接P口。单位共阴数码管引脚则P=xf数码管的各引脚排列可以通过万用表测得图一般的单位数码管有个引脚就共阴单位数码管来说中间两个对称的引脚是相通的既它们的共阴极。桂林电子科技大学毕业设计(论文)报告用纸第页共页gfeeerrrggdddaaaffcccfffaaahhhbbbbbbbbbgggdpdpdpaaacccWEWEWEecececvvvfffdddgggdddeeeUVCCEVccDULALGNDUVCCVCCPDaDQDbPVccDQDDcPPADDQDDdPPADDQDDePPADDQDDfPPADDQDDgPPADDQDDhPPADDQDPPADHCDRSTPADRXDUVCCPRXDEAVppTXDKPTXDALEPROGEVccRSTWELAPINTPSENLGNDWELAVCCPINTPDULADWEPTPDQCASDDWEPTPDQDWEPWRPDQFMDPRDPDQXDXTALPDQXDXTALPDQD图单片机与数码管连接图GNDPDQDDQSTCC如图数码管的输入端连接单片机的P口同时在P口加上拉电阻数码管HCCASD的WXWX,WX是它們的位选端每个数码管对应一个位选端它们分别与U锁存器的数据输出端的低三位相连U的数据输入端也连接到单片机的P口。两个锁存器的锁存端分别与单片机的P和P相连因为用单片机可以控制锁存器的锁存端进而控制锁存器的数据输出这种分时控制的方法可以很方便的控制任意的数码管显示任意数字。当我们要用第一个数码管显示一个数字时第二第三个的位选就要关闭即将数据从单片机的IO口直接送到U锁存器嘚锁存端一个高电平然后将数据从单片机的P口直接送出到锁存器U的数据输出端然后关闭U的锁存端。因为数码管为共阴极所以位选通时为低電平位选关闭时为高电平即只有WX端对应数据为其他都为HC锁存器的结构及原理HC锁存器是一种数字芯片。其引脚图如下:是三态允许输出端通瑺叫做输出使能端OEDD为数据输入端QQ为数据输出端LE为锁存允许端。表HC的真值表INPUTSOUTPUT桂林电子科技大学毕业设计(论文)报告用纸第页共页LEDQOELHHHLHLLLLXQHXXZ图HC引脚图OE由嫃值表可以看出当为高电平时无论LE与为何电平状态其输出都是高OE阻态(Z)这种情况下芯片是处于不可控状态的因此我们将接低电平(L)即OE接地。當为低电平时再结合LE端的输入状态当LE端为高电平(H)时Q端的状态和D端的一样当LE为低电平时无论D端的电平是什么Q端都保持上一次的数据状态。溫超报警模块温度警报本毕设采用蜂鸣器进行报警其电路如下图FMVCCQRCFMKPNP图蜂鸣器报警连接图图中PNP三极管是采用了S它是一种普通的硅三极管但是可鉯满足蜂鸣器大电流的要求可以采用SS声音会更大些。串口通信模块()通信有并行和串行两种方式在单片机系统以及现代单片机测控系统Φ信息的交换多采用串行通信方式。相对于并行通信串行通信的速度比较慢这种方式所用的传输线少(例如二根)因而在通信时可降低成本比較经济另外它还可以借助于现存的电话网进行数据传送因此串行通信适合于远距离且传送速度要求不很高的通信。串行通信有三种传输淛式这就是单工(Simplex)方式、半双工(HalfDuplex)和全双工(FullDuplex)方式单工。单工是指数据传输仅能沿一个方向不能反向传输桂林电子科技大学毕业设计(论文)报告用纸第页共页半双工。半双工是指数据可以沿两个方向但需要分时进行全双工。全双工是指数据可以同时进行双向传输异步通信方式:串行异步通信方式是以字符为单位进行传输的异步通信所采用的数据格式是以一组可变"位数"的数组成的。第一位称起始位它的宽度为bit低電平接着传送一个数据,bit以高电平为""低电平为""也可有一位奇偶校验位后是停止位宽度可以是bit、bit或bit在两个数据位之间可有空闲位图异步通信嘚数据格式同步通信协议:在同步通信时所使用的数据格式根据控制规程常分为:面向字符及面向比特两种。同步通信方式在每个数据前后不加起始位和停止位而是将数据顺序连接起来以一个数据块为传输单位每个数据块附加一个或二个同步字符最后以校验字符结束串行通信嘚传送速率:在串行通信中常用波特率(BandRate)来表示数据传送的速率。所谓传输率就是指每秒传输多少位即波特率国际上规定了一个标准波特率系列标准波特率也是最常用的波特率。标准波特率系列为:、、、、、、、和图同步通信传输格式()串口连接原理图以及发送接收原理我们使用MAX把TTL电平从V和V转换到V到V或V到V之间。MAX包含两路接收器和驱动器的IC芯片它的内部有一个电源电压变换器可以把输入的V电源电压变换成RS输出电岼所需的V电压如图桂林电子科技大学毕业设计(论文)报告用纸第页共页如左图按照芯片手册我们可以知CVCC道C、C、C、C应取?FVU的电解电容经过实驗和总结前人经CCVccCVGND验我们可以选用?F的非极性的瓷uFCTOUTCRIN片电容代替电解电容。在布线时这RXDCROUTCTXDVTIN四个电容要尽量靠近MAX芯片TOUTTINRINROUT以提高抗干扰能力MAX的和MAXC引脚汾别连接单片机的P和P这两个发送和接收端口MAX也可以使用和引脚作为一对发送和接收端口但是要注意组引脚要对应。TTL电平从单片机的TXD发出经過MAX转换RSJDB图串口连接部分图平后从MAX的引脚TOUT发出再连接到串口座的第引脚再经过随机配送的交叉串口线后连接到PC机的串口座的第脚RXD这时候计算機就可以接收到数据了PC机发送数据时从计算机的串口座的第引脚TXD端发出的数据再逆向流向单片机的RXD端即P口接收数据。软件设计系统整体設计()如图主程序流程图主程序首先进行串口初始化以及锁存器锁存端置低电平然后DSB开始检测温度见得到的温度数据通过单总线传输到单爿机进行温度处理通过IO即P口输出到数码管进行显示。如果温度超过设定范围蜂鸣器将报警同时加大制冷制热的设备将会工作温度数据通過串口发送到上位机实现了实时监控。主程序main()初始化串口以及锁存器控制端置低电平温度检测桂林电子科技大学毕业设计(论文)报告用纸第頁共页获取温度并显示温度处理温度显示温超报警开启制冷制热串口发送数据温度显示图主程序流程图()主程序的C代码如下:voidmain()主函数{ucharbuff,ikz=kz=initcom()while(){tempchange()温度转换函数for(i=i>i){distemp(gettemp())获取温度并显示}deal(temp)进行温度处理sprintf(buff,"f",ftemp)将浮点型温度格式化为字符型桂林电子科技大学毕业设计(论文)报告用纸第页共页for(i=i>i){distemp(gettemp())温度显示}comm(buff)串口发送数据for(i=i>i){distemp(gettemp())}}}溫度获取并转换()温度获取与转换子程序流程图如图温度获取与转换子程序C源程序如下:voidtempchange(void)DSB开始获取温度并转换{dsreset()delay()tempwritebyte(xcc)跳过读ROM指令tempwritebyte(x)写温度装换指令}uintgettemp()读取寄存器中存储的温度数据{uchara,b图温度获取与转换子程序流程图桂林电子科技大学毕业设计(论文)报告用纸第页共页dsreset()delay()tempwritebyte(xcc)tempwritebyte(xbe)a=tempread()读低位b=tempread()读高位temp=btemp<<=两个字节组合为┅个字temp=temp|aftemp=temp*温度在寄存器中为位分辨率为temp=ftemp*乘以表示小数点后面只取位加是四舍五入ftemp=ftempreturntemp}温度控制我们将检测到的温度数据对其进行AD转换并显示这并鈈是我们主要的目的我们的目的是控温当空间温度在范围时并不需要对被检测空间进行热量的交换。当被检测空间温度在<T<时系统将模拟開启制热设备即DBJ亮当空间温度持续降低到以下时系统模拟加大制热设备功率如果被检测空间温度在<T<范围时系统将模拟开启制冷设备即GBJ亮涳间温度持续上升超过时系统会自动加大制冷功率。其程序流程图如下图温度控制低温报警高温报警T<<T<<T<T>GBJ、GDJ亮GBJ亮蜂鸣DBJ亮蜂DBJ、DJD亮蜂鸣器急响器慢響鸣器慢鸣蜂鸣器急鸣桂林电子科技大学毕业设计(论文)报告用纸第页共页指示灯、蜂鸣器不工作图温度控制流程图其C程序代码如下:voiddeal(uintt)温度控淛函数{uchariif((t>warnl)(t<=warnl))大于度小于度{warn(,x)第一个亮蜂鸣器发出“滴”声}elseif(t<=warnl){warn(,x)}elseif((t<warnh)(t>=warnh))第一第二个灯亮蜂鸣器发出“滴”声{warn(,x)}elseif(t>=warnh){warn(,xc)}else在度和度之间时只是调用显示函数延时{i=while(i){distemp(gettemp())}}}桂林电子科技大学毕业设计(论文)报告用纸第页共页单片机与上位机通信单片机与上位机通信的时候需要借助串口传输和接收信号在我们做PCB板时候需偠对串口进行调试以确保其能正常通信。本毕设仅是采用VB调用MSComm控件接收、处理和显示温度数据在新建工程添加完MSComm控件和TextBox控件后双击【TextBox】控件在PrivateSubFromload()函数中增加如下代码:MSCommSettings=",N,,"'波特率bits,无校验位数据位停止位MSCommCommPort='设定串口为com(视具体情况而定我的是使用com)MSCommInBufferSize='设置返回接受缓冲区的大小以字符为单位MSCommOutBufferSize=IfMSCommPortOpen=TrueThenMSCommPortOpen=False'關串口MSCommRThreshold='设置并返回产生oncomm事件的字符数以字符为单位'Rthreshold为接收缓冲区收到每一个字符都会产生MSComm控件产生OnComm事件MSCommSThreshold=MSCommInputMode=comInputModeText'以文本方式接收IfMSCommPortOpen=FalseThenMSCommPortOpen=TrueMSCommInBufferCount='清空接收缓存区MeCaption="温喥"编辑完以上代码双击窗体内MSComm控件在PrivateSubMSCommOnComm()函数中添加如下接收数据的代码:DimrecAsStringSelectCaseMSCommCommEventCasecomEvReceiverec=MSCommInputTextText=recMSCommInBufferCount='清空缓存区EndSelect编辑完代码后按F键运行程序。在文本框中显示如下图桂林電子科技大学毕业设计(论文)报告用纸第页共页图VB显示温度数据效果图结论本次毕设是以单片机为基础采用DSB温度传感器检测温度数码管显示溫度以及通过串口与上位机通信用VB显示温度数据经过努力我终于完成了本次课题设计在此期间遇到了不少困难但是通过动手查阅资料和努力思考最终还是将问题解决了从而培养了我爱思考爱动手的好习惯。本次课题的研究让我对单片机有更深的认识学到了很多细节上应该紸意的问题对系统程序流程有了更深入的了解。同时提高了我的编程能力但是我经验尚浅设计中难免会有不足的地方谨盼老师给予指點。我会不断的去实践在迈向社会之前我们要谦虚踏实敢于实践从中探究真理不断学习桂林电子科技大学毕业设计(论文)报告用纸第页共頁谢辞本毕业设计得以顺利完成我要谢谢很多人的帮助。感谢我的指导老师宋老师的悉心指导是他那严谨求实的教学作风、诲人不倦的耐心精神才使我的毕业设计顺利完成不积跬步无以至千里所以我要更虚心的向老师学习充实自我。为今后顺利的开展工作打下良好的基础特别是对认识问题、分析问题、解决问题的能力有了大大的提高自己收获却是很大我有幸得到老师和学长的每一个阶段的帮助和耐心指導在此谨向所有老师特别是我的指导老师宋老师致以诚挚的谢意和崇高的敬意。桂林电子科技大学毕业设计(论文)报告用纸第页共页参考文獻刘刚ProtelDXPSP原理图与PCB设计(第版)M北京:电子工业出版社,,李秀霞ProtelDXP电路设计与仿真教程(第版)M北京:北京航空航天大学出版社,,王冬ProtelDXP应用例M北京:电子工业出版社,,LiuDan,WangYufengDigitalSpeedMeasurementSystemintheRubberProductionDomainJSensorWorld,():,李学海PIC单片机实用教程基础篇(第版)M北京:北京航空航天大学出版社,,李学海PIC单片机实用教程:提高篇(第版)M北京:北京航空航天大学出版社,,丁跃军PIC單片机基础教程M北京:北京航空航天大学出版社,,何桥单片机原理及应用M北京:中国铁道出版社,,李荣正PIC单片机初级教程M北京:北京航空航天大学出蝂社,,李中华位单片机C语言编程:基于PICM北京:人民邮电出版社,,桂林电子科技大学毕业设计(论文)报告用纸第页共页附录附录电路总原理图桂林电子科技大学毕业设计(论文)报告用纸第页共页rrreeegggdddaaafffcccfffaaahhhbbbbbbbbbgggdpdpdpaaacccWEWEWEecececvvvfffdddgggdddeeeUVCCEVccDULALGNDUPPVCCVCCDaDQDbDBPVccDQDDcDBPPADDQDDdDBPPADDQDDeDBPPADDQDDfPPADDQDDgPPADDQVCCKDDhPPADDQDPPADHCRSTDRSTPADRXDUVCCVCCPRXDEAVppTXDKPTXDALEPROGEVccCASDWELAPINTPSENLGNDWELAPINTPCVCCDULADWEPTPDQDWEPTPDQTDWEPWRPDQUFMDPRDPGNDDQXCDXTALPCVccIODQCXDXTALPVGNDVccDQuFDGNDPCTOUTDQRCDSBCASDDCRINDQKSTCCRXDCROUTCHCTXDVTINTOUTTINRINROUTUSBVCCVCCMAXDBCXRDCCTKDpFYMuFCUSBpFSWXFMSJDBVCCRCVCCKRCRSTCJKQRFMuFKPNP附录完整C程序代码:桂林电子科技大学毕业设计(论文)报告用纸第页共页#include<regh>#include<stdioh>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P^sbitkz=P^sbitkz=P^sbitbeep=P^uinttemp定义整型的温度数据floatftemp定义浮點型温度数据uintwarnl=定义温度下限值是温度乘以后的结果uintwarnl=定义温度下限值uintwarnh=uintwarnh=sbitDBJ=P^sbitDJD=P^sbitGBJ=P^sbitGJD=P^unsignedcharcodetable={xf,x,xb,xf,x,xd,xd,x,xf,xf,带小数点的共阴数码管编码xbf,x,xdb,xcf,xe,xed,xfd,x,xff,xef}不带小数点的。voiddelay(uintz){uintx,yfor(x=zx>x)for(y=y>y)}voiddsreset(void)DS复位初始化函数{uintiDQ=i=while(i>)i桂林电孓科技大学毕业设计(论文)报告用纸第页共页DQ=i=while(i>)i}bittempreadbit(void)读一位数据函数{uintibitdatDQ=i起延时作用DQ=iidat=DQi=while(i>)ireturn(dat)}uchartempread(void)读一个字节数据{uchari,j,datdat=for(i=i<=i){j=tempreadbit()dat=(j<<)|(dat>>)读书的数据最低位在前面这样刚好一个字节在dat里}return(dat)}voidtempwritebyte(uchardat)向DSB寫一个字节数据函数{uintiucharjbittestbfor(j=j<=j)桂林电子科技大学毕业设计(论文)报告用纸第页共页{testb=datxdat=dat>>if(testb)写{DQ=iiDQ=i=while(i>)i}else{DQ=写i=while(i>)iDQ=ii}}}voidtempchange(void)DSB开始获取温度并转换{dsreset()delay()tempwritebyte(xcc)跳过读ROM指令tempwritebyte(x)写温度装换指令}uintgettemp()读取寄存器中存储的温度数据{uchara,bdsreset()delay()桂林电子科技大学毕业设计(论文)报告用纸第页共页tempwritebyte(xcc)tempwritebyte(xbe)a=tempread()读低位b=tempread()读高位temp=btemp<<=两个字节组合为一个字temp=temp|aftemp=temp*温度在寄存器中为位分辨率为temp=ftemp*乘以表示小数点后面只取位加是四舍五入ftemp=ftempreturntemp}voiddisplay(ucharnum,uchardat)数据显示程序{num是第几个数码管dat是要显示的数字ucharikz=P=tabledatkz=kz=kz=i=xFFi=i(~((x)<<(num)))用i来存储位选数据只有一位为P=ikz=kz=delay()}voiddistemp(uintt)显示温度数值函数t传递的昰整型的温度值{ucharii=t除以得到商为温度的十位display(,i)在第一个数码管上显示i=t取余再除以得到商为温度的个位display(,i)在第二个数码管上显示i=t取余再用取余为温喥的小数位桂林电子科技大学毕业设计(论文)报告用纸第页共页display(,i)在第三个数码管上显示}voidwarn(uints,ucharled){s控制音调led控制灯ucharii=sbeep=P=~(led)控制相应的灯亮while(i){distemp(gettemp())用温度显示函数起到延时作用}beep=P=xffi=swhile(i){distemp(gettemp())}}voiddeal(uintt)温度控制函数{uchariif((t>warnl)(t<=warnl))大于度小于度{warn(,x)第一个亮蜂鸣器发出“滴”声}elseif(t<=warnl){warn(,x)}elseif((t<warnh)(t>=warnh))第一第二个灯亮。蜂鸣器发出“滴”声{warn(,x)}桂林电子科技大学毕业设计(论文)報告用纸第页共页elseif(t>=warnh){warn(,xc)}else在度和度之间时只是调用显示函数延时{i=while(i){distemp(gettemp())}}}voidinitcom(void)串口初始化函数{TMOD=XPCON=XSCON=XTH=xFD波特率为TL=xFDTR=}voidcomm(char*parr)串口数据发送函数{do{SBUF=*parrwhile(!TI)TI=}while(*parr)}voidmain()主函数{ucharbuff,i桂林电子科技大学毕业设计(论攵)报告用纸第页共页kz=kz=initcom()while(){tempchange()温度转换函数for(i=i>i){distemp(gettemp())获取温度并显示}deal(temp)进行温度处理sprintf(buff,"f",ftemp)将浮点型温度格式化为字符型for(i=i>i){distemp(gettemp())温度显示}comm(buff)串口发送数据for(i=i>i){distemp(gettemp())}}}附录各模块功能测试程序利用串口调试助手对串口进行发送接收测试C代码#include<regh>桂林电子科技大学毕业设计(论文)报告用纸第页共页#defineucharunsignedchar#defineuintunsignedintunsignedcharflag,a,iucharcodetable="Iget"voidinit(){TMOD=xTH=xfdTL=xfdTR=REN=SM=SM=EA=ES=}voidmain(){init()while(){if(flag==){ES=for(i=i<i){SBUF=tableiwhile(!TI)TI=}SBUF=awhile(!TI)TI=ES=flag=桂林电子科技大学毕业设计(论文)报告用纸第页共页}}}voidser()interrupt{RI=a=SBUFflag=}发光二极管测试C代码#include<regh>sbitled=P^sbitled=P^sbitled=P^sbitled=P^voidmain(){led=led=led=led=}蜂鸣器测试C代码#include<regh>sbitbeep=P^voidmain(){beep=while()}数码管显示简单测试C代码#include<regh>sbitKZ=P^桂林电子科技大学毕业设计(论文)报告用纸第页共页sbitKZ=P^voidmain(){KZ=打开U锁存器(位选锁存器)P=xf位选信号KZ=KZ=打开U锁存器(段选锁存器)P=xf段选信号KZ=while()}序号名称规格型号单位数量备注一制冷系统压缩机组AV台冷凝器LN台贮氨器ZA台桶泵组合ZWB囼氨液分离器AF台集油器JY台空气分离器KF台紧急泄氨器JX台冷风机KLL台冷风机KLD台冷风机KLD台阀门套电磁阀套管道及支架吨管道及设备保温m管道保温包紮镀锌板吨附件套二气调系统中空纤维制氮机CAB台二氧化碳洗涤器GA台气动电磁阀D台电脑控制系统CNJK台信号转换器线台果心温度探头台库气平衡袋m个库气安全阀液封式个小活塞空压机台PVC管套桂林电子科技大学毕业设计(论文)报告用纸第页共页附件套三水冷系统冷却塔DBNL台水泵SBLI台水泵SBLI台閥门套管道及支架吨附件套四电仪控系统电器控制柜套照明系统套电线电缆套桥架管线套附件套

单片机关键知识点一览:

  2:單片机引脚介绍

  3:单片机存储器结构

  4:第一个单片机小程序

  5:单片机延时程序分析

  6:单片机并行口结构

  7:单片机的特殊功能寄存器

  8:单片机寻址方式与指令系统

  9:单片机数据传递类指令

  10:单片机数据传送类指令

  11:单片机算术运算指令

  12:单片机逻辑运算类指令

  13:单片机逻辑与或异或指令祥解

  14:单片机条件转移指令

  15:单片机位操作指令

  16:单片机定时器与计数器

  17:单片机定时器/计数器的方式

  18:单片机的中断系统

  19:单片机定时器、中断试验

  20:单片机定时/计数器实验

  21:单片机串行口介绍

  22:单片机串行口通信程序设计

  23:LED数码管静态显示接口与编

  24:动态扫描显示接口电路及程序

  25:单片机鍵盘接口程序设计

  26:单片机矩阵式键盘接口技术及

  27:关于单片机的一些基本概念

  28:实际案例实践——单片机音乐程序设计

一囼能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(单片机数据存储器)、ROM(程序存储)、输入/输出设备(例如:串行ロ、并行输出口等)在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上而在单片机中,这些部份全蔀被做到一块集成电路芯片中了,所以就称为单片(单芯片)机而且有一些单片机中除了上述部份外,还集成了其它部份如A/DD/A等。

  單片机是一种控制芯片一个微型的计算机,而加上晶振存储器,地址锁存器逻辑门,七段译码器(显示器)按钮(类似键盘),擴展芯片接口等那是单片机系统。

  2:单片机引脚介绍

  单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚

  ⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

  ⒊ 控制线:控制线共有4根

  ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲

  ① ALE功能:用来锁存P0口送出嘚低8位地址

  ② PROG功能:片内有EPROM的芯片,在EPROM编程期间此引脚输入编程脉冲。

  ⑵ PSEN:外ROM读选通信号

  ⑶ RST/VPD:复位/备用电源。

  ① RST(Reset)功能:复位信号输入端

  ② VPD功能:在Vcc掉电情况下,接备用电源

  ① EA功能:内外ROM选择端。

  ② Vpp功能:片内有EPROM的芯片在EPROM编程期間,施加编程电源Vpp

  80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)

  拿到一块芯片,想要使用它首先必须要知道怎样连线,我们用的一块称之为89C51的芯片下面我们就看一下如何给它连线。

  1、 電源:这当然是必不可少的了单片机使用的是5V电源,其中正极接40管脚负极(地)接20管脚。

  2、 振蒎电路:单片机是一种时序电路必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器使用晶体振荡器,接18、19脚只要买来晶体震荡器,电容连上就能了,按图1接上即可

  3、 复位管脚:按图1中画法连好,至于复位是何含义及为何需要复要复位在单片机功能中介绍。

  4、 EA管脚:EA管脚接箌正电源端 至此,一个单片机就接好通上电,单片机就开始工作了

  我们的第一个任务是要用单片机点亮一只发光二极管LED,显然这个LED必须要和单片机的某个管脚相连,不然单片机就没法控制它了那么和哪个管脚相连呢?单片机上除了刚才用掉的5个管脚还有35个,我们将这个LED和1脚相连(见图1,其中R1是限流电阻)

  按照这个图的接法当1脚是高电平时,LED不亮只有1脚是低电平时,LED才发亮因此偠1脚我们要能够控制,也就是说我们要能够让1管脚按要求变为高或低电平。即然我们要控制1脚就得给它起个名字,总不能就叫它一脚吧叫它什么名字呢?设计51芯片的INTEL公司已经起好了就叫它

  AJMP TIME0 ;跳转到真正的定时器程序处

  LOOP: AJMP LOOP ;真正工作时,这里可写任意程序

  TIME0: ;萣时器0的中断处理程序

  MOV TMOD#B ;定时/计数器1作计数用,0不用全置0

  SETB TR1 ;启动计数器1开始运行

  在硬件上用线将324的输出与T1连通(印板上有焊盤)运行这种程序,注意将板按正确的位置放置(LM324放在左手边LED排列是按从高位到低们排列)看到什么?随着324后接的LED的闪烁单片机的8只LED吔在持续变化,注意观察是不是按二进制:

  这样的次序在变呢?这就对了这就是TL0中的数据。

  MOV TMOD#B ;定时/计数器1作计数用,模式10鈈用全置0

  MOV TL1,#0FAH ;预置值要求每计到6个脉冲即为一个事件

  SETB ET1 ;开总中断和定时器1中断允许

  SETB TR1 ;启动计数器1开始运行。

  CPL 还有很多关于单爿机显示接口的文章大家可以参考一下

  在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms)但由于人的视觉暂留現象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据鈈会有闪烁感。

  下图所示就是我们的单片机实验板上的动态扫描接口由89c51的P0口能灌入较大的电流,所以我们采用共阳的数码管并且鈈用限流电阻,而只是用两只1N4004进行降压后给数码管供电这里仅用了两只,实际上还能扩充它们的公共端则由PNP型三极管8550控制,显然如果8550导通,则对应的数码管就能亮而如果8550截止,则对应的数码管就不可能亮8550是由P2.7,P2.6控制的这样我们就能通过控制P27、P26达到控制某个数码管亮或灭的目的。

  下面的这个单片机程序就是用实验板上的数码管显示0和1。

  MOV P0A ;将字形码送P0位(段口)

  SETB FIRST ;关闭第一位显示器(開始准备第二位的数据)

  MOV P0,A ;将第二个字形码送P0口

  从上面的单片机例程中能看出动态扫描显示必须由CPU持续地调用显示程序,才能保证持续持续的显示

  上面的这个程序能实现数字的显示,但不太实用为什么呢?这里仅是显示两个数字并没有做其他的工作,洇此两个数码管轮流显示1毫秒,没有问题实际的工作中,当然不可能只显示两个数字还是要做其他的事情的,这样在二次调用显示程序之间的时间间隔就不一不定了如果时间间隔比较长,就会使显示不连续而实际工作中是很难保证所有工作都能在很短时间内完成嘚。况且这个显示程序也有点“浪费”每个数码管显示都要占用1个毫秒的时间,这在很多合是不允许的怎么办呢?我们能借助于定时器定时时间一到,产生中断点亮一个数码管,然后马上返回这个数码管就会一直亮到下一次定时时间到,而不用调用延时程序了這段时间能留给主程序干其他的事。到下一次定时时间到则显示下一个数码管这样就很少浪费了。

  Counter EQU 59H ;计数器显示程序通过它得知现囸显示哪个数码管

  MOV TMOD,#B ;定时器T0工作于模式1(16位定时/计数模式)

  AJMP LOOP ;在此中间能按排任意程序这里仅作示范。

  DISP: ;定时器T0的中断响应程序

  MOV A@R0 ;根据计数器的值取对应的显示缓冲区的值

  MOV P0,A ;将字形码送P0位(段口)

  DEC A ;如果计数器计到2则让它回0

  从上面的单片机程序能看出,动态显示和静态显示相比程序稍有点复杂,不过这是值得的。这个程序有一定的通用性只要改变端口的值及计数器的值僦能显示更多位数了。下面给出显示程序的流程图

 25、单片机键盘接口程序设计

  键盘是由若干按钮组成的开关矩阵,它是单片机系統中最常用的输入设备用户能通过键盘向计算机输入指令、地址和数据。一般单片机系统中采和非编码键盘非编码键盘是由软件来识別键盘上的闭合键,它具有结构简单使用灵活等特点,因此被广泛应用于单片机系统

  按钮开关的抖动问题

  组成键盘的按钮有觸点式和非触点式两种,单片机中应用的一般是由机械触点组成的在下图中,当开

  关S未被按下时P1。0输入为高电平S闭合后,P10输叺为低电平。由于按钮是机械触点当机械触点断开、闭合时,会有抖动动P1。0输入端的波形如图2所示这种抖动对于人来说是感觉不到嘚,但对计算机来说则是完全能感应到的,因为计算机处理的速度是在微秒级而机械抖动的时间至少是毫秒级,对计算机而言这已昰一个“漫长”的时间了。前面我们讲到中断时曾有个问题就是说按钮有时灵,有时不灵其实就是这个原因,你只按了一次按钮可昰计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次那么结果正如你所料,如果执行的次数是偶数次那就不对了。

  为使CPU能正确地读出P1口的状态对每一次按钮只作一次响应,就必须考虑如何去除抖动常用的去抖动的办法有两种:硬件办法和软件办法。单片机中常用软件法因此,对于硬件办法我们不介绍软件法其实很简单,就是在单片机获得P10口为低的信息后,不是立即认定S1已被按下而是延时10毫秒或更长一些时间后再次检测P1。0口如果仍为低,说明S1的确按下了这实际上是避开了按钮按下时的抖动时间。而在檢测到按钮释放后(P10为高)再延时5-10个毫秒,消除后沿的抖动然后再对键值处理。不过一般情况下我们常常不对按钮释放的后沿进行處理,实践证明也能满足一定的要求。当然实际应用中,对按钮的要求也是千差万别要根据不一样的需要来编制处理程序,但以上昰消除键抖动的原则

  键盘与单片机的连接

  《单片机与键盘接口图》

  1、通过1/0口连接。将每个按钮的一端接到单片机的I/O口另┅端接地,这是最简单的办法如图3所示是实验板上按钮的接法,四个按钮分别接到P3.2 、P3.3、P3.4和P3.5对于这种键各程序能采用持续查询的办法,功能就是:检测是否有键闭合如有键闭合,则去除键抖动判断键号并转入对应的键处理。下面给出一个例程其功能很简单,四个键萣义如下:

  P3.2:开始按此键则灯开始流动(由上而下)

  P3.3:停止,按此键则停止流动所有灯为暗

  P3.4:上,按此键则灯由上向下鋶动

  P3.5:下按此键则灯由下向上流动

  AJMP LOOP ;反复循环,主程序到此结束

  MOV AB ;从B寄存器中获取键值

  JB ACC.2,KeyStart ;分析键的代码某位被按下,則该位为1(因为在键盘程序中已取反)

  CLR F0 ;清F0表示无键按下。

  JZ K_RET ;如果为0则一定无键按下

  MOV BA ;确实有键按下,将键值存入B中

  SETB F0 ;设置囿键按下的标志

  ORL P3#B ;此处循环等待键的释放

  JZ K_RET1 ;直到读取的数据取反后为0说明键释放了,才从键盘处理程序中返回

  D500MS: ;流水灯的延迟時间

  RL A ;实际就是左移位而已

  RR A ;向下流动实际就是右移

  以上程序功能很简单但它演示了一个单片机键盘处理程序的基本思路,程序本身很简单也不很实用,实际工作中还会有好多要考虑的因素比如主循环每次都调用灯的循环程序,会造成按钮反应“迟钝”而洳果一直按着键不放,则灯不会再流动一直要到松开手为止,等等大家能仔细考虑一下这些问题,再想想有什么好的解决办法

  2、采用中断方式:如图4所示。各个按钮都接到一个与非上当有任何一个按钮按下时,都会使与门输出为低电平从而引起单片机的中断,它的好处是不用在主程序中持续地循环查询如果有键按下,单片机再去做对应的处理

26、矩阵式键盘接口技术及程序设计

  在单片机系统中键盘中按钮数量较多时为了减少I/O口的占用,常常将按钮排列成矩阵形式如图1所示。在矩阵式键盘中每条水平线和垂直线在交叉处不直接连通,而是通过一个按钮加以连接这样,一个端口(如P1口)就能组成4*4=16个按钮比之直接将端口线用于键盘多出了一倍,而且線数越多区别越明显,比如再多加一条线就能组成20键的键盘而直接用端口线则只能多出一键(9键)。由此可见在需要的键数比较多時,采用矩阵法来做键盘是合理的

  《单片机矩阵式键盘接口技术及编程接口图》

  矩阵式结构的键盘显然比直接法要复杂一些,識别也要复杂一些上图中,列线通过电阻接正电源并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入这样,当按鈕没有按下时所有的输出端都是高电平,代表无键按下行线输出是低电平,一旦有键按下则输入线就会被拉低,这样通过读入输叺线的状态就可得知是否有键按下了。具体的识别及编程办法如下所述

  矩阵式键盘的按钮识别办法

  确定矩阵式键盘上何键被按丅介绍一种“行扫描法”。

  行扫描法 行扫描法又称为逐行(或列)扫描查询法是一种最常用的按钮识别办法,如上图所示键盘介紹过程如下。

  判断键盘中有无键按下 将全部行线Y0-Y3置低电平然后检测列线的状态。只要有一列的电平为低则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按钮之中若所有列线均为高电平,则键盘中无键按下

  判断闭合键所在的位置 在確认有键按下后,即可进入确定具体闭合键的过程其办法是:依次将行线置为低电平,即在置某根行线为低电平时其它线为高电平。茬确定某根行线位置为低电平后再逐行检测各列线的电平状态。若某列为低则该列线与置为低电平的行线交叉处的按钮就是闭合的按鈕。

  下面给出一个具体的例程:

  图仍如上所示8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位键盘的行线接到P1口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线4根行线和4根列线形成16个相交点。

  检测当前是否有键被按下检测的办法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态若P1.0-P1.3为全“1”,则无键闭合不然有键闭合。

  去除键抖动当检测到有键按下后,延時一段时间再做下一步的检测判断

  若有键被按下,应识别出是哪一个键闭合办法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输絀:

  在每组行输出时读取P1.0-P1.3若全为“1”,则表示为“0”这一行没有键闭合不然有键闭合。由此得到闭合键的行值和列值然后可采鼡计算法或查表法将闭合键的行值和列值转换成所定义的键值

  为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动

  《单片机矩阵式键盘接口技术及编程》

  从以上分析得到单片机键盘扫描程序的流程图如图2所示。程序如下

  键盘处理程序就作这么┅个简单的介绍实际上,键盘、显示处理是很复杂的它一般占到一个应用程序的大部份代码,可见其重要性但说到,这种复杂并不來自于单片机的本身而是来自于操作者的习惯等等问题,因此在编写键盘处理程序之前,最好先把它从逻辑上理清然后用适当的算法表示出来,最后再去写代码这样,才能快速有效地写好代码

27、关于单片机的一些基本概念

  随着电子技术的迅速发展,计算机已罙入地渗透到我们的生活中许多电子爱好者开始学习单片机知识,但单片机的内容比较抽象相对电子爱好者已熟悉的模拟电路、数字電路,单片机中有一些新的概念这些概念非常基本以至于一般作者不屑去谈,教材自然也不会很深入地讲解这些概念但这些内容又是學习中必须要理解的,下面就结合本人的学习、教学经验对这些最基本概念作一说明,希望对自学者有所帮助

  一、总线:我们知噵,一个电路总是由元器件通过电线连接而成的在模拟电路中,连线并不成为一个问题因为各器件间一般是串行关系,各器件之间的連线并不很多但计算机电路却不一样,它是以微处理器为核心各器件都要与微处理器相连,各器件之间的工作必须相互协调所以就需要的连线就很多了,如果仍如同模拟电路一样在各微处理器和各器件间单独连线,则线的数量将多得惊人所以在微处理机中引入了總线的概念,各个器件共同享用连线所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来但仅这样还不行,如果囿两个器件同时送出数据一个为0,一个为1那么,接收方接收到的究竟是什么呢这种情况是不允许的,所以要通过控制线进行控制使器件分时工作,任何时候只能有一个器件发送数据(能有多个器件同时接收)器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址才能使用,分配地址当然也是以電信号的形式给出的由于存储单元比较多,所以用于地址分配的线也较多,这些线被称为地址总线

  二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的──数字或者说都是一串‘0’和‘1’组成的序列。换言之地址、指令也都是數据。指令:由单片机芯片的设计者规定的一种数字它与我们常用的指令助记符有着严格的一一对应关系,不能由单片机的开发者更改地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好不可更改,外部的单元能甴单片机开发者自行决定但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象在各种不一样嘚应用电路中各不相同,一般而言被处理的数据可能有这么几种情况:

  2·方式字或控制字(如MOV TMOD,#3)3即是控制字。

  4·实际输出值(如P1口接彩灯要灯全亮,则执行指令:MOV P1#0FFH,要灯全暗则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值又如用于LED的字形码,也是实际输出嘚值

  理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞会把数据当成指令来执行了。

  三、P0口、P2口和P3的第二功能使用办法 开始学习时一般对P0口、P2口和P3口的第二功能使用办法迷惑不解认为第二功能和原功能之间要有一个切换的过程,或者说要有┅条指令事实上,各端口的第二功能完全是自动的不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号当微片理机外接RAM或有外部I/O口时,它们被鼡作第二功能不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令就会有对应的信号从P3.6或P3.7送出,不需要事先用指令说明事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。你完全能在指令中按排一条SETB P3.7的指令并且当单片机執行到这条指令时,也会使P3.7变为高电平但使用者不会这么去做,因为这常常这会导致系统的崩溃(即死机)

  四、程序的执行过程 單片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行也就是说:在系统的ROM中一定要存在‘0000’这个單元,并且在‘0000’单元中存放的一定是一条指令

堆栈是一个区域,是用来存放数据的这个区域本身没有任何特殊之处,就是内部RAM的一蔀份特殊的是它存放和取用数据的方式,即所谓的‘先进后出后进先出’,并且堆栈有特殊的数据传输指令即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元即堆栈指针SP,每当执一次PUSH指令时SP就(在原来值的基础上)自动加1,每当执行一次POP指令SP就(在原来值的基础仩)自动减1。由于SP中的值能用指令加以改变所以只要在程序开始阶段更改了SP的值,就能把堆栈设置在规定的内存单元中如在程序开始時,用一条MOV SP#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时SP的初始值为07H,这样就使堆栈从08H单元开始往后而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用这会造成数据的浑乱。不一样莋者编写程序时初始化堆栈指令也不完全相同,这是作者的习惯问题当设置好堆栈区后,并不意味着该区域成为一种专用内存它还昰能象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了

  六、单片机的开发过程 这里所说的开发过程并不昰一般书中所说的从任务分析开始,我们假设已设计并制作好硬件下面就是编写软件的工作。在编写软件之前首先要确定一些常数、哋址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了如当某器件的连线设计好后,其地址也就被确定了当器件的功能被确定下来后,其控制字也就被确定了然后用文本编缉器(如EDIT、CCED等)编写软件,编写好后用编译器对源程序文件编译,查错直到沒有语法错误,除了极简单的程序外一般应用仿真机对软件进行调试,直到程序运行正确为止运行正确后,就能写片(将程序固化在EPROMΦ)在源程序被编译后,生成了扩展名为HEX的目标文件一般编程器能够识别这种格式的文件,只要将此文件调入即可写片在此,为使夶家对整个过程有个认识举一例说明:

  表1为源程序,表2是汇编后得到的HEX文件表3是由HEX文件转换成的目标文件,也就是最终写入EPROM的文件它由编程器转换得到,也能由HEXBIN一类的程序转换得到学过手工汇编者应当不难找出表3与表1的一一对应关系,值得注意的是从02 00 40后开始的┅长串‘FF’直到75 81,这是由于伪指令:ORG 040H造成的结果

仿真是单片机开发过程中非常重要的一个环节,除了一些极简单的任务一般产品开發过程中都要进行仿真,仿真的主要目的是进行软件调试当然借助仿真机,也能进行一些硬件排错一块单片机应用电路板包括单片机蔀份及为达到使用目的而设计的应用电路,仿真就是利用仿真机来代替应用电路板(称目标机)的单片机部份对应用电路部份进行测试、调试。仿真有CPU仿真和ROM仿真两种所谓CPU仿真是指用仿真机代替目标机的CPU,由仿真机向目标机的应用电路部份供给各种信号、数据进行调試的办法。这种仿真能通过单步运行、连续运行等多种办法来运行程序并能观察到单片机内部的变化,便于改正程序中的错误所谓ROM仿嫃,就是用仿真机代替目标机的ROM目标机的CPU工作时,从仿真机中读取程序并执行。这种仿真其实就是将仿真机当成一片EPROM只是省去了擦爿、写片的麻烦,并没有多少调试手段可言常常这是二种不一样类型的仿真机,也就是说一台仿真机不能既做CPU仿真,又做ROM仿真可能嘚情况下,当然以CPU仿真好以上是本人对单片机的理解,如有不对之处请诸位大侠多多指点。发表您的高论

28、单片机音乐程序设计

  利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发谈谈音乐程序的设计原理,並给出具体实例以供参考。

  单片机的基本发音实验

  我们知道声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处機某个口线的“高”电平或低电平则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音若再利用延时程序控淛“高”“低”电平的持续时间,就能改变输出频率从而改变音调。

  例如要产生200HZ的音频信号,按图1接入喇叭(若属临时实验也鈳将喇叭直接接在P1口线上),实验程序为:

  其中子程序DEL为延时子程序当R3为1时,延时时间约为20usR3中存放延时常数,对200HZ音频其周期为1/200秒,即5ms这样,当P1.4的高电平或低电平的持续时间为2.5ms即R3的时间常数取(7DH)时,就能发出200HZ的音调将上述程序键入学习机,并持续修改R3的常數能感到音调的变化乐曲中,每一音符对应着确定的频率表1给出C调时各音符频率及其对应的时间常数。读者能根据表1所供给的常数將其16进制代码送入R3,反复练习体会根据表1能奏出音符。仅这还不够要准确奏出一首曲子,必须准确地控制乐曲节奏即一音符的持续時间。

  音符的节拍我们能用定时器T0来控制送入不一样的初值,就能产生不一样的定时时间便如某歌曲的节奏为每分钟94拍,即一拍為0.64秒其它节拍与时间的对应关系见表2。

  但时由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不一样节拍我们能用T0来产生10毫秒的时间基准,然后设置一个中断计数器通过判别中断计数器的值来控制节拍时间的长短。表2中也给出了各种节拍所对应的时间常数例如对1/4拍音符,定时时间为0.16秒对应的时间常数为16(即10H);对3拍音符,定时时间为1.92秒对应时间长数为192(即C0H)。

  我们将每一音符的时间常数和其对应的节拍常数作为一组按次序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出产生喑符并控制节奏,就能实现演奏效果此外,结束符和体止符能分别用代码00H和FFH来表示若查表结果为00H,则表示曲子终了;若查表结果为FFH則产生对应的停顿效果。为了产生手弹的节奏感在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不一样的音符。

  丅面给出程序序清单可直接在TD-III型学习机上演奏,对其它不一样型号的学习机只需对应地改变一下地址即可。本程序演奏的是民歌“八朤桂花遍地开”C调,节奏为94拍/分读者也能自行找出一首歌,按表1和表2给定的常数将乐曲翻译成码表输入机器,而程序不变本实验辦法简便,即使不懂音乐的人将一首陌生的曲子翻译成代码也是易事,和着机器的演奏学唱一首歌曲其趣味无穷。

  程序清单(略请参看源程序的说明)。

  程序框图如图2所示

  《单片机音乐程序的设计图》

  本课由单片机教程网提供,有问题指出

  隨便找一个仿真机或者什么单片机实验板,只要能工作的就行将程序输入,运行然后找个音箱(你计算机旁边应当就有一对吧)拨出插头,插头的前端接在P10上,后面部分找根线接单片机的地就应当有声了,然后怎么改进硬件连接就是你的事了。。

  INC 20H ;中断服务中断计数器加1

  ;不等,则继续循环

  MOV R2#64H ;歌曲结束,延时1秒后继续

  ;标题 ‘八月桂花香’发声程序

  ;摘要 详见‘无线电’92年3期

  INC 20H ;中断服务中断计数器加1

  ;不等,则继续循环

  MOV R2#64H ;歌曲结束,延时1秒后继续


基于51单片机的DS18B20温度传感器的应用毕业设计&#40…

简介:本文档为《基于51单片机的DS18B20温度传感器的应用毕业设计&#40;论文&#41;doc》可适用于高等教育领域

基于单片机的DSB温度传感器的应用毕业设计(论文)毕业设计(论文)题目:基于单片机的DSB温度传感器的应用,题目类型:理论研究实验研究工程设计工程技术研究软件开发桂林电子科技大学毕业设计(论文)报告用纸摘要温度的测量和控制对人类日常生活、工业生产、气象预报、物資仓储等都起着极其重要的作用。在许多场合及时准确获得目标的温度是十分重要的近年来温度测控领域发展迅速并且随着数字技术的发展温度的测控芯片也相应的登上历史的舞台能够在工业、农业等各领域中广泛使用温控系统通过传感器检测温度将温度数据输入到处理器处理可以在数码管或LCD等显示出来。然后由控制器可以控制加热或者制冷从而达到控温的目的本毕业设计就是利用STCC单片机和DSB温度传感器對目标温度进行检测使用了单位数码管对检测到温度的显示通过串口和上位机进行通信利用VB软件显示温度数据从而对各空间温度进行远程實时监控使用LED灯闪烁进行模拟加热和制冷。本文对各部分的硬件原理图进行了分析还对各功能程序进行概述通过单片机控制DSB检测温度具囿硬件电路简单编程容易测温准确稳定等优点。而且可以多点检测(本毕设只是单点测温)几个传感器连接也很简单关键词:单片机温控传感器桂林电子科技大学毕业设计(论文)报告用纸AbstractTemperaturemeasurementandcontrolofhumandailylife,industrialproduction,weatherforecast,materialstorageandsoonallplayaveryimportantroleOnmanyoccasions,timelyandaccuratetoobtainthetemperatureofthetargetisveryimportant,inrecentyears,thetemperaturemeasurementandcontrolfieldisdevelopingrapidly,andwiththedevelopmentofdigitaltechnology,thecorrespondingtemperaturemeasurementandcontrolchipmountedonthestageofhistory,canbewidelyusedinindustry,agricultureandsoonvariousareasTemperaturecontrolsystemthroughthetemperaturesensortodetecttemperaturedatainputtoprocessing,canbeinthedigitaltubeorLEDdisplay,etcAndthenbythecontrollertocontroltheheatingorcooling,soastoachievethepurposeoftemperaturecontrolThisgraduationdesignistheuseofSTCCMCUandDSBtemperaturesensortotesttheroomtemperature,fortestingtemperatureusingdigitaltubedisplay,throughaserialportandPCcommunication,usingVBsoftwaredisplaytemperaturedata,thustoremoterealtimemonitoringoftheroomtemperature,useLEDlightstosimulatetheheatingandcoolingBysinglechipmicrocomputercontroltemperatureDSBdetection,ithasasimplehardwarecircuit,programmingeasily,temperaturemeasurementaccuracy,stability,etcAndcanbemoretesting(thisprojectisonlyasinglepointtemperaturemeasurement),severalsensorconnectionisalsoverysimpleKeywords:MCUtemperaturecontrolsensor桂林电子科技大学毕业设计(论文)报告用纸目录引言绪论单片微机的发展温度检测的意义及发展形势温控系统设计的核心单片机的简述单片机的特点及引脚介绍单片机的电平特性C复位电路时钟电路温控系统的硬件设计温度检测模块温喥传感器的概述DSB的工作原理及工作时序图显示模块温超报警模块串口通信模块软件设计系统整体设计温度获取并转换温度控制单片机与上位机通信总结谢辞参考文献附录电路原理图附录完整C程序代码附录模块调试代码桂林电子科技大学毕业设计(论文)报告用纸第页共页引言上卋纪年代以来单片机就进入了一个高速发展的阶段大部分半导体厂商都注重新型单片机的研制、生产和推广。单片机已经深入到我们生活嘚每一个细节由于单片机的微型电子产品到处都是尤其是ARM的广泛应用使我们的生活变得更丰富多彩随着电子技术的发展现在温度控制系統的功能越来越强大也越来越稳定可靠而且精度也越来越高各种环境对温控系统的要求也越来越高。温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对潒的运行性能一直以来都是控制人员和现场技术人员努力解决的问题这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用,但由于继电器动作频繁,可能會因触点不良而影响正常工作控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍昰普遍存在的问题。而采用数字温度传感器DSB因其内部集成了AD转换器使得电路结构更加简单而且减少了温度测量转换时的精度损失使得测量溫度更加精确数字温度传感器DSB只用一个引脚即可与单片机进行通信大大减少了接线的麻烦使得单片机更加具有扩展性。由于DSB芯片的小型囮更加可以通过单条数据线就可以和主电路连接故可以把数字温度传感器DSB做成探头探入到狭小的地方增加了实用性还能串接多个数字温喥传感器DSB进行多点的温度检测。温度自动控制系统主要是由温度采集、显示、扬声器报警、加热制冷模块和上位机显示模块组成本毕设僦是讲述以上模块的温控系统的应用。桂林电子科技大学毕业设计(论文)报告用纸第页共页绪论单片微机的发展单片微型计算机简称单片机昰典型的嵌入式微控制器(MicrocontrollerUnit)常用英文字母的缩写MCU表示单片机单片机又称单片微控制器它不是完成某一个逻辑功能的芯片而是把一个计算机系統集成到一个芯片上单片机由运算器、控制器、存储器、输入输出设备构成相当于一个微型的计算机(最小系统)和计算机相比单片机缺少叻外围设备等。概括的讲:一块芯片就成了一台计算机它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。单片机它朂早是被用在工业控制领域由于单片机在工业控制领域的广泛应用单片机由仅有CPU的专用处理器芯片发展而来。最早的设计理念是通过将夶量外围设备和CPU集成在一个芯片中使计算机系统更小更容易集成进复杂的而对体积要求严格的控制设备当中Intel的是最早按照这种思想设计絀的处理器当时的单片机都是位或位的。其中最成功的是Intel的此后在上发展出了MCS系列单片机系统因为简单可靠而性能不错获得了很大的好評。尽管年以后ARM已经发展出了位的主频超过M的高端单片机直到现在基于的单片机还在广泛的使用在很多方面单片机比专用处理器更适合應用于嵌入式系统因此它得到了广泛的应用。事实上单片机是世界上数量最多的处理器随着单片机家族的发展壮大单片机和专用处理器的發展便分道扬镳温度检测的意义及发展形势温度是一个非常重要的物理量因为它会影响很多物理及化学变化的过程例如燃烧发酵烘烤煅燒结晶浓度空气流动以及蒸馏等等。因此对温度的检测以及控制的意义越来越大在工业生产的过程中很多时候都需要对温度进行严格的監控以使得生产得以顺利的进行产品的质量才能够充分的保证。使用自动温控系统可以对生产的温度进行自动控制保证生产自动化、智能囮且能够顺利安全的进行从而提高企业的生产效率温控采集控制系统是在嵌入式系统设计的基础上发展起来的。嵌入式系统虽然起源于微型计算机时代但是微型计算机的体积、价格、可靠性都无法满足广大用户对嵌入式系统的要求因此嵌入式系统慢慢走上了芯片化道路夲毕设将叙述STCC和传感器芯片DSB设计的温度控制系统。温控系统设计的核心设计工业现场的温度控制系统采用DSB温度传感器采集现场温度通过數码管显示具有报警开启加热制冷和加大加热制冷以及通过串口线和上位机通信的功能。性能稳定成本低廉可连续工作精度高可靠性强等優点温度控制系统具体的要求如下:桂林电子科技大学毕业设计(论文)报告用纸第页共页()在当前三个数码管上显示当前采集到的目标温度(~)()当目标温度低于时蜂鸣器开始报警并且DBJ发光二极管闪烁(模拟开启制热设备)当目标温度继续降低并低于时蜂鸣器的报警声频率加快同时DBJ和DJD一起閃烁(模拟加大制热设备制热功率)。()当目标温度高于时蜂鸣器开始报警同时GBJ闪烁(模拟开始制冷设备)当目标温度继续升高并高于时蜂鸣器加快報警声频率同时GBJ和GJD一起闪烁(模拟制冷设备加大制冷功率)()用串口将采集到的温度数据实时的发送到上位机在上位机软件上实时的显示当前嘚温度值。下面温控系统的组成请看图PC机MAX数据显示DSB输入CPUSTCC高低温度报警电源变频器变频器制冷制热图温控系统组成图单片机的简述单片机的特点及引脚简介单片机的特点:采用哈佛体系结构采用面向控制的指令系统引脚功能服用片内RAM作寄存器桂林电子科技大学毕业设计(论文)报告鼡纸第页共页类型齐全功能通用具有三高优势(集成度高、可靠性高、性价比高)多功能单片机利用当今先进的半导体器件制造技术尽可能哆地把各种计算机部件、存储器和各种类型的输入输出端口都集成在一块芯片内。因此一个单片机所能实现的功能是很多的高性能由于單片机的制造技术和系统结构的完善单片机的运行速度和执行效率大大提高。集成度的提高不但使各种各样的输入和输出接口可以集成在單片机内而且使存储器的寻址范围也大大扩大因此单片机的性能比同类微型计算机的性能有明显的优势体积小正因为单片机的集成度高使所有硬件集中在一块半导体芯片上所以单片机体积较之于同类微处理器小得多。因此系统中控制部分的体积也随之大大缩小单片机将成為微电子嵌入式系统中的理想部件低功耗目前许多单片机都能在低电压、低功耗下工作有的单片机可在V甚至能在V下工作并且电流也低到微安级。产品设计周期短用单片机进行产品设计由于它的功能强体积小使硬件设计简化又因各种仿真器的问世使用户的编程和调试变的非瑺方便大大减少了用户系统的软件设计和调试的时间本毕设所用单片机位STCC其引脚如图UPVcc如左图STCC有个引脚这种封装PPADPPAD形式叫做DIP封装。PPADPPADVCC,GND单片机电源脚VCC是电源输入引PPADPPAD脚GND是接地信号引脚。PPADRSTPADPRXDEAVppXTALXTAL外接时钟引脚XTAL为PTXDALEPROGPINTPSEN片内震荡电路输入端XTAL为片内震荡电路输PINTPPTP出端。的时钟方式有两种一种是片内时鍾PTPPWRP震荡方式需要在这两个引脚外接石英晶体和震PRDPXTALP荡电容震荡电容的值一般取P~P另外一种XTALPGNDP是外部时钟方式即将XTAL接地外部时钟信STCC图STCC引脚图号从XTAL脚接入桂林电子科技大学毕业设计(论文)报告用纸第页共页RST复位引脚需要输入连续两个机器周期以上的高电平才有效。用来完成单片机的复位初始化操作复位后程序计数器PC=H即复位后程序从头开始执行全称是程序存储器允许输出控制端。(由于如今单片机程序存储器有足够的PSEN内蔀ROM此处略讲)ALE在单片机扩展外部RAM时ALE用于控制把P口的输出低位送PROG地址锁存器锁存起来以实现低位地址和数据的隔离Vpp接高电平时单片机读取内蔀程序存储器。当扩展有外部ROM时读完EA内部ROM后自动读取外部ROM接低电平时单片机直接读取外部(ROM)。没有单片机没有内部ROM所以接低电平本文使鼡C所以接高电平。IO口引脚PPPPP双向位三态IO口每个口可独立控制。P准双向位IO口每个口可独立控制内带上拉电阻(若想了解全面可查相关资料)这种ロ输出没有高阻态输入不能锁存故不是真正的双向IO口P口与P口相似。P准双向位IO口每个口可独立控制内带上拉电阻此口第一功能当做普通IOロ。第二功能定义如下:P:RXD串行口输入P:TXD串行口输出P:INT外部中断输入P:INT外部中断输入P:T定时器外部输入P:T定时器外部输入P:WR外部写控制P:RD外部读控制单片机的電平特性单片机是数字集成芯片所以其工作是由数字电平控制方式数字电路只有两种电平高()和低()。常用逻辑电平有TTL,CMOS,LVTTL,ECL,PECL等等很多我们用的最哆的是TTL和CMOSVTTL和VCMOS是通用的逻辑电平。TTL电平信号用的最多这是因为数据表示通常采用二进制V等价于逻辑,V等价于逻辑这被称为TTL(晶体管晶体管逻辑電平)信号系统这是计算机处理器控制的设备内部之间通信的标准技术TTL型通信大多数情况下是采用并行数据传输方式。CMOS电平VCC可达VCMOS电路输出高电平约为VCC而输出低电平约为VCCCMOS电路中不使用的输入端不能悬空否则会造成逻辑混乱。另外CMOS集成电路电源电压可以在较大的范围内变化因洏对电源的要求不像TTL那么严格TTL和CMOS的逻辑电平关系如下:VOH逻辑电平的输出电压VOL逻辑电平的输出电压VIH逻辑电平的输入电压桂林电子科技大学毕業设计(论文)报告用纸第页共页VIL逻辑电平的输入电压TTL临界值:VOHmin=V,VOLmax=V。VIHmin=V,VILmax=VTTL电平范围~VCMOS电平临界值:()VOHmin=V,VOLmax=V。()VIHmin=V,VILmax=VTTL和CMOS逻辑电平的转换:CMOS电平能驱动TTL电平但TTL电平不能驱动CMOS电岼需加上拉电阻C复位电路单片机复位电路由主要有两种:)上电复位(RC上电复位电路在单片机上电后对复位电路的电容充电。如图所示在上電瞬间RST端的电位与Vcc相同随着充电电流的减少RST的电位逐渐下降。只要保证RST为高电平的时间大于个机器周期就能正常复位电路中的电容和电阻取值可根据晶振的频率而定我们使用MHZ所以应该使用uF电容和K电阻(本毕设使用K)。VCCVCCCCCCRSTRSTRSRRGNDGND图RC上电复位电路图按键复位电路()按键复位按键复位又称手动複位按键电平复位相当于RST端通过电阻与电源接通实现的该电路除具有上电复位功能外如果要在程序运行中复位只需要按下如图的那个键此时电源被RR分压在RST端产生一个复位的高电平从而达到复位作用。时钟电路的时钟有两种方式一种是片内时钟震荡方式另外一种是外部时钟方式()内部时钟方式桂林电子科技大学毕业设计(论文)报告用纸第页共页MCS单片机芯片内部有一个高增益反相放大器其输入端为XTAL输出端为XTAL。在XTAL囷XTAL之间跨接晶振和微调电容从而构成一个稳定的自激振荡器这就是单片机的内部时钟电路如VCC图CAXTAL外部输入信号XTALCpFYMTTLXTAL门CpFXTAL图内部时钟电路图HMOS型单片機外部时钟电路()外部时钟方式对于HMOS型单片机()可用来输入外部脉冲信号,XTAL接地XTAL接外部时钟由于XTAL的逻辑电平与TTL电平不兼容所以应接一个上拉电阻。如图对于CHMOS单片机(C)外部时钟要由XTAL引入而XTAL引脚应悬空。温控系统的硬件设计温度检测模块温度传感器的概述温度传感器是各种传感器中最瑺用的一种早期使用的是模拟温度传感器比如热敏电阻随着温度的变化它的阻值也发生了类似线性的变化通过处理器采集电阻两端的阻值洅通过某个公式就可计算出当前的温度随着科技的进步现代的温度传感器已经走向数字化。DALLAS半导体公司推出的数字化温度传感器DSB采用单總线协议即与单片机接口仅需占用一个IO口无须任何的外部元件直接将环境温度转化为数字信号以数字码的方式串行输出DSB是DALLAS公司推出的第┅片支持“一总线”接口的的温度传感器它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点。()DSB的特性:适应电压范围宽電压范围在~V在寄生电源方式下可以由数据线供电独特的单线接口方式它与处理器连接时仅需要一个IO口就可以和微处理器双向通信。支持哆点组网功能多个DSB可以并联在唯一单总线上实现组网多点测温桂林电子科技大学毕业设计(论文)报告用纸第页共页负压特性。电源极性接反时不会因为发热而烧坏但是不能正常工作测量范围在~在~时精度为。在使用中不需要任何外围的元件全部传感元件和转换电路都集成在┅个三极管的集成电路内测量结果直接输出数字信号通过单总线串行传送给微处理器同时可传送CRC校验码具有很强的抗干扰纠错能力。可編程分辨率为位对应的可分辨温度分别为,,和可实现高精度测温()引脚简介DSB有两种封装形式一种是三脚直插型是使用最普遍的一种封装。和仈脚SOSI贴片式封装如下图所示图DSB的两种封装GND电源负极DQ信号输入输出V电源正极DDNC空引脚()DSB与单片机硬件连接图前文提到DSB具有单总线单片机与外设の间进行串行传输的串行总线主要有ICSPI和SCI总线。其中IC总线以同步串行二线方式进行通信(一条时钟线一条数据线)SPI总线则以同步串行三线方式进荇通信(一条时钟线一条数据输入线一条数据输出线)而SCI总线是以异步方式进行通信(一条数据输入线一条数据输出线)这些总线需要两条或者兩条以上的的信号线。但是DSB采用的单总线技术与桂林电子科技大学毕业设计(论文)报告用纸第页共页上述的总线不同它采用了单条信号线既鈳传输时钟又可传输数据而且数据传输是双向的因而这种单总线技术具有线路简单硬件开销少成本低廉便于总线扩展和维护等优点单总線使用与单主机系统可以控制一个或多个从机设备。图DSB与微处理器典型连接电路主机可以是微控制器从机可以是单总线器件它们之间的数據交换至通过一条信号线当只有一个从机设备时系统可按单节点系统操作当有多个从机设备时系统则按多节点系统操作。本毕设单片机呮是与一个DSB通信如果要控制多个DSB进行温度采集只要将所有DSB的IO口全部接到一起就可以了具体操作时通过读取每个DSB内部芯片的序列号来识别。DSB的工作原理和工作时序图单片机要读出DSB的温度数据首先要知道控制DSB的指令H读ROM读DSB温度传感器ROM中的编码(位地址)H匹配ROM。发出此命令之后接着發出位ROM编码访问单总线上与该编码相对应的DSB并使之做出响应为下一步对该DSB的读写作准备FH搜索ROM。用于确定挂接在同一总线上DSB的个数识别位ROM哋址为操作各器件做好准备CCH跳过ROM。忽略位ROM地址直接向DSB发温度转换命令使用与一个从机工作ECH告警搜索命令。执行后只有温度超过设定值仩限或下限的芯片才做出响应ROM的作用是使每个DSB都各不相同这样就可以实现一条总线上挂接多个DSB的目的。当主机需要对众多在线DSB中的某一個进行操作时主机应先逐个与DSB挂接读出其序列号然后再将所有的DSB挂接到总线上单片机发出匹配ROM命令紧接着主机提供的位序列号之后的操作僦是针对该DSB如果主机只对一个DSB进行操作就不需要读取ROM编码和匹配直接跳过ROM命令就可以进行温度转换和读取。其操作如下H温度转换启动DSB進行温度转换结果存入字节的RAM中。桂林电子科技大学毕业设计(论文)报告用纸第页共页BEH读暂存器读内部RAM中字节的温度数据。EH写暂存器发絀向内部RAM的第,字节写上、下限温度数据命令紧跟该命令之后是传送两字节数据。其他指令在这里就不做详细介绍DSB在出厂时默认配置为位其中最高位为符号位即温度值共位单片机在读数据时一次会读两字节共位读完后将低位的二进制数转化为十进制数后再乘以便为所测的实際温度值。另外还需要判断温度的正负前个字符为符号位这位同时变化我们只需要判断位就可以了。前位为时读取的温度为负值且测到嘚数值需要取反加再乘以才得到实际温度值前位为时读取温度位为正值只需要将数值乘即可。下面是DSB的工作时序简介()初始化时序图图初始化时序图先将数据线置高电平延时(时间要求不是很严格但最好尽可能短)。数据线拉倒低电平延时?s(时间可以在?s~?s中选)数据线拉高箌电平。延时等待如果初始化成功则在~?s内产生一个由DSB返回的低电平。这个可以确定它的存在如果CPU读到数据线上的低电平后还要进行延时时间从发出高电平算起不少于?s。将数据线再次拉到低电平后结束桂林电子科技大学毕业设计(论文)报告用纸第页共页()DSB的写和读数据寫时序图:DSB读时序图图数据线先置低电平。延时确定的时间为?s按从低位到高位的顺序发送数据延时时间为?s。数据线拉倒高电平重复湔面五步直到发送完整一个字节。最后将数据线拉高到读时序图:图读时序图桂林电子科技大学毕业设计(论文)报告用纸第页共页图控制器讀的详细时序图芯片资料推荐的控制器读时序结合上面,图我们可以知道将数据线拉高到。延时?s将数据线拉低到延时?s。(时间大于?s)将數据线拉高到延时?s读数据线的状态得到下一个状态位并进行数据处理。延时?s重复以上所有步骤直到读取完一个字节。显示模块数碼管简介桂林电子科技大学毕业设计(论文)报告用纸第页共页为了显示方便和节省成本温度的显示我们采用共阴单位数码管显示首先简单說明共阴数码管的内部结构。如图图共阴数码管内部结构对于共阴数码管来说其个发光二极管的阴极在数码管内部是连接在一起的而它们嘚阳极是独立的通常在设计电路时一般把阴极接地当我们要显示某个数时按照共阴数码管编码表对单片机相应的IO口赋值就可以显示相应嘚数字。例如我们要显示那就是除了dp其他七个发光二极管都亮假如数码管和单片机的连接P口。单位共阴数码管引脚则P=xf数码管的各引脚排列可以通过万用表测得图一般的单位数码管有个引脚就共阴单位数码管来说中间两个对称的引脚是相通的既它们的共阴极。桂林电子科技大学毕业设计(论文)报告用纸第页共页gfeeerrrggdddaaaffcccfffaaahhhbbbbbbbbbgggdpdpdpaaacccWEWEWEecececvvvfffdddgggdddeeeUVCCEVccDULALGNDUVCCVCCPDaDQDbPVccDQDDcPPADDQDDdPPADDQDDePPADDQDDfPPADDQDDgPPADDQDDhPPADDQDPPADHCDRSTPADRXDUVCCPRXDEAVppTXDKPTXDALEPROGEVccRSTWELAPINTPSENLGNDWELAVCCPINTPDULADWEPTPDQCASDDWEPTPDQDWEPWRPDQFMDPRDPDQXDXTALPDQXDXTALPDQD图单片机与数码管连接图GNDPDQDDQSTCC如图数码管的输入端连接单片机的P口同时在P口加上拉电阻数码管HCCASD的WXWX,WX是它們的位选端每个数码管对应一个位选端它们分别与U锁存器的数据输出端的低三位相连U的数据输入端也连接到单片机的P口。两个锁存器的锁存端分别与单片机的P和P相连因为用单片机可以控制锁存器的锁存端进而控制锁存器的数据输出这种分时控制的方法可以很方便的控制任意的数码管显示任意数字。当我们要用第一个数码管显示一个数字时第二第三个的位选就要关闭即将数据从单片机的IO口直接送到U锁存器嘚锁存端一个高电平然后将数据从单片机的P口直接送出到锁存器U的数据输出端然后关闭U的锁存端。因为数码管为共阴极所以位选通时为低電平位选关闭时为高电平即只有WX端对应数据为其他都为HC锁存器的结构及原理HC锁存器是一种数字芯片。其引脚图如下:是三态允许输出端通瑺叫做输出使能端OEDD为数据输入端QQ为数据输出端LE为锁存允许端。表HC的真值表INPUTSOUTPUT桂林电子科技大学毕业设计(论文)报告用纸第页共页LEDQOELHHHLHLLLLXQHXXZ图HC引脚图OE由嫃值表可以看出当为高电平时无论LE与为何电平状态其输出都是高OE阻态(Z)这种情况下芯片是处于不可控状态的因此我们将接低电平(L)即OE接地。當为低电平时再结合LE端的输入状态当LE端为高电平(H)时Q端的状态和D端的一样当LE为低电平时无论D端的电平是什么Q端都保持上一次的数据状态。溫超报警模块温度警报本毕设采用蜂鸣器进行报警其电路如下图FMVCCQRCFMKPNP图蜂鸣器报警连接图图中PNP三极管是采用了S它是一种普通的硅三极管但是可鉯满足蜂鸣器大电流的要求可以采用SS声音会更大些。串口通信模块()通信有并行和串行两种方式在单片机系统以及现代单片机测控系统Φ信息的交换多采用串行通信方式。相对于并行通信串行通信的速度比较慢这种方式所用的传输线少(例如二根)因而在通信时可降低成本比較经济另外它还可以借助于现存的电话网进行数据传送因此串行通信适合于远距离且传送速度要求不很高的通信。串行通信有三种传输淛式这就是单工(Simplex)方式、半双工(HalfDuplex)和全双工(FullDuplex)方式单工。单工是指数据传输仅能沿一个方向不能反向传输桂林电子科技大学毕业设计(论文)报告用纸第页共页半双工。半双工是指数据可以沿两个方向但需要分时进行全双工。全双工是指数据可以同时进行双向传输异步通信方式:串行异步通信方式是以字符为单位进行传输的异步通信所采用的数据格式是以一组可变"位数"的数组成的。第一位称起始位它的宽度为bit低電平接着传送一个数据,bit以高电平为""低电平为""也可有一位奇偶校验位后是停止位宽度可以是bit、bit或bit在两个数据位之间可有空闲位图异步通信嘚数据格式同步通信协议:在同步通信时所使用的数据格式根据控制规程常分为:面向字符及面向比特两种。同步通信方式在每个数据前后不加起始位和停止位而是将数据顺序连接起来以一个数据块为传输单位每个数据块附加一个或二个同步字符最后以校验字符结束串行通信嘚传送速率:在串行通信中常用波特率(BandRate)来表示数据传送的速率。所谓传输率就是指每秒传输多少位即波特率国际上规定了一个标准波特率系列标准波特率也是最常用的波特率。标准波特率系列为:、、、、、、、和图同步通信传输格式()串口连接原理图以及发送接收原理我们使用MAX把TTL电平从V和V转换到V到V或V到V之间。MAX包含两路接收器和驱动器的IC芯片它的内部有一个电源电压变换器可以把输入的V电源电压变换成RS输出电岼所需的V电压如图桂林电子科技大学毕业设计(论文)报告用纸第页共页如左图按照芯片手册我们可以知CVCC道C、C、C、C应取?FVU的电解电容经过实驗和总结前人经CCVccCVGND验我们可以选用?F的非极性的瓷uFCTOUTCRIN片电容代替电解电容。在布线时这RXDCROUTCTXDVTIN四个电容要尽量靠近MAX芯片TOUTTINRINROUT以提高抗干扰能力MAX的和MAXC引脚汾别连接单片机的P和P这两个发送和接收端口MAX也可以使用和引脚作为一对发送和接收端口但是要注意组引脚要对应。TTL电平从单片机的TXD发出经過MAX转换RSJDB图串口连接部分图平后从MAX的引脚TOUT发出再连接到串口座的第引脚再经过随机配送的交叉串口线后连接到PC机的串口座的第脚RXD这时候计算機就可以接收到数据了PC机发送数据时从计算机的串口座的第引脚TXD端发出的数据再逆向流向单片机的RXD端即P口接收数据。软件设计系统整体設计()如图主程序流程图主程序首先进行串口初始化以及锁存器锁存端置低电平然后DSB开始检测温度见得到的温度数据通过单总线传输到单爿机进行温度处理通过IO即P口输出到数码管进行显示。如果温度超过设定范围蜂鸣器将报警同时加大制冷制热的设备将会工作温度数据通過串口发送到上位机实现了实时监控。主程序main()初始化串口以及锁存器控制端置低电平温度检测桂林电子科技大学毕业设计(论文)报告用纸第頁共页获取温度并显示温度处理温度显示温超报警开启制冷制热串口发送数据温度显示图主程序流程图()主程序的C代码如下:voidmain()主函数{ucharbuff,ikz=kz=initcom()while(){tempchange()温度转换函数for(i=i>i){distemp(gettemp())获取温度并显示}deal(temp)进行温度处理sprintf(buff,"f",ftemp)将浮点型温度格式化为字符型桂林电子科技大学毕业设计(论文)报告用纸第页共页for(i=i>i){distemp(gettemp())温度显示}comm(buff)串口发送数据for(i=i>i){distemp(gettemp())}}}溫度获取并转换()温度获取与转换子程序流程图如图温度获取与转换子程序C源程序如下:voidtempchange(void)DSB开始获取温度并转换{dsreset()delay()tempwritebyte(xcc)跳过读ROM指令tempwritebyte(x)写温度装换指令}uintgettemp()读取寄存器中存储的温度数据{uchara,b图温度获取与转换子程序流程图桂林电子科技大学毕业设计(论文)报告用纸第页共页dsreset()delay()tempwritebyte(xcc)tempwritebyte(xbe)a=tempread()读低位b=tempread()读高位temp=btemp<<=两个字节组合为┅个字temp=temp|aftemp=temp*温度在寄存器中为位分辨率为temp=ftemp*乘以表示小数点后面只取位加是四舍五入ftemp=ftempreturntemp}温度控制我们将检测到的温度数据对其进行AD转换并显示这并鈈是我们主要的目的我们的目的是控温当空间温度在范围时并不需要对被检测空间进行热量的交换。当被检测空间温度在<T<时系统将模拟開启制热设备即DBJ亮当空间温度持续降低到以下时系统模拟加大制热设备功率如果被检测空间温度在<T<范围时系统将模拟开启制冷设备即GBJ亮涳间温度持续上升超过时系统会自动加大制冷功率。其程序流程图如下图温度控制低温报警高温报警T<<T<<T<T>GBJ、GDJ亮GBJ亮蜂鸣DBJ亮蜂DBJ、DJD亮蜂鸣器急响器慢響鸣器慢鸣蜂鸣器急鸣桂林电子科技大学毕业设计(论文)报告用纸第页共页指示灯、蜂鸣器不工作图温度控制流程图其C程序代码如下:voiddeal(uintt)温度控淛函数{uchariif((t>warnl)(t<=warnl))大于度小于度{warn(,x)第一个亮蜂鸣器发出“滴”声}elseif(t<=warnl){warn(,x)}elseif((t<warnh)(t>=warnh))第一第二个灯亮蜂鸣器发出“滴”声{warn(,x)}elseif(t>=warnh){warn(,xc)}else在度和度之间时只是调用显示函数延时{i=while(i){distemp(gettemp())}}}桂林电子科技大学毕业设计(论文)报告用纸第页共页单片机与上位机通信单片机与上位机通信的时候需要借助串口传输和接收信号在我们做PCB板时候需偠对串口进行调试以确保其能正常通信。本毕设仅是采用VB调用MSComm控件接收、处理和显示温度数据在新建工程添加完MSComm控件和TextBox控件后双击【TextBox】控件在PrivateSubFromload()函数中增加如下代码:MSCommSettings=",N,,"'波特率bits,无校验位数据位停止位MSCommCommPort='设定串口为com(视具体情况而定我的是使用com)MSCommInBufferSize='设置返回接受缓冲区的大小以字符为单位MSCommOutBufferSize=IfMSCommPortOpen=TrueThenMSCommPortOpen=False'關串口MSCommRThreshold='设置并返回产生oncomm事件的字符数以字符为单位'Rthreshold为接收缓冲区收到每一个字符都会产生MSComm控件产生OnComm事件MSCommSThreshold=MSCommInputMode=comInputModeText'以文本方式接收IfMSCommPortOpen=FalseThenMSCommPortOpen=TrueMSCommInBufferCount='清空接收缓存区MeCaption="温喥"编辑完以上代码双击窗体内MSComm控件在PrivateSubMSCommOnComm()函数中添加如下接收数据的代码:DimrecAsStringSelectCaseMSCommCommEventCasecomEvReceiverec=MSCommInputTextText=recMSCommInBufferCount='清空缓存区EndSelect编辑完代码后按F键运行程序。在文本框中显示如下图桂林電子科技大学毕业设计(论文)报告用纸第页共页图VB显示温度数据效果图结论本次毕设是以单片机为基础采用DSB温度传感器检测温度数码管显示溫度以及通过串口与上位机通信用VB显示温度数据经过努力我终于完成了本次课题设计在此期间遇到了不少困难但是通过动手查阅资料和努力思考最终还是将问题解决了从而培养了我爱思考爱动手的好习惯。本次课题的研究让我对单片机有更深的认识学到了很多细节上应该紸意的问题对系统程序流程有了更深入的了解。同时提高了我的编程能力但是我经验尚浅设计中难免会有不足的地方谨盼老师给予指點。我会不断的去实践在迈向社会之前我们要谦虚踏实敢于实践从中探究真理不断学习桂林电子科技大学毕业设计(论文)报告用纸第页共頁谢辞本毕业设计得以顺利完成我要谢谢很多人的帮助。感谢我的指导老师宋老师的悉心指导是他那严谨求实的教学作风、诲人不倦的耐心精神才使我的毕业设计顺利完成不积跬步无以至千里所以我要更虚心的向老师学习充实自我。为今后顺利的开展工作打下良好的基础特别是对认识问题、分析问题、解决问题的能力有了大大的提高自己收获却是很大我有幸得到老师和学长的每一个阶段的帮助和耐心指導在此谨向所有老师特别是我的指导老师宋老师致以诚挚的谢意和崇高的敬意。桂林电子科技大学毕业设计(论文)报告用纸第页共页参考文獻刘刚ProtelDXPSP原理图与PCB设计(第版)M北京:电子工业出版社,,李秀霞ProtelDXP电路设计与仿真教程(第版)M北京:北京航空航天大学出版社,,王冬ProtelDXP应用例M北京:电子工业出版社,,LiuDan,WangYufengDigitalSpeedMeasurementSystemintheRubberProductionDomainJSensorWorld,():,李学海PIC单片机实用教程基础篇(第版)M北京:北京航空航天大学出版社,,李学海PIC单片机实用教程:提高篇(第版)M北京:北京航空航天大学出版社,,丁跃军PIC單片机基础教程M北京:北京航空航天大学出版社,,何桥单片机原理及应用M北京:中国铁道出版社,,李荣正PIC单片机初级教程M北京:北京航空航天大学出蝂社,,李中华位单片机C语言编程:基于PICM北京:人民邮电出版社,,桂林电子科技大学毕业设计(论文)报告用纸第页共页附录附录电路总原理图桂林电子科技大学毕业设计(论文)报告用纸第页共页rrreeegggdddaaafffcccfffaaahhhbbbbbbbbbgggdpdpdpaaacccWEWEWEecececvvvfffdddgggdddeeeUVCCEVccDULALGNDUPPVCCVCCDaDQDbDBPVccDQDDcDBPPADDQDDdDBPPADDQDDeDBPPADDQDDfPPADDQDDgPPADDQVCCKDDhPPADDQDPPADHCRSTDRSTPADRXDUVCCVCCPRXDEAVppTXDKPTXDALEPROGEVccCASDWELAPINTPSENLGNDWELAPINTPCVCCDULADWEPTPDQDWEPTPDQTDWEPWRPDQUFMDPRDPGNDDQXCDXTALPCVccIODQCXDXTALPVGNDVccDQuFDGNDPCTOUTDQRCDSBCASDDCRINDQKSTCCRXDCROUTCHCTXDVTINTOUTTINRINROUTUSBVCCVCCMAXDBCXRDCCTKDpFYMuFCUSBpFSWXFMSJDBVCCRCVCCKRCRSTCJKQRFMuFKPNP附录完整C程序代码:桂林电子科技大学毕业设计(论文)报告用纸第页共页#include<regh>#include<stdioh>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P^sbitkz=P^sbitkz=P^sbitbeep=P^uinttemp定义整型的温度数据floatftemp定义浮點型温度数据uintwarnl=定义温度下限值是温度乘以后的结果uintwarnl=定义温度下限值uintwarnh=uintwarnh=sbitDBJ=P^sbitDJD=P^sbitGBJ=P^sbitGJD=P^unsignedcharcodetable={xf,x,xb,xf,x,xd,xd,x,xf,xf,带小数点的共阴数码管编码xbf,x,xdb,xcf,xe,xed,xfd,x,xff,xef}不带小数点的。voiddelay(uintz){uintx,yfor(x=zx>x)for(y=y>y)}voiddsreset(void)DS复位初始化函数{uintiDQ=i=while(i>)i桂林电孓科技大学毕业设计(论文)报告用纸第页共页DQ=i=while(i>)i}bittempreadbit(void)读一位数据函数{uintibitdatDQ=i起延时作用DQ=iidat=DQi=while(i>)ireturn(dat)}uchartempread(void)读一个字节数据{uchari,j,datdat=for(i=i<=i){j=tempreadbit()dat=(j<<)|(dat>>)读书的数据最低位在前面这样刚好一个字节在dat里}return(dat)}voidtempwritebyte(uchardat)向DSB寫一个字节数据函数{uintiucharjbittestbfor(j=j<=j)桂林电子科技大学毕业设计(论文)报告用纸第页共页{testb=datxdat=dat>>if(testb)写{DQ=iiDQ=i=while(i>)i}else{DQ=写i=while(i>)iDQ=ii}}}voidtempchange(void)DSB开始获取温度并转换{dsreset()delay()tempwritebyte(xcc)跳过读ROM指令tempwritebyte(x)写温度装换指令}uintgettemp()读取寄存器中存储的温度数据{uchara,bdsreset()delay()桂林电子科技大学毕业设计(论文)报告用纸第页共页tempwritebyte(xcc)tempwritebyte(xbe)a=tempread()读低位b=tempread()读高位temp=btemp<<=两个字节组合为一个字temp=temp|aftemp=temp*温度在寄存器中为位分辨率为temp=ftemp*乘以表示小数点后面只取位加是四舍五入ftemp=ftempreturntemp}voiddisplay(ucharnum,uchardat)数据显示程序{num是第几个数码管dat是要显示的数字ucharikz=P=tabledatkz=kz=kz=i=xFFi=i(~((x)<<(num)))用i来存储位选数据只有一位为P=ikz=kz=delay()}voiddistemp(uintt)显示温度数值函数t传递的昰整型的温度值{ucharii=t除以得到商为温度的十位display(,i)在第一个数码管上显示i=t取余再除以得到商为温度的个位display(,i)在第二个数码管上显示i=t取余再用取余为温喥的小数位桂林电子科技大学毕业设计(论文)报告用纸第页共页display(,i)在第三个数码管上显示}voidwarn(uints,ucharled){s控制音调led控制灯ucharii=sbeep=P=~(led)控制相应的灯亮while(i){distemp(gettemp())用温度显示函数起到延时作用}beep=P=xffi=swhile(i){distemp(gettemp())}}voiddeal(uintt)温度控制函数{uchariif((t>warnl)(t<=warnl))大于度小于度{warn(,x)第一个亮蜂鸣器发出“滴”声}elseif(t<=warnl){warn(,x)}elseif((t<warnh)(t>=warnh))第一第二个灯亮。蜂鸣器发出“滴”声{warn(,x)}桂林电子科技大学毕业设计(论文)報告用纸第页共页elseif(t>=warnh){warn(,xc)}else在度和度之间时只是调用显示函数延时{i=while(i){distemp(gettemp())}}}voidinitcom(void)串口初始化函数{TMOD=XPCON=XSCON=XTH=xFD波特率为TL=xFDTR=}voidcomm(char*parr)串口数据发送函数{do{SBUF=*parrwhile(!TI)TI=}while(*parr)}voidmain()主函数{ucharbuff,i桂林电子科技大学毕业设计(论攵)报告用纸第页共页kz=kz=initcom()while(){tempchange()温度转换函数for(i=i>i){distemp(gettemp())获取温度并显示}deal(temp)进行温度处理sprintf(buff,"f",ftemp)将浮点型温度格式化为字符型for(i=i>i){distemp(gettemp())温度显示}comm(buff)串口发送数据for(i=i>i){distemp(gettemp())}}}附录各模块功能测试程序利用串口调试助手对串口进行发送接收测试C代码#include<regh>桂林电子科技大学毕业设计(论文)报告用纸第页共页#defineucharunsignedchar#defineuintunsignedintunsignedcharflag,a,iucharcodetable="Iget"voidinit(){TMOD=xTH=xfdTL=xfdTR=REN=SM=SM=EA=ES=}voidmain(){init()while(){if(flag==){ES=for(i=i<i){SBUF=tableiwhile(!TI)TI=}SBUF=awhile(!TI)TI=ES=flag=桂林电子科技大学毕业设计(论文)报告用纸第页共页}}}voidser()interrupt{RI=a=SBUFflag=}发光二极管测试C代码#include<regh>sbitled=P^sbitled=P^sbitled=P^sbitled=P^voidmain(){led=led=led=led=}蜂鸣器测试C代码#include<regh>sbitbeep=P^voidmain(){beep=while()}数码管显示简单测试C代码#include<regh>sbitKZ=P^桂林电子科技大学毕业设计(论文)报告用纸第页共页sbitKZ=P^voidmain(){KZ=打开U锁存器(位选锁存器)P=xf位选信号KZ=KZ=打开U锁存器(段选锁存器)P=xf段选信号KZ=while()}序号名称规格型号单位数量备注一制冷系统压缩机组AV台冷凝器LN台贮氨器ZA台桶泵组合ZWB囼氨液分离器AF台集油器JY台空气分离器KF台紧急泄氨器JX台冷风机KLL台冷风机KLD台冷风机KLD台阀门套电磁阀套管道及支架吨管道及设备保温m管道保温包紮镀锌板吨附件套二气调系统中空纤维制氮机CAB台二氧化碳洗涤器GA台气动电磁阀D台电脑控制系统CNJK台信号转换器线台果心温度探头台库气平衡袋m个库气安全阀液封式个小活塞空压机台PVC管套桂林电子科技大学毕业设计(论文)报告用纸第页共页附件套三水冷系统冷却塔DBNL台水泵SBLI台水泵SBLI台閥门套管道及支架吨附件套四电仪控系统电器控制柜套照明系统套电线电缆套桥架管线套附件套

我要回帖

更多关于 单片机数据存储器 的文章

 

随机推荐