基于单片机的车间温湿度控制系统_第1页
基于单片机的车间温湿度控制系统_第2页
基于单片机的车间温湿度控制系统_第3页
基于单片机的车间温湿度控制系统_第4页
基于单片机的车间温湿度控制系统_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的车间温湿度控制系统学生姓名: 学 号:指导教师: 所在学院: 专 业:中国大庆2017 年 5 月黑龙江八一农i大学本科毕业设计(论文)任务书学生姓名所在班级导师姓名导师职称副教授论文题目基于单片机的车间温湿度控制系统题目分类1. 应用与非应用类:幼工程o科研o教学建设o理论分析o模拟2. 软件与软硬结合类:o软件硬件动软硬结合o非软硬件主要研宂内界及指标:本设计主要研究如何应用单片机实现车间温湿度检测,应用stc89c52单片机,经过单总线式am2301芯片分别对车间温湿度数据进行采集,并通过液晶显示屏1602进行显示。指标:(1)温度测量范围为1530°c,湿度为40

2、70%;(2)温度测量误差为o. rc,湿度测量误差为3%;(3)具有量程自动转换功能主要参考文献:1、康华光.电子技术基础m.北京:高等教育出版社2、彭介华.电子技术课程设计指导m.北京:高等教育出版社3、郭天祥.新概念51单片机c语言教程:入门、提高、开发、拓展全攻略m.电子工业出版社4、黄智伟.印制电路板(pcb)设计技术与实践m.北京:电子工业出版社,20095、高吉祥等.电子技术基础实验与课程设计m.北京:电子工业出版社,2002阶段规划:2011年12月20円至2012年1月9日系统分析准备,硬件设计初步2012年1月10日至2012年1月16円系统设计分析,硬件书面完成2012年

3、3月1日至2012年4月17日硬件加工制作,编码测试及改进2012年4月18円至2012年5月8日整理论文材料及论文撰写2012年5月9日至2012年5月19日答辩准备开题时间2016年12月20日完成论文时间2017年5月9日专业审定意见:系主任签字:年月曰摘要木设计是基于stc89c52单片机的温湿度检测电路设计,采用单总线传输模 式的am2301传感器,对温度湿度分别测量并通过液晶显示屏1602显示。单片机 釆集到am2301温湿度传感器给出的数据进行处理与计算,得出当前的温度与湿 度并送给液晶屏显示。木系统具有可读性高,稳定性高,反应速度快,测量值准 确的特点。关键词:温度湿度单片机目

4、录觀iiabstract错误!未定义书签。mfg iv1设计要求12方案设计及论证22.1系统主要单元的选择与论证22.2总体方案设计23单片机主模块设计43.1单片机主电路设计43. 2主程序流程图63. 3主程序设计64温湿度检测模块设计74.1温湿度检测电路设计74. 2温湿度检测流程图84.3温湿度检测程序设计95液晶显示模块设计95.1 1602液晶显示模块电路设计95.2液晶显不流程图115.3液晶显示程序设计126. 系统测试126.1系统运行测试126. 2主要指标测试126. 3测试结果分析12参考文献13翻寸14附录a:原理图15附录b: pcb图及元件分布图16附录c:元

5、器件清单18附录d: 程序清单19附录e:实物照片35-j-z1刖s随着智能检测技术的飞速发展,多传感器系统得到了广泛的应用。如何把多 传感器集中于一个检测系统,综合利用来自多传感器的信息获得被测对象的可靠 数据,是智能检测系统中需要解决的首要问题。为此,木设计利用stc89c52 单片机制作了一个简便但精度较高的室内温湿度检测系统;它是利用ds18b20 温度传感器作为测温元件;温度测量范围在-55°c125qc;用hs1101湿度传感 器作为测湿元件;湿度测量范围在0%100%rh;在同时该设计具备温湿度显示 功能,主要原理是:通过温度传感器将非电量的温湿度值转换为电量输出并由a

