机房温湿度测控系统毕业设计_第1页
机房温湿度测控系统毕业设计_第2页
机房温湿度测控系统毕业设计_第3页
机房温湿度测控系统毕业设计_第4页
机房温湿度测控系统毕业设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、本科毕业设计论文(设计)基于单片机的机房温湿度测控系统设计二级学院专 业班 级学生姓名学 号指导教师2012年 03月 基于单片机的机房温湿度测控系统设计摘要: 随着温湿度检测系统的广泛运用,不同行业和领域对温湿度检测有着不同要求和标准。本系统采用 sht10 芯片作为温湿度传感器,四位数码管作为显示模块,蜂鸣器作为报警模块,键盘用来设定报警值,通过 stc89c52 单片机给 sht10发送指令来完成检测过程。采用 c语言来完成了各个程序模块的设计编程。实践证明,该系统电路简单、工作稳定、集成度高,调试方便测量精度高,具有一定的实用价值,能达到机房温湿度测量要求。关键词: sht10、单片机

2、、数码管、报警 、继电器temperature and humidity measurement and control system design based on single-chip microcomputerabstract:with the temperature and humidity of the detection system is widely used, in the difference of industries and field test temperature and humidity has different requirements , standar

3、ds.system uses sht10 chip as temperature and humidity sensor, four digital tube as display module, a buzzer as alarm module, the keyboard used to set the alarm value, through the stc89c52 microcontroller to sht10 send the instructions to completion of the inspection process. using c language to comp

4、lete each program module design programming. the practice proved that this system circuit is simple,work stable, and its integration is high, convenient debug and measurement accuracy, which has certain practical value and can achieve room temperature and humidity measurement requirements.key words:

5、 sht10 ,single-chip microcomputer, digital tube, alarm, relay目录一 温湿度检测的发展状况以及存在的问题11.1传统的温度和湿度检测系统主要有以下几种11.2 目的和意义11.3 国内外现状和发展趋势2二 系统总体方案设计32.1 单片机 stc89c5232.1.1 stc89c52主要特性42.1.2 stc89c52接口42.2 sht10温湿度模块62.2.1 sht10的主要特点72.2.2 引脚说明及接口电路72.2.3 命令与时序82.2.4 几点说明112.3 l 7805稳压块12三 系统的硬件设计与连接143.1

6、主控模块143.2 晶振及复位电路143.3 温湿度模块153.4 报警模块163.5 显示模块163.6 键盘173.7 驱动模块183.8 电源模块183.9 pcb图及实物连接193.9.1 pcb图193.9.2 实物图20四 系统软件方案的设计224.1 子程序流程图224.2 主程序流程图23五 总结与展望24六 参考文献25七 附件26一 温湿度检测的发展状况以及存在的问题1.1传统的温度和湿度检测系统主要有以下几种(1)水汽压(e):是水汽在大气总压力中的分压力。它表示了空气中水汽的绝对含量的大小,以毫巴为单位。(2)相对湿度(rh):湿空气中实际水汽压e与同温度下饱和水汽压e

7、的百分比,相对湿度的大小能直接表示空气距离饱和的相对程度。空气完全干燥时,相对湿度为零。相对湿度越小,表示当时空气越干燥。当相对湿度接近于100%时,表示空气很潮湿,越接近于饱和。(3)露点(或霜点)温度:指空气在水汽含量和气压都不改变的条件下,冷却到饱和时的温度。(4)干湿球温度表:用一对并列装置的、形状完全相同的温度表,一支测气温,称干球温度表,另一支包有保持浸透蒸馏水的脱脂纱布,称湿球温度表。(5)发湿度表(计):利用脱脂人发(或牛的肠衣)具有空气潮湿时伸长,干燥时缩短的特性,制成毛发湿度表或湿度自记仪器,它的测湿精度较差,毛发湿度表通常在气温低于-10时使用。(6)电阻式湿度片:利用吸

