找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18587|回复: 8
收起左侧

单片机智能家居环境监测系统设计文档下载

  [复制链接]
ID:482100 发表于 2019-2-28 14:00 | 显示全部楼层 |阅读模式
智能家居环境监测系统设计
摘要:本设计可分为温湿度检测与烟雾检测和人体检测部分。温湿度检测部分,是通过利用单总线型数字式温湿度传感器DHT11,实现系统具有测温湿度误差小、分辨率高、抗干扰能力强等特点。烟雾检测电路,利用气体传感器MQ-2与ADC0832模数转换器实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或有毒气体等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现火灾报警,智能化提示。人体检测部分,是通过HC-SR501模块实现,模块主要功能就是热释电红外传感器感应到入侵者的红外热辐射,将其转换成超低频信号,经电路放大、输出。检测器是利用红外人体检测探头检测预先设定好的范围内的情况,一旦有危险便向单片机发出信号,再经单片机处理,然后控制蜂鸣器和LED点亮发出警告,本设计还可以应用于家居防盗、仓库防盗等多种防盗场合,具有很强的实用价值和良好的市场前景。温湿度、烟雾和人体防盗检测是三种最基本的环境参数,其测量方法和装置对现在的生活、生产具有重要的意义。本课题基本完成预期设想,设计并实现了系统的硬件电路,完成了系统软件的编写和调试。测试结果证明,达到了设计要求。

目录

摘要
1 绪论
1.1 课题背景
1.2 概述及功能介绍
1.2.1 功能概述
1.3 本课题的研究思路
1.3.1 研究意义
1.3.2 研究思路
1.3.3 研究难点
1.4 主要工作
2 系统方案设计
2.1 系统构成
2.2 方案设计
2.2.1单片机的选择
2.2.2 传感器的选择
2.2.3 显示器选择方案
2.2.4 防盗检测选择方案
3 硬件的设计
3.1 主控电路
3.2 温湿度检测
3.3 A/D转换电路
3.4 MQ-2烟雾检测电路
3.5 报警电路
3.5.1 灯光报警电路
3.5.2 声音报警电路
3.6 LCD1602夜晶显示电路
3.7 人体检测模块
    3.8 按键电路
4 软件的设计
4.1 软件介绍
4.2 系统程序流程图
5测试结果及结论
5.1 调试
5.2 结论
致谢

绪论1.1 课题背景

当今世界,随着科技的不断发展,智能环境监测成了人类关注的话题。智能家居通过物联网技术将家中的各种设备(如照明系统、火灾检测系统、空调控制、安防系统,报警控制等)连接到一起,提供家电控制、照明控制、智能温湿度调节、室内外遥控、防盗报警以及环境监测等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境,而且提供全方位的信息交互功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。

本文首先介绍了智能家居的发展前景,接着介绍了该课题设计构想,各模块电路的选择及其电路工作原理,最后对该课题的设计过程进行了总结与展望并附带各个模块的电路原理图,和本设计仿真图,以及C语言思想。智能家居实验是为智能家居系统实验做准备的,是实验的基础,智能家居是为了提高学生的动手能力,配合各类电子设计大赛,科技活动等而开发的设计模型。在此模型上我们可以进行多种实验,如测量,感应,报警等等。为了能更好的控制模拟家居,实现手动与自动控制相结合,进行各种功能实现,并且这个实验对现实生活也有一定的意义,所以我们就需要对这个实验进行一定的研究。

1.2 概述及功能介绍
1.2.1 功能概述

本次设计主要分五个个功能,分别为测温湿度,烟雾及红外感应和报警,显示信息和报警信息。将这几个个功能巧妙的与家居结合,我们已经知道五个单独功能如何实现,现在要将五个功能通过单片机系统化反馈,以达到能实现综合五种功能的智能家居。

设计涉及主硬件为:STC89C52RC单片机,DHT11温湿度传感器,人体红外感应器,MQ-2烟雾传感器,按键设置与LCD1602液晶显示模块,蜂鸣器报警电路,以及超标指示显示模块组成。

1.2.2 功能介绍

(1)通过DHT11温湿度采集数据将信息显示于LCD1602上面,如果温湿度超出设定的预警值,指示灯有提示并蜂鸣器报警;待到坏境温湿度降到低于预警值的时候,报警自动关闭。

