毕业设计基于STC89C52R单片机的蔬菜大棚温度控制系统设计

沧州师范学院毕业设计(论文) 基于 STC89C52R 单片机的蔬菜大棚温度控制系统设计学员姓名:学员姓名: 指导导师:指导导师: 年年 级:级: 专专 业:业: 学学 号:号: 年 月毕业设计(论文)开题报告毕业设计(论文)开题报告题目基于 STC89C52R 单片机的蔬菜大棚温度控制系统设计专业电气自动化学生姓名一、国内外研究综述随着改革开放,我国的温室大棚产业得到迅猛的发展,以蔬 菜大棚、花卉为主植物栽培设施栽培在大江南北遍地开花,随着政府对城市蔬菜产业的 不断投入,在乡镇内蔬菜大棚产业被看作是 21 世纪最具活力的新产业之一温室是蔬 菜等植物在栽培生产中必不可少的设施之一, 不同种类的蔬菜对温度生长所需 条件的要求也不尽相同,为它们提供一个更适宜其生长的封闭的、良好的生存环境,从 而可以通过提早或延迟花期,最终将会给我们带来巨大的经济效益 随着单片机的飞速发展 , 通过单片机对被控对象进行 控制日益广泛,其具有体积小 、功能强 、性价比高等特 点 ,把单片机应用于温度控制系统中可以起到更好的 控温作用 ,可完成对温度的采集和控制等的要求 单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的 大部分功能集成在一块小芯片上, 也就是说一块芯片就成了一台计算 机它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便 利条件测量温度的关键是温度传感器,温度传感器在国内外的发展经历了三个发展阶段:传统的分立式温度传感器,模拟集成温度传感器,智能集成温度传感器目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展由 DALLAS 半导体公司生产的 DS18B20 型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中它具有体积小,接口方便,传输距离远等特点 二、选题的依据和意义 本课题研究的主要内容是利用单片机作为主控机,对温室内的温度和进行实时监测和调控,以满足温室内作物生长的环境要求主要内容包括: 温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义温度作为作物生长一个非常重要的参数,温度的变化影响作物的发芽、幼苗的成长、作物的开花、果实的成熟等等。
对于不同的作物,其适宜的生长温度总是在一个范围超过这个范围,作物或许会活着,但是其生长的规律将发生明显的变化这对于我们所希望的要求作物能够优质、高产的愿望相距甚远,所以我们必须实时获取作物生长的环境温度对于,超过作物生长适宜范围的温度能够报警并及时控制三、研究内容及预期目标本课题研究的主要内容是利用单片机作为主控机,对温室内的温度和进行实时监测和调控,以满足温室内作物生长的环境要求主要内容包括:1、温度实时准确显示通过单总线数字式温度传感器 DS18B20 进行温度采集,,通过单片机 STC89C52R 对采集到的数据进行处理,由 LED 显示屏对当前温度值进行显示 2、键盘输入并显示操作人员可根据不同作物的不同时期的最适宜生长环境将温度值值由键盘输入并且由显示器进行显示便于调节作物在不同生长期所需的最适宜生长环境,以满足不同用户的需求 3、超限报警功能报警模块具有两项功能,即为报警灯和声音报警当采集到的温度与标准值之间存在较大差异时,及时启动报警装置进行报警,并采取相应的措施 4、实现通信功能配有通信接口可方便的与计算机进行通信,将采集到的温度值传送到计算机上,留下采集到的历史数据,以方便专业人士进行研究。
预期目标:1、实现对温室温度参数的实时采集,测量空间多点的温度:根据测量空间或设备的实际需要,由多路温度传感器对关键敏感点进行测量,由单片机对各路数据进行循环检测、数据处理、存储,实现温度的智能、多空间点的测量2、实现超限数据的及时报警3、现场监测设备应具有较高的灵敏度、可靠性、抗干扰能力并具有存储、远程通信功能4、通信系统具有较高的可靠性、较好的实时性和较强的抗干扰能力与计算机通讯功能,采用 RS232 串行通讯方式最远传输距离为 20 米5、长时间测量数据记录功能:可以根据需要设置数据记录时间间隔,数据存入数据存储器6、监控计算机软件设计管理软件既要具有完成数据采集、处理的功能,其软件编程应具有功能强大、界面友好、便于操作和执行速度快等特点7、要求达到的技术指标:温范围:一 20一 100测温精度:士 0.5四、计划进度 2013 年 11 月 4 日至 2013 年 11 月 10 日搜集材料,完成论文初稿2013 年 11 月 11 日至 2013 年 11 月 22 日完成第二、三设计 2013 年 11 月 23 日至 2013 年 11 月 30 日完成论文及实物指导教师签字年 月 日毕业设计(论文)任务书毕业设计(论文)任务书题目基于 STC89C52R 单片机的蔬菜大棚温度控制系统设计专业电气自动化学生姓名所在系机电工程系导师导师一、设计(论文)内容设计的主要内容为:利用单片机 STC89C52R 实现温室大棚温度的智能控制,使室温温度能够控制在作物最佳生长温度 20-25 度之间。
2. 通过对单片机 STC89C52R 的编程,由温度传感器 DS18B20 对温度进行测量,最后把测量到的温度送 LED 数码管显示如果超过上下限温度,则控制蜂鸣器报警且令继电器对温度进行实时控制3. 四位数码管能够保持不间断显示室温,最高位为符号位,如果温度为正,则不显示;如果温度为负,则显示负号;第 2-3 位显示温度的整数部分,并在第三位上显示小数点;第四位显示小数部分二、主要技术指标(或研究目标)1使用 STC89C52R 单片机2测温范围:01003测温分辨力:=14. 测温准确度:=0.55. 测温点数:可以扩展到 8 点6. 温度显示:采用个 7 段段数码管7. 温限可进行灵活设定三、设计(或研究)的内容设计的主要内容为:如何利用单片机 STC89C52R 实现温室大棚温度的智能控制,使室温温度能够控制在作物最佳生长温度 20-25 度之间2. 怎样通过对单片机 STC89S52R 的编程,由温度传感器 DS18B20 对温度进行测量,最后把测量到的温度送 LED 数码管显示;3.如果室温超过上下限温度,则控制蜂鸣器报警且令继电器对温度进行实时控制四、应收集的资料及参考文献1、李丽荣,张长全,郑建红 51 单片机应用设计 北京:北京理工大学出版社 2012.9 2、谭浩强 C 程序设计 北京:清华大学出版社,2012.43、胡宴如,耿孙燕. 模拟电子技术. 北京:高等教育出版社,2005.64、杨志忠,卫桦林. 数字电子技术. 北京:高等教育出版社,2006.35、李全利. 单片机原理及应用技术. 北京: 高等教育出版社, 2006.56、付家才. 单片机控制工程实践技术. 北京:化学工业出版社, 2005.37、邓木生,曹德跃. 电子技能训练. 北京:机械工业出版社, 2002.48、张晶,郑立平 电机控制与拖动技术 大连:大连理工上学出版社 2012.29、Protel 软件的应用10、李新德,毕万新,胡辉 传感器应用技术 大连:大连理工大学出版社 2012.711、Keil 软件的应用五、计划进度2013 年 11 月 4 日至 2013 年 11 月 10 日搜集材料,完成论文初稿2013 年 11 月 11 日至 2013 年 11 月 22 日完成第二、三设计 2013 年 11 月 23 日至 2013 年 11 月 30 日完成论文及实物指导教师签字时间年 月 日目录目录摘摘 要要 第第 1 1 章章 绪论绪论 1.11.1 温度控制系统设计的背景、发展历史及意义温度控制系统设计的背景、发展历史及意义 1 11.21.2 课题研究的目的意义课题研究的目的意义 1 1第第 2 2 章章 系统方案设计系统方案设计 2 22.12.1 温度控制系统设计方框图温度控制系统设计方框图 2 22.22.2 方案论证方案论证 2 2第第 3 3 章章 电路设计电路设计 3.13.1 STC89C52RSTC89C52R 的介绍的介绍 3 33.23.2 最小电路的介绍最小电路的介绍 6 63.33.3 键盘电路设计键盘电路设计 6 63.43.4 显示电路设计显示电路设计 7 73.53.5 报警电路设计报警电路设计 7 73.63.6 传感器电路设计传感器电路设计 8 83.73.7 电机控制电路设计电机控制电路设计 8 8第第 4 4 章章 程序设计程序设计 9 94.14.1 系统主程序设计系统主程序设计 9 94.24.2 显示程序设计显示程序设计 9 94.34.3 温度处理程序设计温度处理程序设计 9 94.44.4 上下限温度设定程序上下限温度设定程序 10104.54.5 程序流程图程序流程图 10104.64.6 程序源代码程序源代码 1010第第 5 5 章章 总结总结 2222参考文献参考文献 2323摘要摘要 本文根据蔬菜大棚温度控制系统的要求和特点,设计了一种基于 51 单片机的蔬菜大棚温度控制器。
该控制器以单片机为控制核心,结合外围信号采集电路、键盘扫描电路、LCD 显示电路、报警电路和继电器控制电路,实现了蔬菜大棚的的智能控制DS18B20 温度传感器将采集的数据在传感器内部经模数转换后传送给单片机,单片机将得到的数据分别与键盘预先设定的上限温度值和下限温度值比较,如果数据大于上限温度值值,开启电机并报警,如果数据小于下限温度值,启动电机并报警,并且电路还有预报警,当温度高于预报警上限值,进行报警,提醒用户,当温度低于预报警下限值时,进行报警,提醒用户整个过程 LCD 实时显示上限温度值、下限温度值、实际温度值关键字: 单片机;信号采集;温度控制系统;键盘扫描LCD 显示第一章 绪论1.11.1 温度控制系统设计的背景、发展历史及意义温度控制系统设计的背景、发展历史及意义随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温 度控制系统发展的主流方向 特别是近年来, 温度控制系统已应用到人们生活的各个方面, 但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题针对这种 实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义 温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。
在 工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、 酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一比如,发电厂 锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才 能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、 柴油、煤油等产品没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就 会变质霉烂,酒类的品质就没有保障因此,各行各业对温度控制的要求都越来越高可 见,温度的测量和控制是非常重要的 单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测 和温度控制随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温 度控制器应运而生1.21.2 课题研究的目的意义课题研究的目的意义本设计的内容是温度测试控制系统,控制对象是温度温度控制在日常生活及工业领 域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制而以往温度控制是 由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外针对此问 题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能 强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。
第二章第二章 系统方案设计系统方案设计2.12.1 蔬蔬菜菜温温度度控控制制系系统统设设计计 方框图方框图系统硬件电路框图如图2.1所示,蔬菜温度控制装置 由单片机最小系统、LCD液晶显示电路、键盘电路、报警电路、温度传感器、继电器控制等七部分组成系统工作原理:将温度传感器采集的数据输入单片机,单片机将得到的数据分别与键盘预先设定的上限温度和下限温度比较,如果数据大于上限温度单片机控制报警并接通电机电源(相当于接升温器) ,如果数据小于下限温度单片机控制报警并接通电机电源(相当于接降温器) ,整个过程LCD实时显示:上限温度值、下限温度值、实际温度值2.22.2 方案论证方案论证在设计中要对空压机内压力、上、下限压力显示,显示模块的设计方案如下方案一:方案一:测温电路的设计,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变 化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理,在显示电 感温电路比较麻烦 路上, 就可以将被测温度显示出来, 这种设计需要用到 A/D 转换电路方案二:方案二:考虑使用温度传感器,结合单片机电路设计,采用一只 DS18B20 温度传感器,直接读 取被测温度值,之后进行转换,依次完成设计要求。
比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现, 故实际设计中拟采用方案二LCD 显示继电器蜂鸣器复位电路 DS18B20输入键盘STC89C52STC89C52R R第三章第三章 电路设计电路设计3.1.1 单片机单片机 STC89C52RSTC89C52R 的介绍的介绍图 2-3 STC89C52R 单片机引脚图芯片引脚如图 2-3 所示:VCC : 电源GND: 地P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口作为输出口,每位能驱动8 个 TTL 逻辑电平对 P0 端口写“1”时,引脚用作高阻抗输入当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用在这种模式下,P0 具有内部上拉电阻在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节程序校验时,需要外部上拉电阻P1 口: 是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个 TTL 逻辑电平对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2 的触发输入(P1.1/T2EX),具体如下表 1 所示在 flash 编程和校验时,P1 口接收低 8 位地址字节P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个 TTL 逻辑电平对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX DPTR)时,P2 口送出高八位地址在这种应用中,P2 口使用很强的内部上拉发送 1在使用 8 位地址(如 MOVX RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些控制信号P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个 TTL 逻辑电平对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如上表 2-1 所示在 flash 编程和校验时,P3 口也接收一些控制信号RST: 复位输入晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效DISRTO 默认状态下,复位高电平有效ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲在 flash 编程时,此引脚(PROG)也用作编程输入脉冲在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过如果需要,通过将地址为 8EH 的 SFR 的第 0 位置 “1”,ALE操作将无效这一位置 “1”,ALE 仅在执行 MOVX 或 MOVC 指令时有效否则,ALE 将被微弱拉高这个 ALE 使能标志位(地址为 8EH 的 SFR 的第 0位)的设置对微控制器处于外部执行模式下无效。
PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号当STC89C52R 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活EA/VPP:访问外部程序存储器控制信号为使能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA 必须接 GND为了执行内部程序指令,EA 应该接VCC在 flash 编程期间,EA 也接收 12 伏 VPP 电压XTAL1:振荡器反相放大器和内部时钟发生电路的输入端XTAL2:振荡器反相放大器的输出端程序存储器:如果 EA 引脚接地,程序读取只从外部存储器开始对于89S52,如果 EA 接 VCC,程序读写先从内部存储器(地址为 0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH数据存储器:STC89C52R 有 256 字节片内数据存储器高 128 字节与特殊功能寄存器重叠也就是说高 128 字节与特殊功能寄存器有相同的地址,而物理上是分开的当一条指令访问高于 7FH 的地址时,寻址方式决定 CPU 访问高 128 字节 RAM 还是特殊功能寄存器空间。
直接寻址方式访问特殊功能寄存器(SFR)定时器 2:定时器 2 是一个 16 位定时/计数器,它既可以做定时器,又可以做事件计数器其工作方式由特殊寄存器 T2CON 中的 C/T2 位选择(如表 2所示)定时器 2 有三种工作模式:捕捉方式、自动重载(向下或向上计数)和波特率发生器工作模式由 T2CON 中的相关位选择定时器 2 有 2 个 8 位寄存器:TH2 和 TL2在定时工作方式中,每个机器周期,TL2 寄存器都会加 1由于一个机器周期由 12 个晶振周期构成,因此,计数频率就是晶振频率的1/12中断:STC89C52R 有 6 个中断源如表 2-2 所示:两个外部中断(INT0 和INT1),三个定时中断(定时器 0、1、2)和一个串行中断每个中断源都可以通过置位或清除特殊寄存器 IE 中的相关中断允许控制位分别使得中断源有效或无效IE 还包括一个中断允许总控制位 EA,它能一次禁止所有中断定时器2 可以被寄存器 T2CON 中的 TF2 和 EXF2 的或逻辑触发程序进入中断服务后,这些标志位都可以由硬件清 0实际上,中断服务程序必须判定是否是 TF2 或EXF2 激活中断,标志位也必须由软件清 01。
符号位地址功能EAIE.7中断总允许控制位EA=0,中断总禁止;EA=1,各中断由各自的控制位设定-IE.6预留ET2IE.5定时器 2 中断允许控制位ESIE.4串行口中断允许控制位ET1IE.3定时器 1 中断允许控制位EX1IE.2外部中断 1 允许控制位ET0IE.1定时器 0 中断允许控制位EX0IE.0外部中断 1 允许控制位3.23.2 STC89C52RSTC89C52R 单片机最小系统单片机最小系统图 3-2-1 晶振电路图 3-2-2 复位电路如图 3-2-1、图 3-2-2 所示,复位电路和时钟电路是维持单片机最小系统运行的基本模块单片机最小系统是在以 51 单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大23.33.3 键盘电路键盘电路 因为本设计使用键盘数比较少,只要 5 个按键就足够了,故可以直接接在端口即可。
图 3-3-1 键盘电路 3.23.2 显示电路设计显示电路设计 将 P1 与显示的数据端相连,采用模拟时序形式电路电路接线如图 3-2图 3.2 显示电路3.33.3 报警电路设计报警电路设计报警电路对实时温度的检测,温度过高或过低报警灯亮,并且蜂鸣器根据不同的报警情况,发出不同频率的声音图 3.3 报警电路3.43.4 传感器电路设计传感器电路设计本设计使用的是 DS18B20,采用单总线方式连接图 3.4 传感器电路3.53.5 电机控制电路设计电机控制电路设计 电机电路利用继电器来控制电机开断电路如图图 3.5图 3.5 电机控制电路设计第第 4 4 章章 程序设计程序设计4.14.1 主程序设计主程序设计 主程序主要完成初始化、以及调用显示、指示灯、温度采集等等具体模块包括:1、显示程序设计2、温度采集程序设计3、温度处理程序设计4.24.2 显示程序设计显示程序设计显示程序主要将几个数组的内容通过 LCD1602 的写数据指令显示在 LCD 屏上4.34.3 温度处理程序设计温度处理程序设计 将采集到的实时温度与设定的上限,下限,上限预报警,下限预报警温度进行比较,若超过上限温度红灯亮,并且发出高频率的报警声。
如果实时温度介于上限预报警和上限温度之间,黄灯亮,并发出低频率的报警声在超过下限温度时红灯亮,也发出高频率的报警声,如果实时温度介于下限预报警和下限温度之间,黄灯亮,并发出低频率的报警声4.44.4 上下限温度设定程序上下限温度设定程序采用外部中断 1 的方式,可以实时进行设定温度上下限值温度上下限设定的范围为-2099 度4.54.5 程序流程图程序流程图开始显示欢迎界面输入上下限温度值温度采集并显示温度比较判断是否超否超过设定值报警并进行温度处理是否4.64.6 程序源代码程序源代码#include #include #define LCD_DB P2sbit DQ = P10;sbit BUZZER = P11;sbit PWM = P12;sbit LCD_RS = P14;sbit LCD_RW = P15;sbit LCD_E = P16;sbit HEAT = P17;void initial(void);void read_DHT11(void);void LCD_write_command(unsigned char com);void LCD_display_char(unsigned char x, unsigned char y, unsigned char dat);unsigned char read_DHT11_char(void);void control_temperature_humidity(void);void delay_xms(unsigned int time_xms);void delay_x10us(unsigned int time_x10us);unsigned char stop_system = 0;unsigned char lineOne = TS(0-50): C;unsigned char lineTwo = HS(20-90): %RH;unsigned int T0_number = 0, T1_number, PWM_width_H;unsigned char temperature_ten, temperature_one, humidity_ten, humidity_one;unsigned char temperature_H, temperature_L, humidity_H, humidity_L, checkData;void initial(void)unsigned char i, j;TMOD = 0 x11;/定时器 0 工作方式 1,16 位计数器;定时器 1 工作方式1,16 位计数器TH1 = 0 xFC;/定时器 1 溢出周期 1ms,延时TH1 = 0 x66;TH0 = 0 xFC;/定时器 0 中断周期 1ms,PWM TL0 = 0 x66; EA = 1;ET1 = 1;ET0 = 1;EX0 = 1;IT1 = 1;TR0 = 1;LCD_write_command(0 x38); /设置 8 位格式,2 行,5x7LCD_write_command(0 x0c); /设置整体显示,关闭光标,且不闪烁LCD_write_command(0 x06); /设置输入方式,增量不移位LCD_write_command(0 x01); /清屏for (i = 0; i 16; i+)LCD_display_char(i, 1, lineOnei);for (j = 0; j 16; j+)LCD_display_char(j, 2, lineTwoj);LCD_display_char(14, 1, 0 xDF);/显示void read_DHT11(void) DQ = 0; delay_xms(18); DQ = 1; delay_x10us(2); if (DQ = 0) while (DQ = 0);while (DQ = 1);humidity_H = read_DHT11_char();humidity_L = read_DHT11_char();temperature_H = read_DHT11_char();temperature_L = read_DHT11_char(); unsigned char read_DHT11_char(void)unsigned char i, temp_one, temp_two; for (i = 0; i 8; i+)while (DQ = 0);delay_x10us(3);if (DQ = 0)temp_one = 0;elsetemp_one = 1;temp_two 28) /温度转速PWM_width_H = 100;else if (temperature_H = 23)HEAT = 0;PWM_width_H = (temperature_H - 18) * 10;void delay_xms(unsigned int time_xms)T1_number = 0;TR1 = 1;while (1)if (time_xms = T1_number)break;TR1 = 0;void delay_x10us(unsigned int time_x10us)while (time_x10us-)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();void main(void)initial();while(1) delay_xms(2000); read_DHT11(); LCD_display_DHT11(); control_temperature_humidity();void INT_0(void) interrupt 0stop_system = 1;void Timer_0(void) interrupt 1TH0 = 0 xFC;/定时器 0 中断周期 1ms,PWM TL0 = 0 x66;T0_number+;if (T0_number 100)T0_number = 0;else if (T0_number PWM_width_H)PWM = 1;elsePWM = 0;void Timer_1(void) interrupt 3TH1 = 0 xFC;/定时器 1 溢出周期 1ms,延时 TL1 = 0 x66;T1_number+;第第 6 6 章章 总结总结写这篇总结时,当初很多的困难到现在已体会不到了。
现在回过来看当初,我认为一切都很值在这中间每天都有很多挫折在等待着我,但我始终坚信“失败是更近一步走向成功”在软件的调试过程中,遇到的问题有很多,下面就几个比较突出的问题进行说明1)在对 Keil C 的使用时不知道怎么才能让它生成 HEX 文件,从而进行仿真,因为以前没有用过类似的软件,不会并且也不知道需要生成 HEX 文件,导致前期的工作很难进行2 )因为用的是 DHT11 数字传感器,在编程过程中需要对所测得温度进行处理,而且需要给定一个温度范围,建立一个温度与电机转速的数学模型,经过反复的计算、实验才实现3)因为考虑到经济实用方面,所以在进行实物操作之前,采用 proteus 软件对程序和硬件电路进行仿真,可是在仿真过程中,独立按键总是不灵敏,这需要对延迟时间进行调整,而程序中设置的延迟时间总是不能够很符合实际操作,所以在这方面浪费了大量的时间进行反复的操作和实验4)在仿真过程中,因为用到的是 LCD1602 显示模块,这种显示模块是可以显示字符的,并且这种模块本身带有字库,但事实仿真过程中,电路要求相对宽松,不需加上拉电阻,而实际的电路调试过程需要加上拉电阻不管困难有多么多,我都通过我能寻求帮助的一切方式去解决问题。
早在选题之前,我就利用平时的时间看 DS18B20 芯片资料,当初认为 DS18B20 延时要很精确,所以我必须写出精确的延时程序但是 C 语言延时是不好精确地,为了写出那种很精确的延时程序,在网上找了很多资料,还有可以利用 keil 这个软件进行一些调试,也可测出延时时间延时解决后,以为一切都会很顺利,但往往看起来容易的事情总有想不到的问题在写 DS18B20 驱动程序时,读出来显示的温度值总是不对,左看右看,我知道问题肯定是出在数据处理上于是我上网看别人是怎么进行数据处理,结合很多网上程序后,最后选择了其中一种的方法,但一切并不顺利,一篇又一篇的调试,不知调试了多少次终于成功了DS18B20 驱动写出来了后,1602 显示程序以前写过,所以可以移植过来,所以减少了不少的时间大的结构确定后,就是修改一些细节上比如我的温度比较范围是从-20-99,这在软件控制上,看上去很简单可最后代码写下来也不少而且我也是调试了蛮多次的主要是以前从没有独立做过这种课程设计所以没有经验,很多细节上处理的不是很好所以自己只有不断地去学习别人怎么处理,然后结合自身来处理细节上的问题利用了几天的时间,终于是在 PROTEUS 上仿真成功了。
但我的设计还是存在一些问题,比如反映时间不是很快,这些问题是值得去注意的再者,在 Proteus 上仿真通过,而没有做出实物,那也永远只是理论水平所以,尽管课程设计完成了,我要做的还远远不够在写课程设计的论文时,也得到了同学的帮助,同学也帮忙完成了一些通过这次课程设计,让我对于单片机的项目有了一个认知我更近一步看清了前方的路很多东西是接下来必须去做的总之,要学的还很多,只有不断地学习,才能轻松的处理事情有句话说的很对“只有很努力,才能看起来毫不费力”课程设计搞完了,我的单片机学习还是不会断,因为我学的还真不够最后感谢给与我指点的老师和同学虽然我没有很强烈的表达在表面,但我一直都记住的没有你们,我可能会走很多弯路才能做到,一生中遇到你们这些贵人是我的荣幸感谢你们参考文献参考文献1 赵晶.Protel99 高级应用M. 人民邮电出版社, 2006.2 谷树忠.Protel DXP 实用教程M. 电子工业出版社,2003.3 刘湘涛、江世民.单片机原理与应用M.电子工业出版社, 2006.4 孙育才 . ATMEL 新型 AT89S51 系列单片机及其应用 M.清华大学出版社 , 2005.5 李华MCU-51 系列单片机实用接口技术M北京:北京航空航天大学出版社,19936 张迎新、雷道振.单片机初级教程M.北京航天航空大学出版社, 2006.。