基于单片机的果园环境温度检测报警系统设计方案_第1页
基于单片机的果园环境温度检测报警系统设计方案_第2页
基于单片机的果园环境温度检测报警系统设计方案_第3页
基于单片机的果园环境温度检测报警系统设计方案_第4页
基于单片机的果园环境温度检测报警系统设计方案_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

毕毕业业设设计计说说明明书书 基于单片机的果园环境温度检基于单片机的果园环境温度检 测报警系统设计测报警系统设计 专业专业自动化 学生姓名学生姓名 班级班级 学号学号 指导教师指导教师 完成日期完成日期2013 年 6 月 5 日 毕业设计说明书(毕业论文) 独创性声明 本人声明所呈交的毕业设计说明书(毕业论文)是本人在导师指导下进 行的研究、设计工作后独立完成的。除了文中特别加以标注和致谢的地 方外,说明书中不包含其他人己经发表或撰写过的研究成果。对本文的 研究所做贡献集体和个人,均己在说明书中作了明确的说明并表示谢意。 本人完全意识到本声明的法律后果由本人承担。 毕业设计说明书(毕业论文)作者签名(手写): 日期: 年 月 日 指导教师签名(手写): 日期: 年 月 日 基于单片机的果园环境温度检测报警系统设计 摘 要:温度是人们在农业生产中经常需要测量和控制的一个量,而基于单片机的 果园环境温度测量和报警系统使得温度测量与报警更加的直观、准确,它具有使用方 便、性能可靠的优点。主要讨论了在果园的环境下的温度测量及报警的处理方法和系 统构成。基于数字传感器 DS18B20 的性能特点,利用单片机和简单的接口电路组成一 个温度测量及报警系统,通过键盘和 LED 显示数码管对温度进行显示和对温度报警上 下限进行设置。给出了相关的应用电路和软件程序。该系统的温度的测量范围在 55- +100之间,它的测量的精度为 0.1。这个系统完全满足了果园的温度测 量及报警需求。 随着单片机技术和半导体技术的发展,这种智能化的温度测量及报警技术将会慢 慢取代传统的温度测量技术,使得温度测量技术朝着更加智能化和自动化的方向发展。 关键字:果园环境;单片机;温度传感器 DS18B20;温度测量及报警 The Design of Based on Single-chip Orchard Ambient Temperature Detection and Alarm System Abstract: Temperature is that people in agricultural production often need to measure and control an amount, and microcontroller-based orchard ambient temperature measurement and temperature measurement alarm and alarm system makes more intuitive, accurate, and it is easy to use, reliable performance advantages. mainly discusses the orchard environment temperature measurement and alarm processing method and system configuration. Based on the performance characteristics of digital sensor DS18B20, using SCM and simple interface circuit a temperature measurement and alarm system, through the keyboard and LED display digital temperature display and temperature alarm limit settings. There gives the relevant application circuit and software programs. The system temperature measuring range -55 - +100 between, its measurement accuracy of 0.1 . The system fully meets the orchard temperature measurement and alarm requirements. With chip technology and development of semiconductor technology, this intelligent temperature measurement and alarm technology will gradually replace the traditional temperature measurement technology, making the temperature measurement and automation technology towards more intelligent direction. Key Words: Orchard environment;Microcontroller;Temperature sensor DS18B20;Temperature measurement and alarm 目目 录录 1 课题概述.1 1.1 课题背景和意义1 1.2 课题研究的内容及要求1 2 整体方案的论证与设计.3 2.1 系统的基本设计思想3 2.2 系统模块结构论证3 3 系统硬件设计.5 3.1 单片机 STC89C52.5 3.2 温度传感器6 3.3 系统概述.8 3.4 模块化系统设计.9 4 软件设计.14 4.1 程序设计流程14 4.2 程序编写17 5 硬件调试.18 5.1 静态检查18 5.2 通电检查18 5.3 软件调试及软硬件联调.18 5.4 硬件实物图.18 6 结束语.19 参考文献.20 致 谢.21 附 录.22 附录 1:程序清单22 附录 2:电路原理图34 附录 3:PCB 布线图.35 附录 4:Proteus 仿真图.36 附录 5:实物图37 附录 6:元器件清单39 基于单片机的果园环境温度检测报警系统设计 1 课题概述 1.1 课题背景和意义 谈到温度,大家并不陌生。尽管温度充满在我们生活当中,但是很多人认识到的 温度只是一个抽象的名次,只是看天气预报时才会去在意。在人类的生活环境中,温 度扮演着极其重要的角色。 我们在平时一般用几个简单的词语来表达对温度的感知,比如:冷、凉、温、热、 烫等,但是这样的表述是很有限的。冰块和凉水都是很冷的,但是它们冷的程度又是 不一样的。因此,为了能够更加精确地表述出物体的把物体具体的冷或热,就使用了 一个概念温度。而要准确地测量物体的温度需要使用的便是温度计。 人们在农业生产活动中需要根据气温的变化,及时地采用相应的农业生产方式, 这对农业生产是十分重要的。而一个简单,方便,可靠的温度测量系统就大大方便了 农业生产活动。在果园种植过程中,果农需要对果园的环境温度有着准确而又实时的 掌握,这样才能进行相应的农业活动,来降低温度对果树成长的约束,增加果实的产 量,给果农带来可观的经济效益。 随着人们对水果的需求增加,大规模的果园越来越多。果园的温度检测及控制已 经成为一个重要的课题。传统的温度测量是在果园中放置一个酒精或者水银温度计, 通过读取温度计的度数来知道果园的实际温度,这种的温度测量方法还是比较落后和 浪费劳动力的,而且不是很方便。随着果园的规模越来越大,这种传统的温度测量措 施就出现了很大的局限性,于是果园种植对温度检测技术的要求越来越高。 由于电子技术的发展到超大规模的集成电路阶段段,功能强大但体积更小的单片 微型计算机就诞生了,因为它的价格低廉,所以单片机被全面应用在家用电器、军事 武器、电子仪器、工业生产、节能环保、智能机器等广阔的领域,使得设计简化,成 本降低,还提高了产品的质量和功能,使产品更加智能化、小型化。采用单片机来对 温度进行检测,不仅具有控制方便、组态简单和灵活性大等优点而且还可以大幅度提 高被控温度的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、 体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不 可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。因此,单片机对 温度的测量控制问题是一个工农业生产中经常会遇到的问题。基于此,本课题围绕应 用于果园的基于单片机的温度测量及报警系统展开应用研究工作。 1.2 课题研究的内容及要求 本文所要研究的课题是基于单片机控制的果园环境测量报警系统。主要是介绍了 对气温的显示及报警,实现了温度的实时显示及控制。气温测量部分提出了用 DS18B20、STC89C52 单片机及 LED 的硬件电路完成对气温的实时检测、显示及超出 设定的上下限温度的报警。 本系统具体控制功能如下: (1)能够对气温进行连续测量,通过十进制数码管来显示气温。 (2)能够满足日常的温度测量要求。 (3)超出报警上下限能够发出报警,并且能通过按键来设定报警温度的上下限。 2 整体方案的论证与设计 2.1 系统的基本设计思想 该系统是以 STC89C52 单片机为核心,通过单片机控制测温电路(DS18B20)获取 温度值,然后通过数码管显示电路显示出来,并且对测的温度值跟设定的值进行比较, 如果不在设定范围就通过报警电路发出报警,报警温度的值通过按键电路进行设定。 系统结构框图如图 2-1: STC89C52 时钟电路 按键 测温电路 报警电路 复位电路 显示电路 图 2-1 系统结构框图 2.2 系统模块结构论证 2.2.1 测温模块论证与选择测温模块论证与选择 方案一:采用 AD590 温度传感器,AD590 是美国模拟器件公司的电流输出型温 度传感器,其电源电压范围为 430V,输出电流 223A(50)423A(150), 灵敏度为 1A/。适用于多点温度测量和远距离温度测量。 方案二:采用温度传感器 DS18B20,温度传感器 DS18B20 可以分为三脚 T0-92 直插式和八脚 S0IC 贴片式。贴片式不常用,所以我选择的是直插式封装。温度传感 器 DS18B20 它的体积更加小、性能更突出、工作更加稳定、功耗更低、兼容大多数 单片机,它可以直接输出数字量的温度信号供处理器处理。 从性价比方面综合考虑选择方案二。 2.2.2 单片机模块论证与选择单片机模块论证与选择 方案一:采用 STC89 系列单片机,其架构简单,相对熟悉,价格便宜,完全满 足设计的要求,焊接起来也是比较方便。 方案二:选用飞思卡尔单片机,飞思卡尔单片机功能强大,但是价格相对较高, 而且对此不熟悉。 因此,选择方案一。 2.2.3 显示模块论证与选择显示模块论证与选择 方案一:采用 LCD 液晶显示器作为显示模块核心。LCD 显示器节能环保,显示 直观。 方案二:采用 8 段 LED 数码管作为显示模块核心。数码管显示器件相对便宜, 体积更小巧。 因此,选择方案二。 2.2.4 报警模块论证与选择报警模块论证与选择 方案一:采用语音播报系统作为报警模块的核心。该方案更具人性化、智能化, 但是相对成本过高工作量偏大。 方案二:采用蜂鸣器作为报警模块的核心。该方案使用的硬件很少,电路设计和 实物焊接都很方便,软件设计也容易,性价比较高。 因此,选择方案二。 2.2.5 电源模块论证与选择电源模块论证与选择 方案一:采用 USB 为设备供电,该方案容易实现,能够直接使用计算机的 USB 接口供电。电脑的 USB 接口属于接口电源,要并联耦合电容进行缓冲。 方案二:采用将 220 伏、50 赫兹的交流电转换为 5V 的直流电作为供电电源。该 方案实施简单,电路搭建方便,可作为单片机开发常备电源使用。 方案三:采用干电池串并联到 5V 作为电源模块。该方案也很容易实现,不需要 设计额外的电路,但是由于电池消耗,使得电源不是很稳定,长时间带负载后电压会 降低,可能使电路无法长时间的平稳工作。 因此,选择方案一。 3 系统硬件设计 3.1 单片机 STC89C52 单片机的分类有很多,按应用的范围可以划分为专业型和通用型。专用型是根据 某些特定的产品而设计的,例如用于汽车发动机的单片机。通用型的单片机又分为非 总线型和总线型或者 8 位和 16 位,总线型的具有并行三条总线,可以很方便的扩展 外围设备。非总线型没有总线引脚,芯片体积小,要扩展可通过 I/O 口,因此非线型 更适合中小系统。 STC89C52 单片机标准的 40 引脚双列直插式集成电路芯片的引脚图如图 3-1: 图 3-1 STC89C52 引脚图 采用 STC89 系列单片机,主要考虑到 STC 系列的单片机的诸多优点: (1)不容易受干扰: 对抗静电能力高;很容易实现 2 千伏/4 千伏快速脉冲的干扰实验;电压范围大, 对电源要求低;宽温度范围,4085;I/O 口通过过防干扰强化;单片机内部 供电的电源系统经过防干扰强化;单片机内部的时钟电路经过特殊处理;单片机内部 的复位电路经过特殊处理;单片机内部的看门狗电路经过特殊处理。 (2)三种方法减少单片机的时钟对外部的电磁干扰: 禁止 ALE 输出;如果使用每个机器周期为六个时钟周期,外面的时钟周期就可以 减少一半;单片机时钟振荡器增益可设为 1/2Gain。 (3)超低功耗: 掉电模式:典型功耗 #include /加入温度传感器头文件 #include/加入掉电保存头文件 #define Par P2 /数码管段 sbit Set = P14; /设置按钮 sbit Up = P36; /上调按钮 sbit Down= P32; /下调按钮 sbit Beep= P01; /蜂鸣器定义 sbit Pos1=P04; /数码管位 1 sbit Pos2=P03; /数码管位 2 sbit Pos3=P02; /数码管位 3 sbit Pos4=P05; /数码管位 4 uint Up_Temp; /报警温度上限的十倍(方便小数位判断) uint Low_Temp; /报警温度下限的十倍(方便小数位判断) uchar code Tab=0x28,0xEE,0x32,0xA2,0xE4,0xA1,0x21,0xEA,0x20, /0 1 2 3 4 5 6 7 8 段码/7 6 5 4 3 2 1 0 0xA0,0x60,0x25,0x39,0x26,0x31,0x71,0xff,0xf7,0x64,0x3d,0x35; /9 A B C D E F $ - H L (L-) 段码/E D H C G A F B uint temp;/读取温度变量(为了保持精度,温度是放大了 10 倍的) /* T:要显示的温度 Flag:符号位 num:显示次数 */ void displayset(uint T,uchar Flag,uint num)/显示设置报警范围:0-99.9 while(num-) if(T999) /如果设置上限温度大于 99.9,就重新循 环回 0.0 Up_Temp=0; time+=10; /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 if(time50) /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 time=49; /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 num=50-time; /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 if(num30) /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 num=30; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 displayset(Up_Temp,18,num);/显示高温报警阀值 time=0; while(Down=0) if(Up_Temp=0) /如果设置上限温度为 0,就重新循环回 99.9 Up_Temp=1000; Up_Temp-=1; /报警下限温度减小 0.1 time+=10; /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 if(time50) /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 time=49; /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 num=50-time; /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 if(num30) /这里来调整按键方式,按着不放的话调整速 度越来越快,松手后恢复 num=30; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 displayset(Up_Temp,18,num);/显示高温报警阀值 time=0; if(Set=0) /再次按下设置键,则跳出报警上限温度的设 置 break; while(Set=0) /等待按键释放 displayset(Low_Temp,19,5); /显示报警下限温度阀值 while(1) displayset(Low_Temp,19,2); /显示报警下限温度阀值 while(Up=0) Low_Temp+=1; /报警上限温度增加 0.1 if(Low_Temp999) /如果设置上限温度大于 99.9,就重新循 环回 0.0 Low_Temp=0; time+=10; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 if(time50) /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 time=49; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 num=50-time; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 if(num30) /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 num=30; /这里来调整按键方式,按着不放的话 调整速度越来越快,松手后恢复 displayset(Low_Temp,19,num); /显示低温报警阀值 time=0; while(Down=0) if(Low_Temp=0) /如果设置上限温度为 0,就重新循环 回 99.9 Low_Temp=1000; Low_Temp-=1; /报警下限温度减小 0.1 time+=10; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 if(time50) /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 time=49; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 num=50-time; /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 if(num30) /这里来调整按键方式,按着不放的话调整 速度越来越快,松手后恢复 num=30; /这里来调整按键方式,按着不放的话 调整速度越来越快,松手后恢复 displayset(Low_Temp,19,num);/显示低温报警阀值 time=0; if(Set=0) /再次按下设置键,则跳出报警下限温度的 设置 break; while(Set=0) /等待按键释放 displayset(Low_Temp,19,5); /显示低温报警阀值 eeprom(Up_Temp,Low_Temp); /写入报警阀值到 EEPROM /* T:要显示的温度 Flag:符号位 num:显示次数 */ void display(uint T,uchar Flag,uint num) /主显示函数 while(num-) if(T999) /如果温度大于 99.9,则 四位数码管均用来显示 Pos1=0;Pos2=Pos3=Pos4=1; /打开第一位数码管 Par=TabT/1000; delay_main(60);Par=255; /显示温度的百位数 Pos2=0;Pos1=Pos3=Pos4=1; /打开第二位数码管 Par=TabT%1000/100; delay_main(60);Par=255; /显示温度的十位数 Pos3=0;Pos2=Pos1=Pos4=1; /打开第三位数码管 Par=TabT%1000%100/10 delay(60);Par=255; /显示温度的个位数 并加小数点 Pos4=0;Pos2=Pos3=Pos1=1; /打开第四位数码管 Par=TabT%1000%100%10; delay_main(60);Par=255;/显示温度的小数位 else /如果温度小于 100 if(T=Up_Temp|temp0;i-) /串行接收数据 DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; Delay_DS18B20(8); return(dat); /*写一个字节*/ void WriteOneChar(uchar dat) uchar i=0; for (i=8; i0; i-) DQ = 0; DQ = dat /写入最低位 Delay_DS18B20(10); DQ = 1; dat=1; /右移一位 /*读取温度*/ uint ReadTemperature(void) uchar a=0; uchar b=0; uint t=0; float tt=0; Init_DS18B20(); /初始化 DS18B20 WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0x44); /启动温度转换 Delay_DS18B20(20); Init_DS18B20(); /初始化 DS18B20 WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器 a=ReadOneChar(); /读低 8 位 b=ReadOneChar(); /读高 8 位 if(b7) a=256-a; b=256-b; T_flag=17; /温度标志位,负温度 else T_flag=16; /正温度标志 t=b; t 8; /设置 ISP / IAP / EEPROM 地址高字节 IAP_TRIG = 0x46; /发送触发命令(0x46) IAP_TRIG = 0xb9; /发送触发命令(0xb9) _nop_(); /MCU 将在这里等待,直到 ISP / IAP / EEPROM 操作完成 dat = IAP_DATA; /ISP / IAP / EEPROM 数据 IapIdle(); /关闭 ISP / IAP / EEPROM 功能 return dat; /返回闪存数据 /* - 编程一个字节的 ISP / IAP / EEPROM 区 输入:地址(ISP / IAP / EEPROM 地址) DAT(ISP / IAP / EEPROM 数据) 输出: - -*/ void IapProgramuchar(uint addr, uchar dat) IAP_CONTR = ENABLE_IAP; /打开 IAP 功能,并设置等待时间 IAP_CMD = CMD_PROGRAM; /设置 ISP / IAP / EEPROM 程序命令 IAP_ADDRL = addr; /设置 ISP / IAP / EEPROM 地址低字节 IAP_ADDRH = addr 8; /设置 ISP / IAP / EEPROM 地址高字节 IAP_DATA = dat; /ISP / IAP / EEPROM 写入数据 IAP_TRIG = 0x46; /发送触发命令(0x46) IAP_TRIG = 0xb9; /发送触发命令(0xb9) _nop_(); /MCU 将在这里等待,直到 ISP / IAP / EEPROM 操作完成 IapIdle(); /*- 擦除一个扇区的 输入:地址(ISP / IAP / EEPROM 地址) 输出: - -*/ void IapEraseSector(uint addr) IAP_CONTR = ENABLE_IAP; /打开 IAP 功能,并设置等待时间 IAP_CMD = CMD_ERASE; /设置 ISP / IAP / EEPROM 擦除命令 IAP_ADDRL = addr; /设置 ISP / IAP / EEPROM 地址低字节 IAP_ADDRH = addr 8; /设置 ISP / IAP / EEPROM 地址高字节 IAP_TRIG = 0x46; /发送触发命令(0x46) IAP_TRIG = 0xb9; /发送触发命令(0xb9) _nop_(); /MCU 将在这里等待,直到 ISP / IAP / EEPROM 操作完成 IapIdle(); 附录 2:电路原理图 T2/P1.0 1 T2EX/P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P0.0 39 P0.1 38 P0.7 32 P0.6 33 P0.5 34 P0.4 35 P0.3 36 P0.2 37 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.6 27 P2.7 28 RxD/P3.0 10 TxD/P3.1 11 INT0/P3.2 12 INT1/P3.3 13 T0/P3.4 14 T1/P3.5 15 WR/P3.6 16 RD/P3.7 17 RST 9 XTAL2 18 XTAL1 19 GND 20 PSEN 29 ALE 30 EA 31 VCC 40 IC1 STC89C52RC-DIP40 560R6 GND 560R7 560R8 560R9 560R10 560R11 560R12 560R13 1 2 3 4 5 6 7 8 9 RP-1 RP9 VCC P00 P01 P02 P03 P04 P05 P06 P07 XTAL1 XTAL2 P20 P21 P22 P23 P24 P25 P26 P27 VCC P10 SW1 SW2 SW3 单片机处理模块 SW4 12 Y1 30pF C4 30pF C5 S1 S2 S3 GND XTAL1 XTAL2 SW1 SW2 SW3 GND 键盘模块 时钟电路模块 GND S4 复位电路模块 10K R15 VCC SW4 10uF C6 GND 1 DQ 2 VCC 3 U1 DS18B20 VCC P10 GND 温度传感器模块 姓名 班级 比例 图号 共2张第1张 A3 孙炳全 B自动化092 专业 学号 课题 名称 图名 自动化 0910603219 基于单片机的果园环境 温度检测检测报警系统 盐城工学院 设计 审核 日期 孙炳全 电路原理图2013.5.20 Q5 LS1 Speaker 1KR14P01 VCC GND 报警电路模块 5V 1 D- 2 D+ 3 GND 4 P 5 母头 USB1 USB 220uF C1 104 C3 D1 220uF C2 1K R5 VCC GND电源模块 Q4 1K R4 Q3 1K R3 Q2 1K R2 Q1 1K R1 VCC S1 S2 S3 S4 P02 P03 P04 P05 S1 12 a 11 f 10 S2 9 S3 8 b 7 e 1 d 2 dp 3 c 4 g 5 S4 6 共阳 P20 P21

温馨提示

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

评论

0/150

提交评论