(2)采用烟雾探头传感器来检测我们周围环境的烟雾,可对煤气甲烷,以及我们周围着火的烟雾,或是抽烟的浓度等实时监测,如有超标,蜂鸣器报警,并有指示灯动作来提醒你解决当前的问题,解决之后,这些显示和指示指标自动关闭,所以能给您带来一定的安全感。

(3)人体红外检测电路能够根据外界移动人体进行判断,如果在布防状态并且有人时,指示灯有提示并蜂鸣器报警,来警告入侵者,直至手动撤防才可以解除报警。而且具有掉电保存的功能,即使人为关闭电源再开机也能继续报警,这样更加智能。

1.3 本课题的研究思路
1.3.1 研究意义

21世纪是信息化的时代,电子产品如雨后春笋般迅猛发展,电子测量设备也在逐渐丰富起来。模拟产品逐渐被数字化的产品所取代,并且使用变得越来越方便。虽然现今市面上有很多环境测试仪,但是针对人们学习生活需要的环境测试仪却很少,因此设计出一个简单实用的环境测试仪是很有意义的。现代电子技术日新月异,各种新型的自动控制系统也越来越多地运用到人们的日常生活、工业生产等领域,它不但可以提高劳动生产率,而且可以使控制的设备或执行的操作更加精确。

1.3.2 研究思路

(1) 研究温湿度传感器与AD转换的特性

(2) 根据其特性设计一环境监测报警装置

(3) 选择合适的微处理器,设计一套完整的程序

(4) 论证各个部分的可行性方案

(5) 设计实现各个模块,并进行单独调试

(6) 各模块调试完毕后进行整机系统测试

1.3.3 研究难点

(1) 温湿度读取与AD转换与报警值的判断程序的逻辑思路比较复杂;

(2) 温湿度仿真电路的设计。

1.4 主要工作

主要完成工作如下:

  • 电路原理图绘制;

(2) 电路的调试;

(3) 控制程序的编写;

(4) 软件调试;

(5) 单片机监测系统整机测试。

2 系统方案设计2.1 系统构成

设计涉及主硬件为:STC89C52RC单片机,DHT11温湿度传感器,人体红外感应器,MQ-2烟雾传感器,按键设置与LCD1602液晶显示模块,蜂鸣器报警电路,以及超标指示显示模块组成。

本研究设计框图如图1所示。


2.2 方案设计
2.2.1单片机的选择

方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。其片内的8K程序存储器是FLASH工艺的,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护我们的劳动成果。再者,AT89C52目前的售价比8031还低,市场供应也很充足。AT89C52可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于8K,四个I/O口全部提供给用户。可用5V电压编程,而且擦写时间仅需lOms。AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。PO口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

方案二:STC89C52系列单片机的指令系统和AT89C52系列的完全兼容,但实际操作起来却存在很多问题:

(1)AT89C52不带ISP下载,要用下载器才行,STC89C52可以用你的USB转串口下载,下载软件可以到STC厂家网上去下。

(2)STC单片机执行指令的速度很快,大约是AT的3-30倍,尽管快是好事,但这样一来,你在AT上好使的程序在STC上不一定好用,最典型的例子就是那些对时序有严格要求的模块,用STC时注意得加长延时,大约是AT的10—30倍就差不多,这一点自己调试就知道了。

(3)STC单片机对工作环境的要求比较低,电压低于5伏时仍然正常工作,甚至3伏到4伏之间都还可以工作,然而这样的环境下AT肯定不行了,所以当一个系统用STC单片机好用,但用AT的单片机不工作时,直接查最小系统,看单片机的供电是否正常。

比较这两种方案,由于在学校期间学过数字电路、单片机原理、C语言程序设计,综合考虑单片机的各部分资源和作为学生能够获得的资源,经过对比此次设计要求,我选择用STC系列芯片完成。而且学校也提供了相应的硬件操作平台,实际操作起来比较方便,故STC为更合理的选择。本系统选择STC89C52单片机作为主控芯片。足够本设计运行,且价格便宜,下载程序方便。

2.2.2 传感器的选择

方案一:选用DS18B20温度传感器作为温度检测模块。DS18B20是一线式数字温度传感器。具有独特的单线式接口方式。测量范围在—55℃~125℃,—10℃~85℃,误差范围在-\+0.5℃。最高精度可达0.0625℃。