8、湿膜片随湿度变化改变其电阻值的原理,常用的有碳膜湿敏电阻和氯化锂湿度片两种。前者用高分子聚合物和导电材料碳黑,加上粘合剂配成一定比例的胶状液体,涂覆到基片上组成的电阻片;后者是在基片上涂上一层氯化锂酒精溶液,当空气湿度变化时,氯化锂溶液浓度随之改变从而也改变了测湿膜片的电阻。(7)薄膜湿敏电容:是以高分子聚合物为介质的电容器,因吸收(或释放)水汽而改变电容值。它制作精巧,性能优良,常用在探空仪和遥测中。1.2 目的和意义机房建设中机房环境监控是个很重要且必不可少的部分,机房里的设备往往造价高昂,对工作环境有比较严格的要求,如果温度或湿度超出设备的工作范围,轻则可造成设备死机无法正常工作,重则会

9、使设备造成不可逆转的损坏,更重要的是设备停止工作后会引起网络瘫痪等一连串的恶性反应,由此引发的间接损失更是不可估量。本文就为解决这一问题而设计的对机房的温湿度测控系统,保证机房的温湿度在额定范围值内,具有一定的实际意义。1.3 国内外现状和发展趋势机房的温度和湿度作为计算机设备正常运行的必要条件,必须在机房的合理位置安装温湿度传感器,以实现对温度、湿度进行24小时实时监测,并能在中控室的监测主机上实时显示各个位置的温湿度测量值。温湿度监测除用于机房监测外,还可以广泛应用于如生物制药、无菌室、洁净厂房、电信银行、图书馆、档案馆、文物馆、智能楼宇等各行各业需要温湿监测的场所和领域。我国温度测控设施

10、计算机应用,在总体上正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展。在技术上,以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统,与发达国家相比,存在较大差距。我国温度测量控制现状还远远没有达到工厂化的程度,生产实际中仍然有许多问题困扰着我们,存在着装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。当今世界各国的温度测控技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。目前开发和研制计算机数据采集控制系统的多因子综合控制系统成为趋势。随着智能检测系统的飞速发展,基于单片机的温湿度检测系统将多传感器系

11、统结合在一起。如何把多传感器集中于一个检测控制系统,综合利用来自多传感器的信息,获得对被测对象的可靠了解和解释,以利于系统做出正确的响应、决策和控制,是智能检测控制系统中需要解决的首要问题。在温湿度要求严格的场合,利用多传感技术可以提高系统的可靠性和精度,亦可以提高系统的时间空间的覆盖范围。二 系统总体方案设计本设计是基于单片机对数字信号的高敏感和可控性、温湿度传感器可以产生模拟信号,和a/d模拟数字转换芯片的性能,此设计以stc89c52基本系统为核心的一套检测系统,其中包括单片机、复位电路、温湿度检测、键盘及显示、报警电路、系统软件等部分的设计。系统总体方框图如图2.1.数码管显示单片机s

12、tc89c52报警电路温湿度传感器驱动电路图2.1 系统总体方框图本设计由信号采集、信号分析和信号处理三个部分组成的:(1) 信号采集 由sht10温湿度模块组成;(2) 信号分析 由单片机stc89c52基本系统组成;(3) 信号显示 由lcd1602显示器和报警电路以及驱动电路组成。2.1 单片机 stc89c52stc89c52是一种低功耗、高性能cmos八位微控制器,具有8k在系统可编程flash存储器,使用atmel公司高密度非易失性存储器技术制造,与工业80c51产品指令和引脚完全兼容。片上flash允许rom在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位cpu和在系统

13、可编程flash,使其为众多嵌入式控制应用系统提供灵活的解决方案。工作电压:5.5v - 3.4v(5v 单片机) / 3.8v - 2.0v(3v 单片机). 工作频率范围:0 - 40 mhz,相当于普通8051 的 080mhz.实际工作频率可达48mhz.工作温度范围:0 75 / -40 +85.2.1.1 stc89c52主要特性(1) 与mcs-51单片机产品兼容;(2) 8k字节在系统可编程flash存储器;(3) 1000次擦写周期;(4) 全静态操作:0hz33hz;(5) 三级加密程序存储器;(6) 32个可编程i/o口线;(7) 三个16位定时器/计数器;(8) 八个中

14、断源;(9) 全双工uart串行通道;(10) 低功耗空闲和掉电模式;(11) 掉电后中断可唤醒; (12) 看门狗定时器;(13) 双数据指针;(14) 掉电标识符。2.1.2 stc89c52接口如图2.2所示stc89c52芯片的引脚图图2.2 stc89c52管脚图vcc:电源vss:地 p0口:8位漏极开路的双向i/o口。作为输出口,每位能驱动8个ttl逻辑电平。对p0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,p0口也被作为低8位地址/数据复用。在这种模式下,p0具有内部上拉电阻。在flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字节。程序校

