




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/单片机原理与接口技术课程设计题目:数字温度计课程设计报告院系:工学院电气与电子工程系专业:电气工程及其自动化班级:姓名:学号:指导教师:二〇一七年十二月数字温度计课程设计报告摘要在日常生活及工农业生产中经常要检测温度.传统的方式是采用热电偶或热电阻。其硬件电路和软件调试比较复杂.制作成本较高。近年来随着科技的飞速发展.单片机的应用正不断走向深入。所以我们选用单片机作为核心部件进行逻辑控制及信号的产生.用单片机本生的优势节约成本.使电路更简单。温度的检测与控制是工业生产过程中比较典型的应用之一.随着传感器在生产和生活中的更加广泛的应用.利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。在这里介绍了一种基于STC89C51单片机的温度测量及控制系统的硬件结构以及C语言程序设计.该系统设计和布线简单.结构紧凑.体积小.重量轻.抗干扰能力强.性价比高.扩展方便.在大型仓库.工厂.智能化建筑等领域的多点温度检测中有广阔的应用前景。关键词:DS18B20STC89C51温度测量TheDesignReportoftheDigitalThermometerCourseABSTRACTTemperatureisoftendetectedindailylifeandindustrialandagriculturalproduction.Thetraditionalwayistousethermocouplesorthermalresistors.Itshardwarecircuitandsoftwaredebuggingaremorecomplex,andtheproductioncostishigh.Inrecentyears,withtherapiddevelopmentofscienceandtechnology,theapplicationofMCUisgoingdeep.Therefore,wechoosetheMCUasthecorecomponentforlogicalcontrolandsignalproduction,usingtheadvantagesofthesinglechipmicrocomputertosavecostandmakethecircuitmoresimple.Temperaturedetectionandcontrolisoneofthetypicalapplicationsintheindustrialproductionprocess.Withthewiderapplicationofsensorsinproductionandlife,thenewsinglebusdigitaltemperaturesensorisappliedtoachievefasterdevelopmentoftemperaturetestandcontrol.HereintroducesakindofhardwarestructureofthetemperaturemeasurementandcontrolsystemofSTC89C51microcontrollerandClanguageprogramdesignbasedonthesystemdesignandlayoutissimple,compactstructure,smallvolume,lightweight,stronganti-interferenceability,highperformance,easytoexpand,thefactoryinlargewarehouse,andhaswideapplicationprospectinmanythetemperaturedetectioninthefieldofintelligentbuilding.Keywords:DS18B20STC89C51temperaturemeasurement目录第1章绪论-1-第2章设计任务-2-2.1设计目的-2-2.2设计指标-2-2.3设计要求-2-第3章设计思路与总体框图.-3-第4章系统硬件电路的设计-4-4.1主控电路-4-4.2温度显示电路-4-4.3按键电路-5-4.4报警电路-5-第5章系统设计仿真-6-5.1仿真原理图-6-5.2功能元件的分析-6-第6章系统软件设计-12-6.1主程序-12-6.2读出温度子程序-13-6.3温度转换命令子程序-13-6.4计算温度子程序-13-6.51602的液晶显示-14-结论-15-致谢-16-参考文献-18-附录-19-第1章绪论单片机技术作为计算机技术的一个分支.广泛地应用于工业控制.智能仪器仪表.机电一体化产品.家用电器等各个领域。学生在课程设计.毕业设计,科研项目中会广泛应用到单片机知识.而且.进入社会后也会广泛接触到单片机的工程项目。鉴于此.提高"单片机原理及应用"课的教学效果.让学生参与课程设计实习甚为重要。单片机应用技术涉及的内容十分广泛.如何使学生在有限的时间内掌握单片机应用的基本原理及方法.是一个很有价值的教学项目。为此.我们进行了"单片机的学习与应用"方面的电子系统设计.锻炼学生的动脑动手以及协作能力。单片机课程设计是针对模拟电子技术.数字逻辑电路.电路.单片机的原理及应用课程的要求.对我们进行综合性实践训练的实践学习环节.它包括选择课设任务、软件设计.硬件设计.调试和编写课设报告等实践内容。通过此次课程设计实现以下三个目标:第一.让学生初步掌握单片机课程的试验、设计方法.即学生根据设计要求和性能约束.查阅文献资料.收集、分析类似的相关题目.并通过元器件的组装调试等实践环节.使最终硬件电路达到题目要求的性能指标;第二.课程设计为后续的毕业设计打好基础.毕业设计是系统的工程设计实践.而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用.从已学过的定性分析、定量计算的方法.逐步掌握工程设计的步骤和方法.了解科学实验的程序和实施方法。第三.培养学生勤于思考乐于动手的习惯.同时通过设计并制作单片机类产品.使学生能够自己不断地学习接受新知识〔如在本课设题目中存在智能测温器件AD590.就是课堂环节中不曾提及的"新器件".通过多人的合作解决现实中存在的问题.从而不断地增强学生在该方面的自信心及兴趣.也提高了学生的动手能力.对学生以后步入社会参加工作打下一定良好的实践基础第2章设计任务2.1设计目的1.了解数字温度计及工作原理。2.进一步掌握数字温度计设计方法。3.进一步掌握各芯片的逻辑功能及使用方法。4.进一步掌握KEIL和仿真软件的应用。5.进一步熟悉集成电路的引脚安排.。2.2设计指标1.显示温度。2.可以显示大于零度的温度也可以显示小于零度的温度。3.具有显示相应环境温度的功能.并且具有超出设定范围内温度时可以报 警的功能.相应环境可以人为选择。2.3设计要求1.画出总体设计框图.以说明数字温度计由哪些相对独立的功能模块组 成.标出各个模块之间互相联系。并以文字对原理作辅助说明。2.设计各个功能模块的电路图.加上原理说明。3.选择合适的元器件.在面包板上接线验证、调试各个功能模块的电路.在接线验证时设计、选择合适的输入信号和输出方式.在确定电路充分正确性同时.输入信号和输出方式要便于电路的测试和故障排除。4.
在验证各个功能模块基础上.对整个电路的元器件和布线进行合理布局.进行整个数字温度电路的接线调试。第3章设计思路与总体框图.数字温度计由主控制器〔单片机、温度传感器<DS18B20>、显示器<LCD1602>、独立按键和报警电路组成.温度传感器所感应的温度信号经过其数据传输引脚传送给单片机.单片机将所接收到的温度信号经过处理.将其送至显示器LCD1602显示.并且能够通过独立按键设置温度报警值.若温度处于报警上限和下限之外.报警电路工作。图1所示为数字温度计的一般结构框图:报警温度调整键LCD1602显示STC90C51 主控报警温度调整键LCD1602显示STC90C51 主控制器蜂鸣器,指示灯蜂鸣器,指示灯单片机时钟振荡单片机时钟振荡DS18B20传感器DS18B20传感器▲图1数字温度计结构框图第4章系统硬件电路的设计4.1主控电路单片机STC90C51具有低电压供电和体积小等特点.四个端口同时使用以满足电路系统的设计需要.很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用12MHZ▲图2主控电路4.2温度显示电路采用液晶显示屏LCD1602显示.第一行显示"18B20OKTL"和报警下限值,第二行显示实时温度以及报警上限值.并且能够显示负温度值。用P0口进行LCD1602的数据写操作.P2.5~P2.7口进行LCD1602的命令控制端口。电路图如下:▲图4温度显示电路4.3按键电路本系统一共设置了四个按键.k1键设置温度下限加.k2键设置温度下限减k3键设置温度上限加.k4键设置温度上限减。▲图5按键电路4.4报警电路本设计采用蜂鸣器和LED灯组成报警电路.电路图如下:▲图6报警电路第5章系统设计仿真5.1仿真原理图根据数字温度计的一般结构框图.我们通过查阅资料书和上网查询.了解不同元件的功能和实用性.考虑性价比后.制作出的数字温度计的仿真电路原理图.如图7所示。▲图7数字温度计仿真电路原理图5.2功能元件的分析设计原理图中各功能元件的引脚图的分析如下所示:1.DS18B20:DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器.与传统的热敏电阻等测温元件相比.它能直接读出被测温度.并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点如下:〔1独特的单线接口仅需要一个端口引脚进行通信.DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。〔2DS18B20支持多组网功能.多个DS18B20可以并联在惟一的三线上.实现多组网测温;〔3无须外部器件.全部传感元件及转换电路集成在形如一只三极管的集成电路内;〔4可通过数据线供电.电压范围为3.0-5.5V;〔5零待机功耗;〔6温度以9或12位数字.对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃.可实现高精度测温;〔7用户可定义报警设置;〔8报警搜索命令识别并标志超过程序限定温度〔温度报警条件的器件;〔9负电压特性.电源极性接反时.温度计不会因发热而烧毁.但不能正常工作;〔10测量结果直接输出数字温度信号.以"一线总线"串行传送给CPU.同时可传送CRC校验码.具有极强的抗干扰纠错能力DS18B20采用3脚PR35封装或8脚SOIC封装.其引脚排列及内部结构框:▲图8DS18B20引脚排列图▲图9内部结构框图预置预置斜率累加器比较低温度系数振荡器计数器1温度寄存器Tx预置=0高温度系数振荡器-0计数器2T1加1停止T2▲图10DS18B20测温原理图64位ROM的结构开始8位是产品类型的编号.接着是每个器件的惟一的序号.共有48位.最后8位是前面56位的CRC检验码.这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL.可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器.结构如图4所示。头2个字节包含测得的温度信息.第3和第4字节TH和TL的拷贝.是易失的.每次上电复位时被刷新。第5个字节.为配置寄存器.它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图5所示。低5位一直为1.TM是工作模式位.用于设置DS18B20在工作模式还是在测试模式.DS18B20出厂时该位被设置为0.用户不要去改动.R1和R0决定温度转换的精度位数.来设置分辨率。温度LSB温度MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRCTMR1R011111图11DS18B20的字节定义DS18B20的分辨率定义如表1所示表1分辨率设置表R0R1分辨率最大温度转移时间009位96.75ms0110位187.5ms1011位375ms1112位750ms由表1可见.DS18B20温度转换的时间比较长.而且分辨率越高.所需要的温度数据转换时间越长。因此.在实际应用中要将分辨率和转换时间权衡考虑。主机控制DS18B20完成温度转换过程是:每一次读写之前都要对DS18B20进行复位.即将数据总线下拉500us.然后释放.DS18B20收到信号后等待16-60us左右.之后发出60-240us的存在低脉冲.主CPU收到此此信号表示复位成功;复位成功后发送一条ROM指令.然后发送RAM指令.这样才能对DS18B20进行预订的读写操作。表2ROM指令集指令约定代码功能读ROM33H读DS18B20中的编码符合ROM55H发出此命令后.接着发出64位ROM编码.访问单线总线上与该编辑相对应的DS18B20使之做出响应.为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上的DS18B20个数和识别64位ROM地址.为操作各器件作准备跳过ROM0CCH忽略64位ROM地址.直接向DS18B20发送温度变换指令告警搜索命令0ECH执行后.只有温度跳过设定值上限或下限的片子才能做出反应表3RAM指令集指令约定代码功能温度转换44H启动DS18B20进行温度转换读暂存器0BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中重调E2RAM0B8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读供电方式0B4H启动DS18B20发送电源供电方式的信号给主CPUDS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小.用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变.所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门.当计数门打开时.DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定.每次测量前.首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中.计数器1和温度寄存器被预置在最低温所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数.当减法计数器1的预置值减到0时.温度寄存器的值将加1.减法计数器1的预置将重新被装入.减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数.如此循环直到减法计数器计数到0时.停止温度寄存器的累加.此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值.只要计数器门仍未关闭就重复上述过程.直到温度寄存器值大致被测温度值。▲图12测温电路图LCD1602:工业字符型液晶.能够同时显示16x02即32个字符〔16列2行。1602液晶也叫1602字符型液晶.它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成.每个点阵字符位都可以显示一个字符.每位之间有一个点距的间隔.每行之间也有间隔.起到了字符间距和行间距的作用.正因为如此所以它不能很好地显示图形〔用自定义CGRAM.显示效果也不好。1602LCD是指显示的内容为16X2,即可以显示两行.每行16个字符液晶模块〔显示字符和数字。1602芯片的接口信号说明如下表:1602芯片的接口信号说明第6章系统软件设计整个系统是由硬件配合软件来实现的.在硬件确定后.编写的软件的功能也就基本定型了。所以软件的功能大致可分为两个部分:一是监控.这也是系统的核心部分.二是执行部分.完成各个具体的功能。系统程序主要包括主程序.读出温度子程序.温度转换命令子程序.计算温度子程序.显示数据刷新子程序等。6.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值.温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度.其程序流程见图13所示。Y发DS18B20复位命令Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY液晶初始化调用按键函数.液晶显示函数判断温度值与设定报警值大小大于TH或N者小于TLY报警结束▲图13主程序流程图▲图14读温度流程图6.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节.在读出时需进行CRC校验.校验有错时不进行温度数据的改写。其程序流程图如图15示:发DS18B20复位命令发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束▲图15温度转换流程图6.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令.当采用12位分辨率时转换时间约为750ms.在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图.图13所示6.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算.并进行温度值正负的判定.其程序流程图如图16所示。开始温度零下?温度值取补码置"—"标志计算小数位温度计算整数位温度结束置"+"标志NY▲图16计算温度温度流程图6.51602的液晶显示▲图171602液晶显示流程图结论1.根据原理和芯片引脚图.分功能设计原理图.并根据接线顺序分步骤验证。2.容易出现故障为接触不良。a>
集成块引脚方向预先弯好对准面包板的金属孔.再小心插入。b>
导线的剥线长度与面包板的厚度相适应〔比板的厚度稍短。c>导线的裸线部分不要露在板的上面.以防短路。d>
导线要插入金属孔中央。3.注意芯片的控制引脚必须正确接好4.检查故障时除测试输入、输出信号外.要注意电源、接地和控制引脚。5.要注意芯片引脚上的信号与面包板上插座上信号是否一致〔集成块引脚与面板常接触不良。6.接时电路时可接模拟信号输入〔如1Hz和2Hz测试输出信号的切换正确后.再将秒进位和分进位信号接到校时电路.再接校时电路输出到分计数器和时计数器。7.电路接入信号时.必须将原进位信号拔掉。致谢经过将近两周的单片机课程设计.终于完成了我们的数字温度计课程设计.虽然课程设计做的不是特别好.但从心底里说.还是高兴的.因为我们收获了很多很多.这些在平常的学习当中是收获不到的.但高兴之余不得不静下来深思!在这次课程设计的撰写过程中.我得到了许多人的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助.这是我能顺利完成这次报告的主要原因.更重要的是老师帮我解决了许多技术上的难题.让我能把系统做得更加完善。在此期间.我不仅学到了许多新的知识.而且也开阔了视野.提高了自己的设计能力。其次.我要感谢帮助过我的同学.他们也为我解决了不少我不太明白的设计商的难题。同时也感谢学院为我提供良好的做毕业设计的环境。在本次课程设计的过程中.我们发现很多的问题.虽然以前还做过类似的课程设计.但这次设计真的让我学到了很多、长进了很多.单片机课程设计的重点就在于软件算法的设计.需要有很巧妙的程序算法.虽然以前写过一些程序.但觉的要写好一个程序并不是一件简单的事.所以我们只能不断的调试不断的修改才能把程写的更好。所以得出结论是:有好多的东西.只有我们去试着做了.才能真正的掌握.只学习理论有些东西是很难理解的.更谈不上掌握.实践才是硬道理.实践是检验真理的唯一标准。通过这次的课程设计.我们真正的意识到.在以后的学习中.要理论联系实际.把我们所学的理论知识用到实际当中.这样我们才能更好的理解、掌握这些知识.学习单机片机更是如此.程序只有在经常的写与读的过程中才能提高.这就是我在这次课程设计中的最大收获。通过这次对数字温度计的设计与制作.让我们了解了设计电路的程序.也让我们了解了关于数字温度计的原理与设计理念.要设计一个电路总要先用仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样.因为.在实际接线中有着各种各样的条件制约着。并且.在仿真中无法成功的电路接法.在实际中因为芯片本身的特性而能够成功。所以.在设计时应考虑两者的差异.从中找出最适合的设计方法。通过这次学习.让我们对各种电路都有了大概的了解.所以说.坐而言不如立而行.对于这些电路还是应该自己动手实际操作才会有深刻理解。当然在这个过程中我们还会遇到很多其它的问题.这些问题我们也不是那么轻易的就能够解决的.此时我们就会去翻阅相关资料.或者是问同学、问老师.我们的同学和老师那一个个真的事知无不答的.这样我们就能很快的把问题给决绝掉了.那种感觉真的让人很舒畅.这也让我们明白了一件事.在学习中我们缺少不了同学、老师的帮助.他们能够很快的解决一些问题。从这次的课程设计中.我真正的意识到.在以后的学习中.要理论联系实际.把我们所学的理论知识应用到实际当中.学习单机片机更是如此.程序只有在经常的写与读的过程中才能提高.这就是我在这次课程设计中的最大收获。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学参考文献[1]《单片机原理及应用》杨恢先、黄辉光主编[M].XX大学出版社[2]《电子技术基础》〔第五版华中科技大学电子技术课程组编[M].康华光主编.陈大钦、张林副主编.高等教育出版社[3]《单片机课程指导》楼然苗、李光飞编著.北京航空航天大学大学出版社[4]《51单片机C语言教程》郭天祥编著附录#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintuchartemp,num,k1num;ucharcodetable[]={"18B20OKTL"};charshangxiaxian[2]={-10,10};chara;sbitk1=P1^0;sbitk2=P1^1;sbitk3=P1^2;sbitk4=P1^3;sbitLCD_RW=P2^5;sbitlcdrs=P2^6;sbitlcden=P2^7;sbitBeep=P3^0;sbitled=P3^1;sbitDQ=P3^7;/*液晶显示屏的延时程序*/voiddelay<uintz>{ uintx,y; for<x=z;x>0;x--> for<y=110;y>0;y-->;}/*温度传感器的延时程序*/ voidDelay1<uinty>{ uintx; for<;y>0;y--> { for<x=110;x>0;x-->; }}/*蜂鸣器.18b20写数据函数的延时程序*/voiddelay2<uinta>{while<--a>;}/*温度传感器初始化函数*/voidinit_18b20<>{DQ=1;delay2<8>;DQ=0;delay2<90>;DQ=1;_nop_<>;_nop_<>;delay2<100>;DQ=1;}/*温度传感器写字节命令函数*/voidDs18b20xiezijie<uchardate>{uchari;for<i=0;i<8;i++>{DQ=0; //在写入一位数据之前先把总线拉低DQ=date&0x01; //写入一个数据.从最低位开始写delay2<5>; //延时一下DQ=1; //将总线拉高.等待第二位数据写入date>>=1; //右移一位.写入第二位数据}}/*温度传感器读字节命令函数*/ucharDs18b20duzijie<> { uchari,dat=0;DQ=1;_nop_<>;for<i=0;i<8;i++>{DQ=0; //先将总线拉低_nop_<>;_nop_<>;dat>>=1;DQ=1; //然后释放总线_nop_<>; //延时一下等待数据稳定_nop_<>;if<DQ>dat|=0x80; //读取数据.从最低位开始读取delay2<30>; //读取完之后等待一下.再接着读取下一个数DQ=1;}returndat; //返回所读到的温度}/*写温度转换命令函数*/voidDs18b20ChangTemp<>{ init_18b20<>; Delay1<1>; Ds18b20xiezijie<0xcc>; //跳过ROM操作命令 Ds18b20xiezijie<0x44>; //温度转换命令}/*读温度命令函数*/voidDs18b20ReadTempCom<>{ init_18b20<>; Delay1<1>; Ds18b20xiezijie<0xcc>; //跳过ROM操作命令 Ds18b20xiezijie<0xbe>; //发送读取温度命令}/*读温度函数*/intDs18b20ReadTemp<>{inttemp=0; uchartmh,tml; Ds18b20ChangTemp<>; //先写入转换命令 Ds18b20ReadTempCom<>; //然后等待转换完后发送读取温度命令 tml=Ds18b20duzijie<>; //读取温度值共16位.先读低字节 tmh=Ds18b20duzijie<>; //再读高字节 temp=tmh; temp<<=8; temp|=tml; returntemp;}/*液晶屏写指令函数*/voidwrite_com<ucharcom>{lcdrs=0; lcden=0; LCD_RW=0; P0=com; delay<5>; lcden=1; delay<5>; lcden=0;}/*液晶屏写指令函数*/voidwrite_com2<intcom>{ lcdrs=0; LCD_RW=0; lcden=0; delay<5>; P0=com; delay<5>; lcden=1; delay<5>; lcden=0; P0=<com&0x0f><<4; delay<5>; lcden=1; delay<5>; lcden=0;}/*液晶屏写数据命令函数*/voidwrite_data<chardate> { lcdrs=1; LCD_RW=0; lcden=0; P0=date; delay<5>; lcden=1; delay<5>; lcden=0; lcdrs=1; LCD_RW=0; lcden=0; P0=<date&0x0f><<4; //一次写入4位 delay<5>; lcden=1; delay<5>; lcden=0;}/*液晶屏初始化函数*/voidinit<> { lcden=0;write_com<0x28>; write_com2<0x28>; write_com2<0x0c>; write_com2<0x06>; write_com2<0x01>; write_com2<0X80>;}/*报警上下线处理函数*/voidwrite_hl<ucharadd,chardate>{ucharbai,shi,ge;if<date<0>{date=-date;}bai=date/100;shi=date%100/10;ge=date%100%10;write_com2<0x80+0x40+add>;write_data<0x30+bai>;write_data<0x30+shi>;write_data<0x30+ge>;}/*报警上下线处理函数*/voidwrite_hl1<ucharadd,chardate>{ucharbai,shi,ge;if<date<0>{date=-date;}bai=date/100;shi=date%100/10;ge=date%100%10;write_com2<0x80+add>;write_data<0x30+bai>;write_data<0x30+shi>;write_data<0x30+ge>;}/*液晶屏显示函数.显示温度值*/voidLcdxianshi<inttemp> { ucharsz[4]={0,0,0,0}; unsignedchardatas[]={0,0,0,0,0};//定义数组 floattp; if<temp<0> //当温度值为负数 { write_com2<0x80+0x40>; //写地址80表示初始地址 write_data<'-'>; //显示负 temp=temp-1;//因为读取的温度是实际温度的补码.所以减1.再取反求出原码 temp=~temp; tp=temp; temp=tp*0.0625*100+0.5; } else{ write_com2<0x80+0x40>; //写地址80表示初始地址 write_data<'+'>; //显示正 tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量 如果温度是正的那么.那么正数的原码就是补码它本身 temp=tp*0.0625*100+0.5; } datas[0]=temp/10000; //百位 datas[1]=temp%10000/1000; //十位 datas[2]=temp%1000/100; //个位 datas[3]=temp%100/10;//小数 write_com2<0x80+0x40+1>; write_data<'0'+datas[0]>; write_com2<0x80+0x40+2>; write_data<'0'+datas[1]>; write_com2<0x80+0x40+3>; write_data<'0'+datas[2]>; write_com2<0x80+0x40+4>; write_data<'.'>; write_com2<0x80+0x40+5>; write_data<'0'+datas[3]>; a=<datas[0]*100+datas[1]*10+datas[2]>; //用于温度的比较值write_hl<13,shangxiaxian[1]>; //显示报警上限write_hl1<13,shangxiaxian[0]>;//显示报警下限}/*按键处理函数.用于设置温度报警值*/voidkey<>{if<k1==0>{delay<5>;if<k1==0> //温度报警下限加{ shangxiaxian[0]++; if<shangxiaxian[0]==127> shangxiaxian[0]=126; write_hl1<13,shangxiaxian[0]>;}}if<k2==0> //温度报警下限减 { delay<5>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业基地领养动物合同标准文本
- 关于社保补充合同标准文本
- 保洁服务合同8篇
- 传媒公司与公司合同标准文本
- 共同经营投资合同标准文本
- 落实新课程标准的具体措施计划
- 学生兴趣小组活动计划
- 传帮带心得体会【5篇】
- 学校美术课程的课外延伸研究计划
- 班主任如何开展小组合作学习计划
- 儿童行为问题的处理与干预
- 人防车位价格评估报告
- 幼儿园大班音乐《建筑之歌》
- 智能化弱电工程深化设计工作流程
- 四川省2023年中考数学试卷十五套及答案
- 河(湖)巡查记录表
- 创意美术《小青蛙呱呱呱》课件
- 保护性施工方案
- 教科版五年级下册科学3-3《珍惜水资源》
- COSO内部控制整体框架简介
- 初中英语- I'd love to sail across the Pacific.教学课件设计
评论
0/150
提交评论