HS1101是电容式湿度传感器。可测量相对湿度范围在0%~100%RH。误差为-\+2%RH。

方案二: 选用DHT11作为设计的温湿度检测模块。DHT11是一款集成型的数字温湿度一体传感器。

它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。测量范围20%~90%RH,0℃~50℃。测温精度为-\+2℃,测湿精度为-\+5%RH。完全符合本次毕业设计的要求。

经上述分析,方案一虽然精度更精确。却稍显复杂。方案二即便不能实现方案一的高精度测量。却也能满足设计要求。且简便易行。可靠稳定。具有超高的性价比。故选择方案二。

2.2.3 显示器选择方案

方案一:采用12864液晶显示屏。液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。

方案二:采用LCD1602液晶显示屏。LCD1602A 是一种工业字符型液晶,能够同时显示16x02 即32个字符。(16列2行)。1602只能显示字母、数字和符号能显示16*2个字符,但寄存器不止32个,有一些显示效果,如字符一个个显示、字符从左到右或从右到左显示等等,显示效果简单。

总结:在编程使用方面,两者难度差不多,原理差不多,都是写指令、写地址、写数据等等。当然12864液晶屏显示更全面、字符更多。相比于1602液晶屏、12864能更形象具体的实现显示功能。不过1602液晶屏也能实现设计的要求。网上买比较廉价,最低的六块钱左右。而12864液晶显示屏最便宜的也要四十块钱。从造价方面考虑,当然是价格低廉的优先。而LCD1602A就是最好的选择。

2.2.4 防盗检测选择方案

方案一:被动式红外传感技术是利用红外光敏器件将活动生物体发出的微量红外线转换成相应的电信号,并进行放大,处理,它能可靠的将运动着的生物体(人)和飘落的物体加以区别。同时它还具有监控范围大,隐蔽性好,抗干扰能力强和误报率低等特点。被动式红外入侵报警器又称热释电红外入侵报警器。

方案二:主动式红外探测器由红外发射机、红外接收机和报警控制器组成。因此主动式探测器所探测的是点到点,而不是一个面的范围。其特点是探测可靠性非常高。但若对一个空间进行布防,则需有多个主动式探测器,价格昂贵。主动式探测器常用于博物馆中单体贵重文物展品的布防以及工厂仓库的门窗封锁、购物中心的通道封锁、停车场的出口封锁、家居的阳台封锁等等。

经上述分析,方案一更适合家居使用。成本低,安全性高。

3 硬件的设计
3.1 主控电路

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

表1:STC89C52主要功能

主要功能特性
兼容MCS51指令系统
4K可反复擦写Flash ROM
32个双向I/O口
256x8bit内部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能

STC89C52引脚介绍

① 主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源

GND(Pin20):接地线

②外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端

XTAL2(Pin20):片内振荡电路的输出端

③控制引脚(4根)

RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):地址锁存允许信号

PSEN(Pin29):外部存储器读选通信号

EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

④可编程输入/输出引脚(32根)

STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7

P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7

P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7

P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7

作频率35Mhz,6T/12T可选。
图2  STC89C52 DIP封装图
最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。
STC89C52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图2-3所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。





图3 单片机最小系统原理框图

(1) 时钟电路
STC89C52单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图2-4所示。在STC89C52单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2~12MHz间选择,典型值为12MHz和6MHz。

图4 STC89C52内部时钟电路
(2) 复位电路
当在STC89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源Vcc接通而实现的。

图5 STC89C52复位电路

(3) STC89C52中断技术概述
中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。
图2-6为整个中断响应和处理过程。





              图6 中断响应和处理过程

如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。
3.2 温湿度检测
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
DHT11传感器实物图如下图2所示:
图7 DHT11传感器实物图
(1)引脚介绍:
Pin1:(VDD),电源引脚,供电电压为3~5.5V。
Pin2:(DATA),串行数据,单总线。
Pin3:(NC),空脚,请悬浮。
Pin4(VDD),接地端,电源负极。
(2)接口说明 :
建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。如下图3所示:
图8 DHT11典型应用电路
(3)数据帧的描述:
DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。
数据格式:8bit湿度整数数据+8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
(4)电气特性:VDD=5V,T = 25℃,除非特殊标注
表1 DHT11的电气特性
参数
条件
Min
typ
max
单位
供电
DC
3
5
5.5
V
供电电流
测量
0.5

