二氧化碳检测仿真之二氧化碳检测仪论文.doc

上传人:本田雅阁 文档编号:2743198 上传时间:2019-05-10 格式:DOC 页数:26 大小:8.23MB
返回 下载 相关 举报
二氧化碳检测仿真之二氧化碳检测仪论文.doc_第1页
第1页 / 共26页
二氧化碳检测仿真之二氧化碳检测仪论文.doc_第2页
第2页 / 共26页
二氧化碳检测仿真之二氧化碳检测仪论文.doc_第3页
第3页 / 共26页
二氧化碳检测仿真之二氧化碳检测仪论文.doc_第4页
第4页 / 共26页
二氧化碳检测仿真之二氧化碳检测仪论文.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《二氧化碳检测仿真之二氧化碳检测仪论文.doc》由会员分享,可在线阅读,更多相关《二氧化碳检测仿真之二氧化碳检测仪论文.doc(26页珍藏版)》请在三一文库上搜索。

1、二氧化碳检测仿真 二氧化碳检测仿真二氧化碳检测仿真 二氧化碳检测仪论文二氧化碳检测仪论文 目目 录录 1 项目概况 .1 2 设计的目的、意义和背景 .2 3 方案论证 .2 3.1 二氧化碳传感器选择2 3.2 显示3 3.3 单片机选择3 3.4 A/D 转换选择 4 3.5 选定方案4 4 硬件系统设计及简介 .5 4.1 STC90C516RD+单片机5 4.2 MG811.7 4.3 A/D 转换模块 9 4.4 LCD160211 4.5 总设计电路图.11 5 软件设计 12 5.1 系统流程图.12 5.2 LCD1602 显示程序 .13 5.3 A/D 转换程序 .14 5

2、.4 计算 CO2 浓度值.14 6 调试 15 总 结 .17 致 谢 .18 参考文献 19 附录 20 第 1 页,共 24 页 基于单片机的二氧化碳浓度检测仪设计基于单片机的二氧化碳浓度检测仪设计 摘要摘要 随着社会经济的发展,人们生活水平普遍提高,瓜果、蔬菜及花卉的社会需求 数量和品质要求也不断提高,特别是大中城市需要周年供应新鲜蔬菜,因此农业温室 得到迅速发展。二氧化碳气体对农作物的生长起着非常重要的作用。近些年来,我国 北方农村形成了以温室大棚为主导的农业产业化,因此,为二氧化碳的增施创造了有 利的条件。由于不同作物所需的二氧化碳浓度不同,在二氧化碳的增施中又难于控制 对其量的排

3、放,所以研制二氧化碳浓度检测器并用于温室大棚的农业生产,对提高农 业科技含量,促进农业增收,农民增收具有深远的意义。 针对温室二氧化碳浓度,设计了以单片机为核心的温室大棚二氧化碳浓度监控系 统。本文对系统的的软硬件经行了详细的设计,实现了二氧化碳浓度的精确测量。为 了便于系统的调试、修改和改进,采用模块化设计,主要包括数据采集模块、数据处 理模块、显示模块。 关键词:关键词:二氧化碳浓度 单片机 1 项目概况 以STC90C516RD+单片机为主控制器,MG811作为二氧化碳传感器,由LCD1602构成 显示模块。此次设计要求是设计电路简单可靠,尽量选用新型元器件。为提高效率, 缩短开发周期,

4、不仅要仿真电路设计和软件设计,同时还要仿真将两者结合,共同调 试,排除各种软硬件故障。 硬件电路的仿真本设计是由Proteus来完成的,Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还 能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前 国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开 发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具,从原理图布图、代码 调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品 的完整设计。

5、是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件 三合一的设计平台。 本系统是由Keil单片机开发软件编译系统程序 , Keil C51是美国Keil Software 第 2 页,共 24 页 公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结 构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、 宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过 一个集成开发环境将这些部分组合在一起。 2 设计的目的、意义和背景 利用传统方法对温室环境进行监控,采用人工方法检测和控制,及其浪费人力资 源,而且精

