毕业论文--智能温度控制和风扇控制系统 - 图文

更新时间:2024-05-15 07:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计说明书

学生姓名: 学 号: 学 院:

专业年级:

题 目:

指导教师: 评阅教师: 年 月

I

摘要

本次毕业设计设计了一个基于热释人体红外的智能温控风扇及照明控制系统,采用单片机STC89C52为控制器,以热释人体红外和温度传感系统来检测室内有无人员以及室内温度,通过光敏电阻来检测室内的光线强度,用温度传感器DS18B20来检测室内温度,用LCD1602来实时显示系统当前的工作模式和室内的温度,同时可通过按键来实现正常模式与防盗模式两者之间的随意切换。调试结果表明该系统可以实时调节和控制室内风扇的转速和灯管的照明,达到了智能控制和节能的目的,并通过设置启动防盗模式来达到防盗的效果。

关键词:热释人体红外;STC89C52;智能温控风扇;照明控制

Title The design of intelligent temperature control fan and

illumination system based on the body pyroelectric infrared

Abstract:

In this paper we designed an intelligent temperature control fan and illumination system based on the body pyroelectric infrared to control the fan and the lamp in real time. In this system we use the STC89C52 as the intelligent controller, we detect the inner-room temperature with the temperature sensor, and decide whether there is a person or not based on infrared from the body, and check the illumination intensity through the photoconductive resistance. Besides, we utilize the LCD1602 to display the present working mode and the inner-room temperature, meanwhile, we could change the mode freely by pressing the buttons. Result shows that the system can surely control the objects intelligently and decrease the electric power effectively. Besides, it can also realize the effect of anti-theft by setting the anti-theft mode.

Key words: the body pyroelectric infrared; AT89C51; intelligent temperature control fan; illumination control

II

目 录

1 绪论 ......................................................................................................................... 1 1.1 智能温控风扇及照明控制系统的研发背景 .................................................. 1 1.1.1 智能温控风扇的设计背景 ...................................................................... 1 1.1.2 智能照明控制系统的设计背景 .............................................................. 2 1.2 智能温控风扇及照明控制系统的研制意义 .................................................. 2 2 基于热释人体红外的智能温控风扇及照明控制系统的硬件设计 ................... 3 2.1 总体设计 .......................................................................................................... 3 2.2 主控制器 .......................................................................................................... 4 2.2.1 STC89C52单片机的性能特点 ............................................................... 4 2.2.2 由STC89C52构成的单片机最小系统 .................................................. 4 2.3 人体感应模块 .................................................................................................. 5 2.4 光度采集模块和照明控制模块 ...................................................................... 8 2.4.1 光敏电阻的特性 ...................................................................................... 9 2.4.2 发光二极管电路 .................................................................................... 10 2.5 温度传感及显示模块 .................................................................................... 10 2.5.1 温度传感器DS18B20简介 ................................................................... 10 2.5.2 DS18B20的一般操作过程 .................................................................... 10 2.5.3 DS18B20的温度存储方式即温度计算 ................................................. 11 2.6 风扇控制模块 ................................................................................................. 11 2.7 防盗报警模块 ................................................................................................. 11 3 基于热释人体红外的智能温控风扇及照明控制系统的软件设计 ................. 12 3.1 光度采集模块与照明控制模块的软件设计 ................................................. 12 3.2 人体感应模块的软件设计 ............................................................................. 13 3.3 温度控制风扇模块的软件设计 .................................................................... 14 3.4 系统软件流程总图 ......................................................................................... 15 4基于热释人体红外的智能温控风扇及照明控制系统的软硬件联机调试 ........ 17 结 论 ....................................................................................................................... 19 致 谢 ....................................................................................................................... 20 参 考 文 献 ............................................................................................................. 21 附录1 原理图 ........................................................................................................ 22 附录2 PCB板图 .................................................................................................... 23 附录3 程序 ............................................................................................................ 24

III

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

1 绪论

1.1 智能温控风扇及照明控制系统的研发背景

1.1.1 智能温控风扇的设计背景

随着空调机在日常生活中的普遍应用,很容易想到电风扇会成为空调的社会淘汰品,其实经过市场的考验和证实,真实的并不是这样的,在空调产品的冲击下,电风扇产品仍然具有很强大的生命力,电风扇在市场的考验中并没有淡出市场,反而销售在不停的复苏中具有强大的发展空间。据市场调查,电风扇的不停复苏主要在以下原因:一是电风扇虽然没有空调机的强大的制冷功能,但电风扇是直接取风,风力更加温和,比较适合老年人、儿童以及体质虚弱的人使用。二是电风扇经过多年的市场使用,较符合人们的使用习惯,而且结构简单、操作方便、安装简易。三是电风扇比起空调产品而言,其价格低廉,相对省电,更易的进入老百姓的家庭。

在激烈的市场竞争下,虽然电风扇具有广阔的市场空间,但不断新生产品的出现,要使产品更具市场优势,仅仅是靠传统型的电风扇是远远不够的,因此要对传统的电风扇根据市场的需要进行不断的更新,不断的改进,以使自己的产品立于不败之地。

现在电风扇的现状:大部分只有手动调速,再加上一个定时器,功能单一。 存在的隐患或不足:比如说人们常常离开后忘记关闭电风扇,浪费电且不说还容易引发火灾,长时间工作还容易损坏电器。再比如说前半夜温度高电风扇调的风速较高,但到了后半夜气温下降,风速不会随着气温变化,容易着凉。

之所以会产生这些隐患的根本原因是:缺乏对环境的检测。

如果能使电风扇具有对环境进行检测的功能,当房间里面没有人时能自动的关闭电风扇;当温度下降时能自动的减小风速甚至关闭风扇,这样一来就避免了上述的不足。本次设计就是围绕这两点对现有电风扇进行改进。

第1页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

1.1.2 智能照明控制系统的设计背景