2.5
mA
平均
0.2

1
mA
待机
100

150
uA
采样周期
1


注:采样周期间隔不得低于1秒钟。
(5)时序描述:
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。
总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
DHT11传感器连接STC89C52系列单片机相对比较简单。单片机的P2.0口用来发收串行数据,即数据口。连接传感器的Pin2(单总线,串行数据)。由于测量范围电路小于20米,建议加一个5K的上拉电阻,因此在传感器的Pin2口与电源之间连接一个5K电阻。而传感器的电源端口Pin1和Pin4分别接单片机的VDD和GND端。传感器的第三脚悬浮放置。DHT11传感器原件的电路原理图如下4所示:

图9 DHT11电路原理图
3.3 A/D转换电路
ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。芯片如下(图10)所示:








芯片接口说明如下:
CS_ 片选使能,低电平芯片使能。
CH0 模拟输入通道0,或作为IN+/-使用。
CH1 模拟输入通道1,或作为IN+/-使用。
GND 芯片参考0 电位(地)。
DI 数据信号输入,选择通道控制。
DO 数据信号输出,转换数据输出。
CLK 芯片时钟输入。
Vcc/REF 电源输入及参考电压输入(复用)。
工作原理如下:
正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能。当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、 “0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATD0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
3.4 MQ-2烟雾检测电路

MQ-2型气体传感器用于以氢气为主要成分的城市煤气、天然气、液化石油的测量,而且它抗干扰能力强,水蒸气、烟等干扰气体对它的影响小。

MQ-2型气敏元件具有以下特点:

(1) 采用烧结半导体所形成的敏感烧结体,具有稳定的R (即器件在纯洁空气中的阻抗)阻值,从而保证了长期工作的稳定性。

(2) 单电源供电,其功耗仅0.7W左右。

(3) 对所测试的气体有极高的灵敏度和信噪比。

MQ-2型气敏元件有两种型号。MQ-2A型适用于天然气、城市煤气、石油液化气、丙丁烷及氢气等;MQ-2型适用于烟雾等减光型有害气体。

器件的灵敏度:S=Ro/Rx为10~30。常见为QM系列的S值仅8左右。Rx为器件在丁烷浓度为0.2%时的阻抗。

电路如右图所示:

器件的主要参数如下:

响应时间:Tr≤10s

恢复时间:Tn≤60s

加热电压:V﹢=5+0.2V

加热功率::约0.7W

抗干扰能力:丁烷浓度在0.2%时在湿度小于85%RH,在-10℃~+40℃温度下不会引起误报。                                                                           

工作环境:温度-10℃~+50℃     湿度≤85%RH

下图是元件外形结构图,基座采用耐高温酚醛塑料压制,引脚为镀镍铜丝,上罩采用双层密纹不锈钢网压制,有较高的强度和防爆能力。

MQK-2型元件外形结构图


MQ-2气敏元件的结构和外形如上图所示, 由微型AL2O3陶瓷管、SnO2 敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。

上图是MQ-2型元件典型气体浓度测试特性曲线,在丁烷浓度0.6%以下有极高的灵敏度。

上图是MQ-2型元件通电时间特性曲线。可看出,通电后60~90s,元件即进入稳定待测工作状态。

MQ-2的特点和工作参数如下:

特点:

⑴ 广泛的探测范围               

⑵ 高灵敏度/快速响应恢复

⑶ 优异的稳定性/长寿命         

⑷ 简单的驱动电路

3.5 报警电路3.5.1 灯光报警电路

图11 灯光报警电路

LED英文单词的缩写,主要含义:LED = Light Emitting Diode,发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光;它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场发光。据分析,LED的特点非常明显,寿命长、光效高、辐射低与功耗低。作为目前全球最受瞩目的新一代光源,LED因其高亮度、低热量、长寿命、无毒、可回收再利用等优点,被称为是21世纪最有发展前景的绿色照明光源。我国的LED产业起步于20世纪70年代,经过近40年的发展,产品广泛应用于景观照明和普通照明领域,我国已成为世界第一大照明电器生产国和第二大照明电器出口国。近几年来,随着人们对半导体发光材料研究的不断深入,LED制造工艺的不断进步和新材料(氮化物晶体和荧光粉)的开发和应用,各种颜色的超高亮度LED取得了突破性进展,其发光效率提高了近1000倍,色度方面已实现了可见光波段的所有颜色,其中最重要的是超高亮度白光LED的出现,使LED应用领域跨越至高效率照明光源市场成为可能。曾经有人指出,高亮度LED将是人类继爱迪生发明白炽灯泡后,最伟大的发明之一。 本设计利用不同颜色的LED指示不同的报警。
3.5.2 声音报警电路