6、度低,常常不能达到理想效果。目前国内推行科学种植技术,对温室大棚 采用人工的方法控制温度和湿度,还通过 CO2增施肥技术给大棚补充二氧化碳,虽然 有科学资料可以借鉴,但是利用人工方法存在着很多弊端12。尤其是对 CO2浓度的 监控,对于温度和湿度的监控,还可以通过温度计和湿度计的读数进行人工操作,而 对 CO2浓度的监控就没有那么简单。目前我国大多数大棚所采用的 CO2增施肥方法非 常笨拙,只是靠人工在固定时间对大棚进行 CO2施肥,对 CO2施肥的多少无法掌控, 而植物对 CO2的需求并不是越多越好,有资料表明:CO2浓度维持在 100ppm 植物正常 进行光合作用,浓度在 600-2000

7、ppm 光合作用为最佳状态,显然对 CO2浓度的控制要 得当。 近年来,随着单片机功能的日益强大和计算机的广泛应用,人们对大棚内参数检 测的准确性和控制的稳定性越来越高。本设计就是针对此问题,设计相对准确的、稳 定的 CO2浓度监控装置,由于系统的灵活性和模块化,可以广泛应用于温室大棚环境 监控。 随着传感器和计算机技术的不断进步和完善, CO2检测仪器开始发展起来。根据 国内目前红外二氧化碳气体传感器技术,制作了一种具有广泛开的应用前景, 并以其 测量范围宽、响应时间快、抗干扰能力强、成本低等特点的 CO2气体检测仪4。 3 方案论证 分析二氧化碳浓度检测仪的工作原理,提出二氧化碳浓度检测的

8、整体方案,整个 方案包括3个模块:二氧化碳浓度检测模块、数据处理模块、显示模块,以单片机 STC90C516RD+ 作为核心控制芯片。 3.1 二氧化碳传感器选择 二氧化碳传感器可由以下几种方案可供选择: 第 3 页,共 24 页 方案一:TGS4160二氧化碳传感器。 方案二: NDIR红外气体传感器MH-410V/D。 方案三: MG811 二氧化碳传感器。 对于方案一,TGS4160具有体积小、寿命长、耐高温高湿等特点5。可广泛用于 自动通风换气系统或是CO2气体的长期监测等应用场合 ,市场价格在400元左右。 对于方案二,MH-410V/410D NDIR 红外气体传感器是一个通用型、

9、智能型、微型 传感器,该传感器利用非色散红外(NDIR)原理对空气中存在的CO2进行探测,具有 很好的选择性,无氧气依赖性,性能稳定、寿命长6。虽然红外传感器的功能较好, 但红外传感器价格较高,性价比低。 对于方案三,MG811二氧化碳传感器不但具有体积小、寿命长的特点外,对CO2 有良好的灵敏度和选择性,受温湿度的变化影响较小,好的稳定性7,市场价在200元 左右。 MG811灵敏度高,精度高,价格低,可以满足本次设计的需求,所以本系统采用 方案三。 3.2 显示 方案一:采用数码管显示二氧化碳浓度,动态扫描显示方式。 方案二:采用液晶显示屏LCD显示二氧化碳浓度。 对于方案一,该方案成本低

10、廉,显示温度明确醒目,在夜间也能看见,功耗极低, 显示驱动程序的编写也相对简单,这种显示方式得到广泛应用。不足的地方是扫描显 示方式是使五个LED逐个点亮,因此会有闪烁,但是人眼的视觉暂留时间为20MS,当 数码管扫描周期小于这个时间时人眼将感觉不到闪烁,因此可以通过增大扫描频率来 消除闪烁感。 对于方案二,LCD的优点主要包括零辐射、低功耗、散热小、体积小、图像还原 精确、字符显示锐利等。液晶体显示屏具有显示字符优美,不但能显示数字还能显示 字符甚至图形的优点,这是LED数码管无法比拟的。但是液晶显示模块价格相对于数 码管比较昂贵,容易受到外界环境的影响:阳光、灰尘、温度等,使用寿命短。 L

11、CD1602双行16字符显示基本满本设计的需求,所以本系统采用方案二。 3.3 单片机选择 方案一:采用 AT89S52 单片机。 第 4 页,共 24 页 方案二:采用 STC90C516RD+单片机。 对于方案一,AT89S52 是一种低功耗、高性能 CMOS 8 位微控制器,具有 8K 在系 统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容89。片上 Flash 允许程序存储器在系统可编程,亦 适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash。 对于方案二,STC90C516RD