15、验时,需要外部上拉电阻。p1口:具有内部上拉电阻的8位双向i/o口,p1输出缓冲器能驱动4个ttl逻辑电平。对p1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。此外,p1.0和p1.2分别作定时器/计数器2的外部计数输入(p1.0/t2)和定时器/计数器2的触发输入(p1.1/t2ex),具体如表3-1所示。在flash编程和校验时,p1口接收低8位地址字节。p2口:具有内部上拉电阻的8位双向i/o口,p2输出缓冲器能驱动四个ttl逻辑电平。对p2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入

16、口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。在方位外部程序存储器或用16位地址读取外部数据存储器时,p2口送出高八位地址。在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。p3口:p3口是一个具有内部上拉电阻的8位双向i/o口,p2输出缓冲器能驱动四个ttl逻辑电平。对p3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。rst:复位输入。晶振工作时,rst脚持续2个机器周期高电平将使单片机复位。disrto默认状态下,复位高电平有效。ale/:控制信

17、号(ale)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ale以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时, ale脉冲将会跳过。如果需要,通过将地址为8eh的sfr的第0位置“1”,ale操作将无效。这一位置“1”,ale仅在执行movx或movc指令时有效。否则,ale将被微弱拉高。这个ale使能标志位(地址为8eh的sfr的第0位)的设置对微控制器处于外部执行模式下无效。:外部程序存储器选通信号()是外部程序存储器选通信号。当89s52从外部程序存储器执行

18、外部代码时,在每个机器周期被激活两次,而在访问外部数据存储器时,将不被激活。/vpp:访问外部程序存储器控制信号。为使能从0000h到ffffh的外部程序存储器读取指令,必须接地。为执行内部程序指令,应该接vcc。在flash编程期间,也接收12伏vpp电压。xtal1:振荡器反相放大器和内部时钟发生电路的输入端。xtal2:振荡器反相放大器的输出端。2.2 sht10温湿度模块图2.3 sht10温湿度传感器shtxx 系列产品是一款 高度集成的温湿度传感器芯 片,提供全 量程 标 定 的数字输出 。它采用专利的 cmosens? 技术,确保产品具有极高的可靠性与卓越 的长期稳定性。传感器包

19、括一个电容性聚合体湿度敏 感元件和一个用能隙材料制成的温度敏感元件,这两 个敏感元件与一个 14 位的 a/d 转换器以及一个串行 接口电路设计在同一个芯片上面。该传感器品质卓 越、响应超快、抗干扰能力强、极高的性价比。如图2.3是sht10温湿度传感器的实物图。sht10为温湿度一体的传感器,内部已经集成了温度采集,湿度采集,a/d转换等电路,单片机只需要按照sht10的通讯协议,即可心获得内部取得的温湿度值2.2.1 sht10的主要特点相对湿度和温度的测量兼有露点输出;全部校准,数字输出;接口简单(2-wire),响应速度快;超低功耗,自动休眠;出色的长期稳定性;超小体积(表面贴装);测

20、湿精度±45%rh,测温精度±0.5(25)。2.2.2 引脚说明及接口电路(1)典型应用电路如图2.4是的典型接线图图2.4 sht10电路(2)电源引脚(vdd、gnd)sht10的供电电压为2.4v5.5v。传感器上电后,要等待11ms,从“休眠”状态恢复。在此期间不发送任何指令。电源引脚(vdd和gnd)之间可增加1个100nf的电容器,用于去耦滤波。(3)串行接口sht10的两线串行接口(bidirectional 2-wire)在传感器信号读取和电源功耗方面都做了优化处理,其总线类似i2c总线但并不兼容i2c总线。串行时钟输入(sck)。sck引脚是mcu与sh

21、tio之问通信的同步时钟,由于接口包含了全静态逻辑,因此没有最小时钟频率。串行数据(data)。data引脚是1个三态门,用于mcu与sht10之间的数据传输。data的状态在串行时钟sck的下降沿之后发生改变,在sck的上升沿有效。在数据传输期间,当sck为高电平时,data数据线上必须保持稳定状态。为避免数据发生冲突,mcu应该驱动data使其处于低电平状态,而外部接1个上拉电阻将信号拉至高电平。2.2.3 命令与时序(1)sht10命令sht10命令如表1所列。表1 命令代码(2)命令时序 发送一组“传输启动”序列进行数据传输初始化,如图2.5所示。其时序为:当sck为高电平时dt翻转保