6、 / d转换器对模拟信号进行数字化,然后通过单片机读取温湿度传感器转换的温 湿度值,当温度超过一定值时蜂鸣器报警。1设计要求基于单片机的室内温湿度检测电路设计要求如下:(1) 设计制作一个温湿度计,温度测量范围为-4050°c,湿度为0100%;(2) 温度测量误差为0. 1°c,湿度测量误差为3%;(3) 具有量程自动转换功能;(4) 其他创新性设计,如低功耗等。2方案设计及论证2.1系统主要单元的选择与论证2.1.1单片机控制模块的选择论证方案一:采用xc9000系列的fpga。该类器件具有并行处理能力,能快速的 响应外部的各种数字信号,但在数据处理方面过于复杂,而ii

7、芯片价格较昂贵。方案二:采用单片机作为控制核心,单片机数学运算功能较强。在程序相互 调用方面,处理方便灵活,性能穂定,适合实际应用。ii单片机技术发展较为成 熟,价格便宜。基于以上分析,采用单片机控制可更为简便灵活地实现系统功能, 故拟采用方案二。2.1.2温度湿度检测模块的选择与论证方案一:选用dht11作为温湿度检测模块。dht11是一款数字输出的复合传 感器,包含一个电阻式感湿元件和ntc式温度检测元件,可测2090%則湿度, 误差5%kh, 050摄氏度,误差2摄氏度。方案二:选用ds18b20温度传感器和hs1101湿度传感器。ds18b20是一线 式数字温度传感器,具有独特的单线式

8、接口方式,测量范围在_55°c125"c,误 差为-+0.5°c。最高精度可达0.0625°c。hs1101是电容式湿度传感器,可测相 对湿度范围在0%100%rh,误差为-+2%kh。上述数据可知,根据设计耍求,本 模块采用方案二。2.1.3显示模块的选择与论证方案一:采用12864液晶模块显示测得的数据,可显示较多组的数据,字体 较大,可清晰读数,但12864液晶模块价格昂贵,接线复杂,故不釆用。方案二:釆用1602液晶模块显示所测数据,1602液晶接线简单方便,同时 也能满足显示需要,价格远低于12864液晶。因此,木方案为首选方案。综上所 述,显

9、示模块选择方案二。2.2总体方案设计经分析,系统选用单片机stc89c52、温度传感器ds18b20、湿度传感器hs1101、lcd液晶显示1602。由温度检测电路和湿度检测电路将检测到的数据送 到单片机,单片机对接收到的数据进行处理并送到1602显示,5v稳压电源给各 个部分供电。ljr,图1系统组成框图如图1所示,本系统由单片机主模块、ds18b20温度检测模块、iis1101湿度 检测模块、1602液晶显示模块4部分组成。3单片机主模块设计3.1单片机主电路设计单片机主模块包括了电源电路、晶振电路、复位电路,同时接入了各个模块 的接口,保证了整个系统的灵活性。3.1.1电源电路usb供电

10、i 电源1234header 2x2vcc 电源供电1t电源电路图2电源电路如图2所示:系统的供电既能由usb供电又能由电源供电,s1是电源开关, ds1为电源指示灯。3. 1.2复位电路10k复位电路图3复位电路按键后:电容器被短路放电、rst直接和vcc相连,就是高电平,此时进入 “复位状态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形 成高电平送到rst,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻 上的电压也将为0, rst降为低电平,开始正常工作。3.1.3单片机电路与晶振电路rst9 z插座1y211.1c930p30pxj2 10k排阻20图4单片机电路与晶

11、振电路如图4所示,图屮的品振电路的作用是提供时序的频率,统一单片机和外部 设备的时钟周期。单片机是整个系统的控制屮枢,它指挥外围器件协调工作,从而完成特定的 功能。硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各 个模块搭接在一起。这种设计方法可以降低系统设计的复杂性。控制电路的核心器件是由美国atmel公司生产的stc89c52单片机。stc89c52 是一种低功耗、高性能的cm0s8位微控制器,具有8k在系统可编程flash存储 器,采用的工艺是atmel公司的高密度非易失存储器技术;片上flash允许程序 存储器在系统可编程,亦适于常规编程器;在单芯片上,拥有灵巧的8位c