图12 声音报警电路

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 ;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。1.压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。
多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互缠绕

蜂鸣器驱动电路一般都包含以下几个部分:一个三极管、一个蜂鸣器、一个限流电阻。
蜂鸣器为发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)就可以发声,其主要参数是外形尺寸、发声方向、工作电压、工作频率、工作电流、驱动方式(直流/方波)等。这些都可以根据需要来选择。本设计采用有源蜂鸣器。
三极管Q1起开关作用,其基极的低电平使三极管饱和导通,使蜂鸣器发声;而基极高电平则使三极管关闭,蜂鸣器停止发声。
3.6 LCD1602夜晶显示电路

图13 液晶显示电路设计

LCD1602A 是一种工业字符型液晶,能够同时显示16x02 即32个字符。(16列2行)。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。
液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
(1)引脚说明:
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平
R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
(2)1602LCD的RAM地址映射以及标准字库表
LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符图有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:1为高电平,0为低电平)。
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H 。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 。
指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。 C:控制光标的开与关,高电平表示有光标,低电平表示无光标。 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 。
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线。      N:低电平时为单行显示,高电平时双行显示。 F:低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符 (有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。
指令7:字符发生器RAM地址设置 。
指令8:DDRAM地址设置 。
指令9:读出忙信号和光标地址。 BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。
指令10:写数据 。
指令11:读数据 。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
1602 内部显示地址如图3-6所示:
                         图14 1602内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H 就可以将光标定位在第二行第 一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高
电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H) 。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602 液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”。

液晶显示的原理是利用液晶的物理特性, 通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

3.7 人体检测模块
在自然界,任何高于绝对温度(-273度)时物体都将产生红外光谱,不同温度的物体,其释放的红外能量的波长是不一样的,因此红外波长与温度的高低是相关的。
      在被动红外探测器中有两个关键性的元件,一个是热释电红外传感器(PIR),它能将波长为8一12um之间的红外信号变化转变为电信号,并能对自然界中的白光信号具有抑制作用,因此在被动红外探测器的警戒区内,当无人体移动时,热释电红外感应器感应到的只是背景温度,当人体进人警戒区,通过菲涅尔透镜,热释电红外感应器感应到的是人体温度与背景温度的差异信号,因此,红外探测器的红外探测的基本概念就是感应移动物体与背景物体的温度的差异。
      另外一个器件就是菲涅尔透镜,菲涅尔透镜有两种形式,即折射式和反射式。菲涅尔透镜作用有两个:一是聚焦作用,即将热释的红外信号折射(反射)在PIR上,第二个作用是将警戒区内分为若干个明区和暗区,使进入警戒区的移动物体能以温度变化的形式在PIR上产生变化热释红外信号,这样PIR就能产生变化的电信号。
  人体都有恒定的体温,一般在37度,所以会发出特定波长10微米左右的红外线,被动式红外探头就是靠探测人体发射的10微米左右的红外线而进行工作的。人体发射的10微米左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。
1)这种探头是以探测人体辐射为目标的。所以热释电元件对波长为10微米左右的红外辐射必须非常敏感。
2)为了仅仅对人体的红外辐射敏感,在它的辐射照面通常覆盖有特殊的菲泥尔滤光片,使环境的干扰受到明显的控制作用。
3)被动红外探头,其传感器包含两个互相串联或并联的热释电元。而且制成的两个电极化方向正好相反,环境背景辐射对两个热释元件几乎具有相同的作用,使其产生释电效应相互抵消,于是探测器无信号输出。
4)人一旦侵入探测区域内,人体红外辐射通过部分镜面聚焦,并被热释电元接收,但是两片热释电元接收到的热量不同,热释电也不同,不能抵消,经信号处理而报警。
5)菲泥尔滤光片根据性能要求不同,具有不同的焦距(感应距离),从而产生不同的监控视场,视场越多,控制越严密。
被动式热释电红外探头的优缺点:
优点是本身不发任何类型的辐射,器件功耗很小,隐蔽性好。价格低廉。缺点是:
1.容易受各种热源、光源干扰
2.被动红外穿透力差,人体的红外辐射容易被遮挡,不易被探头接收。
3.易受射频辐射的干扰。
4.环境温度和人体温度接近时,探测和灵敏度明显下降,有时造成短时失灵。
红外线热释电传感器的安装要求:
 红外线热释电人体传感器只能安装在室内,其误报率与安装位置和方式有极大的关系.。正确的安装应满足下列条件:
1、红外线热释电传感器应离地面2~2.2米。
2、红外线热释电传感器远离空调, 冰箱,火炉等空气温度变化敏感的地方。
3、红外线热释电传感器和被探测的人体之间不得间隔家具、大型盆景、玻璃、窗帘等其他物体。
4、红外线热释电传感器不能直对门窗及有阳光直射的地方,否则窗外的热气流扰动和人员走动会引起误报,有条件的最好把窗帘拉上。红外线热释电传感器也不要安装在有强气流活动的地方。
5、安装探测器的天花板或墙要坚固,不能有晃动或震动。
红外线热释电传感器对人体的敏感程度还和人的运动方向关系很大。红外线热释电传感器对于径向移动反应最不敏感, 而对于横切方向 (即与半径垂直的方向)移动则最为敏感. 在现场选择合适的安装位置是避免红外探头误报、求得最佳检测灵敏度极为重要的一环。
图6为人体感应模块内部图。 本设计将人体感应模块的输出信号端,利用三极管的放大原理,将信号放大,来驱动信号给单片机。
图15 人体感应模块电路图

3.8 按键电路

本设计采用按键接低的方式来读取按键,单片机初始时,因为为高电平,当按键按下的时候,会给单片机一个低电平,单片机对信号进行处理

单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O 口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用了独立式键盘接法。

独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O 口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O 口与地短路迫使I/O 口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。

在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O 口的值,这一次的值如果为1 表示低电平的时间不到10~200 毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。硬件电路如图16所示:

图16 按键电路
4 软件的设计

4.1 软件介绍

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。   Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 Keil_c软件界面如图


图4.1 Keil_c软件界面

Protel99SE是PORTEL公司在80年代末推出的EDA软件。Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。

Protel99SE软件的特点:

  • 可生成30多种格式的电气连接网络表;
  • 强大的全局编辑功能;
  • 在原理图中选择一级器件,PCB中同样的器件也将被选中;
  • 同时运行原理图和PCB,在打开的原理图和PCB图间允许双向交叉查找元器件、引脚、网络
  • 既可以进行正向注释元器件标号(由原理图到PCB),也可以进行反向注释(由PCB到原理图),以保持电气原理图和PCB在设计上的一致性;
  • 满足国际化设计要求(包括国标标题栏输出,GB4728国标库); * 方便易用的数模混合仿真(兼容SPICE 3f5);
  • 支持用CUPL语言和原理图设计PLD,生成标准的JED下载文件; * PCB可设计32个信号层,16个电源-地层和16个机加工层;
  • 强大的“规则驱动”设计环境,符合在线的和批处理的设计规则检查;
  • 智能覆铜功能,覆铀可以自动重铺;
  • 提供大量的工业化标准电路板做为设计模版;

图17 Prtel99SE软件界面

Protel99SE的工作界面是一种标准的Windows界面,如图所示,包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。




5测试结果及结论
5.1 调试
    调试过程中首先要检测的就是硬件电路的设计原理是否正确、能否达到预期效果以及实现方法是否简便等等;其次在焊接好难有线电路之后,认真检查电路的焊接情况。这次采用的是分块调试的方法,烟雾探测电路,报警电路以及单片机控制电路进行调试。在对每个模块的进行调试过程中又采用了由局部到整体,由简单到复杂的调试方法,最后再将各个模块总和成一个整体。在调试过程中遇到的问题有:
(1)    由于在焊电路之前没有认真的查看STC89C52的管脚,使得管脚的顺序全部焊错了,最后只好重新买器件重焊;
(2)    烟雾值一直显示很高,经过查阅资料和换元件测试发现,烟雾传感器初次使用得通电几小时以上才可以正常使用,要做老化试验。
(3)    在解码程序的编写过程中,随着理解的深入也作了相应的修改。
(4)    比如说这次用到的液晶显示,刚开始用的是P0口,程序没有错误和警告,但是液晶却无法显示字符,通过多番测试才知道P0口的驱动不足,所以更换IO口后,便能正确显示。
(5)    如由于这次程序用的比较多,但是RAM空间又小,所以程序中的变量定义,必须改为idata(就是全部RAM区)型的,包括数组,否则变量随意分配会引发意想不到的后果。
5.2 结论
通过本次设计的参与以及行动,同学的互相合作以及老师的及时指导,感觉有不少的收获,从题目的选取到材料的准备,从硬件的焊接到软件的编程,都有所感悟。其中硬件的测试涉及到了示波器和万用表等的使用,软件设计到了keil编程环境的熟悉,proteus仿真电路的应用,但是过程中也遇到了很多麻烦,通过网络,老师,同学间的合作力量基本将其解决。由于水平的有限,所以各方面的设计效果还有很多欠缺待我们去进一步的学习与努力才能行之有效。

附录1:原理图

附录3:仿真图

  1. #include<reg52.h>
  2. #include <I2C.H>

  3. #define  ADDR 0x90    //PCF8591 地址

  4. // 此表为 LED 的字模            // 0    1    2    3    4    5    6   7    8    9    A    b    c    d    E    -    L   P    U    Hidden  _ (20)
  5. unsigned char code  Disp_Tab[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x88,0x83,0xC6,0xA1,0x86,0xbf,0xc7,0x8c,0xc1, 0xff,  0xf7 };
  6. unsigned char TABLEW[8] ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  7. unsigned char AD_CHANNEL;
  8. unsigned char LedOut[8];
  9. unsigned int  D[32];
  10.                            
  11. sbit KEY1 = P3^2;
  12. sbit KEY2 = P3^3;

  13. /********************************************************************
  14. * 名称 : Delay_1ms()
  15. * 功能 : 延时子程序,延时时间为 1ms * x
  16. * 输入 : x (延时一毫秒的个数)
  17. * 输出 : 无
  18. ***********************************************************************/
  19. void Delay_1ms(unsigned char i)//1ms延时
  20. {
  21.               unsigned char x,j;
  22.               for(j=0;j<i;j++)
  23.               for(x=0;x<=148;x++);            
  24. }
  25. /*******************************************************************
  26. DAC 变换, 转化函数              
  27. *******************************************************************/
  28. bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val)
  29. {
  30.    Start_I2c();              //启动总线
  31.    SendByte(sla);            //发送器件地址
  32.    if(ack==0)return(0);
  33.    SendByte(c);              //发送控制字节
  34.    if(ack==0)return(0);
  35.    SendByte(Val);            //发送DAC的数值
  36.    if(ack==0)return(0);
  37.    Stop_I2c();               //结束总线
  38.    return(1);
  39. }

  40. /*******************************************************************
  41. ADC发送字节[命令]数据函数              
  42. *******************************************************************/
  43. bit ISendByte(unsigned char sla,unsigned char c)
  44. {
  45.    Start_I2c();              //启动总线
  46.    SendByte(sla);            //发送器件地址
  47.    if(ack==0)return(0);
  48.    SendByte(c);              //发送数据
  49.    if(ack==0)return(0);
  50.    Stop_I2c();               //结束总线
  51.    return(1);
  52. }

  53. /*******************************************************************
  54. ADC读字节数据函数              
  55. *******************************************************************/
  56. unsigned char IRcvByte(unsigned char sla)
  57. {  unsigned char c;

  58.    Start_I2c();          //启动总线
  59.    SendByte(sla+1);      //发送器件地址
  60.    if(ack==0)return(0);
  61.    c=RcvByte();          //读取数据0

  62.    Ack_I2c(1);           //发送非就答位
  63.    Stop_I2c();           //结束总线
  64.    return(c);
  65. }

  66. //******************************************************************/
  67. main()
  68. {
  69. unsigned char i,temp=1;
  70. while(1)
  71. {/********以下AD-DA处理*************/
  72.    switch(AD_CHANNEL)
  73.    {
  74.      case 0: ISendByte(ADDR,0x41);
  75.              D[0]=IRcvByte(ADDR)*2;  //ADC0 模数转换1
  76.                                           break;

  77.               case 1: ISendByte(ADDR,0x42);
  78.              D[1]=IRcvByte(ADDR)*2;  //ADC1  模数转换2
  79.                                           break;

  80.               case 2: ISendByte(ADDR,0x43);
  81.              D[2]=IRcvByte(ADDR)*2;  //ADC2              模数转换3
  82.                                           break;

  83.               case 3: ISendByte(ADDR,0x40);
  84.              D[3]=IRcvByte(ADDR)*2;  //ADC3   模数转换4
  85.                                           break;

  86.               case 4: DACconversion(ADDR,0x40, D[4]/4); //DAC                数模转换
  87.                        break;
  88.    }

  89.    if(++AD_CHANNEL>4) AD_CHANNEL=0;
  90.             
  91.                             if(KEY1==0 || KEY2==0 )            
  92.                             {
  93.                                           Delay_1ms(20);                               //20毫秒软件防抖
  94.                                           if(KEY1 == 0)
  95.                                           {
  96.                                                         temp =1;
  97.                                                                      
  98.                                           }
  99.                                           else if(KEY2 == 0)
  100.                                           {
  101.                                                         temp=2;                                                                     
  102.                                           }
  103.                                          
  104.                             }
  105.                             if(temp ==1)
  106.                             {
  107.                                           LedOut[0]=Disp_Tab[D[0]%10000/1000];
  108.                                  LedOut[1]=Disp_Tab[D[0]%1000/100];
  109.                                  LedOut[2]=Disp_Tab[D[0]%100/10]&0x7f;
  110.                                  LedOut[3]=Disp_Tab[D[0]%10];
  111.             
  112.                                           LedOut[4]=Disp_Tab[D[1]%10000/1000];
  113.                                           LedOut[5]=Disp_Tab[D[1]%1000/100]&0x7f;
  114.                                           LedOut[6]=Disp_Tab[D[1]%100/10];
  115.                                           LedOut[7]=Disp_Tab[D[1]%10];               
  116.                             }
  117.                             if(temp ==2)
  118.                             {
  119.                                           LedOut[0]=Disp_Tab[D[2]%10000/1000];
  120.                                 LedOut[1]=Disp_Tab[D[2]%1000/100];
  121.                                 LedOut[2]=Disp_Tab[D[2]%100/10]&0x7f;
  122.                                 LedOut[3]=Disp_Tab[D[2]%10];
  123.             
  124.                                           LedOut[4]=Disp_Tab[D[3]%10000/1000];
  125.                                 LedOut[5]=Disp_Tab[D[3]%1000/100]&0x7f;
  126.                                  LedOut[6]=Disp_Tab[D[3]%100/10];
  127.                                  LedOut[7]=Disp_Tab[D[3]%10];               
  128.                             }
  129.                             for(i=0;i<8;i++)
  130.                             {
  131.                                           P0 = LedOut[7-i];
  132.                                           P2 = 7-i;
  133.                                           Delay_1ms(2);                                         
  134.                             }
  135.               }  
  136. }