22、持低电平,紧接着sck产生1个发脉冲,随后在sck为高电平时data翻转保持高电平。图2.5 命令时序 紧接着的命令包括3个地址位(仅支持“000”)和5个命令位。sht10指示正确接收命令的时序为:在第8个sck时钟的下降沿之后将data拉为低电平(ack位),在第9个sck时钟的下降沿之后释放data(此时为高电平)。 (3)测量时序(rh和t)“000 00101”为相对湿度(rh)量,“000 00101”为温度()测量。发送一组测量命令后控制器要等待测量结束,这个过程大约需要20/80/320ms对应其8/12/14位的测量。测量时间随内部晶振的速度而变化,最多能够缩短30%。sht

23、10下拉data至低电平而使其进入空闲模式。重新启动sck时钟读出数据之前,控制器必须等待这个“数据准备好”信号。接下来传输2个字节的测量数据和1个字节的crc校验。mcu必须通过拉低data来确认每个字节。所有的数据都从msb开始,至lsb有效。例如对于12位数据,第5个sck时钟时的数值作为msb位;而对于8位数据,第1个字节(高8位)数据无意义。确认crc数据位之后,通信结束。如果不使用crc-8校验,控制器可以在测量数据lsb位之后,通过保持ack位为高电平来结束本次通信。测量和通信结束后,sht10自动进入休眠状态模式。(4)复位时序如果与sht10的通信发生中断,可以通过随后的信号

24、序列来复位串口,如图2.6所示。保持data为高电平,触发sck时钟9次或更多,接着在执行下次命令之前必须发送一组“传输启动”序列。这些序列仅仅复位串口,状态寄存器的内容仍然保留。图2.6 复位时序(5)状态寄存器读写时序 sht10通过状态寄存器实现初始状态设定。读状态寄存器时序如图2.7所示。图2.7读时序写状态寄存器时序如图2.8所示。图2.8写时序2.2.4 几点说明 crc-8校验。整个数据的传输过程都由8位校验保证,确保任何错误的数据都能够被检测到并删除1 。为保持自身发热温升小于0.1,shtxx的激活时间不超过10%。如12位精度测量,每秒最多测量2次。转换为物理量输出相对湿度

25、输出转换公式为:其中,rhlinear为25时相对湿度的线性值,sorh为传感器输出的相对湿度的数值,c1,c2,c3为系数,如表3所列。 当测量温度与25相差较大时,则需要考虑传感器的温度系数:其中,rhtrue为温度不等于25时相对湿度的实际值,c为当前温度,t1、t2是系数,如表2所列。表2温度补偿系数温度输出转换公式为:其中,为实际温度,so为传感器输出的温度数值,1,2为系数,如表3、表4所列。表3 温度转换系数 由于湿度与温度经由同一块芯片测量而得,因此sht10可以同时实现高质量的露点测量。首先,单片机从根据sht10传感器的通讯协议与sht10进行数据通讯,先读取温度数据,然后

26、再读取湿度数据!同时,读取温度后,还对湿度数据进行温度补偿,读取完成后,对各个数据进行计算,得出最终显示出来的十进制数!我在程序在,温度与湿度是将数据放大10倍,如25.6度,放大10倍后便是256,然后,在led数码管上面显示的数据拆解成3个位,分别拆成2-5-6,这样,就将取得的温湿度数据,在led数码管上面显示出来了。2.3 l 7805稳压块图2.9 l 7805稳压块l 7805基本参数:输出电压:4.75-5.25v;静态电流:4.2-8ma;输出噪音电压:40uv;纹波抑制比:78db;输出电阻:17m;输出电压温度系数:-1.1mv/;l 7805特征:输出电流可达1.5a,不