12、pu 和在系统可编程flash,使得stc89c52为众多嵌入式控制应用系统提供高灵活、 超有效的解决方案;价格低廉、性能可靠、抗干扰能力强。因此广泛应用于工业 控制和嵌入式系统屮。3.2主程序流程开始> 显示湿度> 显示温度3.3主程序设计4温湿度检测模块设计4.1温湿度检测电路设计ds18b20温度检测模块和iis1101湿度检测模块电路原理图如t所示:v(.cri1kr5h_h51k vcc-jr41kp1qi 2n3904 lsihsiior8510k> c2 35opfr91mresetdischgvcctholdouttrigcvoltgndoc7625丄ui55

13、5湿度传感器电路j13213vccr6ikp34p35p33p20p2112 3 4 5 6 7bells4总数裾屮.排插针排座vccrio10kdsi8b2o温度传感器电路图6温湿度检测电路图4.1.1 hs11o1湿度检测传感器工作原理如图6所示,c2为hs11o1湿度检测传感器,其工作电路由555多谐振荡器 来实现,hs11o1作为电容变量接在555芯片的2、5脚之间,引脚7用作电阻r5 的短路,等量电容hs11o1通过r5、r8充电到门限电压(约0.67v),通过r5放 电到触发电平,然后r5通过7短路到地,传感器由不同的电阻r5、r8充放电, 进行工作循环,形成方波。其周期计算如下:

14、t 充电=c* (r5+r8) *in2;t 放电=c*r8*in2;由此可知输出方波频率为f=l/ (t充电+t放电)=1/c* (r5+2r8) *in2; 可见空气湿度通过555测量振荡电路,就转变为与之呈反比例的频率信号。4.1.2 ds18b20温度检测传感器工作原理ds18b20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其 工作流程之前我们有必要了解18b20的内部存储器资源。18b20共有三种形态的 存储器资源,它们分别是:rom只读存储器,用于存放ds18b20id编码,其前 8位是单线系列编码(d

15、s18b20的编码是19h),后面48位是芯片唯一的序列号, 最后8位是以上56的位的crc码(冗余校验)。数据在出产时设置不由用户更改。 ds18b20共64位rom。ram数据暂存器,用于内部计算和数据存取,数据在掉 电后丢失,ds18b20共9个字节ram,每个字节为8位。第1、2个字节是温度转 换后的数据值信息,第3、4个字节是用户eeprom (常用于温度报警值储存)的 镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个reprom的镜像。 第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的, 同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的

16、crc码。 eeprom非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和 校验数据,ds18b20共3位eeprom,并在ram都存在镜像,以方便用户操作。4. 1.3蜂鸣器电路原理如图6所示,蜂鸣器额定电流ib彡30ma,而对于stc89c52单片机,pl 口 的灌电流为1. 6ma,上拉电流为60 u a,由此可见,仅靠单片机的p1插针座口 电流是不能驱动蜂鸣器的,必须使用集晶体管放大电路,为了使单片机消耗的功 率更小,所以使用pnp型晶体管9012,stc89c52采用的晶振电路采用11.0592mhz 的无源晶振,微调电容大小取30pf。4. 2温湿度检测流程图4. 2.

17、 1温度检测流程图向18b20写字节读収温度显示温度图7温度检测流程图4.2.2湿度检测流程图初始化显示湿度图8湿度检测流程图4.3温湿度检测程序设计5液晶显示模块设计5.1 1602液晶显示模块电路设计显示模块选用1602字符型液晶模块,是目前工控系统中使用最为广泛的液 晶屏之一。1602字符型液晶模块是点阵型液晶,驱动方便,经编码后显示内容 多样化。系统的输入模块采用中断扫描的4x4矩阵键盘,相比定时扫描方式, 提高了 mcu的使用效率。1602液晶显示模块电路原理图如图9所示:r1210kvccvcc滑动变阻器r13p22p23p24dod1d2d3d4d5d6d710kc80 12 3

18、 4 5 6 1- 03 4. s,* xo 7/ oo 11 11 n 11 11 n 1i0.1 uf图9 1602液晶显示电路在日常生活中,我们对液晶显示器并不陌生。液晶显示模块己作为很多电子 产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看 到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的 输出方式有以下几种:发光管、lcd数码管、液晶显示器。在单片机系统中应用晶液显示器作为输出器件冇以下几个优点:显示质量 高、数字式接口、体积小、重量轻、功耗低、1602lcd主要技术参数:显示容量:16x2个字符芯片工作电压:4.55.5v工作电流:2.0

19、ma(5.0v)模块最佳工作电压:5.0v字符尺寸:2.95 x 4.35(wx h)mm引脚功能说明:1602lcd采用标准的14脚(无背光)或16脚(带背光) 接口,第1脚:vss为地电源。第2脚:vdd接5v正电源。第3脚:vl为液晶显示器对比度调整端,接正电源时对比度最弱,接地吋 对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位 器调整对比度。第4脚:rs为寄存器选择,高电平吋选择数据寄存器、低电平吋选择指 令寄存器。第5脚:r/w为读写信号线,高电平吋进行读操作,低电平吋进行写操作。 当rs和r/w共同为低电平时可以写入指令或者显示地址,当rs为低电平 r/w为

20、高电平吋可以读忙信号,当rs为高电平r/w为低电平吋可以写入数 据。第6脚:e端为使能端,当e端由高电平跳变成低电平吋,液晶模块执行 命令。第714脚:dod7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。5. 2 佼晶显7f流程图开始写数据lcd初始化i一设置显示位置显不图10液晶显示流程图5. 3液晶显示程序设计6.系统测试6.1系统运行测试主程序进行键盘扫描,单片机根据判断键盘哪个键按下,显示温度或湿度。 如果keyl键按下就调用温度检测程序,单片机对18b20进行初始化,成功则读 字节,再写入字节,读取温度数据送到1602显示。如果key2键按下,就调用湿 度显示程序,

21、开启定吋中断to、tl,to进行定吋,t1对湿度电路给的频率计 数,当计满1s吋关闭t1,单片机对计的数进行运算,的出湿度值,送往液晶显zj o源程序见附录d6.2主要指标测试本系统主要指标就在于所测得的温湿度的数据是否达到了题目要求,本系统 测量范围为-405(rc,湿度为oioo%;温度测量误差为o.rc,湿度测量误差 为2%;在1号公寓336测试温度为25.6'c,湿度为41%。6.3测试结果分析本温湿度计的制作基本上达到y题a要求的技术指标,温度测量范围为 -4050°c,湿度为0100%;温度测量误差为o.rc,湿度测量误差为3%;实 现丫量程自动转换功能。参考文献

22、11康华光.电子技术基础ml.北京:高等教育出版社21彭介华.电子技术课程设计指导ml.北京:高等教育出版社郭天祥.新概念51单片机c语言教程:入门、提高、开发、拓展全攻略ml. 电子工业出版社,2009.41黄智伟.全国大学生电子设计竞赛制作实训ml.北京:北京航空航天大 学出版社,200751黄智伟.全国大学生电子设计竞赛系统设计ml.北京:北京航空航天大 学出版社,2006.rei黄智伟.全国大学生电子设计竞赛技能训练ml.北京:北京航空航天大 学出版社,200771黄智伟.全国大学生电子设计竞赛电路设计ml.北京:北京航空航天大 学出版社,200681黄智伟.全国大学生电子设计竞赛常用

23、电路模块制作ml.北京:北京 航空航天大学出版社,201091黄智伟等.基于ni multisim的电子电路计算机仿真设计与分析ml.北京: 电子工业出版社,2007101黄智伟.印制电路板(pcb)设计技术与实践m】.北京:电子工业出版 社,2009111高吉祥等.电子技术基础实验与课程设计fml.北京:电子工业岀版社, 200212吴运昌.模拟集成电路原理与应用ml.广州:华南理工大学岀版社,2001 年h31陈有卿.报警集成电路和报警器制作实例ml.人民邮电出版社1996.141周慈航.单片机应用程序设计技术ml .北京:北京航空航天大学出版社,2002.151韩志军,沈晋源,王振波.单

24、片机应用系统设计一一入门向导与设计实 例接ml .北京:机械工业出版社,2005.161夏路易,石宗义.电路原理图与电路板设计教程protel 99se.北京:北京 希望电子出版社,2002.致谢短短的大学生活即将结朿,在做毕业设计的这一学期里我收获很多,从开始 选题至毕业设计的结朿,花费不少业余时间也遇到了不少难题。在完成毕业设计 论文时也不是一件很轻松的事情,通过论文的撰写,我更系统、全面地学习了有 关单片机方面新型的、先进的前沿理论知识,并得以借鉴众多专家学者的宝贵经 验,这对于我今后的工作的企业,无疑是不可多得的宝贵财富。木论文是在导师孟洁老师指导下完成的。孟洁老师富有创造性的思维方法

25、、 丰富的科研经验和对科学研宄的远见卓识,开拓了我的思路,使我受益非浅。老 师的严谨的治学态度和高尚的人格为我树立了做人的榜样。在此致以深深的谢 意!“不积跬步无以至千里”,这次毕业论文能够最终顺利完成,归功于各位老 师两年间的认真负责,使我能够很好的掌握专业知识,并在毕业论文中得以体现。 在做毕业设计的这学期里首先我要感谢我的导师孟洁老师,其次要感谢同学在编 程方面给与我的帮助,最后要感谢黑龙江八一农垦大学图书馆以及中国知m等m 站给我提供了大量的参考资料和技术支持。在这里我向所有帮助过我的老师和同 学们再次表示衷心感谢:谢谢你们!也正是你们长期不懈的支持和帮助才使得我 的毕业论文最终顺利完

26、成。附录a:原理图附录b :pcb图及元件分布pllsids1r24p2rpc6 c?f c:5+b +u +a-rhehy y y9§3turklcl+brhcc4s2p6u2j2scio03p7 aa «a egzle «泛 pl 05y1pl0+1 d4 /h / r3d58-o 瓤rbibulkbli3 1u1«v2 s3bcipeis r12c2附录c:元器件清单元件种类元件型号数量单片机stc89c521温度传感器ds18b201湿度传感器hs11011定时器lmc555/ne5551电阻ik、51k、560k、1m10、 3、 3、 3排阻

27、10k5电容30p、o.luf、10uf4、2、2发光二极管2蜂鸣器5v1电位器10k2品振11.0592mhz1微触开关3三极管90122插槽若干杜邦线50锁紧座1单排针10万能板1附录d:程序清单#include < reg52.h >#include < intrins.h#define uchar unsigned char#define uint unsigned intsbit dq = p3a3 ; /定义 ds18b20 端口 dq sbit beef=p3a4 ;/蜂鸣器驱动线bit presence ;sbit lcd._rs = p2a2;sbit lc

28、d._rw = p2a3;sbit lcd._en = p2a4;sbit led=p3a5;sbit keyl=p2a0;sbit key2= p2a1;uchar code cdis 1 = m wendujishiyan ;uchar code cdis2 1 = ” t=. ch;uchar code cdis3 1 = shidujishiyan ”;uchar code cdis4f = ("shidu:%h;uchar code cdis5f 1 = hthe system of ;uchar code cdis6 = h temp and hum n;unsigned

29、 char data temp_data21 = 0x00,0x00;unsigned char data display 51 =0x00,0x00,0x00,0x00,0x00);unsigned char code ditabf 161 =0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;void beep();unsigned char code mytab8 = 0x0c,0x 12,0x12,oxoc,0x00,0x00,0x00,0x00;bit int_nag; /定时

30、器0 is到标志位unsigned char volatile int_count;/定时器 0 屮断次数unsigned char volatile t1 count;/定时器 1 屮断次数unsigned long sum,wet;"is 内脉冲总个数unsigned char le6; /lcd 显示缓存#define delaynop(); _nop_() ;_nop_() ;_nop_() ,一nop_();ikx# kx# kx# kx# kx# kx# <7kx#kx# kx# <7f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw

31、 rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj rj rj rj rjw rj rj rj rj rj /void delay l(int ms)unsigned char y ; while(ms)for(y = 0 ; y<250 ; y+)_nop_();_nop_();_nop_();_nop_();ikx# kx# kx# kx# kx# kx# <7 1# kx# 1# kx# kx# <7<7z/ rjw

32、 rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj rjw /*/*检查lcd忙状态/*lcd_busy为1时,忙,等待。lcd-busy为0时,w,可写指令与数掘。*/kx#kx#kx#kx#kx#kx# <7 1#kx#1#kx#kx# <7<7z/ rjw rjw rjw rjw rjw rj* rjw

33、 rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj rjw /bit lcd_bu$y()bit result;lcd一rs = 0 ;lcd_rw = 1 ;lcd_en = 1 ;delaynop();result = (bit)(po&ox8o);lcd_en = 0 ;retum(result);/*写指令数据到lcd*/*rs=l, rw=l, e=

34、71;脉冲,004)7=指令码。*/i x#kx# kx# kx# kx# kx# kx# <7 1# kx# 1# kx# kx# <7<7f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj r rj /void lcd_wcmd(uchar cmd)while(lcd_busy(); lcd_

35、rs = 0 ;lcd_rw = 0 ;lcd一en = 0 ; _nop_();_nop_();po = cmd ; delaynop();lcd 一 en = 1 ;delaynop();lcd_en = 0 ;k1#k1#k1#ki#<1#<xk1vi鳥1吻1/7,j,*5*,j,*7* rp *e* rp *s*,i*,i* *s*,i*,i*,i* *<*,j* *y*,j* rj%,j,rj,j,j,rj,j,rj,j,j,j,rj,j,rj,j,rj,j,rj,j,rj,j,rj,:,rj,j,rj,:,rj,j,rj,j,rj,rj,rj,rj,rj,rj,r

36、j,rj,rj,rj,rj,rj* /*写显示数据到lcd*/*rs=h, rw=l,已=高脉冲,d0-d7=数据。*/k1#k1#k1# ki#<1#<x/7,j,*5*,j,*7* rp *e* rp *s*,i*,i* *s*,i*,i*,i* *<*,j* *y*,j* rj%,j,rj,j,j,rj,j,rj,j,j,j,rj,j,rj,j,rj,j,rj,j,rj,j,rj,:,rj,j,rj,:,rj,j,rj,j,rj,rj,rj,rj,rj,rj,rj,rj,rj,rj,rj,rj* /void lcd_wdat(uchar dat)while(lcd_bu

37、sy(); lcd_rs = 1 ;lcd_rw = 0 ;lcd_en = 0 ;po = dat; delaynop(); lcd_en = 1 ;delaynop();lcd_en = 0;*/* lcd初始化设定ikx# kx# kx# kx# kx# kx# <7 1# kx# 1# kx# kx# <7<7f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj

38、 rjw rj r rj rj rj rjw rj r rj rj rj r rj /void lcd_ini()delay 1(15);lcd_wcmd(0x01);/淸除lcd的显示内容lcd_wcmd(0x38);/16*2 品示,5*7 点阵,8 位数据delay 1(5);lcd_wcmd(0x38);delay 1(5); lcd_wcmd(0x38); delay 1(5);lcd_wcmd(oxoc); delay 1(5); lcd_wcmd(0x06); delay 1(5); lcd_wcmd(0x01); delay 1(5);/显示开,关光标/移动光标/淸除lcd的示

39、内容*/*设定显示位賈ikx#kx#kx#kx#kx#kx#f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj r rj /void lcd_pos(uchar pos)lcd_wcmd(pos | 0x80); /数据指针=80+地址变:m:/*自定义字符写入cgramikx# kx# kx# kx# kx# k

40、x# <7 1# kx# 1# kx# kx# <7<7f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj r rj /void writetab()unsigned char i ;lcd_wcmd(0x40);/写 cgramfor (i = 0 ; i< 8 ; i+) lcd_wda

41、t(mytab i );/*us级延时函数/ / / <t« rtw rtw rt* rtw rtw rt« rtw rtw rtw <tw rjw rtw *tw rtw rjw rt« *tw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rt* rtw rt* rtw rt* rtw rt* rtw rt* rtw rtw rtw rtw rtw rtw rtw rtw rtw

42、rtw rtw rtw rtw /void delay(unsigned int num)while( num );f/ *t*t*t*t*t*t* m* t*t*t*m* *m*1*1*1*1*1*1*1*1*1*1*1*/*温度测 y.rj rj* rj rj* rj rj rjw rj« rjw rjw rj« rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj/<tx k1#k1# ki# k<x/f,j,*7* rp *e* rp *s*,i* *e*,i* *s*,i* *s*,i*,i* *s

43、*,i*,i* *<*,j*,j*,j* rj,j,rj,j,j、,j,rj,j,rj,j,rj,j,rj,j,rj,j,rj,j,rj,j,rj,:,rj,j,rj,j,rj,:,rj,rj,rj,rj,rj, f*/*初始化ds!82oi x#kx# kx# kx# kx# kx# kx# <7 1# kx# 1# kx# kx# <7<7f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw

44、rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj r rj /init_ds18b20(void)dq = 1 ; /dq 复位 delay;/稍做延时dq = 0;/单片机将dq拉低delay(90);/精确延时大于480usdq = 1 ;/拉高总线delay(8);presence = dq ;/如果=0则初始化成功=1则初始化失败delay(loo);dq = 1 ;return(presence);"返冋信号,o=presence,1 = no presence/*读一个字节/<f>/j <t

45、1; rtw rtw rt* rtw rtw rt« rtw rtw rtw <tw rjw rtw *tw rtw rjw rt« *tw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rt* rtw rt* rtw rt* rtw rt* rtw rt* rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw /readonechar(void)un

46、signed char i = 0 ;unsigned char dat = 0 ;for (i = 8 ; i > 0 ; i-)dq = 0 ; /给脉冲信号 dat »= 1 ;dq = 1 ; /给脉冲信号if(dq)dat |= 0x80 ; delay(4);)return (dat);*/*写一个字节ikx# kx# kx# kx# kx# kx# <7kx#kx# kx# <7f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj&

47、#171; rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj r rj /writeonechar(unsigned char dat)unsigned char i = 0 ; for (i = 8 ; i > 0 ; i-)dq = 0;dq = dat&oxol ;delay(5);dq = 1 ;da(»=l ;/*读取温度ikx# kx# kx# kx# kx# kx# <7 1# kx# 1# kx# kx# <7<7f/ rjw rjw rj

48、w rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rj rj r rj /read_temperature(void)ink一ds18b20();writeonechar(oxcc); /跳过读序号列号的操作 writeonechar(ox44); / 启动温度转换init_ds18b20();writeonechar(oxcc); /跳过读序号列号

49、的操作 writeonechar(oxbe); /谣取温度寄存器temp_datao = readonechar();/温度低 8 位temp_datafll = readonechar();/温度尚 8 位*/*数裾转换与温度显示ikx# kx# kx# kx# kx# kx# <7 1# kx# 1# kx# kx# <7<7f/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj

50、rjw rj rjw rj r rj rj rj rjw rj r rj rj rj r rj /disp_temperature()display 4 =temp_datafo&oxof;display0 =ditabdisplay4+0x30 ;/查表得小数位的值displayf4=(temp_data01 &0xf0)»4)|(temp_data 1 &0x0f)«4); display3=display4/100+0x30 ; displayri=displayf41%100; displayf21=displayf 11/10+0x30 ;

51、display1 =displayl % 10+0x30 ;if(displayr31=ox3o)displayf3=0x20 ; if(disp!ay2=0x30)displayf21=0x20 ;lcd_pos(0x48); lcd_wdat(displayf3); lcd_pos(0x49); lcd_wdat(display2); lcd_pos(0x4a); lcd_wdat(displayf 1); lcd_pos(0x4c); lcd_wdat(displayfo);/尚位为0,不显示/次尚位为0,小显示/百位数示/ i 位数显示/个位数品示/小数位数示/报警void baoji

52、ng()if(display2>=0x32&&displayl >=0x31)beep=1;elsebeep=0;t11111111111/ rjw rjw rjw rjw rjw rj* rjw rj* rjw rjw rj* rj rj rj* rj rj rj« rj« rjw rj« rj rjw rj rjw rj rjw rj rjw rj rjw rj rjw rj r rj rj rj rjw rj r rj rjwk1k1xt k1 xl,jw rjwrjw,i,rjw rjw rjw rj rjw,j,rj rj« rjwrj* rjwrjw rjwrj« rjw rj* rjw rj«,jw rj«湿度测:w:1*1*1*1*1*1*1*1*1*7 1*r rjw r rj*r rjwr rjwr rj*r rjrjrj*rjrj rjrj

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论