随着社会的发展人们对生活质量的要求越来越高,为方便生活人们越来越多的在各个场所引入照明设备,照明在能耗中所占的比例日益增加。为了达到方便生活的目的,这些照明设备有时会彻夜开着,从而造成了大量电力能源的浪费。据统计,在楼宇能量消耗中,仅照明就占33%,因此照明节能日显重要。现在国内外普及使用的节能开关基本有声控型、触摸型、感光型等。这几种开关各有自己的弊端,如声控型不适合环境嘈杂场所、触摸型虽然能自动关闭但不能自动打开、感光型开关在无人期间不能自动关闭。目前,纵观国内外研究开发的智能照明控制系统,按其通信介质主要有总线型、电力线载波型、无线网络型等。按照网络的拓扑结构可以分为集中式或分布式。集中式智能照明控制系统主要为星形拓扑,即以中央控制节点为中心,把若干外围节点连接起来的辐射式互连结构。各照明控制器、控制面板等设备均连接到中央控制器(CPU)上,由中央控制器向照明控制器等末端执行单元传送数据包;分布式智能照明控制系统以中央监控为中心,组建控制主干网和多个控制子网,各照明控制器,控制面板等设备均具有中央处理器CPU单元,每个控制器和面板都可以直接连接在子网上。

1.2 智能温控风扇及照明控制系统的研制意义

近年来随着经济的发展和科技的进步,人们对用电设备的要求也越来越高,传统的手动风扇及照明控制系统技术受到了时代的强烈冲击, “智能温控风扇及照明”技术随之出现,并迅速地向前发展。一般来说,手动控制系统指的是个人通过按钮的切换、旋转、揿动或遥控器和其他途径执行操作的单一开关或一组开关和调光装置构成的系统,小规模情况下,的确具有成本低廉的优点,但随着系统规模的扩大,手动控制将失去其成本上的效益。此外,不需要照明时,是否关灯完全决定于人为因素,难免浪费电力增大能耗,照明范围越大,问题尤其严重。相对智能照明控制系统而言,传统控制方式简单、有效、直观。但它过多依赖控制者的个人能力,控制相对分散和无法有效管理,其实时性和自动化程度太低。正因为如此,智能温控风扇及照明控制系统的研发有着极为重

第2页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

要的意义。

目前,绝大多数楼宇风扇和电灯在使用时都是由人员手动操作,当天气闷热时由楼宇内的人员手动开启风扇和选调风速,当灯光不足或在上楼梯时手动开启电灯,常常会由于人员的疏忽在人离开之后忘记关闭设备而导致用电的浪费。在本系统设计中,考虑采用单片机为控制器,以热释人体红外和温度传感系统来检测室内有无人员以及室内温度,设计一个智能温控风扇及照明控制系统,可以实时调节和控制室内的风扇和灯光的照明,从而达到智能控制和节能的目的。

2 基于热释人体红外的智能温控风扇及照明控制系统的硬件设计

2.1 总体设计

图2-1所示是基于热释人体红外的智能温控风扇及照明控制系统的总体结构框图。

人体感应模块单片机照明控制模块光度采集模块风扇控制模块温度传感及显示模块图2-1 系统总体结构框图

防盗报警模块 由上图可以看出,该系统一共包括六个模块:人体感应模块、光度采集模块、温度传感及显示模块、照明控制模块、风扇控制模块、防盗报警模块。系统上电便进入默认的正常工作模式,1602液晶显示器实时显示当前系统的工作模式以及室内的温度。通过51单片机和热释人体红外来检测区域内是否有人,如果距离人体红外感应模块5-7米范围内有人出现,则其会输出高电平,然后可通过检测与感应模块相接的单片机I/O口的高低电平来进行相应的操作。在

第3页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

正常模式下,若有人出现,系统则会一直检测室内的光线强度以及温度,并通过与设定值相比较来进行智能控制:如果光线较暗,则开启两盏LED灯;如果光线一般,则开启一盏LED灯;若光线较强,则选择不开灯;而如果温度低于设定值,则不开风扇;若温度高于设定值则开启风扇;若温度过高(本系统设置为40度),则会发出报警的声音。如果在正常模式下没有人出现,即人体感应模块输出低电平的时候,系统则关闭所有的用电设备(LED灯、风扇)以节省电能。此外可通过按键来切换当前的工作模式,如果启动了防盗报警模式,当检测到其区域内有人或者温度高于某一设定值时,就会发出连续的报警信号,直到按键按下才停止报警。

2.2 主控制器

2.2.1 STC89C52单片机的性能特点

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。 2.2.2 由STC89C52构成的单片机最小系统

单片机最小系统是指单片机可以正常工作需要的部件(都是必须的),包括mcu(单片机),时钟(晶振),复位电路,电源。在实际中可以使用几节1.5V的干电池供电。由STC89C52构成的单片机最小系统图见图2-2。

第4页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

复位电路的原理是单片机RST引脚接收到2us以上的电平信号,只要保证电容的充放电时间大于2us,即可实现复位,所以电路中的电容值是可以改变的。按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。

图2-2 单片机最小系统

2.3 人体感应模块

人体红外感应模块电路主要由人体被动红外探头、菲涅尔透镜、专用芯片BISS0001组成,当有人出现在它的探测区,传感器便能探测到信号并把信号传给单片机,单片机通过检测输出信号再根据实际情况是否该开启器件设备或让房间的电器设备处于一种可开启状态。关于走廊及洗手问用灯情况,当晚上有人经过时,人体红外感应到人便开启走廊用灯或者洗手间用灯。热释人体红外模块电路如图2-3所示。

第5页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

图2-3 热释人体红外模块电路图

电路中运用了热释红外专用芯片BISS0001。BISS0001是由运算放大器、电压比较器、状态控制器、延迟时间定时器以及封锁时间定时器等构成的数模混合专用集成电路。如图2所示,当人体辐射的红外线通过菲涅尔透镜被聚焦在热释电红外传感器的探测元上时,电路中的传感器将输出电压信号,然后使该信号先通过一个由C1、C2、R1、R2组成的带通滤波器,该滤波器的上限截止频率为16 Hz,下限截止频率为0.16 Hz。