27、需外接补偿元件;内含限流保护电流,防止负载短路烧毁元件;内含结温过热保护电路,防止结温过热烧毁器件;内含功耗限制电路,防止烧毁输出驱动器晶体管。如图2.9,其中1接整流输出的正电压,2为公共地(也就是负极),3就是我们所需的正5v输出电压。三 系统的硬件设计与连接3.1 主控模块本系统设计应用at89s52单片机作为系统的控制核心。采用单片机的p0口以及p2.0p2.3控制数码管显示温度和湿度值。键盘控制采用p3口,其中p3.2进入/退出温湿度的设置,p3.3是温湿度的转换显示, p3.4/p3.5是分别对温度与湿度的上/下限值进行设置。p3.6、p3.7是sht10温度传感器的接线口,p2.

28、4是报警电路的接线口。p1.0/p1.1分别是高温/低湿输出继电器的接线口。图3.1 主控电路3.2 晶振及复位电路晶振及复位电路是每个单片机系统必须具备的电路,本设计的晶振采用的是12m晶体振荡器,此晶振比较常见,易于购得。因此,在设计中,使用12m的晶振与2个30p的瓷片电容组成单片机的晶体振荡电路,为单片机的正常工作提供了振荡信号。如图3.2中的按键、c3及r1,一起组成了本设计的复位电路,其中c3与r1为为常用的阻容复位电路。当工作电路在瞬间上电时,电容c3瞬间导通,+5v加载到单片机的第9脚(reset),系统完成上电复位。同时,系统中还加入了一个直按的复位按键,同理,当按下按键后,

29、+5 v加载到单片机的第9脚(reset),系统完成了通电情况下的热启动。设计此按键的好处是,当在系统死机的的情况下,可以在不断电的情况下按下此按键,完成单片机热启动图3.2 晶振与复位电路3.3 温湿度模块如图3.3中的rp1是4.7k的排阻,在电路中主要起到了上拉电压的作用,因为单片机的端口属于弱上拉,因此加入此上位电阻后,可以使得信号采集更加稳定。图3.3 温湿度接线图3.4 报警模块报警电路如图3.4所示,此电路为蜂鸣器的工作电路,由于蜂鸣器的输出电流比较大,而单片机的io管脚电流不足,所以增加了一个pnp三极管8550来进行放大并控;电阻r1为限流电阻。拿当前取得的温湿度数据与温湿度

30、设置的上下限进行比较,如果比上限高的话,那么上限报警,如果下限高的话,那么下限报警。因为只有一个蜂鸣器,所以,只有温湿度有一个上限或者下限有报警的话,那么蜂鸣器都需要报警。图3.4 报警电路3.5 显示模块该电路采用动态扫描的形式,数码管采用的是共阳的数码管,在一般单片机的设计中,采用共阳的数码管,可以使得结构更加简单控制更加容易。如图3.5所示,使用单片机的p0口输出数码管的各个段码,前面有470欧电阻为数码管的限流电阻,因为单片机的io输出能力较小,因此采用了三极管8550来进行放大输出电流,实现数码管能够闪亮显示图3.5 数码管接线图3.6 键盘键盘采用独立式键盘,按照其与i/o口的连接

31、方式的不同,可以分为独立式键盘和矩阵式键盘。独立式按键就是各按键相互独立,其电路如图3.6所示,每个按键单独占用一根i/o口线,每根i/o口线的按键工作状态不会影响其他i/o口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。图3.6 按键接线图3.7 驱动模块 驱动电路采用电磁式继电器,其具有结构简单、工作可靠、坚固耐用、价格便宜等优点应用极其广泛,它是最为典型和常用的继电器。本电路采用常闭继电器由单片机控制,当温度高于设置的上限和湿度低于设置的下限时,继电器开始工作,从而起到保护机房的仪器的作用。其电路如图3.7:图3.7 继电器接线图3.8 电源模块本设计的电

32、源电路由两部分组成(如图3.8所示),一部分为dc12v变压器供电,而另一部分,则由6v电池供电。在实际使用中,只需要其中一部分即可,因此,此系统不但可以工作在有市电供电的场合,同时,也适用于蓄电池等其它电源供电的场合。第一部分,当dc12v变压器插入dc电源座的时候,+12v电源经过d1二极管4007后到达7805稳压模块的输入脚,经过7805稳压后,变成稳定的+5v,为整个电路提供供电电源。6v电池的+6v端经过d2二极管4007降压后,到达整个电路的vcc,为整个电路提供供电电源。二极管的压降一般为0.7v,经过降压后的电压大概为5.3v。d3发光二极管为电源指示灯,通电后该指示灯会一直

