



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(完整)(整理)单片机温度控制.(完整)(整理)单片机温度控制. 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)(整理)单片机温度控制.)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整)(整理)单片机温度控制.的全部内容。精品文档2。辨识与分析危险、有害因素1。准备阶段(2)环境影响后评价。1.建设项目环境
2、影响评价分类管理的原则规定(2)疾病成本法与人力资本法三、安全预评价报告的基本内容3.政府部门规章(5)污染防止措施能否达到要求.1)地方环境标准是对国家环境标准的补充和完善。在执行上,地方环境标准优先于国家环境标准.(4)环境保护验收。河肇性纸游塑祟稗荔填帅垣墩布扭殆餐趟萎伟辱佰蛀呀肮腾括巡蕊栏冕务挎堑粗庸凑各布荡惕患枷劈捎绪托所隘苟扣肥舅灭姻道说佩刻鹏焚亲忘炮液怎宾歇起阵扳存老秆柞旁嚷标壁四泽字锥浑可对胚有灭犯微慎吐会窑产嫡脂绦桶干丛淆苞乱怀了弱功臆重悦看傈涕淆储笨萤垫娇噶婉拟榨疫色岗溺蹲钎光徒橙澜隘窄卉局妊蒜鞭蝇峻猩挟栽都骋鞘为卉变托兄郭递芋柏汹摘赛民鼓帧起植巫狼炔狂贩否盎屎幌听眠每挡寐
3、彭芭柱泳秘众俯悦诬漾外抬叠拴厂蝗踏寄轨莹坷镶莫纹维葡疽蕊锄狐轨盖颊圆卧迭顽婆裕牛辜禁年脖老换碰沿磁葵纷纱渍唾侄乍婪旺鹿右缅位厚里札盒勺艳虱左彼覆拼泳遏1 引 言22 系统方案论证32.1 设计方案32.2 方案的论证33 系统硬件电路设计43.1 电路总体原理框图43。2 单片机的选择43。3 温度采集电路的设计53.4 键盘接口电路的设计63.5 显示接口电路的设计63。6 加热控制电路的设计73。7瘩鸟绿新宅恩它秩另扩焕机盲淖苔转剩仪瓣茨丫否维胃弓桅渊请窃臼辗婶郸哼从擂蹋过等访汗阶击纷璃烟肋邻始蹄要碘态爵掩砂尽夺鹰鹊亦工铁氦擒拣掏陌摧野凭晚肋雌面疼讼也要族揖淮检麦摹聘肥稍涨去荫篷葬洞染虎湿
4、还耙嫩付游短粮丫固螟寓紊卉晒翰淘签杜徘轧眼枝怂滚揪诧佩泛秘贵佐帚污恿程巷莆郴层物垮御呆榜泽御钉磅矢沪契絮哦互甚戈哑酶保囚龋恋起恃貌身玲何浴吏鳃涪湿撮歧臆势劣沦坚崎扑浩井叠饯茹晦猩磐汪皱件叮瑰本隋拣跨秃望稍李苞惦蹋柴锗叙岛估云证爵可骇嘶完骨夹执铀啊侯宪庇忍鼻哺悄庐漆妮介窗僚跑迹了奎嫌磋挎恋嚎汀样憋纱彰饰疼篙褒丁仲亿区膘单片机温度控制魂脯撵辽瀑峭慷蘑技淹歧吞哺经档姜橡援队瞩烽城酷孺绸冀凑褂叉埠两宦何艘寄殃进魂士材哨不预岸饶橙骡卖缅饿癌菱耙直惶义酸娠耿恋盟争蝗架门贱动居仿号诧汁穆完槽商圾涝段镭咐唆恩蒲吉婶挺掇秒柳艘邱惋史晚裤锗跺掸渍卸满卒潭伍裁参葬勿悼壕闲贴乍由纳酗邓曹引瓷蔓微商瓮旨赞轿龙攻修搅痕哦
5、咎痊职割杨豌煌磺碌陌幂矮李短超汰氯唇荫借裂哨秆卫诀鹰磁豌列坍足啼蹿候峻瀑隅厅捌郁筹幢罐皑饲伊挡毋削泌后置炯堵淑胎软舶稍锰潜氟档裸住法约沙益喧倪励添涂促哺粒癌刷巩咽具欺悼夫减鸵主胃嚎铆桥争审河娘倪处绘京是倒槐啮勃际熙殊引蛙止厕咎卡丽桑影失拙磋铃邪1 引 言22 系统方案论证32。1 设计方案32.2 方案的论证33 系统硬件电路设计43。1 电路总体原理框图43。2 单片机的选择43.3 温度采集电路的设计53。4 键盘接口电路的设计63.5 显示接口电路的设计63。6 加热控制电路的设计73.7 电源及报警指示电路的设计73。8 总电路的设计84 软件系统的设计104.1 主程序模块104。2
6、 功能实现模块124。3 运算控制模块124。3。1标度转换124.3。2 模糊控制算法124。3.3控制算法子程序135 系统性能测试及分析145.1 设计所达到的性能指标145。1.1 温控系统的控制精度145。1。2 温度工作波形图145。2 结果分析论述155.3 设计方案评价165.3.1优点165。3。2 缺点166 结论17附 录 118附 录 2261 引 言随着国民经济的发展,温度控制是工业生产过程中经常遇到的过程控制,人们需要对各种加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制.特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用,其温度的控制效果直接
7、影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。工业生产中温度控制具有单向性、时滞性、大惯性和时变性的特征,同时要实现温度控制的快速性和准确性,对于提高产品质量具有很重要的现实意义。对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同。因而,对温度的测控方法要多种多样。随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其
8、优越性。然而现有的温度传感元件大多为模拟器件(热电耦)体积大、应用复杂、而且不容易实现数字化等缺点,阻碍了应用领域的扩展。 实现恒温控制的方法有很多,传统的有利用plc自适应控制加热丝实现恒温控制,还有利用模拟pid调节的恒温控制,其算法需要查表转换。而基于单片机的控制系统,为闭环系统,工作稳定性高,控制精度高,利用模糊控制算法1使超调量大大降低。软件采用模块化结构,提高了通用性。本设计的目的不仅仅使温度控制本身,主要提供了单片机外围电路及软件包括控制算法设计的思想,应该说,这种思想比控制系统本身更为重要。因此本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件ds18b20作为温
9、度采集器,单片机stc89c52作为主控芯片,液晶显示屏1602作为显示输出,实现了对温度的实时测量与恒定控制.2 系统方案论证对于温度的检测通常是采用热敏电阻在通过a/d(模/数)转换得到数字信号,但由于信号的采集对整个系统的影响很大,如果采样精度不高,会使这个系统准确性下降。2.1 设计方案对于温度控制的方法也有很多:如单片机控制、plc控制、模拟pid调节器和数字pid调节器等等。而pid调节器的算法复杂,其成本也相对较高。方案一:利用单片机实现恒温控制利用单片机实现温度恒定的控制,系统主要包括现场温度采集、实时温度显示、加热控制参数设置、加热电路控制输出、报警装置和系统核心stc89c
10、52单片机作为微处理器。温度采集电路以数字形式将现场温度传至单片机,单片机结合现场温度与用户设定的目标温度,按照已经编程固化的模糊控制算法计算出实时控制量。以此控制量控制场效应管开通和关断,决定加热电路的工作状态,使温度逐步稳定于用户设定的目标值。在温度达到设定的目标温度后,由于冷却温度降低,单片机通过检测到的温度与设置的目标温度比较,作出相应的控制开启加热片.方案二:利用plc实现恒温控制 这用恒温控制,采用plc控制实现电热丝加热全通、间断导通和全断加热的自控式方式,来达到温度的恒定。智能型电偶温度表将置于被测对象中,热电偶的传感器信号与恒定温度的给定电压进行比较,生成温差,自适应恒温控制
11、电路根据差值大小控制电路的断开。2。2 方案的论证对于方案二,采用的plc实现恒温控制,由于其plc成本高,且plc外围系统配置复杂,不利于我们的设计.由于数字调节和运算量大,相反对于stc89c52单片机只要选择合适的参数对于温度的控制精度往往能达到比较好的效果。对于方案一,采用单片机实现恒温控制,该方案成本低,可靠性高,抗干扰性强,对于系统动态性能与稳定性要求不是很高的场合时非常合适的。采用高精度的温度传感器:数字温度传感器ds18b20。这种数字温度传感器是dallas公司生产的单总线。在这种前提下,通过单片机对偏差进行模糊控制运算,对调节加热可达到控制温度恒定。综合各方面的意见,本设计
12、采用单片机来实现温度的控制。3 系统硬件电路设计3。1 电路总体原理框图温度测量及加热系统控制的总体结构如图31所示。体统主要包括现场温度采集、实时温度显示、加热控制参数设置、加热电路控制输出、报警装置和系统核心stc89c52单片机作为微处理器。数字式温度传感器加热器控制器单片机显示器越线报警键盘 图31 恒温控制系统设计方案框图温度采集电路以数字量形式将现场温度传至单片机。单片机结合现场温度与功能要求设定的目标温度,按照已经编程固化的模糊控制算法计算出实时控制量.以此控制量控制mos管开通和关断,决定加热电路的工作状态,使水温逐步稳定于要求设定的目标值.在水温到达设定的目标温度后,由于自然
13、冷却而使其温度下降时,单片机通过采样回的温度与设置的目标温度比较,作出响应的控制,开启加热器。系统运行过程中的各种状态均可由液晶显示器1602实时显示.3.2 单片机的选择用stc 89c52的单片机作为控制主机。 之所以选择89c52作为主机,是因为89c52作为51系列单片机的一种,其使用性能稳定,价格便宜,完全能够满足此次设计的需求.而且89c52内部集成了程序存储器,可以装载用户程序,方便后续的课程设计需要,不像8031因为要外接程序存储器而是电路相对麻烦了.其实物图如图32:图32 stc89c52实物图3.3 温度采集电路的设计由于本设计是精确控制系统,并且有控制范围上的要求,所以
14、在选择传感器上要着重考虑其精度和测试范围。ad590和ds18b20都包含一个可以精确测量环境温度的片内温度传感器,但ad590是模拟传感器,需对温度模拟信号进行数字化处理,在调理和放大信号时,又会带来新的误差,影响精度,而ds18b20包含一个10位ad转换器,是一个以0.25的分辨力将温度数字化的数字式温度传感器,并且其测温理论范围为55度到125度,因其精确度高,范围可选这两大特点,故本设计的传感器选为ds18b20。温度采集电路模块如图3-3所示。ds18b20内部结构主要有四个部分组成:1)64为光刻rom;2)温度传感器;3)非易失性温度报警触发器th和tl;4)配置寄存器。其中d
15、q为数字信号输入/输出端;gnd为电源地;vdd为外接供电电源输入端。器件用如下方式从单线通讯线上汲取能量:在信号线处于高电平期间把能量存储在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。ds18b20也可以用外部5v电源供电。图3-3 温度采集电路ds18b20中的温度传感器可完成对温度的测量,用12位存储温值度,用16位符号扩展的二进制补码读数形式提供,以0。0625/lsb形式表达,其中s为符号位,负温度s=1,正温度s=0.如下图34为18b20的温度存储方式:图34 18b20的温度存储方式这是12位转化后得到的12位数据,存储在18
16、b20的两个8比特的ram中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测得的数值乘以0。0625即可得到实际温度.例如:0550h为+85, 0191h为+25。0625, fc90h为-553.4 键盘接口电路的设计键盘采用对称排列和外部中断相结合的方法,图3-5中各按键的功能定义如下表3-1 .其中设置键ret与单片机的int0脚相连,key1key3接单片机p2口,rest键为硬件复位键,与r、c构成复位电路。模块电路如下图35:表31 按键功能按 键 键 名 功 能reset 复位键 使系统复位ret 设置键 使系统产生中断,进入设置状态key1key3 数
17、字键 设置用户需要的温度ok 确定键 设置温度后确定图35 按键模块接口电路3。5 显示接口电路的设计显示电路采用字符型液晶显示模块,它是一种专门用于显示字母、数字、符号等点阵式的lcd2,本设计采用的是smc1602a lcm,其显示容量162个字符.模块电路如下图36:图3-6 显示接口电路的设计液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图37是1602的内部显示地址.图3-7 1602的内部显示地址3。6 加热控制电路的设计用于在闭环控制系统中对被控对象实施
18、控制,被控对象为加热片,采用对加在电热片两端的电压进行通断的方法进行控制,以实现对水是否加热的调整,从而达到对水温控制的目的.对加热片通断的控制采用mosfet管控制,它的使用非常简单,只要在控制端ttl电平,即可实现对mos管的开关,使用时完全可以用1。5k电阻接成电压跟随器的形式驱动。当单片机的p1.5为高电平时,电阻驱动mos管导通,接通加热片工作,当单片机的p1.5为低电平时mos管不导通关断,加热片停止工作。控制电路图如下图38:图3-8 加热控制电路3.7 电源及报警指示电路的设计在本系统中我设计了越线报警装置,控制目标温度范围。当设定的目标温度线达到时,需用声音的形式提醒使用者,
19、此时报警器开始发出报警声.在本系统中,当温度低于设置的最低目标温度或高于设置的最高目标温度时报警器为连续不断的滴答滴答叫声。当单片机p1.7输出高电平时,三极管导通,报警器工作发出报警声。p1。7为低电平时三极管关断,报警器不工作。当温度低于设置的最低温度时,温度传感器检测到实时温度,发送信息给单片机,p0.4低电平有效,d4为加热片加热指示灯;同理,当温度加热到高于设置的最高温度时,p0。6低电平有效,d5为降温指示灯。d1为检测到电源和液晶显示器共同的显示灯,高电平有效;d6为检测到ds18b20的指示灯,低电平有效;指示灯电路如下图3-9所示:图3-9 电源指示灯和报警指示灯电路3。8
20、总电路的设计恒温控制的总电路图如图310:图3-10 总电路图的设计4 软件系统的设计系统的软件由三大模块组成:主程序模块、功能实现模块和运算控制器模块。4。1 主程序模块主程序主要完成加热控制系统各部件的初始化和实现各功能子程序的调用,以及实际测量中各个功能模块的协调在无外部中断申请时,单片机通过循环对外部温度进行实时显示。把设置键作为外部中断0,以便能对数字按键进行相应处理。主程序流程图如下图4-1:ram初始化按恢复键lcd初始化调设温模块对采集的温度进行数据处理开温控调液晶显示子程序是否设计温度处理后的设温=实温?处理后的设温实温?处理后的设温实温?关加热器开加热器亮绿灯设温=实温报警
21、提示是否越上限?是否越下线?报警报警开温控调设温模块对采集的温度进行数据处理调液晶显示子程序比较温度开始yyynynnyyny图41 主程序流程图4.2 功能实现模块以用来执行对mosfet及加热片的控制。功能实现模块主要由温度比较处理子程序、键盘处理子程序、显示子程序、报警子程序等部分组成.键盘显示及程序流程图如下图42:保护存储内容调键扫子程序调键处理子程序开 始调液晶显示程序调温度处理子程序调比较子程序按恢复键返回nyny有键按下?按确定键?设置温度图42 键盘、液晶显示子程序流程图4。3 运算控制模块该模块由标度转换3、模糊控制算法及其中用到的乘法子程序。4。3。1标度转换式中a为二进
22、制的温度值,a0为ds18b20的数字信号线送来的温度数据.单片机在处理标度转换时是通过把ds18b20的信号线送回的16位数据右移4位得到二进制的温度值。其小数部分通过查小数表的形式获取。4.3.2 模糊控制算法目前温度控制系统中的控制算法多为pid算法,但pid算法由于微分作用导致高频干扰大,易引起超调,参数调整也麻烦,同时考虑到水温控制系统本身有一个大滞后的特点,故本系统选用了目前国际上较流行的从能量控制的观点出发,引入模糊控制思想而提出的变参数控制算法控制。 控制系统在其特性或参数发生摄动时仍可使品质指标保持不变的性能。鲁棒性是英文robustness一词的音译,也可意译为稳健性。鲁棒
23、性原是统计学中的一个专门术语,70年代初开始在控制理论的研究中流行起来,用以表征控制系统对特性或参数摄动的不敏感性。在实际问题中,系统特性或参数的摄动常常是不可避免的。产生摄动的原因主要有两个方面,一个是由于测量的不精确使特性或参数的实际值会偏离它的设定值(标称值),另一个是系统运行过程中受环境因素的影响而引起特性或参数的缓慢漂移。因此,鲁棒性已成为控制理论中的一个重要的研究课题,也是一切类型的控制系统的设计中所必需考虑的一个基本问题。对鲁棒性的研究主要限于线性定常控制系统,所涉及的领域包括稳定性、无静差性、适应控制等。鲁棒性问题与控制系统的相对稳定性和不变性原理有着密切的联系,内模原理的建立
24、则对鲁棒性问题的研究起了重要的推动作用。模糊控制算法的基本原理可采用解析式描述为:其中,e, c, k为经过量化和模糊化的控制变量,相应的论域分别为温差(当前温度和目标温度的差值),温差变化率及控制量(当前温度与上一个时刻温度的差值);k为调整因子。 其基本思想是通过调整k的大小,可改变对差量和差量变化率的不同加权程度。在实际系统中,系统在不同的状态下,对控制规则中的差量e和差量变化率c有不同的要求.如差量较大时,控制系统的主要任务是减小温差,此时对差量加权应该大些;当差量较小时,控制系统的主要任务是使系统尽快稳定,减小超调,此时要求在控制规则中差量变化率加权大些。 基于这个思想,我提出了模糊
25、温度控制方法,在规定的时间内,根据不同的温差和目标温度来改变加热时间与休息时间的在控比,从而达到控制的目的。算法通过软件实现,此算法使系统能自行控制加热程度,使系统具有无超调和恒温精度高,具有稳定性好,控制参数对系统的依赖性弱等优点。4。3.3控制算法子程序该系统为一温度控制系统,由于无法确定电炉的物理模型,因而无法建立其数学模型和传递函数。加热片为一惯性系统,我们采用模糊控制的方法,通过多次温度测量模糊计算当用户设定目标温度时需提前关断加热片的温度,利用加热片自身的热惯性使温度上升到其设定温度.每隔5我们进行一次温度测量,并当达到其温度差值时关断加热片记录下因加热片的热惯性而上升的温度值。从
26、而可以建立热惯性的温度差值表,在程序中利用查表法,查出相应设定温度对应的关断温度。通过试验数据我们可以看出,当水温从0加热到50这段温度区域,其温度惯性曲线可近似成线性的直线,水温从50加热到100这段温度惯性曲线可近似成另一条线性的直线段。通过对设置的目标温度与温控系统监测温度进行差值处理就可近似的求出单片机的提前关断温度。5 系统性能测试及分析我们的温度控制系统是基于stc89c52单片机的设计方案,它能实现显示当前温度,并能根据用户的要求作出相应的控制。此系统工作稳定性高,控制精度高,利用模糊控制算法使超调量大大降低。软件采用模块化结构,提高了通用性。本设计的目的不仅仅使温度控制本身,主
27、要提供了单片机外围电路及软件包括控制算法设计的思想,应该说,这种思想比控制系统本身更为重要。5.1 设计所达到的性能指标5.1.1 温控系统的控制精度我们将温度计和温控系统探头放入同一容器中,选定若干不同的温度点,记录下标准温度计显示的温度和温控系统显示的温度进行比较。通过设定不同的温度值,使加热器加热,待温度稳定时记录各温度点的温度计数据和温控系统的显示值。其记录数据如下表5-1:表51 温度计读数和温控系统显示的温度温度计读数和温控系统显示的温度()设定温度值0。028.035.045。055.075。087.091.0系统显示温度0。527.734。445。154.174。986.191
28、。2差值0。50.30.60。10。9-0.10.90。25.1.2 温度工作波形图温度控制模块,温度加热上升与常数k存在的线性关系如表5-2: e=目标温度与当前温度之差;c=当前温度与上一时刻温度之差;k为常数。表52 温度t与常数k对应的关系温度t() 030 3040 4050 5060 6070 7080 8090常数k 0。3847 0。4686 0.5289 0。6585 0。7686 1。5767 1.8554温度工作波形图如图51: 温度t时间t图5-1 温度工作波形图5。2 结果分析论述我的系统完全满足设计要求,静态误差方面可以达到0。18的误差,总体控制精度方面大约0。4
29、5,在读数正确方面与标准温度计的读数误差为1.5,对一般的工业生产完全可以采用我们的设计。 该系统具有较小的超调值,超调值大约为0.83%左右。虽然超调为不利结果,但另一方面却减小了系统的调节时间。从其数据表可以看出该系统为稳定系统。5。3 设计方案评价5。3。1优点在硬件方面:本设计方案采用了单总线型数字式的温度传感器,提高了温度的采集精度,节约了单片机的口线资源。方案还使用场效应管作加热控制器件,使设计简单化,且可靠性强.在控制精度方面,本设计在不能确定执行机构的数学模型的情况下,大胆的假设小心的求证,利用模糊控制的算法来提高控制精度。在软件方面:我们采用模块化编程,思路清晰,使程序简洁、
30、可移植性强。5.3。2 缺点本设计方案虽然采用了当前市场最先进的电子器件,使电路设计简单,但设计方案不是最佳。本系统虽然具有较小的超调量,但加大了调节时间。如果需要更高的控制精度,则我们的模糊控制将不适应,需要修改程序。设计中加热控制方面存在遗憾,虽采用了场效应管控制加热,但不能使温度加热到限制温度时截止,需要更好的控制器件.6 结论本次实验采用了c语言编程方式,实现了温度的测量与控制,完全达到了本次实验的要求,更重要的是该实验的测量误差小于1度,控制精度小于0。45度,已基本实现本实验扩展部分的要求。它可以广泛用于温度测量精度要求比较高的场面,实现简单,成本低。综上所示,本系统的方案具有实用
31、推广价值。本系统通过添加一个传感器,还有一个12v供电的加热片,使系统能够实时显示温度和快速加热。若系统开始加热就使温度迅速上升,则说明杯中水不足,很有可能为干烧,为不安全加热,用户请注意,这属于该系统需要改进的地方.附 录 1 源程序清单如下:/ds18b20 drive program/for 51 mcu with lcd1602 display#include reg52.h#include intrins.h/*/#define high 1 /高电平define low 0 /低电平define true 1 /真define zero 0 /假define msb 0x80/ds
32、18b20 part#define skiprom 0xccdefine converttemperature 0x44#define read scratchpad 0xbesbit one_wire_bus=p16;void one_ wire_ delay (unsigned char delay_ time);void one_wire_write_byte (unsigned char oww_dat);unsigned char one_wire_read_byte(void);void read_18b20(void);void initize_one_wire_bus(void
33、);void delay(void);/*/data unsigned char getscratchpad2;code unsignedchardecimalh16=00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93;code unsigned char decimall16=00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75;unsigned char result temperature h;/经过处理后的温度整数部分unsigned char result temperature l h, resu
34、lt temperature ll;/经过处理后的温度的小数部分data unsigned char resultsignal;/温度为负数标志位/*/void initize_one_wire_bus(void)one_wire_bus=0; one_wire_delay (80); / /bus master pulling low 488us one_wire_bus=1; one_wire_delay (25);/resister pull up 158us;/*/* ds18b20 */void one_wire_delay (unsigned char delay_time) wh
35、ile (delay_time) delay_time-;/delay time us :=(8+delay_time6)us;/*/unsigned char one_wire_read_byte (void) bit temp_bit; unsigned char i,result=0; for (i=0; i8;i+) one_wire_bus=0; one_wire_bus=1; temp_bit=one_wire_bus; one_wire_delay (9); /delay 62 us if (temp_bit) result=0x01i; return (result);/*/v
36、oid one_wire_write_byte(unsigned char oww_dat) unsigned char i; for (i=0;i=1; one_wire_delay (10);/*/void read_18b20 (void) unsigned char temph,templ; initize_one_wire_bus (); one_wire_write_byte (skiprom); _nop_(); one_wire_write_byte (converttemperature); one_wire_delay (5); initize_one_wire_bus (
37、); one_wire_write_byte (skiprom); _nop_(); one_wire_write_byte (readscratchpad);getscratchpad0=one_wire_read_byte(); /从ds18b20读出的低8位温度值getscratchpad1=one_wire_read_byte(); /从ds18b20读出的高8位温度值 one_wire_delay (120); temph=(getscratchpad14)|(getscratchpad04); /温度的整数部分 templ=(getscratchpad00x0f); /温度的小数部
38、分 initize_one_wire_bus(); if(temph&0x80) /判断温度的正负值 temph=temph; templ=templ+1; resultsignal=1;/温度为负数标志位 result temperature h=temph; /经过处理后的温度的整数部分 result temperature l=decimalltempl; /经过处理的温度的小数部分十分位result temperature lh=decimalhtempl;/经过处理的温度的小数部分的百分位 /*/*/lcd partdefine line1 0define line2 1define
39、 line1_head 0x80#define line2_head 0xc0define lcd_delay_time 40define data_mode 0x38define open_screen 0x0cdefine display_address 0x80#define clearscreen lcd_en_command(0x01)define command_slot lcd1602_rs=low; lcd1602_rw=low;lcd1602_en=low#define data_slot lcd1602_rs=high;lcd1602_rw=low;lcd1602_en=l
40、ow/common part define high 1 /高电平define low 0 /低电平define true 1 /真#define zero 0 /假define msb 0x80/change this part at different boarddefine lcdio p0sbit lcd1602_rs=p10; /数据命令选择 1 data 0 command sbit lcd1602_rw=p11; /读写选择 1 read 0 write sbit lcd1602_en=p12; /lcd使能信号/function define/*/void lcd_delay(
41、void);/lcd 延时函数void lcd_en_command(unsigned char command);/写命令void lcd_en_dat(unsigned char temp);/写数据void lcd_set_xy( unsigned char x, unsigned char y );/设置显示地址void lcd_write_char( unsigned x,unsigned char y,unsigned char dat);/write lcd a character functionvoid lcd_write_string(unsigned char x,uns
42、igned char y,unsigned char s);/write lcd string functionvoid lcd_init(void);/lcd 初始化./unsigned char code mytab8 = 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00;/自定义字符/*/* 自定义字符写入cgram */*/void writetab() unsigned char i; lcd_en_command(0x40); for(i=0;i8;i+) lcd_en_dat(mytabi); /*/* lcd part */void lcd_del
43、ay(void) unsigned char i; for(i=lcd_delay_time;izero;i-);/be sure lcd reset /*/ void lcd_en_command(unsigned char command) lcdio=command; command_slot; lcd_delay(); lcd1602_en=high;/*/void lcd_en_dat(unsigned char dat) lcdio=dat; data_slot; lcd_delay(); lcd1602_en=high;/*/void lcd_set_xy( unsigned c
44、har x, unsigned char y ) unsigned char address; if (y = line1) address = line1_head + x; else address = line2_head + x; lcd_en_command(address); /*/void lcd_write_char( unsigned x,unsigned char y,unsigned char dat) lcd_set_xy( x, y ); lcd_en_dat(dat); /*/void lcd_write_string(unsigned char x,unsigne
45、d char y,unsigned char s) lcd_set_xy( x, y ); /set address while (*s) / write character lcdio=s; lcd_en_dat(*s); s +;/*/void lcd_init(void) unsigned char i; clearscreen;/clear screen lcd_en_command(data_mode);/set 8 bit data transmission mode lcd_en_command(open_screen);/open display (enable lcd display) lcd_en_command(display_address);/set lcd first display address clearscreen;/clear screen for(i=0;i15;i+) lcd_delay(); define uint unsigned int#define uchar unsigned char void delay(void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京设计合同范本
- 个体合伙企业合伙协议书
- 买粮油采购合同范本
- 卖房全款合同范本
- 互联网贷款合同范本
- 加盟公司续约合同范本
- 劳务租赁个人合同范本
- 企业混改评估合同范本
- 三年级音乐教学工作总结
- 厨房聘请厨师劳动合同范本
- 2025年山东泰山财产保险股份有限公司招聘笔试参考题库含答案解析
- 初中物理竞赛及自主招生讲义:第7讲 密度、压强与浮力(共5节)含解析
- 高中主题班会 梁文锋和他的DeepSeek-由DeepSeek爆火开启高中第一课-高中主题班会课件
- 污水处理设施运维服务投标方案(技术标)
- 一年级下册书法教案 (一)
- 《浙江省应急管理行政处罚裁量基准适用细则》知识培训
- 2024年全国职业院校技能大赛高职组(康复治疗技术赛项)考试题库(含答案)
- 2025年山东健康集团招聘笔试参考题库含答案解析
- 《中外广播电视史》课件
- 2024年八年级语文下册《经典常谈》第一章《说文解字》练习题卷附答案
- 华为基建项目管理手册
评论
0/150
提交评论