由于热释电红外传感器输出的探测信号电压十分微弱(通常仅有1 mV左右),而且是一个变化的信号,同时菲涅尔透镜的作用又使输出信号电压呈脉冲形式(脉冲电压的频率由被测物体的移动速度决定,通常为O.1 Hz~10 Hz左右),所以应对热释红外传感器输出的电压信号通过运算放大器OP1和OP2进行二级放大。再经由电压比较器COP1和COP2构成的双向鉴幅器处理后,检出有效触发信号Vs去启动延迟时间定时器。

输出信号Vo接单片机以便检测,当有人时便输出5 V高电平,当人离开之后延时一段时间后便复位为O V以便主控制电路的控制。电路设计让芯片处于可重复触发状态以便适合教室的实际情况。重复触发其工作过程:可重复触发工作方式下在Vc=“1”、A=“1”时,Vs可重复触发Vo为有效状态,并可促使Vo在Tx周期内一直保持有效状态。在Tx时间内,只要Vs发生上跳变,则%将从Vs上跳变时刻起继续延长—个Tx周期;若Vs保持为“1”状态,则Vo一直保持 有效状态;若Vs保持为“0”状态,则在Tx周期结束后Vo恢复为无效状态,并

第6页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

且,同样在封锁时间Ti时间内,任何Vs的变化都不能触发Vo为有效状态。

本次设计中,热释人体红外模块是系统实现智能控制的前提,所有功能的实现比如风扇控制、灯管照明控制以及防盗等,都要以检测是否有人为前提,如果检测失准,将会造成控制紊乱,从而一方面浪费了电能,另一方面还给人们的生活和工作带来诸多不便。考虑到自己搭建以上人体感应电路的繁琐性以及给系统正常运行可能造成的不准确性,因而特意选用了一个整体模块SR-HC500。

SR-HC500有三个端口,如图2-4所示:一个接电源、一个接地、一个信号端口,它具有如下几种功能特点:

图2-4 人体感应模块原理图

(1)全自动感应:当有人进入起感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。

(2)光敏控制(可选):模模块预留有位置,可设置光敏控制,白天或光线强时不感应。光敏控制为可选功能,出厂时未安装光敏电阻。如果有需要,可另行加入光敏电阻。

(3)两种触发方式:L不可重复,H可重复。可跳线选择,默认为H。

A.不可重复触发方式:即感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平。

B.可重复触发方式: 即感应输出高电平后,在延时时间段内,如果有人体在其感应范围内活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。

(4)具有感应封锁时间(默认设置:0.2秒):感应模块在每一次感应输出后(高电平变为低电平),可以紧跟着设置一个封锁时间,在此时间段内感应器不接收

第7页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

任何感应信号。此功能可以实现(感应输出时间和封锁时间)两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。 (5)工作电压范围宽:默认工作电压DC5V至20V。

(6)微功耗:静态电流65微安,特别适合干电池供电的电器产品。 (7)输出高电平信号:可方便与各类电路实现对接。

2.4 光度采集模块和照明控制模块

光度采集模块的主要元器件用到的是光敏电阻、滑动变阻器和电压比较器LM393。通过改变滑动变阻器的阻值向系统设定相应光强所对应的参考电压值,并与由光敏电阻所反映的实际电压进行比较,经由LM393芯片得到输出电压,然后通过输出电平的高低来控制照明系统。其电路原理图如图2-5所示:

图2-5 光度采集模块原理图

本模块通过两个滑动变阻器设置两个参考电压,比较参考电压和实际电压的大小从而得到几组不同光线强度下的输出电压情况,再根据这些去控制LED灯的亮灭。

第8页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

2.4.1 光敏电阻的特性

利用具有光电导效应的半导体材料制成的光敏传感器称为光敏电阻。目前,光敏电阻应用的极为广泛,可见光波段和大气透过的几个窗口都有适用的光敏电阻。利用光敏电阻制成的光控开关在我们日常生活中随处可见。

当内光电效应发生时,光敏电阻电导率的改变量为:

????p?e??p??n?e??n (式2-1)

在(式2-1)中,e为电荷电量,?p为空穴浓度的改变量,?n为电子浓度的改变量,?表示迁移率。

当两端加上电压U后,光电流为:

AIph?????U (式2-2)

d式中A为与电流垂直的表面,d为电极间的间距。在一定的光照度下,??为恒定的值,因而光电流和电压成线性关系。

光敏电阻的伏安特性如图2-6所示,不同的光照度可以得到不同的伏安特性,表明电阻值随光照度发生变化。光照度不变的情况下,电压越高,光电流也越大,而且没有饱和现象。当然,与一般电阻一样光敏电阻的工作电压和电流都不能超过规定的最高额定值。

图2-6 光敏电阻的伏安特性曲线 图2-7 光敏电阻的光照特性曲线

光敏电阻的光照特性则如图2-7所示。不同的光敏电阻的光照特性是不同的,但是在大多数的情况下,曲线的形状都与图2-7的结果类似。由于光敏电阻的光照特性是非线性的,因此不适宜作线性敏感元件 ,这是光敏电阻的缺点之一。所以在自动控制中光敏电阻常用作开关量的光电传感器。

第9页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

2.4.2 发光二极管电路

发光二极管简称为LED,它是半导体二极管的一种。发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算:

R=(E-Uf)/If (式2-3)

式中E为电源电压,Uf为LED的正向压降,If为LED的一般工作电流。发光二极管的两根引线中较长的一根为正极,应按电源正极。

与小白炽灯泡和氖灯相比,发光二极管的特点是:工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器。

2.5 温度传感及显示模块

本模块采用温度传感器DS18B20来检测室内的温度,并将实时采集的温度传输至单片机的一个I/O口,同时使用LCD1602来实时显示室内的温度值。 2.5.1 温度传感器DS18B20简介

新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线,在实际应用中取得了良好的测温效果。

DS18B20的主要特性:

(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (2)测温温范围-55℃~+125℃ (3)最高分辨率为0.0625℃。 2.5.2 DS18B20的一般操作过程 (1)初始化;

第10页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

(2)跳过ROM(命令:CCH); (3)温度变换(命令:44H); (4)读暂存存储器(命令:BEH); 注:每次读取温度都要经过上面四个过程。

2.5.3 DS18B20的温度存储方式即温度计算

DS18B20是用12位存储温度,最高位为符号位,表2-1为它的温度存储方式:

表2-1 DS18B20温度存储地址分配

LSBYTE

MSBYTE

2^3 Bit7 S Bit15

2^2 Bit6 S Bit14

2^1 Bit5 S Bit13

2^0 Bit4 S Bit12

2^-1 Bit3 S Bit11

2^-2 Bit2 2^6 Bit10

2^-3 Bit1 2^5 Bit9

2^-4 Bit0 2^4 Bit8

这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

2.6 风扇控制模块

将由DS18B20芯片采集到的实时温度与软件设置的温度参数值做对比,用P1.6口控制三极管9012的导通和截止,通过PWM调速方式使风扇在某一温度范围内实现低速、中速或者快速转动,从而实现温控风扇的智能控制。考虑到系统设计重在对现实情况进行模拟,具有一定的实验性,所以本次采用的风扇就是一般的电脑风扇。

2.7 防盗报警模块

蜂鸣器工作原理简介:当控制端口通以不同频率及不同占空比的信号时蜂鸣器将发出不同强度及不同频率的声音。由于其具有比传统的喇叭体积小,价

第11页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

格低等优点,所以此次提示音电路选用蜂鸣器,具体电路如图2-8。

图2-8 蜂鸣器驱动电路

本模块用一个9012PNP三极管作为蜂鸣器的驱动,蜂鸣器的负极接到地,当基极b为低电平时三极管导通,蜂鸣器发出声音。当b极为高电平时三极管不导通,蜂鸣器不工作。P3.0连接一个按键开关来切换正常模式和防盗模式。通过单片机的P1.4口控制其发出报警声音,当温度太高或发生火灾时蜂鸣器长鸣以提醒楼宇人员,当开启防盗模式时如果有小偷入侵时蜂鸣器发出连续的报警声。

3 基于热释人体红外的智能温控风扇及照明控制系统的软件设计

3.1 光度采集模块与照明控制模块的软件设计

本模块的重点和难点在于硬件部分的设计,软件部分相对而言较为简单,只要将LM393的两个输出out1和out2分情况讨论即可(见表3-1)。

表3-1 开灯情况表

Out1 H L L

Out2 L L H

光线强度 强 一般 弱

开灯数 0 1 2

第12页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

该部分的软件设计流程图如图3-1:

开始Out1==1,out2==0NoYesLed1=1,led2=1Out1==0,out2==0NoYesLed1=0,led2=1Out1==1,out2==1NoYesLed1=0,led2=0

图3-1 光度采集模块与照明控制模块的软件流程图

将LM393的两个输出out1、out2分别与单片机的P2.0和P2.1相连,将两个LED灯的控制端(低电平时亮灯)分别与单片机的P2.3和P2.2相连,通过不断检测单片机的这四个I/O口的高低电平来实现对照明系统的控制。如果out1out2分别为高电平和低电平,单片机的P2.3和P2.2就都输出高电平,从而实现不开灯的操作;如果out1out2都是低电平,那么单片机的P2.3就输出低电平,P2.2输出高电平,从而实现开一盏灯的操作;如果检测到out1out2分别是低电平和高电平,那么P2.3和P2.4就都输出低电平,这就实现了开两盏灯的操作。

3.2 人体感应模块的软件设计

人体感应模块的硬件电路接口只有一个与单片机实行通讯,当有人出现在其感应距离内时即被触发,这时输出电平为高电平;如果没有人出现在感应距离之内即不被触发,此时输出的电平为低电平。该模块的软件流程图如图3-2所示,图中的body定义为与单片机相接的P2.4口。如果有人,P2.4则为高电

第13页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

平,如果没人,P2.4则输出低电平,这样通过不断地检测P2.4口的高低电平就可以判断出是否有人出现。

开始是是否有人否输出高电平(body==1)输出低电平(body==0)

图3-2 人体感应模块的软件流程图

3.3 温度控制风扇模块的软件设计

由于采用了DSl8B20单总线的通讯协议方式,所以软件模块在遵循芯片的通讯时序图的同时通过操作单片机I/O口的高低电平来进行相关的操作,具体参考DSl8B20.H头文件的软件设计。通过P1.4口将数据传输到单片机内部进行数据的处理,然后将处理得到的温度数值作为风扇风速档次的选择依据。风扇的风速通过调制不同的PWM来控制,通过拉高拉低IO口电平来控制三极管的导通与截止控制风扇的转速。

该部分的软件流程图如图3-3所示,首先利用DS18B20不断地采集室内的温度,并将处理得到的温度值不断地通过1602液晶显示器实时地显示出来。如果温度低于27度,则将风扇控制端口P1.6置为高电平,使风扇处于静止状态;如果温度高于27度但低于28度,系统则运行慢速函数;如果温度高于28度但低于30度,系统则运行中速函数;如果温度高于30度但低于40度,系统则运行快速函数;如果温度高于了40度蜂鸣器则发出报警的声音。

第14页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

开始DS18B20采集温度1602显示当前温度温度>=27°是否不开风扇是温度<28°否温度<30°否是温度<40°否报警风扇快速是风扇中速风扇慢速结束

图3-3 风扇控制模块的软件流程图

3.4 系统软件流程总图

在系统软件设计时首先得将系统进行初始化操作,如对温度采集模块的DS18B20温度传感器以及1602液晶显示器进行初始化,其中对LCD1602的初始化操作包括清屏、功能设置、显示与不显示设置和输入模式设置。系统初始化之后首先应该判断当前的工作模式,然后再根据工作模式来进行相应的操作。本系统上电时系统工作在正常模式(通过按键来切换工作模式),以温度传感模块不断地采集室内温度,并通过LCD1602不断的显示当前温度值。在正常模式

第15页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

下如果有人,那么系统则既要不断采集温度又要不断地检测室内的光线强度,然后根据二者来对用电设备进行自动控制;而如果正常模式下室内没有人,那么就不要打开任何用电设备以避免不必要的浪费。按键一次之后系统便进入防盗模式,这时仍然选择不断地检测室内的温度以便能够及时发现火灾从而做出迅速有效的处理,同时系统不断地扫描是否有人闯入,一旦检测到有人闯入那么系统就会发出连续的报警声。在听到报警声之后,安保人员可按键确认相关信息并取消报警声,然后通过复位键将系统复位,这时系统重新处于有效的工作状态。系统的软件流程总图如图3-4所示。

开始系统初始化关闭风扇灯管是否启动防盗模式否否是否有人是温度采集光度采集是温度采集1602显示当前模式、温度是温度是否过高否1602显示当前模式、温度是是否有人是否温度是否过高否风扇、灯管开在合适档位报警是

图3-4 系统软件流程总图

第16页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

4基于热释人体红外的智能温控风扇及照明控制系统的软硬件联机调试

硬件电路由万能板搭建焊接而成,之后分模块一一进行调试。首先是调试LED灯、蜂鸣器以及风扇,因为这些都是低电平有效的,所以通过编程观察当与其相接的单片机I/O口输出低电平时它们是否都能正常工作,结果表明LED灯都能正常发光、蜂鸣器能发出鸣叫声、风扇能正常旋转。其次调试的是人体感应模块,当接入+5V电源后,该模块能正常地被触发,即当有人出现时能输出高电平,而将整个模块用纸包裹起来时则输出低电平。随后便调试光度采集模块,先通过改变室内光线强度(强、一般、弱)测出光敏电阻两端三组不同的电压值,然后分别从强和一般以及一般与弱两组之间选出两个电压作为参考电压,并通过滑动变阻器来达到参考电压值。然而在调试的过程中,理论上当LM393的同相端电压低于反相端电压时输出低电平,而同相端高于反相端电压时则会输出高电平,可是多次调试却发现本应输出高电平的情况输出的却是0V,随后在查了LM393的芯片资料之后才知道它(集电极开路输出)只有接上拉电阻才能输出高电平,果然,在接了10K的上拉电阻之后输出了高电平。

对于温度采集与显示模块,难点在于软件的设计,本次采用Keil uvision4 来编写程序,使用STC_ISP_V483来下载程序。由于想通过按键来切换当前工作模式,所以必须编写按键扫描程序。刚开始调试的时候没有加按键程序只单独操作温度的采集与1602显示,调试结果能显示默认的正常模式以及当前室内的温度,可是当加入按键程序来切换模式的时候却出现了问题。一开始是按键要按多次系统显示部分才有反应,即由正常模式切换至防盗模式或者由防盗模式切换至正常模式,于是考虑这是按键失灵的问题,然后换了一个新的按键并再次调试,这才使得模式切换操作正常,可是1602的显示模式这一项却又出现了问题,当由Normal mode切换为Anti-theft mode时能正确显示,可是再由Anti-theft mode切换到Normal mode时却错误地显示了Normal modemode,于是便考虑到这是之前的显示未被清屏的缘故,然后就在显示工作模式及当前温度的程序之前添加了给1602清屏的指令。可当加入这一指令之后,却发现字符在显示的时候那种时间上的先后顺序太过明显,给人视觉上的效果很不好,于是

第17页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

考虑这可能是程序在执行按键扫描以及显示模式、温度的时候时序出现了问题,随后就将按键连接到单片机的P3.2口(外部中断0),并将按键扫描程序加到外部中断程序里面,之后再次调试的时候才取得了比较理想的效果。

最后就是风扇控制模块的软件调试部分,本来是想着利用PWM调速的方式来调节风扇的转速,因而事先定义了三个不同转速的函数,温度在27-28°之间执行慢速函数,温度在28-30°执行中速函数,温度在30-40°执行快速函数,刚开始调试的时候发现风扇确实可以按照当前温度自动调节转速,可是这时1602上显示的字符却没有发生变化,即它不能实时地反映当前的模式及室内温度,这时便考虑是循环函数出了问题,仔细看了下循环函数便发现这是因为系统进入了风扇调速的死循环,而外面的模式、温度扫描及显示程序却并没有循环执行,可是当去掉风扇调速的while循环程序,再次调试的时候却又出现了一个问题,那就是风扇失去了调速的功能:只要超过一定温度,风扇就以最大的转速工作。仔细检查程序发现这是因为在系统扫描温度采集、转换和显示的时间里控制风扇导通的I/O口一直都是低电平(风扇是低电平有效),所以风扇的速度一直都是最大的。后来经过反复思考,并在查阅了相关资料之后找到了既能实时显示相关信息又能实现温控调速的好办法,即先将显示部分定义成一个(显示)函数,然后利用这一函数作为PWM调速中输出高低电平的延时单元,这样也不会影响系统的显示功能,可以说是一举两得。

经过很多次的调试、检查、修改和再调试的过程,基于热释人体红外的智能温控风扇及照明控制系统预期所要求实现的功能基本上都能够正常地实现。

第18页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

结 论

毕业设计是本专业教学中最后一个重要的实践性教学环节,是我们从学校走向工作岗位必要的过渡阶段。对我个人而言,毕业设计是我大学四年学习的总结与检验,是大学四年所学知识的综合运用的体现。此次毕业设计巩固了我所学理论,增强了理论联系实际的能力,更是为以后的工作打下了更坚实的基础。

本次毕业设计采用单片机STC89C52为控制器,用热释人体红外来感知室内是否有人出现,用温度传感器DS18B20来检测室内温度,用光敏电阻来检测室内光线的强弱,用LCD1602来实时显示当前的工作模式以及当前室内的温度值。系统上电后LCD1602便显示系统默认的正常模式和室内的温度,通过按键可以实现两种模式间的相互切换。该系统可以根据室内的温度来实时自动控制风扇的开关及风扇的转速档位,并且根据室内的光线强弱和是否有人来控制灯管的亮灭。使用蜂鸣器作为报警源,如果启动报警模式,当检测到其区域内有人就会发出报警信号,或者当温度超过一定值时它也会发出长鸣报警声。调试结果表明系统能够达到预定目标,即能够达到智能控制、节约能源以及安全防护的目的,其非常适用于学校教室、图书馆、楼道照明灯等场所。

第19页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

致 谢

本论文是在王明芳导师的悉心指导之下完成的,四年来,导师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,朴实无华、平易近人的人格魅力对我影响深远。本论文从选题到完成,几易其稿,每一步都是在导师的指导下完成的,倾注了导师大量的心血,在此我向我的导师王明芳老师表示深切的谢意与祝福!同时我还得感谢做毕业设计以来一直帮助我的同学和朋友,因为之前全身心准备考研,在专业技能的训练和提升上我都有比较大的欠缺,因而这次毕业设计对我来说就是重新学习和应用单片机的知识,使用单片机来做些简单的应用系统设计。作为新手我当然少不了遇到这样或那样的问题,无论是硬件焊接、硬件调试,还是软件的调试,在我查资料或多次调试都未能理解相关知识或者有效解决问题时,我都能及时得到好友梁璟玥和王亮军同学的帮助。

再次感谢王明芳老师在理论知识、工作任务、工作方向和进度安排等方面的指导和帮助,感谢身边的朋友和同学能和我一起分析讨论并解决毕业设计过程中遇到的各种问题,感谢学校给了我们这次提高自身水平、理论联系实际的机会,使我们能够将平时所学真正用到实际当中,并在实践中加深了对知识理论的深入认识。

第20页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

参 考 文 献

[1] 李全利.单片机原理及接口技术(第二版)[M].北京:高等教育出版社,2009.1 [2] 赵全利,肖兴达.单片机原理及应用教程(第二版)[M] .北京:高等教育出版社,

2008

[3] 何希才.传感器及其应用实例[M].北京:机械工业出版社,2004 [4] 陈继述.红外探测器[M] .北京:国防工业出版社,1986

[5] 柳刚,黄竹邻,周昊,王双保,易新建.非接触式红外研制[M].光电子科技

与信息,2005

[6] 康华光.数字电子技术基础[M] .北京:高等教育出版社,2006.1 [7] 康华光.模拟电子技术基础[M] .北京:高等教育出版社,2006.1 [8] 唐介.电机与拖动(第二版) [M] .北京:高等教育出版社,2007.12

[9] 戴佳,戴卫恒,刘博文.51单片机C语言应用程序设计实例精讲(第二版)

[M] .北京:电子工业出版社,2009.11

[10] 杨峰.C语言完全手册[M].北京:科学出版社,2008

[11] 梁合庆.单片机开发调试应注意的问题[J] .电子产品世界,2000(7) [12] 王福瑞.集成电路器件大全[M] .北京:希望电子出版社,1999 [13] 胡汉才.单片机原理及系统设计[M] .北京:清华大学出版社,2002 [14] 陈永甫.红外探测与控制电路[M].北京:人民邮电出版社,2004:290-320 [15] 夏路易.电路原理图与电路板设计教程Protel99se[M].北京希望电子出

版社,2002

[16] Theodore Wildi.Electrical machine, and power system[M],2002

[17] Omas C.Bartee. Computer Architecture and Logic Design[J].McGraw-Hill

Inc.1991

[18] Nelson J Getal. Tourism and Sustainable Development: Moritoring, planning,

Managing. Unniversity of Waterloo, 1993

第21页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

附录1 原理图

第22页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

附录2 PCB板图

第23页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

附录3 程序

#include #include

#define uchar unsigned char #define uint unsigned int

sbit DQ=P1^4; //定义I/O口 sbit buzzer=P1^5; sbit fan=P1^6;

//sbit K1=P3^2; //into //sbit K2=P3^3; //int1 sbit RS=P2^7; sbit RW=P2^6; sbit E=P2^5; sbit body=P2^4; sbit led1=P2^3; sbit led2=P2^2; sbit out1=P2^0; sbit out2=P2^1;

sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚 sbit L1=P3^5; //指示灯 sbit L2=P3^6; sbit L3=P3^7;

uchar code digit[10]={\ //定义字符数组显示数字 uchar code Str1[]={\ //说明当前工作在正常模式 uchar code Str2[]={\ //说明当前工作在防盗模式

uchar code Error[]={\ //说明没有检测到DS18B20 uchar code Temp[]={\ //说明显示的是温度 uchar code Cent[]={\ //温度单位 uchar code Fire[]={\

uchar code Steal[]={%uchar code Handle[]={\//uint a,count; uint K1=1,K2=0; uchar b,c,i;

uchar TL; //储存暂存器的温度低位 uchar TH; //储存暂存器的温度高位 uchar TN; //储存温度的整数部分 uchar TD; //储存温度的小数部分

/*****************************************************

第24页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

函数功能:延时若干毫秒 入口参数:n

***************************************************/ void delaynms(uint n) {

uint j; for(;n>0;n--) for(j=125;j>0;j--) ; }

/***************************************************** 函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙

***************************************************/ bit BusyTest(void) {

bit result; RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1;

E=1; //E=1,才允许读写 _nop_(); //空操作 _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间 result=BF; //将忙碌标志电平赋给result E=0; //将E恢复低电平 return result; }

/***************************************************** 函数功能:将模式设置指令或显示地址写入液晶模块 入口参数:dictate

***************************************************/ void WriteInstruction (uchar dictate) {

while(BusyTest()==1); //如果忙就等待

RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0;

E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲, // 就是让E从0到1发生正跳变,所以应先置\_nop_();

_nop_(); //空操作两个机器周期,给硬件反应时间 P0=dictate; //将数据送入P0口,即写入指令或地址 _nop_(); _nop_();

第25页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

_nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间 E=1; //E置高电平 _nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令 }

/***************************************************** 函数功能:指定字符显示的实际地址 入口参数:x

***************************************************/ void WriteAddress(uchar x) {

WriteInstruction(x|0x80); //显示位置的确定方法规定为\地址码x\}

/***************************************************** 函数功能:将数据(字符的标准ASCII码)写入液晶模块 入口参数:y(为字符常量)

***************************************************/ void WriteData(uchar y) {

while(BusyTest()==1);

RS=1; //RS为高电平,RW为低电平时,可以写入数据 RW=0;

E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲, // 就是让E从0到1发生正跳变,所以应先置\ P0=y; //将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间 E=1; //E置高电平 _nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令 }

/***************************************************** 函数功能:对LCD的显示模式进行初始化设置

***************************************************/ void LcdInitiate(void)

第26页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

{

delaynms(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间

WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口 delaynms(5); //延时5ms ,给硬件一点反应时间 WriteInstruction(0x38);

delaynms(5); //延时5ms ,给硬件一点反应时间 WriteInstruction(0x38); //连续三次,确保初始化成功

delaynms(5); //延时5ms ,给硬件一点反应时间

WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁 delaynms(5); //延时5ms ,给硬件一点反应时间 WriteInstruction(0x06); //显示模式设置:光标右移,字符不移 delaynms(5); //延时5ms ,给硬件一点反应时间 WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除 delaynms(5); //延时5ms ,给硬件一点反应时间 }

/************************************************************************ 以下是DS18B20的操作程序

************************************************************************/ uchar time; //设置全局变量,专门用于严格延时

/***************************************************** 函数功能:将DS18B20传感器初始化,读取应答信号 出口参数:flag

***************************************************/ bit Init_DS18B20(void) {

bit flag; //储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在

DQ = 1; //先将数据线拉高

for(time=0;time<2;time++) //略微延时约6微秒 ;

DQ = 0; //再将数据线从高拉低,要求保持480~960us for(time=0;time<200;time++) //略微延时约600微秒

; //以向DS18B20发出一持续480~960us的低电平复位脉冲 DQ = 1; //释放数据线(将数据线拉高) for(time=0;time<10;time++)

; //延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲)

flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time=0;time<200;time++) //延时足够长时间,等待存在脉冲输出完毕 ;

return (flag); //返回检测成功标志 }

/*****************************************************

第27页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

函数功能:从DS18B20读取一个字节数据 出口参数:dat

***************************************************/ uchar ReadOneChar(void) {

uchar dat; //储存读出的一个字节数据 for (i=0;i<8;i++) {

DQ =1; // 先将数据线拉高 _nop_(); //等待一个机器周期

DQ = 0; //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序 dat>>=1;

_nop_(); //等待一个机器周期

DQ = 1; //将数据线\人为\拉高,为单片机检测DS18B20的输出电平作准备 for(time=0;time<2;time++)

; //延时约6us,使主机在15us内采样 if(DQ==1)

dat|=0x80; //如果读到的数据是1,则将1存入dat else

dat|=0x00;//如果读到的数据是0,则将0存入dat //将单片机检测到的电平信号DQ存入r[i] for(time=0;time<8;time++)

; //延时3us,两个读时序之间必须有大于1us的恢复期 }

return(dat); //返回读出的十进制数据 }

/***************************************************** 函数功能:向DS18B20写入一个字节数据 入口参数:dat

***************************************************/ void WriteOneChar(uchar dat) {

for (i=0; i<8; i++) {

DQ =1; // 先将数据线拉高 _nop_(); //等待一个机器周期

DQ=0; //将数据线从高拉低时即启动写时序 DQ=dat&0x01; //利用与运算取出要写的某位二进制数据,

//并将其送到数据线上等待DS18B20采样 for(time=0;time<10;time++)

;//延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样 DQ=1; //释放数据线 for(time=0;time<1;time++)

第28页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

;//延时3us,两个写时序间至少需要1us的恢复期

dat>>=1; //将dat中的各二进制位数据右移1位 }

for(time=0;time<4;time++)

; //稍作延时,给硬件一点反应时间 }

/******************************************************************************

以下是与温度有关的显示设置

******************************************************************************/

/***************************************************/ void display_normal(void) {

WriteAddress(0x00); //写显示地址,将在第1行第1列开始显示 i = 0; //从第一个字符开始显示

while(Str1[i] != '\\0') //只要没有写到结束标志,就继续写 {

WriteData(Str1[i]); //将字符常量写入LCD i++; //指向下一个字符

delaynms(2); //延时100ms较长时间,以看清关于显示的说明 } }

/***************************************************** 函数功能:显示说明信息 (防盗模式)

***************************************************/ void display_theft(void) {

WriteAddress(0x00); //写显示地址,将在第1行第1列开始显示 i = 0; //从第一个字符开始显示

while(Str2[i] != '\\0') //只要没有写到结束标志,就继续写 {

WriteData(Str2[i]); //将字符常量写入LCD i++; //指向下一个字符

delaynms(2); //延时100ms较长时间,以看清关于显示的说明 } }

/***************************************************** 函数功能:显示火灾信息

***************************************************/ void display_fire(void) {

WriteAddress(0x45); //写显示地址,将在第1行第1列开始显示 i = 0; //从第一个字符开始显示

第29页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

while(Fire[i] != '\\0') //只要没有写到结束标志,就继续写 {

WriteData(Fire[i]); //将字符常量写入LCD i++; //指向下一个字符

delaynms(2); //延时100ms较长时间,以看清关于显示的说明 } }

void display_thief(void) //显示有小偷 {

WriteAddress(0x40); //写显示地址,将在第1行第1列开始显示 i = 0; //从第一个字符开始显示

while(Steal[i] != '\\0') //只要没有写到结束标志,就继续写 {

WriteData(Steal[i]); //将字符常量写入LCD i++; //指向下一个字符

delaynms(2); //延时100ms较长时间,以看清关于显示的说明 } }

/***************************************************** 函数功能:显示处理信息

***************************************************/ void display_handle(void) {

WriteAddress(0x02); //写显示地址,将在第2行第1列开始显示 i = 0; //从第一个字符开始显示

while(Handle[i] != '\\0') //只要没有写到结束标志,就继续写 {

WriteData(Handle[i]); //将字符常量写入LCD i++; //指向下一个字符

delaynms(2); //延时100ms较长时间,以看清关于显示的说明 } }

/***************************************************** 函数功能:显示温度符号

***************************************************/ void display_symbol(void) {

WriteAddress(0x40); //写显示地址,将在第2行第1列开始显示 i = 0; //从第一个字符开始显示

while(Temp[i] != '\\0') //只要没有写到结束标志,就继续写 {

WriteData(Temp[i]); //将字符常量写入LCD

第30页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

i++; //指向下一个字符

delaynms(1); //延时1ms给硬件一点反应时间 } }

/***************************************************** 函数功能:显示温度的小数点

***************************************************/ void display_dot(void) {

WriteAddress(0x49); //写显示地址,将在第2行第10列开始显示 WriteData('.'); //将小数点的字符常量写入LCD

delaynms(1); //延时1ms给硬件一点反应时间 }

/***************************************************** 函数功能:显示温度的单位(Cent)

***************************************************/ void display_cent(void) {

WriteAddress(0x4c); //写显示地址,将在第2行第13列开始显示 i = 0; //从第一个字符开始显示

while(Cent[i] != '\\0') //只要没有写到结束标志,就继续写 {

WriteData(Cent[i]); //将字符常量写入LCD i++; //指向下一个字符

delaynms(1); //延时1ms给硬件一点反应时间 } }

/***************************************************** 函数功能:显示温度的整数部分 入口参数:x

***************************************************/ void display_temp1(uchar x) {

uchar j,k,l; //j,k,l分别储存温度的百位、十位和个位 j=x/100; //取百位 k=(x0)/10; //取十位

l=x; //取个位

WriteAddress(0x46); //写显示地址,将在第2行第7列开始显示 WriteData(digit[j]); //将百位数字的字符常量写入LCD WriteData(digit[k]); //将十位数字的字符常量写入LCD WriteData(digit[l]); //将个位数字的字符常量写入LCD delaynms(1); //延时1ms给硬件一点反应时间 }

/*****************************************************

第31页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

函数功能:显示温度的小数数部分 入口参数:x

***************************************************/ void display_temP3(uchar x) {

WriteAddress(0x4a); //写显示地址,将在第2行第11列开始显示 WriteData(digit[x]); //将小数部分的第一位数字字符常量写入LCD delaynms(1); //延时1ms给硬件一点反应时间 }

/***************************************************** 函数功能:做好读温度的准备

***************************************************/ void ReadyReadTemp(void) {

Init_DS18B20(); //将DS18B20初始化

WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 for(time=0;time<100;time++)

; //温度转换需要一点时间

Init_DS18B20(); //将DS18B20初始化 WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位 }

void alarm1() //温度报警函数 { while(1) { display_fire(); display_handle(); buzzer=0; delaynms(150); buzzer=1; delaynms(150); } }

void alarm2() //防盗报警函数 { while(K2) { display_handle(); display_thief(); buzzer=0;

第32页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

delaynms(150); buzzer=1; delaynms(150); } }

void display() //显示温度 {

display_symbol(); //显示温度说明 display_dot(); //显示温度的小数点 display_cent(); //显示温度的单位 .

ReadyReadTemp(); //读温度准备

TL=ReadOneChar(); //先读的是温度值低位 TH=ReadOneChar(); //接着读的是温度值高位

TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16 //这样得出的是温度的整数部分,小数部分被丢弃了

TD=(TL)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整, //这样得到的是温度小数部分的第一位数字(保留1位小数) display_temp1(TN); //显示温度的整数部分 display_temP3(TD); //显示温度的小数部分 }

void fan_control() //温度控制风扇模块 { L1=1;L2=1;L3=1; //指示灯初始化 if(TN<27) { fan=1; display_normal(); //显示正常模式 display(); } else if(TN>=27&&TN<28) //q%=33% { L1=0; fan=0; display_normal(); display(); for(c=0;c<2;c++) { fan=1; display_normal();

第33页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

display(); } } else if(TN>=28&&TN<30) //q%=50% { L1=0;L2=0; fan=0; display_normal(); display(); fan=1; display_normal(); display(); } else if((TN>=30&&TN<40)) //q%=100% { L1=0;L2=0;L3=0; fan=0; display_normal(); display(); } }

void led_control() { if(out1==1&&out2==0) {led1=1;led2=1;} //开灯 0盏灯 else if(out1==0&&out2==0) {led1=0;led2=1;} //1盏 else if(out1==0&&out2==1) {led1=0;led2=0;} //2盏 }

void main() { IE=0x85; //中断允许 IT0=0; IT1=0;

LcdInitiate(); //将液晶初始化

delaynms(1); //延时1ms给硬件一点反应时间

while(1) { if(K1==1) //正常模式 {

第34页

中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

if(body==1) //正常模式下 有人的情况 { led_control(); fan_control(); if(TN>=40) //温度过高——报警 { WriteInstruction(0x01); delaynms(5); alarm1(); } } else //正常模式下没人的情况 { L1=1;L2=1;L3=1;fan=1;led1=1;led2=1;buzzer=1; display_normal(); //显示正常模式 display(); //显示温度 if(TN>=40) //温度过高——报警 { fan=1;led1=1;led2=1; WriteInstruction(0x01); delaynms(5); alarm1(); } } } else if(K2==1) //按键切换模式 { display_theft(); //显示防盗模式 display(); //显示温度 fan=1;led1=1;led2=1;buzzer=1;L1=1;L2=1;L3=1; if(body==1) //有小偷入侵 { delaynms(2000); if(K2) { delaynms(8000); WriteInstruction(0x01); delaynms(5); alarm2(); } }

第35页

//关闭用电设备 //关闭用电设备 中南林业科技大学本科毕业设计 基于热释人体红外的智能温控风扇及照明控制系统设计

else { if(TN>=40) //火灾--温度过高 { WriteInstruction(0x01); delaynms(5); alarm1(); } } } } }

void int0()interrupt 0 { K1=1; K2=0; WriteInstruction(0x01); delaynms(10); }

void int1()interrupt 2 { K2=1; K1=0; WriteInstruction(0x01); delaynms(10); }

第36页

本文来源:https://www.bwwdw.com/article/j507.html

Top