33、长亮。图3.8 电源电路图四 系统软件方案的设计4.1 子程序流程图设置按键按下初始化设置参数查看设置及退出键是否有按下保存设置参数,退出,返回主程序 y n 查看设置转换按键是否有按下写相应的设置位,并显示相应的参数 y查看+按键是否有按下显示相应的参数加0.1 n y n显示相应的参数减0.1查看按键是否有按下 y返回设置子程序 n程序初始化4.2 主程序流程图读取温度读取湿度进入设置参数子程序查看设置按键是否按下写温度下限报警标记位根据各个报警标记位开启指示灯及蜂鸣器写湿度上限报警标记位取当前的湿度是否大于设定的上限取当前温度是否小于设定的下限取当前温度是否大于设定的上限查看显示转换按键

34、是否按下 y置相应显示的标志位,显示温度/湿度 n y写温度上限报警标记位 n y根据显示标记位相应温度或湿度同时返回主程序 n y n y写湿度下限报警标记位取当前的湿度是否小于设定的下限 n y n五 总结与展望本系统为温湿度采集并报警系统,主要实现的功能就是采集环境温度及环境湿度,同时还带了上下限报警功能,另外还附带有继电器扩展功能。一般用途可以为某些场合提供温湿度的数据,及报警提醒以及控制温湿度功能作用,如大棚蔬菜温湿度监测,机房温湿度监测等。这个具体结构简单,方便,实用等优点。在这次毕业设计中学到啦很多,更为熟悉proteus、keil和protel软件的使用,以及如何查找有用的资料

35、来完成自己的设计。这次设计在电路板的焊接和程序编写上出啦不少问题,通过同学跟老师的帮助也一一的得到了解决。 六 参考文献1周润景,张丽娜基于proteus的电路及单片机系统设计与仿真北京航空航天大学出版社,20062 李朝青单片机原理及接口技术北京航空航天大学出版社20093 臧海鹰, 张凤璐. 基于单片机的环境温度控制硬件电路设计j. 黑龙江科技信息, 2011,(05)4 李建民单片机在温度控制系统中的应用.江汉大学学报19965. 沈德金,陈粤初mcs-51系列单片机接口电路与应用程序实例北京航空航天大学出版社19906 liu shiguang,bao changchun,ma shu

36、ying.new type of constant temperature and constant humidity box monitoring and controlling system.transactions of the chinese society of agricultural engineering,2001,vol 17(no.5):102-104.7. 刘笃仁,韩保君传感器原理及应用技术机械工业出版社20038胡汉才单片机原理及接口技术清华大学出版社1996.9 dong haiying. the study on swarm intelligent control.

37、 international journal of intelligent information management and technologies,2005,vol.(no.1):pp.137-142. 10 马忠梅 马凯 单片机的c语言应用程序设计 北京航空航天大学出版社 2007年11张大明 单片机微机控制应用技术 机械工业出版社 2007年七 附件程序清单:/*main */ #include <stc89c52.h> /microcontroller specific library, e.g. port definitions#include <intrin

38、s.h> /keil library (is used for _nop()_ operation)#include <math.h> /keil library#include <stdio.h> /keil library#define uchar unsigned char /定义无符号字节#define uint unsigned int /定义无符合整数#define ulong unsigned long#define up_temp 400;/温度80.0%#define down_temp 100;/温度20.0%#define up_rh 800

39、;/温度80.0%#define down_rh 200;/温度20.0%uint data temp_ok;/真正取到的温度值,将原数放大十倍,去除小数点uint data rh_ok;/真正取到的温度值,将原数放大十倍,去除小数点uchar data temp_data2;/温度取得的初值uchar data rh_data2;/湿度取得的初值uint temp_h;/温度上限uint temp_l;/温度下限uint rh_h;/湿度上限uint rh_l;/湿度下限sbit data=p37;sbit sck=p36;sbit bell=p24; /蜂鸣器sbit temp_light

40、=p26;/温度报警指示灯sbit rh_light=p27;/湿度报警指示灯bit bj_t_h;/温度过高报警位bit bj_t_l;/温度过低报警位,为1表示需要报警bit bj_r_h;/湿度过高报警位bit bj_r_l;/湿度过低报警位/bit bj_all;/温湿度过高或者过低合在一起的报警位sbit dian=p07;sbit led1=p23;sbit led2=p22;sbit led3=p21;sbit led4=p20;sbit in1=p32;/s1按键sbit in2=p33;/s2按键sbit in3=p34;/s3按键sbit in4=p35;/s4按键sbit

