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

上传资料

关闭

关闭

关闭

封号提示

内容

首页 基于PROTUES的多点测温设计

基于PROTUES的多点测温设计.doc

基于PROTUES的多点测温设计

谁_给我温暖
2017-09-25 0人阅读 举报 0 0 暂无简介

简介:本文档为《基于PROTUES的多点测温设计doc》,可适用于综合领域

基于PROTUES的多点测温设计摘要环境温度对工业、农业、商业和人们的日常生活都有很大的影响而温度的测量也就成为人们生产生活中一项必不可少的工作。传统的测温仪测量费时准确度也较低数字温度计与传统的温度计相比具有读数方便测温范围广测温准确其输出温度采用数字显示。本文介绍了PROTEUS软件进行单片机系统开发的过程并在PROTEUS环境下完成了基于DSB的多路温度采集系统的仿真设计。该系统可以完成温度的测量和显示以及限报警等功能。本研究证明在PROTEUS环境下可以完成单片机系统的硬件设计和软件调试测试系统的性能在实际应用中可以降低设计成本,缩短开发周期提高效率。关键词:单片机DSBPROTEUS多点数字温度计AbstractTheambienttemperaturehasagreatimpactonindustry,agriculture,businessandpeople'sdailylives,andtemperaturemeasurementhasbecomeanessentialworkforpeopletoproducelifeTraditionalthermometermeasuringtimeconsumingaccuracyisalsolowdigitalthermometercomparedwiththetraditionalthermometerwitheasyreadingtemperaturewiderange,accuratetemperaturemeasurement,theoutputtemperaturedigitaldisplayThedevelopmentofMCUsystemincludeshardwaredesignsandsoftwaredesignsThetraditionalmethodisdirectlyusesimulatorstotestonhardwareHardwarecircuitsneedtobechangedandretestedwhenhardwarecircuitsdonotmeettherequirementsofthedesignByusingPROTEUS,thesimulationanddesignofMCUsystemscanberealized,bywhichthedesigncostscanbemuchmoredecreased,developmentcyclescouldbeshortedtoo,andefficiencyisenhancedUnderthePROTUERcircumstances,thispapersuccessfulfinishedthesimulationanddesignofchanneltemperatureacquisitionsystembasedonPROTUES,whichtestedtheadvantagesofthedevelopmentofMCUsystembasedonPROTUESKeywords:MCUDSBPROTEUSMultipointdigitalthermometer目录第章概述选题背景课题相关技术的发展课题研究的必要性课题研究的内容编译开发软件PROTEUS仿真软件第章系统总体方案设计引言系统概述硬件电路介绍单片机复位电路时钟振荡电路显示电路数字温度传感器DS第章系统软件设计温度检测程序LCD显示模块程序报警模块程序第章系统调试与仿真程序编译Proteus原理图绘制仿真结果总结结论参考文献致谢附录第章概述单片机是一种集成电路芯片现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。现代工业设计快速发展对产品的设计研发需求越来越大质量要求越来越高。电子设计自动化(electronicdesignautomatic,EDA)技术则解决了上述的问题。本设计采用的Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。它具有仿真与分析功能可将产品开发中存在的问题消灭在萌芽中从而减少开发风险软硬件的交互仿真与测试大大减少后期测试工作量便利项目管理与团队开发等优点。温度是一个和人们生活环境有着密切关系的物理量也是一种在生产、科研、生活中需要测量和控制的重要物理量。随着现代计算机和自动化技术的发展作为各种信息的感知、采集、转换、传输相处理的功能器件温度传感器的作用日益突出尤其是多点测温已经成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具其应用已遍及工农业生产和日常生活的各个领域。本设计就是为了满足人们在生活生产中对多点温度测量系统方面的需求。选题背景本文将从PROTEUS软件与多点测温系统的设计出发通过对该技术发展状况的了解以及课题本身的需要指出研究基于PROTEUS软件的多点测温系统的设计与实现的必要性。课题相关技术的发展当今电子产品正向功能多元化体积最小化功耗最低化的方向发展单片机的大量应用使产品的性能提高体积缩小功耗降低。同时广泛运用现代计算机技术提高产品的自动化程度和竞争力缩短研发周期。EDA技术正是为了适应现代电子技术的要求吸收众多学科最新科技成果而形成的一门新技术。英国Labcenter公司开发的电路分析与仿真软件Proteus自年问世至今经历了近年的发展历史功能得到了不断的完善性能越来越好全球的用户也越来越多。PROTEUS之所以在全球得到应用原因是它具有自身的特点和结构。PROTEUS电子设计软件由原理图输入模块(简称ISIS)、混合模型仿真器、动态器件库、高级图形分析模块、处理器仿真模型及PCB板设计编辑(简称ARES)六部分组成具有系统的测试简便、交互仿真、硬件设计的改动容易等优点。本设计利用PROTEUS软件进行硬件仿真并在电脑上直接得到仿真结果结果。许多人在学习单片机时是直接利用硬件进行学习耗时费力且花费昂贵往往一个步进电机或者一个传感器就价格不菲还有损坏的风险。而利用PROTEUS就能避免这些问题。它具有易学方便新颖有趣直观设计与实验项目成功率高理论与实践结合紧密不受硬件限制等特点并且它还具有开放的界面丰富的元件库等优良性能应用非常方便。因此本设计的实验结果采用PROTEUS实现。课题研究的必要性本文主要是对多点测温系统进行设计和研究主要利用单片机、DSB温度传感器进行对四个点的温度测量利用LCD液晶显示屏直观的显示出来具有上下限的温度报警功能。并利用Keil软件对单片机程序进行编译并在PROTEUS软件里进行仿真分析多点测温系统的优势。课题研究的内容本设计主要研究基于PROTEUS仿真模拟的多点测温系统要求对个温度不同的点进行测量并用LCD液晶在显示屏同时显示出来四个测温点可以设定温度报警的最高值和最低值当任意一检测点的温度超过限额的温度就会进行报警。编译开发软件KeilC是美国KeilSoftware公司出品的系列兼容单片机C语言软件开发系统与汇编相比C语言在功能上、结构性、可读性、可维护性上有明显的优势因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案通过一个集成开发环境(uVision)将这些部分组合在一起。KeilC软件提供丰富的库函数和功能强大的集成开发调试工具全Windows界面。另外重要的一点只要看一下编译后生成的汇编代码就能体会到KeilC生成的目标代码效率非常之高多数语句生成的汇编代码很紧凑容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC开发系统各部分功能和使用。C工具包的整体结构uVision与Ishell分别是CforWindows和forDos的集成开发环境(IDE)可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C及C编译器编译生成目标文件(OBJ)。目标文件可由LIB创建生成库文件也可以与库文件一起经L连接定位生成绝对目标文件(ABS)。ABS文件由OH转换成标准的Hex文件以供调试器dScope或tScope使用进行源代码级调试也可由仿真器使用直接对目标板进行调试也可以直接写入程序存贮器如EPROM中。Keil的优点在于KeilC生成的目标代码效率非常之高多数语句生成的汇编代码很紧凑容易理解。在开发大型软件时更能体现高级语言的优势。并且与汇编相比C语言在功能上、结构性、可读性、可维护性上有明显的优势因而易学易用。用过汇编语言后再使用C来开发体会更加深刻。KeilC软件提供丰富的库函数和功能强大的集成开发调试工具全Windows界面。PROTEUS仿真软件本次设计使用的是Proteus仿真软件。Proteus是英国Labcenter公司开发的电路分析与仿真软件用于仿真、分析各种模拟器件和集成电路该软件的特点是:、实现了单片机仿真和Spice电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS动态仿真、IC调试器、SPI调试器、键盘和LCD系统仿真的功能有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。、支持主流单片机系统的仿真。目前支持的单片机类型有:系列、系列、AVR系列、PIC系列、PIC系列、PIC系列、Z系列、HC系列以及各种外围芯片。、提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能同时支持第三方的软件编译和调试环境,如Keil等软件。、具有强大的原理图绘制功能。启动Proteus后将出现ISIS的设计窗口。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮(最下面一行)、预览窗口、对象选择器窗口、图形编辑窗口。Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。同时,当硬件调试成功后,利用ProteusARES软件,很容易获得其PCB图,为今后的制造提供了方便。第章系统总体方案设计引言随着计算科学的迅速发展设计一个数字温度计的方法也变的多种多样。可以用ARM有的基于数字电路有的则是利用CPLD设计温度计像这样的设计很多而本设计所选择的方案是利用单片ATC来设计一个简单的多点数字温度计。系统概述此设计介绍的数字温度计与传统的温度计相比具有读数方便测温范围广测温准确的优点。控制器使用的是单片机ATC测温传感器使用的是DSBLCD液晶显示屏实现温度显示。系统构成如图:单时钟电路LCD显示片复位电路温度检测电路机图系统框图硬件电路介绍单片机单片机采用美国ATMEL公司生产的ATC单片机。ATC是一种低功耗、高性能CMOS位微控制器具有K在系统可编程Flash存储器。ATC使用Atmel公司高密度非易失性存储器技术制造与工业C产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程亦适于常规编程器。在单芯片上ATC拥有灵巧的位CPU和在系统可编程Flash使得ATC为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。ATC主要功能参数:、兼容MCS指令系统、k可反复擦写(大于次)FlashROM、个双向IO口、xbit内部RAM、个位可编程定时计数器中断、时钟频率MHz、个串行中断可编程UART串行通道、个外部中断源共个中断源、个读写中断口线级加密位、低功耗空闲和掉电模式软件设置睡眠和唤醒功能、有PDIP、PQFP、TQFP及PLCC等几种封装形式以适应不同产品的需求。ATC的引脚图如图所示:图ATC引脚示意图复位电路复位电路采用RC充电电路组成上电复位单片机电路当系统上电时在上电初期电容C充电使复位脚持续高电平当C充电到达一定程度复位脚电位会慢慢变低最后被电阻R完全拉低高电平复位的时间由充电的时间决定充电时间又由R与C的阻值和容值之积决定。在复位输入端出现高电平的时候实现单片机复位和初始化。在振荡器运行的情况下要实现复位操作必须使复位脚至少保持两个机器周期(个振荡周期)的高电平。CPU在第二个机器周期内执行内部复位操作以后每个机器周期重复一次直到复位端电平变低。复位期间不产生ALE和PSEN信号。内部复位操作使得堆栈指示器SP为H各端口都为(PP口全部都是FFH)。特殊功能寄存器都复位为但不影响内部RAM的状态当RST脚返回低电平以后CPU从地址开始执行程序。加电瞬间复位端的电位与VCC相同随着RC电路充电电流减小复位端的电位逐渐下降。只要复位端保持豪秒以上的高电平就能使ATC单片机有效的复位。复位电路中的RC参数通常都由实验调整当振荡频率选用M的时候C选用u电容R选用k便能可靠地实现加电自动复位。若采用RC电路接斯密特电路的输入端斯密特电路输出端接ATC单片机和外围电路的复位端能使系统可靠的同步复位。图复位电路时钟振荡电路ATC内部有一个用于构成震荡器的高增益反向放大器此放大器的输入端和输出端分别是XTAL和XTAL在XTAL和XTAL上外接晶振可构成时钟电路。时钟电路在单片机系统中起着非常重要的作用是保证系统正常工作的基础。晶振频率的大小决定了单片机系统工作的快慢。本次设计采用内部方式的外部时钟接法。为达到振荡周期是MHZ的要求这里要采用MHZ的晶振电容C、C对频率有微调作用故外接晶振时C和C在本设计中选择pF振荡频率取MHz。晶振的两个引脚分别连到XTAL和XTAL振荡脉冲输入引脚。具体连接图如图所示:图时钟振荡电路显示电路显示屏是最常用的输出设备。特别是发光二极管显示器(LED)和液晶显示器(LCD)由于结构简单价格便宜接口容易等特点得到广泛的应用。尤其是单片机系统中大量使用。本设计选用的LCD液晶显示屏LCD微功耗、体积小、显示内容丰富、超薄轻巧常用在袖珍式仪表和低功耗应用系统中。液晶也叫字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个X或者X等点阵字符位组成每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用正因为如此所以他不能显示图形。LCD是指显示的内容为X,即可以显示两行每行个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD液晶芯片的控制原理是完全相同的因此基于HD写的控制程序可以很方便地应用于市面上大部分的字符型液晶。LCD特性:、V电压对比度可调、内含复位电路、提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能、有字节显示数据存储器DDRAM、内建有个X点阵的字型的字符发生器CGROM、个可由用户自定义的X的字符发生器CGRAM图LED数字温度传感器DSDS是DALLAS公司生产的一种功能较强的数字式温度传感器和恒温控制器。与同系列的DS相比控制更为简单接口与IC总线兼容且可以使用一片控制器控制多达片的DS。其数字温度输出达位精度为。通过读取内部的计数值和用于温度补偿的每摄氏度计数值利用公式计算还可提高温度值的精度。DS可工作在最低V电压下适用于低功耗应用系统。利用DS和一片单片机即可构成一个简洁但功能强大的低电压温度测量控制系统。DS基本特性:DS无需外围元件即可测量温度将结果以位数字量(两字节传输)给出测量范围为,,精度为典型转换时间为s用户可自行设置恒温计的温度值且将该设置值存储在非易失存储器中。数据的读出和写入通过一个,线串行接口完成DS采用脚DIP或SOIC封装。DS的引脚描述如下所示:引脚符号描述SDA线串行数据输入输出端SCL线串行时钟端恒温计输出端。当温度超过TH时置位当温度降到TLTout之下是复位GND接地端A片选地址输入AA片选地址输入AA片选地址输入AVdd电源端DS的工作方式:DS既可独立工作(此时作为恒温控制器)也可通过,线接口在MPU的控制下完成温度的测量和计算。DS的工作方式是由片上的设置状态寄存器来决定的该寄存器的定义如下:其中DONE为转换完成位温度转换结束时置正在进行转换时为THF为高温标志位当温度超过TH预置值时置TLF为低温标志位当温度低于TL预置值时置NVB为非易失存储器忙位向片内EPROM写入时置写入结束后复位写入EPROM通常需要msPCL为输出极性位为时激活状态为逻辑高电平为时激活状态为逻辑低电平该位是非易失的SHOT为一次模式位该位为时每次收到开始转换命令执行一次温度转换为时执行连续温度转换该位亦是非易失的。DS在嵌入一个系统前需由MPU将设置状态寄存器值通过,线接口写入该寄存器之后DS或作为恒温计独立工作或在MPU控制下进行温度测量和计算。MPU对DS的控制和写入是通过,线接口进行数据传输的MPU对DS发命令字之后完成对DS的读或写。由于数据传输协议满足IC总线规范MPU可将DS作为具有IC总线接口的从器件对待器件地址为AAARW通过AAA编码一次可控制最多片DS完成点温度采样。写入和读出数据格式和时序完成按串行通讯接口规范SCL和SDA线满足串口通讯启动条件MPU发出器件地址字节其中RW决定读写方向。MPU发出DS的命令字DS发出ACK信号之后为从器件的数据字节主器件的ACK信号„„最后为串口通讯结束条件完成一次数据通讯。DS的命令集包含DONE、THF、TLF、NVB、、、PCL、SHOT个命令字:读温度命令AAh该命令读出最近一次温度转换的结果。DS将送出两字节数据:第一字节为位二进制温度值(摄氏温度)该数据以二进制补码形式给出其中最高位为温为低于)第二字节最高位为精度位(为为度符号位(为高于)其余位不用。读写TH寄存器命令Ah若RW为该命令写入高温寄存器TH之后MPU发出两字节温度上限值以确定DS的恒温上限若RW为DS送出两字节的TH寄存器值。读写TL寄存器命令Ah若RW为该命令写入低温寄存器TL之后MPU发出两字节温度下限值以确定DS的恒温下限若RW为DS送出两字节的TL寄存器值。读写设置命令ACh若RW为该命令写入设置状态寄存器之后MPU发出一字节设置状态寄存器值以确定DS的工作方式若RW为DS送出设置状态寄存器值。读计数器命令Ah该命令只在RW为时有效发出命令后DS送出计数器计数值COUNTREMAIN。读斜率命令Ah该命令只在RW为时有效发出命令后DS送出用于温度补偿的斜率计数器值即前面提到的每摄氏度计数值COUNTRER桟。开始温度转换命令EEh该命令启动温度转换无需更多数据。在一次工作方式下该命令启动转换DS完成之后保持空闲在连续工作方式下该命令启动DS连续进行温度转换。结束温度转换命令h该命令结束温度转换无需更多数据。在连续工作方式下该命令停止DS的温度转换之后DS保持空闲直到MPU发出新的开始温度转换命令来继续温度转换。通过该命令集可以看出DS既可以作为独立的恒温控制器单独工作(利用命令Ah、Ah、ACh)也可以进行实时的温度测量(利用命令AAh、ACh、EEh、h精度为)还可配合命令Ah、Ah通过软件计算得到更高的温度精度计算公式为:T=TR,(N,M)N式中T为读出温度值N为计数器计数值COUNTRERCM为每摄氏度计数值COUNTREMAIN。第章系统软件设计多点测温系统采用四个点进行温度检测并采用并行连接BSB的方式进行设计。这种并行操作的最大好处就是节省时间其查询多个DSB器件操作所消耗的时间与查询单个DSB器件操作所消耗的时间是一样的从而达到了快速多点测温的目的能够满足对实时性要求较高的温度测量系统的设计需求。同时由于这种操作方法并不涉及DSB的序列号问题因而省掉了烦琐的读取与匹配序列号的操作过程程序的设计、编写、调试也变得较为简单些有利于缩短产品的研制开发周期使得利用DSB进行多点测温的操作变得更方便、容易。系统程序主要包括温度检测模块温度报警模块显示数据模块等。温度检测程序主要功能是负责温度的实时显示读出并处理当前DS的温度voiddsrst()*ds复位*{ucharx=DQ=DQ复位delayB()延时DQ=DQ拉低delayB()精确延时大于usDQ=拉高delayB()}uchardsrd()*读数据*{uchari=uchardat=for(i=i>i){DQ=给脉冲信号dat>>=DQ=给脉冲信号if(DQ)dat|=xdelayB()}return(dat)}voiddswr(ucharwdata)*写数据*{uchari=for(i=i>i){DQ=DQ=wdataxdelayB()DQ=wdata>>=}}readtemp()*读取温度值并转换*{uchara,bdsrst()dswr(xcc)*跳过读序列号*dswr(x)*启动温度转换*dsrst()dswr(xcc)*跳过读序列号*dswr(xbe)*读取温度*a=dsrd()b=dsrd()tvalue=btvalue<<=tvalue=tvalue|aif(tvalue<xfff)tflag=else{tvalue=~tvaluetflag=}tvalue=tvalue*()温度值扩大倍精确到位小数return(tvalue)}LCD显示模块程序LCD显示模块程序主要对温度传感器对温度进行转换后在LCD液晶屏上显示:voiddsdisp()温度值显示{ucharflagdatdisdata=tvaluex百位数disdata=tvaluex十位数disdata=tvaluex个位数disdata=tvaluex小数位if(tflag==){flagdat=x正温度不显示符号,温度检测只对正温度有效以防出错if(tvalue>TH){speak=}elseif(tvalue<TL){speak=}else{speak=}}elseflagdat=xd负温度显示负号:if(disdata==x){disdata=x如果百位为不显示if(disdata==x){disdata=x如果百位为十位为也不显示}}writecom(x)writedate('')显示通道writecom(x)writedate(flagdat)显示符号位writecom(x)writedate(disdata)显示百位writecom(x)writedate(disdata)显示十位writecom(x)writedate(disdata)显示个位writecom(x)writedate(xe)显示小数点writecom(x)writedate(disdata)显示小数位writecom(x)writedate('C')}报警模块程序报警模块程序是对检测温度进行判断如果超出设定范围就会触发报警:if(tvalue>TH){speak=}elseif(tvalue<TL){speak=}else{speak=}初始的温度设定是以上、会进行报警可以通过修改程序:uchartflag,TH=,TL=来自行设置需要的温度。第章系统调试与仿真程序编译启动keil建立一个新的工程并选择路径保存之后选择单片机型号为Atmel的ATC。工程建立完之后新建一个文件dsc保存并添加到工程下同时添加显示屏程序h。以上完成之后再dsc中输入源程序并调试程序。调试完成之后点击project菜单下的OptionsForTarget‘Target’„“单击“Output”中选择“CreateHEXFile”选项是程序编译后产生HEX代码。Proteus原理图绘制、双击ISIS图标打开ISISProfessional,进入ISISProfessional界面如图所示。ProteusISIS的工作界面是一种标准的Windows界面包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图ISISProfessional界面、选择文件新建设计命令选择DEFAULT模板点击确认按钮。图新建设计对话框、选择库拾取元件符号命令在关键字中填写要选择的元器件然后在右边对话框中选中要选的元器件则元器件列在对象选择的窗口。图元件库选择、在对象选择的窗口点ATC然后把鼠标指针移到右边的原理图编辑区的适当位置点击鼠标的左键就把ATC放到了原理图区。用同样的方法将对象窗口的其它元件放到原理图编辑区单片机(ATC)、按键(BUTTON)、电容(CAP)、电阻(RES、RESPACK)、显示屏(LCD)、温度传感器(DSB)、晶振(CRYSTAL)等。所有元器件添加完成之后在PROTEUS编辑区中摆放各元器件并调整方向以及参数设置最后进行连线。完成后如下图所示:图多点测温系统电路图、选择源代码添加移除源代码命令将编译程序导入。图添加程序仿真结果图仿真结果图DSB温度设定值总结由仿真结果可以看出四路多点测温系统运行正常可以进行正确的温度检测调节DSB的温度超过限定额度可以及时发出警报。结论设计利用PROTEUS软件对多点测温系统进行仿真和实现并根据仿真结果分析设计的存在的问题和缺陷从而进行电路和程序的调试和完善。设计重在于电路的设计和各个模块代码的编写电路的设计和各个模块的程序的编写功能全部正常具体果为:、实现了四路并行多点测温温度测量准确、可实现对温度限值的设定通过对程序的改写可以设置上下限值、超过限额的温度会进行报警。经测试最终结果与预期效果基本一致调整DSB的温度显示温度也会准确的测量超过限额的温度可以进行及时的报警。参考文献杨文龙(单片机原理及应用系统设计M(清华大学出版社(张文涛(PROTEUS仿真软件应用M(华中科技大学出版社(周润景、袁伟亭、景晓松《PROTEUS在MCSARM系统中的应用百例》M北京:电子工业出版社:,李华MCU系列单片机实用接口技术M北京:北京航空航天大学出版社宋起超赵洪涛基于DSlB的多点温度巡回检测系统研制J交通科技与经济,刘雪松程显侠新型温度传感器DSB高精度测温的实现J微处理机()单片机与数字温度传感器DSB的接口设计J计算机测量与控马云峰制,()郭天祥新概念单片机C语言教程入门、提高、开发、拓展全攻略电子工业出版社M林立、张俊亮、曹旭东单片机原理及应用(基于Proteus和KeilC)M北京:电子工业出版社魏伟、胡玮、王永清单片机C语言开发与应用技术案例详解M北京:化学工业出版社(沈长生(常用电子元器件使用一读通M(北京:人民邮电出版社(童诗白、华成英(模拟电子技术基础M(北京:高等教育出版社(OnLineMeasureSystemoftheTemperatureintheSyntheticAmmoniaTowerBasedontheDSBTemperatureSensorCVolumeA:FenPingZhou,HongTaoMa,BingDongSuietalTemperatureDetectingSystemofBeerFermentationBasedonDSBCProgressinMeasurementandTestingp:致谢本文是在付天舒老师的悉心指导下完成的。整个毕业设计过程中我要特别感谢周老师她严谨的治学态度和丰富的知识给了我很多的启示。感谢周老师长期以来在学业上给予我的指导和帮助。在学习上老师给我树立了一个很好的榜样在做毕业设计的四个月的时间里每次向老师询问问题老师总是给我们以最细心的指导和帮助。在此感谢电子科学学院的所有老师四年来无私的教诲并对所有帮助过我的老师和同学们致以由衷的感谢~附录程序:#include<regh>#include<intrinsh>#defineucharunsignedchar#defineuintunsignedint#defineLCDIOPucharReadValue,num,timeuinttvalue温度值uchartflag,TH=,TL=温度符号位上下限值uchardatadisdatasbitDQ=P^dsb与单片机连接口sbitDQ=P^dsb与单片机连接口sbitDQ=P^dsb与单片机连接口sbitDQ=P^dsb与单片机连接口sbitrs=P^sbitrd=P^sbitlcden=P^sbitacc=ACC^移位时的第位sbitacc=ACC^移位时用的第位sbitspeak=P^报警输出voiddelay(uintz){uintx,yfor(x=zx>x)for(y=y>y)}*voiddelay(uintz){for(z>z)}*voidwritecom(ucharcom){rs=rd=lcden=P=comdelay()lcden=delay()lcden=}voidwritedate(uchardate){rs=rd=lcden=P=datedelay()lcden=delay()lcden=}voidinit(){ucharnumlcden=writecom(x)writecom(xc)writecom(x)writecom(x)writecom(x)delay()writecom(x)}voiddelayB(uinti)延时微秒{while(i)}**************************************第一路*******************************************voiddsrst()*ds复位*{ucharx=DQ=DQ复位delayB()延时DQ=DQ拉低delayB()精确延时大于usDQ=拉高delayB()}uchardsrd()*读数据*{uchari=uchardat=for(i=i>i){DQ=给脉冲信号dat>>=DQ=给脉冲信号if(DQ)dat|=xdelayB()}return(dat)}voiddswr(ucharwdata)*写数据*{uchari=for(i=i>i){DQ=DQ=wdataxdelayB()DQ=wdata>>=}}readtemp()*读取温度值并转换*{uchara,bdsrst()dswr(xcc)*跳过读序列号*dswr(x)*启动温度转换*dsrst()dswr(xcc)*跳过读序列号*dswr(xbe)*读取温度*a=dsrd()b=dsrd()tvalue=btvalue<<=tvalue=tvalue|aif(tvalue<xfff)tflag=else{tvalue=~tvaluetflag=}tvalue=tvalue*()温度值扩大倍精确到位小数return(tvalue)}voiddsdisp()温度值显示{ucharflagdatdisdata=tvaluex百位数disdata=tvaluex十位数disdata=tvaluex个位数disdata=tvaluex小数位if(tflag==){flagdat=x正温度不显示符号,温度检测只对正温度有效以防出错if(tvalue>TH){speak=}elseif(tvalue<TL){speak=}else{speak=}}elseflagdat=xd负温度显示负号:if(disdata==x){disdata=x如果百位为不显示if(disdata==x){disdata=x如果百位为十位为也不显示}}writecom(x)writedate('')显示通道writecom(x)writedate(flagdat)显示符号位writecom(x)writedate(disdata)显示百位writecom(x)writedate(disdata)显示十位writecom(x)writedate(disdata)显示个位writecom(x)writedate(xe)显示小数点writecom(x)writedate(disdata)显示小数位writecom(x)writedate('C')}**************************************第二路*******************************************voiddsrst()*ds复位*{ucharx=DQ=DQ复位delayB()延时DQ=DQ拉低delayB()精确延时大于usDQ=拉高delayB()}uchardsrd()*读数据*{uchari=uchardat=for(i=i>i){DQ=给脉冲信号dat>>=DQ=给脉冲信号if(DQ)dat|=xdelayB()}return(dat)}voiddswr(ucharwdata)*写数据*{uchari=for(i=i>i){DQ=DQ=wdataxdelayB()DQ=wdata>>=}}readtemp()*读取温度值并转换*{uchara,bdsrst()dswr(xcc)*跳过读序列号*dswr(x)*启动温度转换*dsrst()dswr(xcc)*跳过读序列号*dswr(xbe)*读取温度*a=dsrd()b=dsrd()tvalue=btvalue<<=tvalue=tvalue|aif(tvalue<xfff)tflag=else{tvalue=~tvaluetflag=}tvalue=tvalue*()温度值扩大倍精确到位小数return(tvalue)}voiddsdisp()温度值显示{ucharflagdatdisdata=tvaluex百位数disdata=tvaluex十位数disdata=tvaluex个位数disdata=tvaluex小数位if(tflag==){flagdat=x正温度不显示符号,温度检测只对正温度有效以防出错if(tvalue>TH){speak=}elseif(tvalue<TL){speak=}else{speak=}}elseflagdat=xd负温度显示负号:if(disdata==x){disdata=x如果百位为不显示if(disdata==x){disdata=x如果百位为十位为也不显示}}writecom(x)writedate('')显示通道writecom(x)writedate(flagdat)显示符号位writecom(xa)writedate(disdata)显示百位writecom(xb)writedate(disdata)显示十位writecom(xc)writedate(disdata)显示个位writecom(xd)writedate(xe)显示小数点writecom(xe)writedate(disdata)显示小数位writecom(xf)writedate('C')}**************************************第三路*******************************************voiddsrst()*ds复位*{ucharx=DQ=DQ复位delayB()延时DQ=DQ拉低delayB()精确延时大于usDQ=拉高delayB()}uchardsrd()*读数据*{uchari=uchardat=for(i=i>i){DQ=给脉冲信号dat>>=DQ=给脉冲信号if(DQ)dat|=xdelayB()}return(dat)}voiddswr(ucharwdata)*写数据*{uchari=for(i=i>i){DQ=DQ=wdataxdelayB()DQ=wdata>>=}}readtemp()*读取温度值并转换*{uchara,bdsrst()dswr(xcc)*跳过读序列号*dswr(x)*启动温度转换*dsrst()dswr(xcc)*跳过读序列号*dswr(xbe)*读取温度*a=dsrd()b=dsrd()tvalue=btvalue<<=tvalue=tvalue|aif(tvalue<xfff)tflag=else{tvalue=~tvaluetflag=}tvalue=tvalue*()温度值扩大倍精确到位小数return(tvalue)}voiddsdisp()温度值显示{ucharflagdatdisdata=tvaluex百位数disdata=tvaluex十位数disdata=tvaluex个位数disdata=tvaluex小数位if(tflag==){flagdat=x正温度不显示符号,温度检测只对正温度有效以防出错if(tvalue>TH){speak=}elseif(tvalue<TL){speak=}else{speak=}}elseflagdat=xd负温度显示负号:if(disdata==x){disdata=x如果百位为不显示if(disdata==x){disdata=x如果百位为十位为也不显示}}writecom(xc)writedate('')显示通道writecom(xc)writedate(flagdat)显示符号位writecom(xc)writedate(disdata)显示百位writecom(xc)writedate(disdata)显示十位writecom(xc)writedate(disdata)显示个位writecom(xc)writedate(xe)显示小数点writecom(xc)writedate(disdata)显示小数位writecom(xc)writedate('C')}**************************************第四路*******************************************voiddsrst()*ds复位*{ucharx=DQ=DQ复位delayB()延时DQ=DQ拉低delayB()精确延时大于usDQ=拉高delayB()}uchardsrd()*读数据*{uchari=uchardat=for(i=i>i){DQ=给脉冲信号dat>>=DQ=给脉冲信号if(DQ)dat|=xdelayB()}return(dat)}voiddswr(ucharwdata)*写数据*{uchari=for(i=i>i){DQ=DQ=wdataxdelayB()DQ=wdata>>=}}readtemp()*读取温度值并转换*{uchara,bdsrst()dswr(xcc)*跳过读序列号*dswr(x)*启动温度转换*dsrst()dswr(xcc)*跳过读序列号*dswr(xbe)*读取温度*a=dsrd()b=dsrd()tvalue=btvalue<<=tvalue=tvalue|aif(tvalue<xfff)tflag=else{tvalue=~tvaluetflag=}tvalue=tvalue*()温度值扩大倍精确到位小数return(tvalue)}voiddsdisp()温度值显示{ucharflagdatdisdata=tvaluex百位数disdata=tvaluex十位数disdata=tvaluex个位数disdata=tvaluex小数位if(tflag==){flagdat=x正温度不显示符号,温度检测只对正温度有效以防出错if(tvalue>TH){speak=}elseif(tvalue<TL){speak=}else{speak=}}elseflagdat=xd负温度显示负号:if(disdata==x){disdata=x如果百位为不显示if(disdata==x){disdata=x如果百位为十位为也不显示}}writecom(xc)writedate('')显示通道writecom(xc)writedate(flagdat)显示符号位writecom(xca)writedate(disdata)显示百位writecom(xcb)writedate(disdata)显示十位writecom(xcc)writedate(disdata)显示个位writecom(xcd)writedate(xe)显示小数点writecom(xce)writedate(disdata)显示小数位writecom(xcf)writedate('C')}voidmain(){init()readtemp()读取温度dsdisp()显示readtemp()读取温度dsdisp()显示readtemp()读取温度dsdisp()显示readtemp()读取温度dsdisp()显示while(){readtemp()读取温度dsdisp()显示readtemp()读取温度dsdisp()显示readtemp()读取温度dsdisp()显示readtemp()读取温度dsdisp()显示}}

用户评价(0)

关闭

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

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

提示

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

文档小程序码

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

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/50

基于PROTUES的多点测温设计

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利