版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南工业大学本科生毕业设计(论文)PAGE湖南工业大学本科毕业设计(论文)PAGE0本科毕业设计(论文)资料题目名称:基于DSP的数字温度计的设计学院(部):电气与信息工程学院专业:信息工程学生姓名:班级:学号指导教师姓名:职称教授最终评定成绩:2012届本科毕业设计(论文)资料第一部分毕业论文(2012届)本科毕业设计(论文)学院(部):电气与信息工程学院专业:信息工程学生姓名:邓仕林班级:信工081学号08401400131指导教师姓名:李圣清职称教授最终评定成绩:2012年6月湖南工业大学本科毕业设计(论文)PAGEV摘要温度是过程检测与控制的重要参量,随着人们对温度进行精确测量和控制要求的提高,传统的温度计已经不能满足人们在高精度方面的要求,设计一款能够精确测量温度的数字温度计成为一件刻不容缓的事情。本设计综述了数字温度计的设计与制作原理,详细介绍了数字温度计的背景与意义、任务及要求,主控制芯片TMS320LF2407A及温度传感器DS18B20的工作原理,并绘出了总体设计原理框图。本设计利用DSP作为控制内核,给出了测温电路、电源电路、复位电路、按键电路、液晶显示电路的原理图及相关参数。基于C语言程序,给出了主程序、初始化程序、测温程序及超限报警系统程序的设计。本论文设计的多功能数字温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。与传统的温度计相比,具有读数方便、测温范围广、测温准确及温度液晶显示等优点。关键词:数字温度计,温度传感器DS18B20,DSP,温度测量湖南工业大学本科毕业设计(论文)PAGEABSTRACTTemperaturesareanimportantparametersinprocessmeasurementandcontrol,Alongwithpeopletoaccuratemeasureandcontrolrequirementsofthetemperaturerequirementsimprove,traditionalthermometerscannothavesatisfiedpeopleinthehigh-precisionrequirements,designaprecisedigitalthermometerformeasuringtemperaturebecomesanurgentthing.Thissummaryofthedigitalthermometerprinciplesprincipleinthedesignandfabrication,detailsthebackgroundandsignificance,tasksandrequirementsofthethermometer,maincontrolchipTMS320LF2407AandtemperaturesensorDS18B20principleofwork,andsketchouttheGeneraldesignprincipleblockdiagram.ThedesignusingDSPascontrolkernel,givesthemeasuringcircuit,powersupplycircuits,keypadcircuits,liquidcrystaldisplaycircuitprinciplediagramandtherelatedparametersaboutthetemperature.Themainprogram,initialprogram,temperaturemeasurementproceduresandoverrunalarmsystemprogramdesignarebasedontheClanguageprogram.Thethesisdesignofthermometerisamulti-functionaldigitalthermometer,itcansettheupperandloweralarmtemperature,whenthetemperatureisnotwithinthesetrange,andcancallthepolice.Thethesisdesignofthermometerhavemanyadvantagescomparedwiththetraditionalthermometer,suchaseasyreading,widetemperaturerange,accuratetemperaturemeasurementandtemperatureoutputliquidcrystaldisplayandsoon.Keywords:Digitalthermometers,TemperaturesensorsDS18B20,DSP,Temperaturemeasurement
目录摘要 IABSTRACT IIHYPERLINK目录 III第1章绪论 51.1设计的背景和意义 51.2设计任务及要求 51.3温度测量方案选择 51.4本设计所做的工作 6第2章芯片功能介绍 PAGEREF_Toc325836351\h72.1主控制DSP芯片 72.1.1DSP芯片介绍 72.1.2主控制DSP芯片在本设计中的功能 354\h82.2DS18B20温度传感器简介 82.2.1芯片简介 82.2.2DS18B20外形和内部结构 92.2.3DS18B20的工作时序 11第3章系统硬件电路的设计 133.1电源电路设计 13HYPERLINK3.2接口电路设计 143.3液晶显示模块设计 153.4复位电路的设计 163.5键盘及报警电路设计 173.5.1键盘电路的设计 173.5.2报警电路的设计 183.6主控制电路和测温控制电路的总体设计 19第4章系统软件程序的设计 204.1C语言简介 204.2主程序 PAGEREF_Toc325836370\h204.3DS18B2初始化程序 234.4读取温度程序 234.5温度超限报警程序 36373\h23结论 23参考文献 23致谢 23附录 23湖南工业大学本科毕业设计(论文)PAGE8第1章绪论1.1设计的背景和意义在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的数字温度计大都采用放大、A/D转换,转换后的数字信号送入计算机处理,处理电路复杂,可靠性相对较差,占用计算机的资源较多,而且需要比较多的外部硬件支持,其缺点如下:(1)硬件电路复杂;(2)软件调试复杂;(3)制作成本高。为了提高对数字温度计的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则,很有必要设计本设计的数字温度计。本论文设计的数字温度计使用的是DS18B20的一线制数字温度传感器,它可将温度信号直接转换成串行数字信号送给微处理器,电路简单,成本低,每一只DS18B20内部的ROM存储器都有唯一的64位系列号,在一根地址/信号线上可以挂接多个DS18B20,易于扩展,便于组网和多点测量,更重要的是用户可定义报警设置,设置报警搜索命令,识别并标志超过程序限定温度的报警条件,超过条件立即发出报警信号,有稳定性高等特点,进而使用DSP(DigitalSignalProcessing)芯片开发产品可使精度指标大大提高,在测量以及其他相关领域有着不可忽视的美好前景。1.2设计任务及要求设计一个以DSP为核心的温度测量系统,具体设计要求如下:(1)测量温度值精度为±0.1℃。
(2)系统可由用户预设温度值,测温范围为-55℃~+125℃。
(3)超出预置值时系统会自动报警。(4)系统具有LCD液晶显示功能,能实时显示设定温度值和测得的实际温度值。1.3温度测量方案选择方案一:采用热敏电阻由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用处理器进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦,而且热敏电阻价格高,不线性,需要复杂的恒流源伺服电路,数据处理复杂,热电偶要加上补偿电路且材料价高。方案二:采用温度传感器DS18B20在设计中,大多都是使用传感器,DS18B20只需三根导线和一个电阻,不需要其他任何外围电路即可测得温度数据。DS18B20保证精度足够,电路简单成本低。所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,可以很好的满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
本论文设计的数字温度计采用美国DALLAS半导体公司继DS1820之后推出的一种改进智能温度传感器DS18B20作为检测元件,测温范围为-55℃~+125℃。DS18B20可以直接读出被测量的温度值,而采用3线制与DSP控制器相连,减少了外部的硬件电路,具有低成本和易使用的特点。
按照系统设计功能的要求,确定系统由7个模块组成:主控制器,电源电路,复位电路,温度传感器DS18B20,按键电路,报警电路及驱动显示电路。数字温度计总体电路框图如图1.1所示。电源电路电源电路复位电路温度传感器按键电路报警电路驱动显示电路主控制器DSP图1.1总体电路框图1.4本设计所做的工作第1章介绍主要介绍了数字温度计的设计背景与意义,能够达到的任务及要求,并对设计提出了总体设计的原理框图。第2章对主控制芯片DSP和重要元件温度传感器DS18B20进行详细介绍,给后面的硬件电路设计及软件设计部分做准备。第3章是本设计的重要组成部分,即硬件电路的设计。其中包括稳压电源电路的设计,接口电路的设计,液晶显示模块设计,复位电路设计及按键报警电路的设计,并给出了相关的原理连接图。第4章是本设计的软件部分的设计,主要包括主程序设计,初始化程序设计等相关程序的设计,让数字温度计有一个很好的程序运行环境。第2章芯片功能介绍2.1主控制DSP芯片2.1.1DSP芯片介绍DSP即为数字信号处理器,是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。TMS320LF2407A为美国德州仪器公司专门针对电机、逆变器、机器人、数控机床等控制而设计的一种单片新型高性能16位定点数字信号处理器,集DSP的高速信号处理能力及适用于控制的优化外围电路于一体,在数字控制系统中得以广泛应用。它的适用于数字信号处理运算的特点主要有:
(1)采用增强的哈佛(HARVARD)结构,芯片内部具有六条16位总线,即程序地址总线(PAB)、数据读地址总线(DRAB)、数据写地址总线(DWAB)、程序读总线(PRDB)、数据读总线(DRDB)、数据写总线(DWEB),高度并行运算大大提高运算速度。其程序存储器总线和数据存储器总线相互独立,支持并行的程序和操作数寻址。TMS320LF2407A时钟输入引脚上接20MHz晶振,后经内部锁相环倍频后得40MHz时钟频率,这样指令执行周期可缩为25ns,较C240DSP速度整整提高了1倍,因此CPU的读/写可在同一周期内进行,这种高速运算能力使自适应控制、神经网络、遗传算法、线形变换(快速傅立叶变换、希尔伯特变换、余弦变换等)、数字滤波(有限冲击响应滤波、无限冲击响应滤波、卡尔曼滤波等)、卷积运算等复杂控制算法得以实现。
(2)TMS320LF2407A地址映象被组织为三个可独立选择的空间:程序存储器(64K)、数据存储器(64K)、输入/输出(I/O)空间(64K)。这些空间提供了共192K字的地址范围。其片内存储器资源包括:544字×16位的双端口数据/程序DARAM、2K字×16位的单端口数据/程序SARAM、片内32K×16位的Flash程序存储器、256字×16位片上BootROM、片上Flash/ROM具有可编程加密特性。
(3)具有两个事件管理器模块EVA和EVB,能够实现:三相反相器控制、PWM对称和非对称波形、外部引脚快速封锁PWM通道。可编程的死区控制单元(DBTCON)用来产生可编程的软件死区,使得受每个全比较单元的两路CMP/PWM输出控制的功率器件的间次开启周期间没有重叠,最大可编程的软件死区时间达16μs。
(4)10位16通道的A/D转换器最小转换时间为500ns。
(5)看门狗定时器和实时中断定时器模块。2.1.2主控制DSP芯片在本设计中的功能DSP技术在各领域的应用日益渗透,比如在电力系统自动化中,数字通讯技术领域,工业控制领域,仪器仪表领域等都有较大应用。DSP已经涉足测量仪表和测试仪器行业,而且大有取代高档单片机的趋势。使用DSP开发测量仪表和测试仪器可将产品提升到一个崭新的水平。新款DSP丰富的片内资源可以大大简化仪器仪表的硬件电路,实现仪器仪表的SOC(SystemOnChip,即片上系统)设计。仪器仪表的测量精度和速度是一项重要的指标,使用DSP芯片开发产品可使这两项指标大大提高。以TMS320LF2407A为例,其高效的16位CPU内核、优异的A/D转换器、丰富的片内存储器以及灵活的指令系统为我们开发快速、高精度仪器搭建了广阔的平台。在本设计中,DSP芯片主要应用于仪器仪表方面,一个典型的DSP系统应该包括数据采集A/D转换器、数字信号处理器DSP、D/A转换器和低通滤波器等。DSP系统处理过程:首先将输入信号进行滤波,滤掉高于折叠频率的分量,以防止信号的频谱混叠,然后采样和A/D转换,数字信号处理器的处理得到数字信号,在经过D/A转换,得到模拟信号,经过低通滤波器,得到屁平滑的模拟信号。该设计也是一样,就是实现其这个功能,将采样来的温度数据进行转换分析,然后在用液晶显示出来。2.2DS18B20温度传感器简介2.2.1芯片简介DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。其特点如下:(1)适应电压范围更宽,电压范围:3.0V~5.5V,在寄生电源方式下可由数据线供电。(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现控制器与DS18B20的双向通讯。(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(4)测温范围-55℃~+125℃,在-10℃~+85℃时精度为±0.5℃。(5)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。(6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。(7)测量结果直接输出数字温度信号,以“一线总线”串行传送给处理器,同时可传送CRC校验码,具有极强的抗干扰纠错能力。(8)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。2.2.2DS18B20外形和内部结构DS18B20内部结构如图2.1所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如图2.2所示,引脚定义如表2.3所示。64位ROM和单线接口高速缓存存储器存储器和控制器8位CRC生成器温度传感器低温触发器TL高温触发器TH配置寄存器电源检测图2.1DS18B20的内部结构图2.2DS18B20的外型与管脚排列表2.3DS18B20引脚定义序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。下面就对DS18B20内部结构主要部分进行介绍:(1)64位ROMROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的循环冗余校验码(CRC=X8+X5+X4+1)。ROM的作用是使每一个DS18B20都各不相同,这样可以在一根总线实现上。DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。DS18B20温度值格式如表2.4所示。表2.4DS18B20温表度格式bit7bit6bit5bit4bit3bit2bit1bit0LSByte22222222bit15bit14bit13bit12bit11bit10bit9bit8MSByteSSSSS222这是16位转化后得到的16位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH。(2)高低温报警触发器TH和TLDS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。(3)配置寄存器该字节各位的意义如下表2.5所示。表2.5配置寄存器结构TMR1R0111112.2.3DS18B20的工作时序DS18B20的工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序,分别如图2.6、图2.7、图2.8所示。初始化时序:主机控制DS18B20完成任何操作之前必须先初始化,即主机发一复位脉冲(最短为480us的低电平),接着主机释放总线进入接收状态,DS18B20在检测到I/O引脚上的上升沿之后,等待15-60us然后发出存在脉冲(60-240us的低电平)。DS18B20等待DS18B20Tx产生15us—16us脉冲60--240主机复位脉冲VCC480us<TX<960us主机Rxmin480us1-WireBusGND图2.6初始化时序写时序:将数据从高电平拉至低电平,产生写起始信号。在15us之内将所需写的位送到数据线上,在15us到60us之间对数据线进行采样,如果采样为高电平,就写1,如果为低电平,写0就发生。在开始另一个写周期前必须有1us以上的高电平恢复期。图2.7写时序读时序:主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。主机在读时间片下降沿之后15us内完成读位。每个读周期最短的持续期为60us,各个读周期之间也必须有1us以上的高电平恢复期。图2.8读时序第3章系统硬件电路的设计本设计利用电源电路设计提供+5V稳压电源,温度传感器电路连接DSP芯片的I/O端口进行温度采集,通过液晶显示屏来显示温度,同时4×4矩阵按键电路的设计很方便实现温度的预设值设定,超过预设的温度值时,报警系统的蜂鸣器和发光二极管会起到报警的作用。3.1电源电路设计电源电路负责提供给系统+5V的电压。电源稳压电路如图3.1所示,如图所示电路为输出电压+5V、输出电流1.5A的稳压电源电路。它由电源变压器B,桥式整流电路D1~D4,滤波电容C1、C3,防止自激电容C2、C4和一只固定式三端稳压器(LM7805)极为简捷方便地搭成的。电源电路的稳压原理:220V交流市电通过电源变压器变换成交流低压,再经过桥式整流电路D1~D4和滤波电容C1的整流和滤波,在固定式三端稳压器LM7805的Vin和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过LM7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。本稳压电源可作为TTL电路或DSP电路的电源。三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。图3.1电源稳压电路采用这种电路的+5V电源在输出前经过了电感和电容组合网络滤波,实测纹波小于3mV。3.2接口电路设计DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源,如图3.2所示。另一种是寄生电源供电方式,如图3.3所示。DSP端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换时,总线必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时,VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。图3.2DS18B20与DSP的接口电路图3.3DS18B20与DSP的另一种接口电路3.3液晶显示模块设计本设计中使用的温度显示模块是具有ST7920控制器的液晶模块,可显示汉字及图形。模块供电电源为+3.3V~+5V(内置升压电路,无需负压),DSP完全满足其电压的要求。在液晶模块的各引脚中,VDD,VSS分别为模块供电电源的正、负引脚;V0为模块驱动电压输入引脚。模块有并行和串行两种连接方法,当PSB=0时为串行选择方式,当PSB=1时为并行选择方式,本文采用8位并行连接的方式实现液晶模块与2407A的数据通讯。硬件电路中液晶模块的RS、R/W、E、PSB、REST控制引脚分别与2407A的IOPA3~7引脚相连,液晶模块的数据引脚DB0~7分别与2407A的IOPB0~7引脚相连。液晶显示原理图如图3.4所示。图3.4液晶显示原理图具体液晶显示具体连接图如图3.5所示。图3.5液晶显示连接图3.4复位电路的设计为确保系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。DSP控制系统的复位方式有:手动按钮复位和上电复位。手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。DSP控制器复位电路的设计如图3.6所示。该复位电路采用手动复位与上电复位相结合的方式。当按下按键S1时,VCC通过R1电阻给复位输入端口一个高电平,实现复位功能,即手动复位。上电复位就是VCC通过电阻R2和电容C构成回路,该回路是一个对电容C充电和放电的电路,所以复位端口得到一个周期性变化的电压值,并且有一定时间的电压值高于CPU复位电压,实现上电复位功能。图3.6DSP复位电路3.5键盘及报警电路设计3.5.1键盘电路的设计4×4扫描键盘用8位数据线,可以提供16个不同的按键信号。这样做的好处是:(1)节省FPGA管脚资源;(2)系统简单化减小电路规模;特别是在资源比较紧张,对成本要求严格的系统中这是一种非常流行的设计方法。由于用手把键按下的时间长度等问题,如果不去抖动可以把时钟加快。实际中操作与理论分析是有差别的因为一般的开关在大约20ms内信号不稳定,存在所谓的“开关抖动”,会产生多个脉冲影响电路正常工作。所以含开关输入的设计需要做防抖动处理,在本设计可以用20Hz的时钟采样实现防抖。为实现温度上、下限的设定功能,同时为尽量减少因键盘的输入而引起的抖动,系统设有键盘,并通过扫描的方式进行工作。键盘电路设计图如图3.7所示。图3.7键盘电路设计图3.5.2报警电路的设计为实现当温度超过设定的限定值时声光报警的功能,在2407A芯片外围的设有报警电路。当温度超限时,IOPE0口输出高电平,三极管NPN导通,二极管和蜂鸣器同时工作;当温度正常时,IOPE0口输出低电平,三极管截止,二极管和蜂鸣器不工作。报警系统电路设计图如图3.8所示。图3.8报警系统电路设计图3.6主控制电路和测温控制电路的总体设计主控制电路由TMS320LF2407A及外围元件构成,测温电路由DS18B20、预置数电路和报警电路组成。TMS320LF2407A是此硬件电路设计的核心,通过TMS320LF2407A的管脚与DS18B20相连,控制温度的读出和显示。预置数电路由两个按键和两个数码管组成,两个按键分别与TMS320LF2407A的管脚相连。报警电路很简单,由一个发光二极管和一个报警蜂鸣器组成,与TMS320LF2407A的管脚相连,若实际测量的温度值大于预置温度值,则发光二极管亮,即为报警标志。硬件电路的功能都是与软件编程相结合而实现的。具体硬件原理图如3.9所示。图3.9硬件原理图第4章系统软件程序的设计4.1C语言简介1978年,BrianW.Kernighian和DennisM.Ritchie出版了名著《TheCProgrammingLanguage》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。C语言是目前世界上流行、使用最广泛的高级程序设计语言。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言的特点:1.简洁紧凑、灵活方便,C语言一共只有32个关键字,9种控制语句,程序书写自由。2.运算符丰富,C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。3.数据结构丰富,C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据类型的运算。4.C是结构式语言,结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。5.C语法限制不太严格、程序设计自由度大,一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。6.C语言允许直接访问物理地址,可以直接对硬件进行操作。7.C语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10~20%。8.C语言适用范围大,可移植性好,C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。4.2主程序本设计利用2407A作为控制器,主要对其进行软件编程,解决好温度测量过程中时序控制问题,软件采用C语言进行编译。程序主要包括DS18B20的初始化、温度采集、温度读取等几部分。整个程序采用软件定时的方法,实现每隔30秒循环一次,从而完成对温度每隔30秒行一次采集与显示。主程序流程图如图4.1所示。程序初始化程序初始化数据处理数据显示DS18B20是否正常否是图4.1主程序流程图下面是程序中的一些相关说明:(1)按键功能说明:实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;在调节上下限温度模式下,K2是实现加1功能,K1是实现减1功能,K3是用来设定上下限温度正负的。(2)用到的全局变量:无符号字符型变量temp(测得的温度整数部分),temp_d(测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”、‘1’表示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表示“负温度”),标志位w(报警标志位‘1’启动报警、‘0’关闭报警)。#include<TMS320LF2407A.h>#include<intrins.h>#defineuintunsignedint #defineucharunsignedcharucharmax_int=0x00,max_dot=0x00,min_int=0x00,min_dot=0x00;bits=0,s1=0;#include"ds18b20.h"#include"keyscan.h"#include"display.h"voidmain(){ beer=0; led=1; IT1=1; EX1=0; EA=1; timer1_init(0); get_temperature(1); while(1) { keyscan(); get_temperature(0); keyscan(); display(temp,temp_d*0.625); alarm(); keyscan(); }}#ifndef__ds18b20_h__#define__ds18b20_h__#defineuintunsignedint #defineucharunsignedcharsbitDQ=P2^3;sbitbeer=P3^0; sbitled=P3^1;uchartemp=0; //温度的整数部分uchartemp_d=0; //温度的小数部分ucharn;bitf=0,f_max=0,f_min=0;w=0;/***********************延时子函数************************/voidds18b20_delayus(uintt){while(t--);}voidds18b20_delayms(uintt){ uinti,j; for(i=t;i>0;i--) for(j=120;j>0;j--);}4.3DS18B20初始化程序初始化就是将程序中即将要用的寄存器设置一个初始值。给DS18B20设计一个初始化程序,能够让DSP在断电或者通电时,能够从初设值进行操作,有数据保存功能。voidds18b20_init() //DS18B20初始化{ DQ=1; DQ=0; //控制器向DS18B20发低电平脉冲 ds18b20_delayus(30); //延时480μs DQ=1; //控制器拉高总线 while(DQ); //等待DS18B20拉低总线,在60-240μs之间 ds18b20_delayus(20); //延时,等待上拉电阻拉高总线 DQ=1; //提升数据线,准备数据传输}/***********************DS18B20字节读函数************************/uchards18b20_read() //DS18B20字节读取{ uchari; uchard=0; DQ=1; //准备读 for(i=8;i>0;i--) { d>>=1;//低位先发 DQ=0; _nop_(); _nop_(); _nop_(); DQ=1; //必须写1,否则读出来的将是不预期的数据; if(DQ) //在12us处读取数据; d|=0x80; ds18b20_delayus(10); } returnd; }/************************DS18B20字节写函数***********************/voidds18b20_write(uchard) //ds18b20字节写{uchari;for(i=8;i>0;i--){ DQ=0; _nop_(); _nop_(); _nop_(); DQ=d&0x01; ds18b20_delayus(5); DQ=1; d>>=1;}}4.4读取温度程序温度数据从温度传感器DS18B20采集到,通过DSP的温度读取程序控制,将温度的数值显示在液晶显示屏上。voidget_temperature(bitf) //得到整数的温度值{ uchara=0,b=0,c=0,d=0;uinti; ds18b20_init(); //DS18B20初始化 ds18b20_write(0xcc); //向DS18B20发SKIPROM命令 ds18b20_write(0x44); //启动DS18B20进行温度转换,结果存入内部RAM ds18b20_delayms(1); ds18b20_init(); //DS18B20初始化 ds18b20_write(0xcc); //向DS18B20发SKIPROM命令 ds18b20_write(0xbe); //读内部RAM中9字节的内容命令 a=ds18b20_read(); //读内部RAM(LSB) b=ds18b20_read(); //读内部RAM(MSB) if(f==1) { max_int=ds18b20_read(); //读内部RAM(LSB) min_int=ds18b20_read(); } if((max_int&0x80)==0x80) {f_max=1;max_int=(max_int-0x80);} if((min_int&0x80)==0x80) {f_min=1;min_int=(min_int-0x80);} i=b; i>>=4; if(i==0) {f=0; //i为0,正温度,设立正温度标记temp=((a>>4)|(b<<4)); //整数部分 a=(a&0x0f); temp_d=a; //小数部分 } else { f=1; //i为1,负温度,设立负温度标记 a=~a+1; b=~b; temp=((a>>4)|(b<<4)); //整数部分 a=(a&0x0f); //小数部分 temp_d=a; }}voidstore_t(){ if(f_max==1) max_int=max_int+0x80; if(f_min==1) min_int=min_int+0x80; ds18b20_init(); //DS18B20初始化 ds18b20_write(0xcc); //向DS18B20发SKIPROM命令 ds18b20_write(0x4e); ds18b20_write(max_int); ds18b20_write(min_int); ds18b20_write(0xff); ds18b20_init(); //DS18B20初始化 ds18b20_write(0xcc); //向DS18B20发SKIPROM命令 ds18b20_write(0x48);}4.5温度超限报警程序本设计由用户预设报警温度,通过与DS18B20读取当前温度值的比较,自定义的两个位变量得到对应值,再通过对该值判断,从而控制发光二极管和蜂鸣器的状态。voidalarm(){ if(f_max==0) { if(f_min==0) { if(f==0) {if((temp+temp_d*0.0625)<=min_int||(temp+temp_d*0.0625)>=max_int) {w=1;TR1=1;} if((temp+temp_d*0.0625)<max_int&&(temp+temp_d*0.0625)>min_int) {w=0;} } if(f==1){w=1;TR1=1;} } if(f_min==1) { if(f==0) { if((temp+temp_d*0.0625)>=max_int) {w=1;TR1=1;} if((temp+temp_d*0.0625)<max_int) {w=0;} } if(f==1) { if((temp+temp_d*0.0625)>=min_int) {w=1;TR1=1;} if((temp+temp_d*0.0625)<min_int) {w=0;} } } } if(f_max==1) { if(f_min==1) { if(f==1) { if((temp+temp_d*0.0625)<=max_int||(temp+temp_d*0.0625)>=min_int) {w=1;TR1=1;} if((temp+temp_d*0.0625)<min_int&&(temp+temp_d*0.0625)>max_int) {w=0;} } if(f==0){w=1;TR1=1;} } } }#endif/***********************键盘设定设定上下限报警温度************************/#ifndef__keyscan_H__#define__keyscan_H__sbitkey1=P2^2; sbitkey2=P2^1; sbitkey3=P2^0;sbitkey4=P3^3;uchara=0,i=0;bit k4=0,v=0,v1=0,v2=0;结论本论文设计的数字温度计是一款多功能数字温度计,能测量-55℃~+125℃的温度值,由DSP控制整个系统,包括其中的电源电路、接口电路、复位电路、复位电路、驱动显示电路等主要电路,而且具有用按键设定温度值和超过限定温度报警
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《论文写作》课程课件
- 内蒙古鄂尔多斯西部四旗2025届高三下第一次测试数学试题含解析
- 湖北省沙洋县后港中学2025届高考英语五模试卷含解析
- 浙江省乐清市知临中学2025届高三二诊模拟考试英语试卷含解析
- 吉林省长春二中2025届高考数学四模试卷含解析
- 陕西省西安市长安区2025届高三下学期联合考试数学试题含解析
- 2025届天津五区县高考考前提分语文仿真卷含解析
- 现代学徒制课题:市域产教联合体与行业产教融合共同体内开展现场工程师培养的机制创新研究(研究思路模板、技术路线图)
- 2025届四川省德阳五中高考仿真卷语文试卷含解析
- 安徽省安庆市六校2025届高三第六次模拟考试数学试卷含解析
- 发酵酸菜加工厂建设项目可行性研究报告
- 包豪斯对现代设计的影响
- 基于分形结构的多频与宽带天线技术研究
- 人间生活-中国部分+课件高中美术湘美版(2019)美术鉴赏1
- YY/T 1771-2021弯曲-自由恢复法测试镍钛形状记忆合金相变温度
- LY/T 1755-2008国家湿地公园建设规范
- JJF 1874-2020(自动)核酸提取仪校准规范
- GB/T 7378-2012表面活性剂碱度的测定滴定法
- GB/T 37762-2019同步调相机组保护装置通用技术条件
- GB/T 36961-2018超高强钢热冲压工艺通用技术
- 国开Photoshop图像处理模式试题1及答案
评论
0/150
提交评论