41、 km1=p10;/高温输出sbit km2=p11;/低湿输出bit xianshi=0;/显示标记,为0显示温度,为1显示湿度 uchar set_biaoji=0;/设置标记,=0,设置温度上限,1,设置温度下限,2,设置湿度上限,3设置湿度下限#define temp 1#define humi 2#define noack 0/无响应,找不到器件#define ack 1/响应,已经找到器件#define status_reg_w 0x06 /000 0011 0write regedit 写寄存器#define status_reg_r 0x07 /000 0011 1read r

42、egedit 读寄存器#define measure_temp 0x03 /000 0001 1read temp it's me write, ha ha!#define measure_humi 0x05 /000 0010 1 read humi 提取湿度#define reset 0x1e /000 1111 0 /复位/* 延时t毫秒 */void delay(uint t)uint i;while(t-)/ 对于11.0592m时钟,约延时1ms for (i=0;i<125;i+)/uchar getcode(unsigned char i)uchar p;swit

43、ch (i)case 0: p=0xc0;break;/* 0 */case 1: p=0xf9;break;/* 1 */case 2: p=0xa4;break;/* 2 */case 3: p=0xb0;break;/* 3 */case 4: p=0x99;break;/* 4 */case 5: p=0x92;break;/* 5 */case 6: p=0x82;break;/* 6 */case 7: p=0xf8;break;/* 7 */case 8: p=0x80;break;/* 8 */case 9: p=0x90;break;/* 9 */case 10: p=0x8

44、8;break;/* a */case 11: p=0x83;break;/* b */case 12: p=0xc6;break;/* c */case 13: p=0xa1;break;/* d */case 14: p=0x86;break;/* e */case 15: p=0x8e;break;/* f */default: break;return(p);/这里用void write_i2c(uchar x,y,z) isp_data=z;/数据送isp isp_addrh=x;/stc89c51的isp地址,stc89c51的i2c地址在2000h单元开始的/ isp_addrl

45、=y;/送低位isp地址/ isp_contr=0x01;/设置响应时间,20m为1,6m以下是4/ isp_contr=isp_contr|0x80;/充许isp有效/ isp_cmd=0x02;/操作模式为写操作 isp_trig=0x46;/发送命令字/ isp_trig=0xb9;/发送执行命令字,发送完执行,执行完后程序才继续/ uchar read_i2c(uchar x,y) uchar z; isp_addrh=x;/送高位isp地址,stc89c51的i2c地址在2000h单元开始的! isp_addrl=y;/送低位isp地址 isp_contr=0x01;/设置响应时间,

46、20m为1,6m以下是4 isp_contr=isp_contr|0x80;/充许isp有效 isp_cmd=0x01;/操作模式为读操作 isp_trig=0x46;/发送命令字 isp_trig=0xb9;/发送执行命令字,发送完执行,执行完后程序才继续 z=isp_data;/数据送isp return(z); void clear_i2c(uchar x,y) isp_addrh=x;/送高位isp地址,stc89c51的i2c地址在2000h单元开始的! isp_addrl=y;/送低位isp地址 isp_contr=0x01;/设置响应时间,20m为1,6m以下是4 isp_con

47、tr=isp_contr|0x80;/充许isp有效 isp_cmd=0x03;/操作模式为擦除操作 isp_trig=0x46;/发送命令字 isp_trig=0xb9;/发送执行命令字,发送完执行,执行完后程序才继续 /void display()/显示函数 显示当前温度或者湿度 uchar i; uchar a,b,c; uint zh; if(xianshi=0) zh=temp_ok;/温度转移 /默认显示温度 else zh=rh_ok;/湿度转移 a=zh / 100; /分别得出三个各自的值 zh=zh % 100; b=zh / 10; c=zh % 10; for(i=0;i<1;i+) p0=getcode(a); /显示十位 led1=0; delay(1); led1=1; p0=getcode(b); /显示个位 led2=0; dian=0;/开不数点 delay(1); led2=1; p0=getcode(c); /显示小数位 led3=0; delay(1); led3=1; if(xianshi=0) p0=0x8c;/显示p else p0=0x89;/显示

温馨提示

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

评论

0/150

提交评论