12、+具备 AT89S52 的功能并且全兼容 AT89S52 单片机,运 行速度更快。而且设计所提供的是以 STC90C516RD+为核心的开发板。 综合考虑本系统采用方案二。 3.4 A/D 转换选择 方案一:采用 ADC0809。 方案二:采用 PCF8591。 对于方案一,ADC0809 是美国国家半导体公司生产的 CMOS 工艺 8 通道,8 位逐次 逼近式 A/D 模数转换器。其内部有一个 8 通道多路开关,它可以根据地址码锁存译码 后的信号,只选通 8 路模拟输入信号中的一个进行 A/D 转换。是目前国内应用最广泛 的 8 位通用 A/D 芯片。 对于方案二,PCF8591 是一个单片

13、集成、单独供电、低功耗、8-bit CMOS 数据获 取器件。PCF8591 具有 4 个模拟输入、1 个模拟输出和 1 个串行 I2C 总线接口。 PCF8591 的 3 个地址引脚 A0, A1 和 A2 可用于硬件地址编程,允许在同个 I2C 总线上 接入 8 个 PCF8591 器件,而无需额外的硬件。在 PCF8591 器件上输入输出的地址、控 制和数据信号都是通过双线双向 I2C 总线以串行的方式进行传输。 综合考虑本系统采用方案二。 3.5 选定方案 按照系统的设计功能要求,本系统的设计必须采用单片机软件系统实现,初步确 定设计系统由二氧化碳浓度检测模块、数据处理模块、显示模块共

14、 3 个模块组成,电 路系统框图如图 3-1 所示。 第 5 页,共 24 页 LCD1602 显示屏 MG811 传感器 PCF8591 A/D STC90C516RD+ 单片机 图 3-1 系统框图 4 硬件系统设计及简介 系统主要部件包括MG811二氧化碳传感器、STC90C516RD+单片机、LCD液晶显示、 PCF8591。 4.1 STC90C516RD+单片机 STC90C516RD+系列单片机是宏晶科技推出的新一代高速/低功耗的单片机,指令 代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周期可任意选择, 内部集成 MAX810 专用复位电路,时钟频率

15、在 12MHz 以下时,复位脚可直接接地。 STC90C51RD+单片机管脚如图 4-1 所示 图 4-1 单片机管脚图 各管脚功能: 第 6 页,共 24 页 VCC:供电电压。 GND:接地。 P0 口:P0 口为一个8 位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。当P1 口的管脚第一次写1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它 可以被定义为数据/地址的第八位。在FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0输出原码,此时P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的8 位双向I/O 口,P1 口缓冲器能接收

16、 输出4TTL门电流。P1 口管脚写入1 后,被内部上拉为高,可用作输入,P1 口被外部 下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时, P1 口作为第八位地接收。 P2 口:P2 口为一个内部上拉电阻的8 位双向I/O 口,P2 口缓冲器可接收,输 出4 个TTL 门电流,当P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。 并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘 故。P2 口当用于外部程序存储器或16 位地址外部数据存储器进行存取时,P2 口输 出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部

17、八位地址数 据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在FLASH 编程和校 验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是8 个带内部上拉电阻的双向I/O 口,可接收输出4 个TTL 门 电流。当P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由 于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作 为AT89C51 的一些特殊功能口。P3.0:RXD(串行输入口) ;P3.1:TXD(串行输出口) ; P3.2:/INT0(外部中断0) ;P3.3:/INT1(外部中断1) ;P3.4:T0(记时器0 外

18、部输 入) ;P3.5:T1(记时器1外部输入) ;P3.6:/WR(外部数据存储器写选通) ; P3.7:/RD(外部数据存储器读选通) 。P3 口同时为闪烁编程和编程校验接收一些控 制信号。 RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时 间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位 字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率 周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲 或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉

19、 第 7 页,共 24 页 冲。如想禁止ALE 的输出可在SFR8EH 地址上置0。此时,ALE 只有在执行MOVX,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期 间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的 /PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器 (0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式1 时,/EA 将内部锁定 为RESET;当/EA 端保持高电平时,此间

20、内部程序存储器。在FLASH 编程期间,此引 脚也用于施加12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 4.2 MG811 MG811对CO2具有很高的灵敏度和良好的选择性,探测范围为010000ppm,使用 寿命长,快速的响应恢复特性,性能稳定可靠,有5个引脚分别是VCC(电源正输入) 、 DOUT(TTL信号输出) 、AOUT(模拟信号输出) 、GND(电源负输入) 、TCM(温度补偿输 出) ,工作电压为DC6V, 双路信号输出(模拟量信号和TTL高低电平信号),具有TTL 电平信号灯输出指示, ,TTL电

21、平输出有效信号为低电平,模拟量输出电压0-2V,浓 度越低输出电压越高。实物图如图4-4所示。 第 8 页,共 24 页 图 4-2 MG811 实物图 4.2.14.2.1 MG811MG811 工作原理工作原理 本传感器采用固体电解质电池原理,由下列固体电池构成:空气, NASICON,碳 酸盐,CO2 。原理图如图 4-3 所示。 图 4-3 MG811 原理图 当传感器置于 CO2气氛中时,将发生以下电极反应: 负极: 2Li + + CO2 + 1/2O2 + 2e - = Li2CO3 正极: 2Na+ + 1/2O2 + 2e- = Na2O 总电极反应: Li2CO3 + 2N

22、a + = Na2O + 2Li + + CO2 传感器敏感电极与参考电极间的电势差(EMF)符合能斯特方程: EMF = Ec - (R x T) / (2F) ln (P(CO2) 上式中: P(CO2)CO2 分压;Ec常量;R气体常量 ;T绝对温度(K);F法拉第常 量。 元件加热电压由外电路提供,当其表面温度足够高时,元件相当于一个电池,其 两端会输出一电压信号,其值与能斯特方程符合得较好。元件测量时放大器的阻抗须 在 1001000G 之间,其测试电流应控制在 1pA 以下。 灵敏度特性: 图 4-4 给出了传感器的灵敏度特性曲线。 温度:28、 相对湿度:65%、 第 9 页,共

23、 24 页 氧气浓度:21% EMF:元件在不同气体,不同浓度下的输出电势 图 4-4 MG811 灵敏度曲线图 响应恢复特性: 图 4-5 为 MG811 响应恢复曲线图,从图中可以看出固体电解质元件具有较好的响 应恢复特性。 图 4-5 MG811 响应恢复图 4.3 A/D 转换模块 本设计才用的 A/D 处理是 PCF8591,PCF8591 具有 4 个模拟输入、 1 个模拟输出 和 1 个串行 I2C 总线接口。PCF8591 的 3 个地址引脚 A0, A1 和 A2 可用于硬件地 址编程,允许在同个 I2C 总线上接入 8 个 PCF8591 器件,而无需额外的硬件。在 PCF

24、8591 器件上输入输出的地址、控制和数据信号都是通过双线双向I2C 总线以 串行的方式进行传输。 管脚图如图 4-6 所示。PCF8591 原理图如图 4-7 所示。 第 10 页,共 24 页 图 4-6 PCF8591 管脚图 各管脚功能: AIN0AIN3:模拟信号输入端。 VDD、VSS:电源端(2.5-6V) 。 SDA、SCL:I2C 总线的数据线、 时钟线。 OSC:外部时钟输入端,内部时钟输出端。 EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地。 AGND:模拟信号地。 AOUT:D/A 转换输出端。 VREF:基准电源端。 PCF8591 具有以下特性: 1、单

25、独供电 2、PCF8591 的操作电压范围 2.5V-6V 3、低待机电流 4、通过 I2C 总线串行输入 /输出 5、PCF8591 通过 3 个硬件地址引脚寻址 6、PCF8591 的采样率由 I2C 总线速率决定 7、4 个模拟输入可编程为单端型或差分输入 8、自动增量频道选择 9、PCF8591 的模拟电压范围从 VSS 到 VDD 10、PCF8591 内置跟踪保持电路 11、8-bit 逐次逼近 A/D 转换器 第 11 页,共 24 页 12、通过 1 路模拟输出实现 DAC 增益 图 4-7 PCF8591 原理图 4.4 LCD1602 1602 型 LCD 显示模块具有体积

26、小,功耗低,显示内容丰富等特点。1602 型 LCD 可以显示 2 行 16 个字符,最佳工作电压为 5V,工作电流为 2.0mA(5V),有 8 位数 据总线 D0-D7 和 RS,R/W,EN 三个控制端口,工作电压为 5V,并且具有字符对比度调 节和背光功能。LCD1602 管脚图如图 4-8 所示。 图 4-8 LCD1602 管脚图 1602 采用标准的 16 脚接口,其中: 第 1 脚:VSS 为电源地 。 第 2 脚:VDD 接 5V 电源正极 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源 时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一

27、个 10K 的电 位器调整对比度)。 第 12 页,共 24 页 第 4 脚:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择 指令寄存器。 第 5 脚:RW 为读写信号线,高电平 (1)时进行读操作,低电平 (0)时进行写操 作。 第 6 脚:E(或 EN)端为使能(enable)端。 第 714 脚:D0D7 为 8 位双向数据端。 第 1516 脚:空脚或背灯电源。 15 脚背光正极, 16 脚背光负极。 4.5 总设计电路图 图 4-9 为总体电路图,电路是在 Proteus 中仿真,由于 Proteus 中没有 STC 系列的单片机和 MG811,所以 STC90

28、C51RD+单片机用 AT89S52 代替,MG811 二氧 化碳传感器用一个滑动变阻器代替。其它元器件有:LCD1602 液晶显示, PCF8591 数模转换。 图 4-9 总设计电路图 5 软件设计 5.1 系统流程图 系统主程序首先对LCD初始化,然后读取PCF8591通道3的值,计算二氧化碳的浓 度,最后转化成液晶字符并通过LCD1602显示出来。程序不断地循环执行,显示二氧 化碳的浓度。系统的流程图如图5-1所示。 第 13 页,共 24 页 图 5-1 系统流程图 5.2 LCD1602 显示程序 LCD1602 初始化函数模块 void init_lcd()/初始化函数 lcde

29、n=0;/默认开始状态为关使能端 write_com(0x0f); write_com(0x38);/显示模式设置,默认为 0x38 write_com(0x01);/显示清屏,将上次的内容清除,默认为 0x01 write_com(0x0c);/显示功能设置 0x0f 为开显示,显示光标,光标 闪烁;0x0c 为开显示,不显光标,光标不闪 write_com(0x06);/设置光标状态默认 0x06,为读一个字符光标加 1 write_com(0x80);/设置初始化数据指针,是在读指令的操作里进 行的 第 14 页,共 24 页 写命令函数 void write_com(uchar com

30、) lcdrs=0; P0=com; delay(1); lcden=1; delay(1); lcden=0; 写数据函数 void write_date(uchar date) lcdrs=1; P0=date; delay(1); lcden=1; delay(1); lcden=0; 5.3 A/D 转换程序 bit ISendByte(unsigned char sla,unsigned char c) Start_I2c(); /启动总线 SendByte(sla); /发送器件地址 if(ack=0)return(0); SendByte(c); /发送数据 if(ack=0)r

31、eturn(0); 第 15 页,共 24 页 Stop_I2c(); /结束总线 return(1); unsigned char IRcvByte(unsigned char sla) unsigned char c; Start_I2c(); /启动总线 SendByte(sla+1); /发送器件地址 if(ack=0)return(0); c=RcvByte(); /读取数据 0 Ack_I2c(1); /发送非就答位 Stop_I2c(); /结束总线 return(c); 5.4 计算 CO2浓度值 void main() lcdrw=0; delay(5); init_lcd(

32、);/液晶初始化 while(1) ISendByte(PCF8591,0x43); CO2=IRcvByte(PCF8591); /ADC0 模数转换 1 放大 2 倍显示 /CO2=100; CO2=CO2-255; CO2=abs(CO2); 第 16 页,共 24 页 CO2*=39.21568627; display(); 6 调试 本设计的全过程都是在仿真软件中完成的,是将PROTEUS软件和KEIL软件结合起 来共同模仿的此温度控制系统的设计。首先在PROTEUS中设计出仿真硬件电路,在设 计仿真电路的过程中,此软件中有许多元件可以供我们使用,但仍有些元器件无法找 到,我就自己设

33、计元件,但自己设计的元件无法模拟元件的电气特性和元件特性,我 只有找功能相似或原理相同的元件来替代。再在KEIL软件中编写硬件电路的驱动程序, 在编写程序的过程中,重要的是设置好单片机的I/O口和生成HEX文件,用来支持硬件 电路10。在这两个准备工作做好之后,将两个软件联合起来调试,即将KEIL生成的 HEX文件导入到PROTEUS设计的主控芯片中,运行硬件电路,观察是否出现自己预想的 效果。在出现问题时,首先调试自己编写的源程序,再调试硬件电路。调试好之后, LCD1602可以正常显示出当前的二氧化碳浓度值。测试结果表明,本系统基本实现了 预期功能。 实物的调试是在普中开发板上进行的,将写

34、好的程序生成的.hex 文件烧进 STC90C51RD+单片机中,连接好线路,可以实现二氧化碳浓度从 0ppm 到 10000ppm 的 变化。 图 6-1 为实物调试图,实物调试在普中开发板上进行,下图为二氧化碳浓度上限。 第 17 页,共 24 页 图 6-1 CO2浓度上限 图 6-2 为二氧化碳浓度下限。 图 6-2 CO2浓度下限 图 6-3 为最终实物图 第 18 页,共 24 页 图 6-3 实物图 总 结 随着毕业日子的到来,毕业设计也接近了尾声。经过几周的奋战我的毕业设计终 于完成了。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯总结, 但是通过这次做毕业设计发

35、现自己的看法有点太片面。毕业设计不仅是对前面所学知 识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了自己 原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会, 什么东西都懂,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的 过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。 本设计,主要用到了单片机,传感器,A/D 转换和 LCD 显示,通过本次毕业设计, 使我对这些器件的了解得到了进一步的升华,理论结合实践,通过不断的调试,基本 实现了本设计预期的功能。 由于本人的学识有限,本设计还存在一定的不足,检测到的二氧化碳

36、浓度不够精 确,这些都是有待提高的。 二氧化碳浓度检测仪在温室大棚,生产生活中都有一定的应用,所以本设计有一 定的应用价值,所以,本设计的功能还有待提高和增强,比如说,在温室大棚中对可 第 19 页,共 24 页 以对二氧化碳的浓度自动化控制,增添一个报警功能,设置二氧化碳浓度的上限和下 限,当超过一定的浓度是,可以对温室大棚中二氧化碳的浓度进行自动调整,提高农 作物产量。 在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请 教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设 计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心

37、, 相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我 充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好, 但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。 致 谢 时光飞逝,转眼间在信息工程学院的四年大学生活已经走到了最后的时刻,在这 四年里,有老师对我的谆谆教导,我将永远铭记在心,还有同学之间的深厚的兄弟情 谊,将永远作为我的动力源泉。谨此向他们表示诚挚的谢意。 首先,我要感谢我的毕业设计导师XXX老师,导师渊博的知识、严谨务实的治学 态度、开拓进取的工作作风,诲人不倦的精神、睿智练达的学者风范在这段时间里耳 濡目

38、染,将成为我以后工作学习中最宝贵的财富,将对我的一生产生重要的影响。在 此,谨向我尊敬的XXX老师表示我衷心的感谢和诚挚的敬意。 其次,我要感谢在大学四年里所有教导过我的老师们,老师们严谨的治学态度, 奠定了坚实的专业知识基础,老师的言传身教让我受益匪浅,即使我走上工作岗位, 也会因为我深厚的功底而更加出色。 再次,我要感谢和我一起生活了四年的计算机 12-2 班同学,以及和我并肩战斗 的兄弟,是你们让我的大学生活更加有意义。 最后,感谢审稿老师对我论文的评阅,感谢父母在学习和生活中对我的大力支持 和帮助。 第 20 页,共 24 页 参考文献 1纪建伟.温室二氧化碳浓度监控系统的研究J.沈阳

39、农业大学学报,2001,32(2):54-56 2吴春蕾.温室二氧化碳浓度检测系统的研究D.天津:河北工业大学,2006:02 3杜深慧.二氧化碳浓度检测装置的设计与实现J.华北电力大学,2004:12-15 4连清汪.基于多 CPU 的智能温室大棚监控系统的研究J.科技情报开发与经济,2002,12(4): 169-170 5林敏,于忠得.HS1100/HS1101 电容式湿度传感器及其应用J.传感器,2001,10:44-45 6强易富,胡生清,于晓洋等.传感器M.北京:机械工业出版社.2001:13-30 7张福学,传感器应用及其电路精选M北京:北京电子工业出版社,1992 8周立功等.

40、51 单片机新技术M.北京:北京航空航天大学出版社,2003,01:12-15 9何立民.单片机应用系统设计M.北京:北京航空航天大学出版社,2000:3-10 10赵文博,刘文涛单片机语言 C51 程序设计M北京:人民邮电出版社,2005:1-5 11赵亮.单片机 C 语言编程与实例M.人民邮电出版社,2003:15-18 12牛余鹏,牛傲其.51 单片机 C 语言的编程技巧J.实用电子制作,2007:4-5 13龚运新.单片机 C 语言开发技术M.清华大学出版社,2006:20-21 第 21 页,共 24 页 14程利民.单片机 C 语言编程实践M.电子工业出版社,2011:4-7 15

41、张鹏.提高单片机应用系统可靠性的措施J.电测与仪表,1997:5-6 16房德君,吴刚.一种新型的单片机综合实验系统J.山东工程学院学报,1996 17牛君,张戈.单片机系统应用中的抗干扰措施J.现代电子技术,2003:19-20 18荣彩云.单片机系统应用中的抗干扰措施J.仪表技术,2005:25-26 19蔡共宣.基于单片机的数据采集与处理系统J. 科技情报开发与经济,2003:30-35 20达争尚,何俊华.实施控制系统的单片机抗干扰设计J.测控技术,2003:6-8 附录 系统仿真图图 10-1 所示: 图 10-1 系统仿真图 第 22 页,共 24 页 源程序: #include

42、/包含头文件 #include #include #define uchar unsigned char /宏定义 #define uint unsigned int #include #define PCF8591 0x90 /PCF8591 地址 sbit lcdrs=P26; /液晶控制位 sbit lcdrw=P25; /液晶控制位 sbit lcden=P27; uint CO2; uchar table=“ CO2:00000ppm “; /显示第 1 行的内容 计时显示 uchar table1=“ “; /显示第 2 行的内容 void delay(uint xms) /延时函

43、数 int a,b; for(a=xms;a0;a-) for(b=110;b0;b-); void write_com(uchar com)/写命令函数 lcdrs=0; P0=com; delay(1); lcden=1; delay(1); lcden=0; void write_date(uchar date)/写数据函数 第 23 页,共 24 页 lcdrs=1; P0=date; delay(1); lcden=1; delay(1); lcden=0; void init_lcd()/初始化函数 lcden=0;/默认开始状态为关使能端,见时序图 write_com(0x0f)

44、; write_com(0x38);/显示模式设置,默认为 0x38,不用变。 write_com(0x01);/显示清屏,将上次的内容清除,默认为 0x01. write_com(0x0c);/显示功能设置 0x0f 为开显示,显示光标,光标 闪烁;0x0c 为开显示,不显光标,光标不闪 write_com(0x06);/设置光标状态默认 0x06,为读一个字符光标加 1. write_com(0x80);/设置初始化数据指针,是在读指令的操作里进行 的 void display() int i; table6=CO2/10000+0; /转换 A 段时时间 table7=CO2/1000%

45、10+0; table8=CO2/100%10+0; table9=CO2/10%10+0; table10=CO2%10+0; write_com(0x80);/显示第一行 for(i=0;i16;i+) 第 24 页,共 24 页 write_date(tablei); delay(5); write_com(0x80+0x40);/显示第 2 行 for(i=0;i16;i+) write_date(table1i); delay(5); bit ISendByte(unsigned char sla,unsigned char c) Start_I2c(); /启动总线 SendByt

46、e(sla); /发送器件地址 if(ack=0)return(0); SendByte(c); /发送数据 if(ack=0)return(0); Stop_I2c(); /结束总线 return(1); ADC 读字节数据函数 unsigned char IRcvByte(unsigned char sla) unsigned char c; Start_I2c(); /启动总线 SendByte(sla+1); /发送器件地址 if(ack=0)return(0); c=RcvByte(); /读取数据 0 Ack_I2c(1); /发送非就答位 Stop_I2c(); /结束总线 return(c); 第 25 页,共 24 页 void main() lcdrw=0; delay(5); init_lcd();/液晶初始化 while(1) ISendByte(PCF8591,0x43); CO2=IRcvByte(PCF8591); /ADC0 模数转换 1 放大 2 倍显示 /CO2=100; CO2=CO2-255; CO2=abs(CO2); CO2*=39.21568627; display();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1