复制代码

以上图文的Word格式文档下载(内容和本网页上的一模一样,方便大家保存):
132-(正版)智能环境监测系统论文.doc (750.5 KB, 下载次数: 243)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:484299 发表于 2019-3-4 16:02 | 显示全部楼层
谢谢楼主,可惜没有头文件,没有工程包   但是还是很有参考价值的 慢慢学习中
回复

使用道具 举报

ID:450793 发表于 2019-3-4 20:07 | 显示全部楼层
谢谢   很有用
回复

使用道具 举报

ID:497598 发表于 2020-3-5 10:57 | 显示全部楼层
谢谢老哥,最近写文档,参考一下
回复

使用道具 举报

ID:739870 发表于 2020-4-29 17:33 | 显示全部楼层
非常感谢大佬,对我帮助很大。
回复

使用道具 举报

ID:625901 发表于 2021-2-20 20:07 | 显示全部楼层
有完整的代码吗?
回复

使用道具 举报

ID:644716 发表于 2021-3-5 17:56 来自手机 | 显示全部楼层
老哥,没有正确的代码吗?
回复

使用道具 举报

ID:982617 发表于 2023-1-2 16:24 | 显示全部楼层
求完整的工程包
回复

使用道具 举报

ID:1060156 发表于 2023-1-3 21:25 | 显示全部楼层
vee接地和接滑动变阻器有啥区别啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表