版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要 环境温湿度检测系统是日常生活、工业生产和农业管理中广泛使用的一种设备。该设备具备以下主要功能:实时检测出环境中的温度和湿度参数值,并显示出来,根据设定的报警限予以报警指示,可以和上层控制器通信。 随着单片机的大规模应用,单片机在检测系统中也越来越多的被使用。本设计以at89s52这款低功耗、高性能、在系统编程的8位单片机为系统控制处理核心,由单总线数字温湿度传感器dht11、数码管显示屏、led与蜂鸣器、通信串口和按键控制输入等五个部分组成,从而实现环境问世的监测系统的主要功能。后期的探索设计换用红外遥控控制和lcm为显示屏、外加时钟和存储芯片、增加照度检测电路,极大地提升了系统的性能
2、,使系统不仅可以检测并显示环境温度、湿度和照度变量,而且可以按照时间顺序存储适量的数据。 此外,系统有降压整流和稳压滤波电路,可用交流市电(220v)、各种安全直流电(524v)、太阳能电池等为系统供电,并且可以存储少量电能(900mah),因此,系统有较宽的工作电压,可满足多种应用场合。本设计由protel画出了电路原理图和pcb图,并由此完成了硬件的制作,使用c51语言对单片机进行编程控制,并模块化仿真,最后通过综合调试,符合预期的设计要求。关键词:at89s52单片机 dht11传感器 pcb设计 温湿度检测abstract environment temperature and hum
3、idity detection system is a kind of equipment which is widely used in daily life, industrial production and agricultural menagement.the equipment has following main function:detecting the temperature and humidityparameters in the environment real-time and display them,giving alarm indication accordi
4、ng to the set limits, and being able to contact with upper controller. with the scm used large-scalely,the scm is more and more used in detection system.this design,uses the 8-bit scm named at89s52,which has a lot of advantages such as low-power dissipation,high-performance and isp,and made up of fi
5、ve parts:single-wire digital temperature and humidity sensor,digitron display,led andbuzzer, serial comunications and keys input,thus perform the function of environment temperature and humidity detection system.the exploration design in later stage,including infrared remote control and lcm display,
6、clock and memory chips,and illumination detection circuit,immensely promotes the property of the system,makes it not only detecte and display the temerature,humidity and illumination,but also store some data in order of time. in addition,with step-down rectifier and stabilivolt filter circuit,the sy
7、stem can use utility power ac220v,different safety dc524v,solar battery to supply power,and store some electric energy about 900mah,so that it has a wide power supply voltage and meets different application places. the design gives the circuit design schematics and pcb diagram with protel, and compl
8、etes the hardware part of the production, and uses c51 language system to accomplish the control program of scm,and simulates every part successfully.through the synthetical debugging,the design achieves the required designs.key words:at89s52 scm,dht11 sensor,serial communication,temperatureand humi
9、dity detection,pcb design 目 录 第一章 前 言11.1 设计的目的意义调查11.2 设计的市场现状分析21.3 设计的内容要求说明31.4 设计的实施方案构想4第二章 硬件的设计52.1 单片机的选用52.2 传感器的选用72.2.1 初期设计72.2.2 最佳方案82.2.3 电路设计92.3 数码管驱动电路设计102.3.1 数码管的选用102.3.2 驱动电路的设计102.4报警电路设计122.4.1 蜂鸣器驱动电路132.4.2 led驱动电路132.5控制输入电路设计142.6 串口通信电路设计162.7 稳定电源电路设计172.8 系统三大部分的pcb设
10、计182.8.1 系统主体部分pcb设计192.8.2 串口通讯pcb设计202.8.3稳压电源部分pcb设计21第三章 程序的设计233.1 程序功能描述、单片机内部资源分配和程序流程图233.1.1 程序功能描述233.1.2 单片机内部资源分配两个定时器的分工233.1.3 程序的流程图243.2 编程语言和工具的选择以及程序文件的分配253.2.1 编程语言的选择253.2.2 编程工具的选择263.2.3 程序文件的分配263.3 传感器通信程序设计273.3.1 握手确认273.3.2 数据传送283.3.3 相关问题解决方案313.4 数码管扫描程序设计323.5 报警及设置程序
11、设计333.5.1 报警驱动333.5.2 报警值调整343.6 按键扫描程序设计343.7 串口发送数据程序设计363.7.1 波特率设置363.7.2 数据发送格式373.7.3 发送方式373.8 keil 综合编译和结果分析、程序下载383.8.1 综合编译情况和结果分析383.8.2 生成hex 文件下载至单片机中40第四章 系统后期探索优化设计简介414.1 换用红外控制和lcm 显示的探索414.1.1 红外控制414.1.2 lcm 显示444.2 增加实时时钟和存储芯片来记录数据的探索484.3 增加照度检测电路的探索50结束语54参考文献56附录57附1 单片机驱动程序57
12、附2 硬件制作元器件安装图、 布线图78第一章 前 言本章主要叙述了温湿度检测系统设计的一些基本情况,包括目的意义、市场现状、设计要求和实施方案等几个部分。 1.1 设计的目的意义调查现代社会,随着国家的经济不断发展,人们的生活水平逐渐提高,在衣食住行基本满足之后,追求一种健康长寿的生活方式已经成为时代的潮流。家庭居室,工作场所是人们每天较长时间生活的两个环境,而环境中的温度和湿度变化则和人们的生理、心理等身体健康状况息息相关。相关研究结果摘录如下;据生理学家研究,室内温度过高时,会影响人的体温调节功能,由于散热不良而引起体温升高、血管舒张、脉搏加快、心率加速。冬季,如果室内温度经常保持在25
13、度以上,人就会神疲力乏、头晕脑胀、思维迟钝、记忆力差。同时,由于室内外温差悬殊,人体难以适应,容易患伤风感冒。如果室内温度过低,则使人体代谢功能下降,脉搏、呼吸减慢,皮下血管收缩,皮肤过度紧张,呼吸道粘膜的抵抗力减弱,容易诱发呼吸道疾病。因此,科学家们把人对冷耐受”的下限温度和”冷耐热”的上限温度,分别定为11度和32度。然而,人的体感并不单纯受气温或气湿两种因素的影响,而是两者综合作用的结果。通过实验测定,最适宜的人的室内温湿度是:冬天温度为18至25度,湿度为30%至80%。夏天温度为23至28度,湿度为30%至60%。在此范围内感到舒适的人占95%以上。在装有空调的室内,室温为19至24
14、度,湿度为40%至50%时,人会感到最舒适。如果考虑到温湿度对人思维活动的影响,最适宜的室内温度应是工作效率最高的值。温度应是18度,湿度应是40%至60%,此时,人的精神状态最好,思维最敏捷。因此,随时关注环境的温湿度变化而由此采取措施对人们的健康生活和高效工作有着重要的意义。除此之外,工业生产、农业管理和医疗护理等环境中的温湿度也是两项重要的检测控制参数,对安全生产、粮食丰收和病人康复等意义重大。部分要求数据如下:由此看来,研究设计环境温湿度检测系统十分有必要。1.2 设计的市场现状分析 纵观市场,温湿度检测技术已经比较成熟,已有的各种温湿度检测产品,五花八门,犹如八仙过海,各显神通,如a
15、2000家用温湿度报警表、yd-808a工业用温湿度显示器等产品。从功能上分析这些产品可以看出,一个比较完整的环境温湿度检测系统应该具备以下主要的四个功能: (1)实时检测出环境中的温度和湿度参数; (2)检测的参数值显示在显示设备上(如数码管,液晶显示器等); (3)根据环境要求,设定温度湿度报警的上下限值,并实时报警; (4)与上层监控设备通信(如pc),实现数据传输(双向或单向);因此,本设计也应该具备这些功能,并且对每一个部分进行优化设计,也可以扩展系统功能。除了功能上的分析之外,再看这些产品的造价和供电情况,有以下两个问题:(1)价格太高,不符合普通消费者的消费水平,如a2000家用
16、温湿度报警表,淘宝网上售价300左右;(2)供电都比较单一,规定在直流6v,9v,12v或交流220v等,除了购买产品主体之外,还需要一个特定的电源适配器;综上所述,本设计设计出的环境温湿度检测系统,除了具备市场上已有产品的功能之外,还应尽量降低制作价格,确保有较宽的工作电压。1.3 设计的内容要求说明根据上述市场调查情况和毕业设计任务书的要求,本设计的研究内容包括以下几个方面:1、基本要求(1)主要检测环境变化中的温度和适度参数;(2)温湿度参数显示在led数码管屏幕上;(3)可以设置温湿度报警点,并能按照设置实时报警;2、控制要求(1)根据需求,温湿度数据可以发送给上层监控设备,如普通电脑
17、等;(2)可以按照时间顺序,以一定格式将温湿度数据导出保存,以便进行再分析处理;3、制作要求(1)造价低廉,工作可靠;(2)工作电压较宽,满足不同的供电测试条件;(3)做出产品样机,调试通过,可以正常工作;因此,本温湿度检测系统的设计应以这三方面的要求为依据,从而进行各个部分的详细设计。1.4 设计的实施方案构想基于单片机的环境温湿度检测系统实施方案构想如下:1、由温度和湿度传感器对环境中的温度和湿度变量进行采样;2、单片机和传感器通信,获得采样数据并暂存;3、单片机对数据进行预处理(如校验等),对有效数据再进行以下四种处理:(1) 驱动显示电路,把数据显示在数码管上;(2) 扫描输入的控制信
18、号,设定报警限值;(3) 根据设定的报警,驱动报警电路工作,予以报警指示;(4) 扫描输入的控制信号,根据需要发送数据给上层设备,在设备上进行数据再处理或保存;4、 在系统供电端有稳压滤波电路或电能存储器件,保证系统正常工作;5、 选用价格低廉的器件或设计电路,减少花费;6、 在以上方案都实施的情况下,对系统进行优化创新设计,强化功能; 因此,本系统的设计应按照这个思路进行具体设计,把每一步的构想转化为现实的设计。系统的结构图如下:第二章 硬件的设计根据绪论中的分析说明,可以明确温湿度检测系统的硬件电路分为电源稳压、传感器检测、数码管显示驱动、报警驱动、输入控制、数据发送等六大部分,其中后五个
19、部分都以单片机为核心,由单片机来进行控制处理,因此单片机的选用至关重要。2.1 单片机的选用 自从20世纪70年代,因特尔公司推出第一代单片机以来,单片机的发展如雨后春笋。各大电气商、半导体商根据不同的控制需求,尤其在嵌入式系统控制方面,以因特尔公司的51单片机的框架结构为基础,研发了各种各样的、功能强大的单片机。而今,我们已经进入了一个单片机可广泛选择的、百花齐放的时代。因此,选用一款价格低廉,性能优良的单片机已不再困难。在mcs-51单片机8051的基础上,atmel公司开发的at89系列的单片机自问世以来,以其较低廉的价格和独特的程序存储器快速闪存器为用户所亲莱,尤其是at89s52这款
20、单片机,它有以下几个特点:1、与mcs-51单片机产品兼容,完全可采用51指令系统用汇编或c51编程;2、8k字节在系统可编程flash存储器,并且有1000次擦写周期,这使得。调试程序和下载程序十分方便;3、全静态操作,工作频率范围为0hz33mhz,频率范围宽,便于系统功耗控制;4、三级加密程序存储器,使程序和系统更加难以仿制,确保了产品的知识产权;5、32个可编程i/o口线,每个i/o都可以独立或联合使用,实现不同的数据操作,而且pi端口的高三位第二功能为isp编程,实现在系统调试;6、三个16位定时器/计数器,其中定时器2也可以作为串口波特率的产生;7、八个中断源,分为两个优先级,可软
21、件设置;8、一个全双工通用异步接收发送数据借口,以便与外设进行串行数据通信;9、有低功耗空闲和掉电模式,掉点后可由中断唤醒,可设置掉电标识符;10、宽工作电压范围,vcc为2.75.5v,与ttl电平和cmos电平兼容;总之,at89系列单片机与mcs-51系列单片机相比,前者和后者有兼容性,但前者的性能价格比等指标更为优越。因此,选用at89s52单片机可实现温湿度检测系统的功能,下图为该单片机的dip40封装外观和引脚功能:图2-1 单片机的引脚图根据单片机的推荐外围电路,复位(10k电阻,10uf电容)、晶振(12mhz,电容22pf)电路设计如上图所示:图2-2 单片机复位电路图2-3
22、 单片机晶振电路2.2 传感器的选用 2.2.1 初期设计本设计的初期构想是用一个温度传感器和一个湿度传感器来检测环境中的温度和湿度参数,其中温度传感器选用单总线数字温度传感器ds18b20,湿度传感器选用数字式湿度传感器sht11,则检测部分功能框图如下:图2-4 传感器初期设计方案比较ds18b20和sht11,这两个传感器的通信都比较复杂,具体过程为:主机发起通信、传感器确认通信、主机给传感器写命令字、传感器给主机发送检测数据,且sht11还要求外部输入串行时钟信号。这种通信的复杂,不仅体现在硬件电路的设计上,而且体现在程序的设计上,并且串行通信对时序要求比较严格,这样对单片机来说将是一
23、个巨大的挑战,何况单片机还要进行其他的后续控制处理。除此之外,这两大传感器的价格都不菲,ds18b20在8元左右,而sht11则在50元左右,这对支付能力也是一个巨大的考验。因此,这种方案不可取,必须寻求其他的传感器解决方案,从而简化硬件电路和程序设计,让单片机有更多的内外部资源来处理后续操作。2.2.2 最佳方案后期采用单总线数字温湿度传感器dht11。这款传感器由广州奥松电子科技有限公司研发,与单片机的通信十分简洁方便,无需外接时钟信号,通信如下:图2-5 单总线数字温湿度传感器dht11与单片机通信除此之外,它还有很多突出的优点:(1)温湿度传感器的一体化结构能同时对相对湿度和温度进行测
24、量,并以数字信号输出,从而减少用户对信号的预处理负担;(2)独特的单总线数据传输线协议使得读取传感器更加便捷,而且还有全部校准数据字节,编码方式为8位二进制数;(3)40位二进制数据输出,高位先出,格式为:湿度整数部分8位,小数部分8位;温度整数部分8位,小数部分8位,最后8位为校验字节,为前32位数据的和。(4)宽工作电压,几乎与at89s52的电压相同,为35.5v,而且功耗较低,通信最大电流为2.5ma。其简要的性能参数如下表所示;表2-1 温湿度传感器dht11性能参数从表中可以看出,它的测量范围较小,但对实验或民用已经足够了,如果要工业使用的话,可选用该公司的同类工业级产品am323
25、,测量范围为-55.0+125.0度,测量范围为0.0100.0%rh,并且可以和dht11完全互换。2.2.3 电路设计 按照说明书的要求,dht11与单片机的连接距离小于20米时,需要在vcc和data引脚之间接一个5k左右的电阻,因此电路设计如下:图2-6 温湿度传感器dht11与单片机连接电路 至此,传感器的硬件电路设计完成,另一部分的工作就是编程问题,在下一章节介绍。2.3 数码管驱动电路设计2.3.1 数码管的选用 由于温湿度传感器dht11 测温范围为050,测湿范围为2090%rh,温度和湿度都是两位数据,因此可以用两个两位一体的数码管来显示温湿度数据,共阴极或共阳极都可以,本
26、设计中选用两个型号为fjs5202fh 型共阳极红色两位一体的数码管。2.3.2 驱动电路的设计 数码管驱动软件设计有两种方案,一种是静态驱动,即四位数码管的段选信号和位选信号,分别接入控制器的端口,需要84+4=36 个端口;另一种是动态驱动,段选信号线公用,而位选信号分开控制,需要8+4=12 个端口。考虑到单片机可用的i/o 引脚只有32 个,为不扩展引脚而外加芯片,因此采用动态驱动方式较合理。数码管驱动电路一般也有两种设计方案,一种是使用八d 锁存芯片74hc373或74ls373 锁存驱动,另一种是用三极管放大驱动。市场上74hc373 芯片较74ls373 芯片价格便宜也为2 元左
27、右一块,而三极管只有0.2 元左右,四个三极管共8 角钱,相对来说比较经济实惠,因此选用后一种方案。而相关器件电气参数为: (1)红色共阳极数码管(实际上是八个并联的红色led)的电压范围1.52.0v,最大工作电流为20ma8=160ma; (2)单片机每个引脚灌电流(外部电流流入单片机)大约为24ma,拉电流(单片机电流流入外设)小于1ma。根据这两项参数,初步确定三极管选用90 系列pnp 型,用集电极接数码管位选引脚,基极用电阻限流后接单片机引脚予以位选控制。再考虑数码管电流的限定,符合要求的三极管只有8550 和9012,其简要参数见下表:表2.2 可选三极管参数由表可以看出,855
28、0的电流和功率都很大,既浪费资源又不利于降低系统功耗,因此选用9012较为合适。因此,这部分的电路设计如下:图2.7 数码管段选信号与单片机连接电路图2.8 数码管位选信号与单片机连接电路用单片机p0 端口作为数码管段选信号,p2 端口的高四位作为位选信号,四个电阻的粗略大小为:r=(vcc-veb)/ib=(5.5v-0.7v)/1ma=4.8k,可选用e24 系列的电阻4.7k 或5.1k。2.4报警电路设计本设计需要指示一种温湿度正常状态、一种数据发送状态和四种超限报警状态,即温度超下限,温度超上限,湿度超下限,湿度超上限,可采用简单的声(蜂鸣器)光(led)报警电路。led 颜色和状态
29、及蜂鸣器状态分配如下表所示:表2.3 报警指示状态分配注:“”表示led 熄灭或蜂鸣器无声。2.4.1 蜂鸣器驱动电路根据蜂鸣器的参数:电压1.31.5v,电流2080ma,电阻68 知,可用选用集成放大芯片lm386 驱动,但更经济的是用一个三极管9012 或8550 驱动即可,电路如图所示:图2.9 蜂鸣器报警驱动电路2.4.2 led驱动电路根据led 的参数:电压1.52.5v,电流1020ma,则可用一电阻对电源进行下拉,限流分压后,led 阴极接入单片机予以控制,电阻阻值大约为:r=(vcc-vled)/i=(5.5v-2v)/10ma=350,选用330 或360 的电阻即可,具
30、体电路如下图所示:图2.10 报警led驱动电路2.5控制输入电路设计本设计的控制输入部分为简单的三个按键,由于单片机默认状态下端口引脚为高电平,可以接上按键与地相连,单片机检测按键端口的电平情况来决定是否有按键按下和哪个按键被按下,抖动问题采用软件延时方式,减少硬件电路设计,电路如图所示:图2.11 控制输入按键连接电路经过上述对各个模块的分布设计,现在可给出系统主体部分的原理总图。图2.12 系统主体部分原理总图考虑到 pcb 设计单面板布线的可行性,单片机的外部资源(端口引脚)分配按下进行:传感器dht11 数据线p11;蜂鸣器hxd 驱动三极管基极p10;程序调试isp 插座p15、p
31、16、p17;按键key1、2、3p32、p33、p35;串口rxd、txdp30、p31;数码管段选信号、位选信号p0、p23、p24、p25、p26;led 绿、黄、红p22、p21、p20。2.6 串口通信电路设计单片机at89s52 有一个全双工的uart 接口,即rxd(p3.0)和txd (p3.1),因此可以用来和上层设备如pc 通信,但是由于pc 的串口使用rs232 电平通信协议,而单片机使用ttl 电平通信协议,这两种电平的特点见下表:表2.4 rs232和ttl电平标准比较比较两表,可以看出rs232 电平和ttl 电平并不兼容,为使单片机和pc 通信,必须先转换电平,可
32、采用新型集成芯片max232 实现数据发送转换和接收转换的双重功能,依据芯片手册上的推荐电路,经合理简化后设计的串口发送数据部分电路为:图2.13 通信串口电路其中j1 与单片机串口相连,j2 经针脚到插孔的rs232 数据线与电脑相连,即可实现电脑和单片机的全双工通信。2.7 稳定电源电路设计按照设计要求,系统供电要求多样化,除了交流220v 的市电是必用的外,还应该具备其他供电要求,如太阳能电池,各种安全直流电压源等,而且还应该有一定的蓄电能力。考虑到市电电压太高且为正弦变化,而太阳能电池输出电压不稳定等问题,必须要对市电进行降压,对变动的电压进行稳压,而单片机系统的电压要求在5v 左右,
33、因此,可考虑用集成稳压模块lm7805 进行终端稳压。lm7805 是三端正5v 电源稳压器件,输入电压为直流524v,输出电压为4.85.2v,最大允许电流为1.5a,有电流限制、热过载保护和短路保护功能,确保输出电压正常稳定。具体电路设计如下:图2.14 稳压电源电路该电路有四个电源插座,其中j1 为市电ac220v 供电输入,j2 为太阳能电池或其他输出直流为524v 的电压源的输入,j3 为充电输出接口,可为充电电池(1.2v4 只)恒流充电,j4 为系统供电+5v 电压输出端口,由此接到系统的电源端。当用市电供电时,先经过220v/12v 的变压器t1 把电压降低至有效值为12v的交
34、流电,再用电桥br1 进行全波整流为有效值12v(峰值大约为17.0v)的脉动电压,然后前置电容ec1 和c1 滤波,经lm7805 稳压并后置电容c2 滤波,输出大约为稳定的+5v 直流电,一部分为系统供电,另一部分为电池充电,通过调节电位器cr1 可调整充电电流,给不同的电池充电。 led1 为电源指示灯。当用太阳能电池等输出为直流电的电源设备时,直接接入j2 端口,亦可为系统供电。使用这种设计,可以确保系统有较宽的工作电压,并且可以存储少量电能,从而达到在不同场合供电的目的。2.8 系统三大部分的pcb设计在protel99 中新建设计文档,根据以上分析,画出系统主体部分、串口通信部分和
35、电源部分的原理图,并选择合适的封装外形,设计相应的pcb 图。三部分的pcb 图及设计时应注意的问题简要介绍如下:2.8.1 系统主体部分pcb设计图2.15 系统主体pcb图设计要求:(1)传感器的安装位置传感器必须安置在pcb 的边缘位置,不仅应确保没有发热吸湿的器件在其附近,而且传感器的感温感湿栅窗应朝向外部,否则可能会影响传感器对外部环境中温湿度的测量,如图2.15 左下角的插座j2 即为传感器的安装位置。(2)数码管的布线不仅数码管的引脚较多,与单片机的连线也较多,而且制作实验硬件使用的是单面板,只能在底面布线,因此,在布线的时候应该综合考虑三方(单片机、数码管和单面实验板)的特点,
36、选择合理的布线方案。为保证多在底面布线,本设计对数码管采用变码布线,即数码管adp 段并没有和单片机p00p07 一一对应,而且位选信号线和部分段选信号线在顶面布线,详细情况如图2.15 所示,其中dg1 和dg2 为数码管。(3)电源开关、插头插座和按键的位置电源开关、插头插座和按键是经常使用的器件,为方便操作,需要安装在边缘位置,和其他元件的距离不应过小。如图2.15 中的sw1、j1、j3、key-r、key1key3 以及isp1 等。(4)单片机的位置单片机是系统的核心,为了便于安装和更换,单片机的周围不应放置过多元件,留有余地。(5)布线要求布线不应过密,特别是dip 封装的元件,
37、引脚之间禁止布线,否则可能导致连线短路或信号相互干扰。2.8.2 串口通讯pcb设计图2.16 串口通信部分pcb图设计要求:(1)芯片安装位置芯片u1 的凹槽朝向j2,便于和j2 连线。(2)电容封装选择由于电容c4 引脚间有布线,封装应选用中间可布一线的外形,或把引脚间距较小的间距拉大,确保可布一线。(3)j2 的焊盘尺寸j2 的两端的固定焊盘应适当加大,以增强焊接力。因为串口插头较大,而且会有频繁的插拔,若固定焊盘过小,可能出现松动。2.8.3稳压电源部分pcb设计图2.17 电源部分pcb图设计要求:(1)高压部分j1 为ac220v 的插头,t1 为ac220v/12v 的变压器,这
38、两个器件在设计时应考虑安全问题。j1 的引脚间距应加大,t1 的输入输出线应适当加粗,确保高压隔离和大电流散热良好。(2)稳压器件的位置当lm7805 工作电压高于5v 时,会有较大热量产生,因此在设计时应放在pcb 边缘通风散热良好的地方,并且散热片朝向外部。根据上述三部分的pcb 图,用万用板和相应元器件焊接制作实验硬件,依据设计用细裸导线布线,完成三部分硬件的制作。第三章 程序的设计本章依据已经设计好的的硬件,选用合适的语言给每一个模块设计驱动程序,最后综合编译,生成下载文件。程序文档由传感器通信、数码管动态扫描、led和蜂鸣器报警、按键输入检测和串口发送数据五个部分组成。3.1 程序功
39、能描述、单片机内部资源分配和程序流程图3.1.1 程序功能描述程序设计的目的是控制单片机引脚的电平变化,从而控制相应外围电路按照要求工作,这些控制包括单总线温湿度传感器的数据获取、数码管的动态扫描显示、led 和蜂鸣器的联合驱动报警、按键信号检测和串口数据发送,并且这些控制必须保持协调统一、可靠稳定地实现系统的要求功能。3.1.2 单片机内部资源分配两个定时器的分工数码管的显示在本系统中为关键部分,它的显示有连续性(扫描两位之间时间差不能过大,否则会断续显示)和暂留性(每一位显示的停留时间不能过短,否则亮度不高),因此采用默认中断优先级较高的定时器0 进行中断动态扫描,扫描时间定为1 毫秒。报
40、警led 和蜂鸣器的状态变化也应该有实时性,否则会出现报警滞后的问题,因此用定时器1 进行中断报警扫描,蜂鸣器的响声用最简单的“滴滴”声响,采用频率为5hz 的方波,而led 的闪烁也同步进行,扫描时间定为100 微妙。此外,在串口发送数据期间,由于单片机本身要求,定时器1 用作波特率产生器。其他控制部分在主函数中进行或附加在定时器的中断服务中,但中断服务不能处理太多操作,否则程序执行效率很低。3.1.3 程序的流程图根据单片机的特点和系统各部分的运行时序,经过多次试验,最后确定系统高效稳定工作的执行顺序为:开始初始化并启动两个定时器扫描按键判断按键值执行相应功能完毕返回至按键扫描,其中定时器
41、0 中断服务扫描数码管每隔1 秒获取传感器数据,定时器1 中断服务报警判断(低温,高温,低湿,高湿),重复进行此过程,即可实现系统循环工作。详细流程图如下图所示:图 3-1 系统程序流程图3.2 编程语言和工具的选择以及程序文件的分配3.2.1 编程语言的选择从程序的流程图可以看出,系统的程序较为复杂,如果选用执行效率相对较高的汇编来书写,代码会很长,阅读不便,并且调试也很困难。为了提高程序的可读性和调试的便利性,选用c 语言来编写。c 语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可执行性好,而且c 语言既有高级语言的特点,也有汇编语言的特点,能直接对单片机硬件进行操作,
42、因此使用起来十分方便。当然,c 语言和mcs-51 单片机结合之后产生的c51 语言,与标准的c 语言还有一定的差别,编程的时候应该注意这些问题。除此之外,c51 的强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,这使得程序代码简单,结构清晰,易于调试和维护。特别是本征库的9 个函数,虽然少,但都非常有用,其头文件为intrins.h,主要功能为按位循环左移或右移,位测试等。3.2.2 编程工具的选择由于单片机种类繁多,各大公司都纷纷开发了自己的编程软件,而keil c51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、plm 语言和c 语言的程序
43、设计,界面友好,易学易用。此外,keil 还支持自动添加多款单片机的编译预处理文件,包含各类单片机的头文件,如51 单片机的头文件reg51.h。3.2.3 程序文件的分配经过上述分析,程序可用五个c 文件来存放五个功能独立的程序模块,另外有一个公共调用的延时函数文件和主函数文件,此外,各部分还有相应的调用头文件来进行连接,从而实现了程序和硬件对应,设计模块化,调试更为方便。具体文件分配如表:表 3.1 系统程序文件分配3.3 传感器通信程序设计由于dht11 为单总线通信器件,为了确保单片机成功与其通信,编写的程序必须严格遵守它独特的通信协议。dht11 的通信由两部分组成握手确认和数据传送
44、。3.3.1 握手确认先来看说明书中的时序图:图 3-2 传感器与单片机握手确认时序从图中可以看出,传感器和主机相互确认的过程为:未通信时,通信线保持高电平;通信开始后,主机先拉低电平至少18 毫秒,用以确保传感器可以检测到主机信号,之后主机再拉高电平2040 微妙等待传感器响应;传感器响应后,先拉低电平4050 微妙,予以通知主机,再拉高电平同样的时间之后就转入数据传输时序,握手通信也就结束。部分程序如下(dht 为通信端口):/主机与dht11 通信开始dht=0;/主机先拉低总线电平/调用延时函数,延时18 毫秒dht=1;/再拉高总线电平/调用延时函数,延时40 微妙dht=1;/拉高
45、电平,设置总线为输入状态if(!dht)/如果dht11 输出低电平响应,就开始接收数据while(!dht);/先等待dht 响应的低电平结束4050 微秒while(dht);/再等待dht 响应的高电平结束4050 微妙/下面开始接收数据3.3.2 数据传送还是先来看说明书中的时序图。图 3-3 传感器发送数据0 时序图 3-4 传感器发送数据1 时序从图中可以看出,在数据传输时,单片机只要按照时序检测传感器输出的电平信号即可得到一位数据,具体要求为:无论数据是0 还是1,都以1214 微妙的低电平开始,之后,若数据是0,则传感器拉高电平并保持2628 微妙;若数据是1,则传感器拉高电平
46、并保持116118 微妙,如此连续进行,送出40位的数据。由于电平变化时间是以微妙计算,非常小,因此写程序时必须要严格精确的控制时间,这在设计时有两个探索过程。 (1)初期构想定时器精确计时法晶振为12mhz 时,定时器最小定时为1 微妙,先声明一个大小为40 的无符号字符型数组,用来存储定时器获得的40 个微妙数,单片机计时过程如下:图 3-5 定时器计时接收数据流程 那么这样就得到了40 个微秒时间数,再对这40 个时间数进行判断,得到数据0 或1,从而得到温湿度数据。 经过分析和试验发现,这样处理,单片机的数据量会比较大,而且定时器的启动和关闭、数组的操作会额外花费很多时间,这就导致虽然
47、定时器计得很精确,但是总的来说,并不是很精确,而且传感器的输出也会有一定的误差,因此这种处理数据的方式不可取,必须寻求新的解决方案。 (2)合理方案超时修改判断法经过后期的不断实验分析,采用以下方案较为合理:图 3-6 超时修改数据流程 这种方案正是利用了数据0 和1 高电平的时间不同来判断数据,先认为是数据0 的时间(2628 微妙),延时30 微秒越过这个时间已经足够了,再检测数据线是否仍然为高电平,如果是高电平就修改数据为1,并且等待数据1 剩下的高电平结束,分字节接收,因此程序简要如下: while(!dht);/先出现低电平约12-14 微秒,等待结束 /延时30 微秒,越过数据0
48、的高电平时间2628 微秒 temp_data=0x00;/先判定数据为0 if(dht)temp_data=0x01; /如果数据0 高电平超时,则修改为数据1 while(dht);/等待数据1 剩下的高电平时间结束,大约118-30=88 微秒/以下为接收数据处理程序3.3.3 相关问题解决方案 (1)精确延时函数 毫秒延时: / 一次for 循环大约8 个机器周期,加上while 判断和函数调用、返回,大约共1208+40= 1000us=1ms void delay_ms(unsigned int ms ) unsigned char temp; while(ms-) for(tem
49、p=0;temp120;temp+); 10 微秒延时: /nop 一次1 个机器周期,加上函数调用和返回各2 个周期,共6+22=10us void delay_10us() _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); (2)采样传感器数据的时序安排 前期设计时,定义了两个温湿度全局变量,中断使用这两个变量来显示数据;而主函数则采样传感器,修改这两个全局变量,这种看似没有问题的设计,在实验时却始终得到的是乱码数据。结合相关资料和分析实验结果后发现,这种设计的问题就在于中断和主函数可能同时访问了这两个变量,并且主函数在修改全局变量
50、时可能被中断打断,导致温度或湿度数据只修改了几位,就被迫送入数码管显示,显示的当然也就是乱码了。 数据的修改和显示应遵从程序执行的时序,即先修改数据再显示或先显示再修改数据。考虑到传感器通信并不复杂,且最坏情况也为25 毫秒左右,因此可在中断扫描数码管之前或之后,定时1s 来读取传感器,这样安排程序位置后,经调试,系统显示数据正常。3.4 数码管扫描程序设计 根据硬件电路的设计,数码管采用动态扫描方式驱动,而动态扫描方式较多,在这里选用switch-case 结构完成。 在设计硬件时,为了方便在单面板上布线,共阳极数码管采用了变码编码方式,即数码管的adp 段和单片机的p00p07 并不对应,
51、实际安排为:表 3.2 数码管段选信号线安排因此,10 个数字和报警设定显示符号的编码定义为下表方式:表3.3 数码管显示符号编码 注:编码为十六进制,其中“”和“”代表温度和湿度,“l”和“h”代表低和高,如数码管前两位显示“l”时,代表正在进行低温报警值设定。 当数码管显示实时温湿度数据时,前两位显示温度,后两位显示湿度;当数码管处于报警设定时,前两位显示当前设定的内容,后两位显示设定的值,如h、60,表示当前设定的为湿度上限,值为60%rh。以下为显示实时温湿度数据的部分程序: switch(seg_order) case 0:bit4=0;p0=segtemperature /10;b
52、reak;/显示温度高位 case 1:bit3=0;p0=segtemperature %10;break;/显示温度低位 case 2:bit2=0;p0=seghumidity /10;break;/显示湿度高位 case 3:bit1=0;p0=seghumidity %10;break;/显示湿度低位 显示完毕后修改seg_order 的程序为: seg_order+; seg_order&=0x03;/超过四位后就返回第一位,从而显示下一位数码管。3.5 报警及设置程序设计报警程序包括两个部分,一为报警驱动信号,另为报警值调整。3.5.1 报警驱动 这部分的程序较为简单,主要是作温
53、湿度超限的简单判断并为蜂鸣器和led引脚送出电平信号即可 如,蜂鸣器闪烁报警时信号为buzzer=buzzer;红色led 熄灭为led_r=1。3.5.2 报警值调整 程序设计思路为,进入某个限值设定状态时,先修改数码管显示状态全局变量,使其显示调整结果;再进入一个死循环,在循环中扫描按键,根据不同的按键执行相应操作:结束本次调整、调整值加一或调整值减一,流程如图。图 3-7 报警值调整流程 如此进行四次,设定四个报警点,最后再把四个子函数放入一个主调函数中,即可实现一次完整的报警调整操作。3.6 按键扫描程序设计由于系统只有三个按键,个数少,可采用if-else 结构逐个扫描,采用经济型的
54、延时去抖动法,为了保证按键可靠被按下,实验表明,按键短按一次总的时间大约为300 毫秒,因此按键按下抖动时间、按下时间和按键释放抖动时间的延时共300 毫秒为宜,而键key1 为多功能键,有长按和短按之分,具体安排如下:表3.4 按键与键值分配注:多功能键 key1 可靠短按总时间定为500 毫秒,只要超过此值即认为0 是长按,依旧采用超时检测法程序简要如下。 if(key1=0)/先扫描1号按键 delay_ms(500);/延时500毫秒越过短按时长 if(key1) while(!key1);/等待按键释放 delay_ms(100);/长按释放去抖 return key_m;/返回键值
55、 else return key_r else /剩下程序为扫描2,3号键 3.7 串口发送数据程序设计由于串口发送数据时,需要用定时器1发生波特率,而且用较高的波特率发送数据时,定时器0也不能正常工作,因此在发送数据时,两个定时器的中断服务函数都被禁止访问,因此需要关闭数码管,关闭喇叭,而且还要重新初始化定时器为产生波特率,返回时再初始化为之前状态,恢复显示与报警。因此,串口数据发送有三个问题:波特率设置,发送格式,发送方式。3.7.1 波特率设置为保证单片机和pc之间通信的实时性,再考虑定时器1的本身可以设置的大小,采用br=2400bps的波特率比较合适。定时器采用自动重装方式2,初值计算为:由此对单片机的串口相关内部资源设定如下:tmod=0x20;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2024版)国际货物买卖合同标的及详细条款
- 2024年度光伏发电设备购销合同
- 微交易课件教学课件
- 2024货物进口合同(范本)
- 2024年广西路分公司一级干线运输合同
- 2024年度数据处理与分析合作协议
- 2024个人房产抵押合同
- 2024年基因治疗技术开发合同
- 2024年度智能医疗系统开发合同
- 2024年度建筑施工安全环保技术创新与应用合同
- 全国高职高专英语写作大赛
- 微机原理与接口技术8259A练习题及答案
- 正方体的11种展开图
- 第15章《分式》教材分析课件(32张)
- 商铺装修工程施工方案.
- 西门子RWD68说明书
- 形式发票样本(Proforma Invoice)
- 医院车辆加油卡管理制度
- 数独题目高级50题(后附答案)【最新】
- 问题线索办理呈批表
- 学、练、评一体化课堂模式下赛的两个问题与对策
评论
0/150
提交评论