收藏 分享(赏)

基于单片机的二氧化碳浓度检测仪设计论文.doc

上传人:微传9988 文档编号:2491023 上传时间:2018-09-18 格式:DOC 页数:26 大小:8.20MB
下载 相关 举报
基于单片机的二氧化碳浓度检测仪设计论文.doc_第1页
第1页 / 共26页
基于单片机的二氧化碳浓度检测仪设计论文.doc_第2页
第2页 / 共26页
基于单片机的二氧化碳浓度检测仪设计论文.doc_第3页
第3页 / 共26页
基于单片机的二氧化碳浓度检测仪设计论文.doc_第4页
第4页 / 共26页
基于单片机的二氧化碳浓度检测仪设计论文.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、.目 录1 项目概况 .12 设计的目的、意义和背景 .23 方案论证 .23.1 二氧化碳传感器选择 23.2 显示 33.3 单片机选择 33.4 A/D 转换选择 43.5 选定方案 44 硬件系统设计及简介 .54.1 STC90C516RD+单片机 54.2 MG811.74.3 A/D 转换模块 94.4 LCD1602114.5 总设计电路图 .115 软件设计 125.1 系统流程图 .125.2 LCD1602 显示程序 .135.3 A/D 转换程序 .145.4 计算 CO2 浓度值 .146 调试 15总 结 .17致 谢 .18参考文献 19附录 20塔里木大学毕业设

2、计第 1 页,共 24 页基于单片机的二氧化碳浓度检测仪设计摘要 随着社会经济的发展,人们生活水平普遍提高,瓜果、蔬菜及花卉的社会需求数量和品质要求也不断提高,特别是大中城市需要周年供应新鲜蔬菜,因此农业温室得到迅速发展。二氧化碳气体对农作物的生长起着非常重要的作用。近些年来,我国北方农村形成了以温室大棚为主导的农业产业化,因此,为二氧化碳的增施创造了有利的条件。由于不同作物所需的二氧化碳浓度不同,在二氧化碳的增施中又难于控制对其量的排放,所以研制二氧化碳浓度检测器并用于温室大棚的农业生产,对提高农业科技含量,促进农业增收,农民增收具有深远的意义。 针对温室二氧化碳浓度,设计了以单片机为核心的

3、温室大棚二氧化碳浓度监控系统。本文对系统的的软硬件经行了详细的设计,实现了二氧化碳浓度的精确测量。为了便于系统的调试、修改和改进,采用模块化设计,主要包括数据采集模块、数据处理模块、显示模块。关键词:二氧化碳浓度 单片机1 项目概况以STC90C516RD+单片机为主控制器,MG811作为二氧化碳传感器,由LCD1602构成显示模块。此次设计要求是设计电路简单可靠,尽量选用新型元器件。为提高效率,缩短开发周期,不仅要仿真电路设计和软件设计,同时还要仿真将两者结合,共同调试,排除各种软硬件故障。硬件电路的仿真本设计是由Proteus来完成的,Proteus软件是英国Labcenter elect

4、ronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。本系统是由Keil单片机开发软件编译系统程序 , Keil C51是美国Keil Software公司出品的51系列兼

5、容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。2 设计的目的、意义和背景利用传统方法对温室环境进行监控,采用人工方法检测和控制,及其浪费人力资源,而且精度低,常常不能达到理想效果。目前国内推行科学种植技术,对温室大棚采用人工的方法控制温度和湿度,还通过 CO2增施肥技术给大棚补充二氧化碳,虽然有科学资料可以借鉴,但是利用人工方法存在着很多弊端 12。尤其是对 CO2浓度的监控,对于温度和湿度的

6、监控,还可以通过温度计和湿度计的读数进行人工操作,而对 CO2浓度的监控就没有那么简单。目前我国大多数大棚所采用的 CO2增施肥方法非常笨拙,只是靠人工在固定时间对大棚进行 CO2施肥,对 CO2施肥的多少无法掌控,而植物对 CO2的需求并不是越多越好,有资料表明:CO 2浓度维持在 100ppm 植物正常进行光合作用,浓度在 600-2000ppm 光合作用为最佳状态,显然对 CO2浓度的控制要得当。近年来,随着单片机功能的日益强大和计算机的广泛应用,人们对大棚内参数检测的准确性和控制的稳定性越来越高。本设计就是针对此问题,设计相对准确的、稳定的 CO2浓度监控装置,由于系统的灵活性和模块化

7、,可以广泛应用于温室大棚环境监控。随着传感器和计算机技术的不断进步和完善, CO2检测仪器开始发展起来。根据国内目前红外二氧化碳气体传感器技术,制作了一种具有广泛开的应用前景, 并以其测量范围宽、响应时间快、抗干扰能力强、成本低等特点的 CO2气体检测仪 4。 3 方案论证分析二氧化碳浓度检测仪的工作原理,提出二氧化碳浓度检测的整体方案,整个方案包括3个模块:二氧化碳浓度检测模块、数据处理模块、显示模块,以单片机STC90C516RD+ 作为核心控制芯片。3.1 二氧化碳传感器选择二氧化碳传感器可由以下几种方案可供选择:方案一:TGS4160二氧化碳传感器。方案二: NDIR红外气体传感器MH

8、-410V/D。塔里木大学毕业设计第 3 页,共 24 页方案三: MG811 二氧化碳传感器。对于方案一,TGS4160具有体积小、寿命长、耐高温高湿等特点 5。可广泛用于自动通风换气系统或是CO 2气体的长期监测等应用场合 ,市场价格在400元左右。对于方案二,MH-410V/410D NDIR 红外气体传感器是一个通用型、智能型、微型传感器,该传感器利用非色散红外(NDIR)原理对空气中存在的CO 2进行探测,具有很好的选择性,无氧气依赖性,性能稳定、寿命长 6。虽然红外传感器的功能较好,但红外传感器价格较高,性价比低。对于方案三,MG811二氧化碳传感器不但具有体积小、寿命长的特点外,

9、对CO 2 有良好的灵敏度和选择性,受温湿度的变化影响较小,好的稳定性 7,市场价在200元左右。MG811灵敏度高,精度高,价格低,可以满足本次设计的需求,所以本系统采用方案三。3.2 显示方案一:采用数码管显示二氧化碳浓度,动态扫描显示方式。方案二:采用液晶显示屏LCD显示二氧化碳浓度。对于方案一,该方案成本低廉,显示温度明确醒目,在夜间也能看见,功耗极低,显示驱动程序的编写也相对简单,这种显示方式得到广泛应用。不足的地方是扫描显示方式是使五个LED逐个点亮,因此会有闪烁,但是人眼的视觉暂留时间为20MS,当数码管扫描周期小于这个时间时人眼将感觉不到闪烁,因此可以通过增大扫描频率来消除闪烁

10、感。对于方案二,LCD的优点主要包括零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利等。液晶体显示屏具有显示字符优美,不但能显示数字还能显示字符甚至图形的优点,这是LED数码管无法比拟的。但是液晶显示模块价格相对于数码管比较昂贵,容易受到外界环境的影响:阳光、灰尘、温度等,使用寿命短。LCD1602双行16字符显示基本满本设计的需求,所以本系统采用方案二。3.3 单片机选择方案一:采用 AT89S52 单片机。方案二:采用 STC90C516RD+单片机。对于方案一,AT89S52 是一种低功耗、高性能 CMOS 8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 A

11、tmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容 89。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash。对于方案二,STC90C516RD+具备 AT89S52 的功能并且全兼容 AT89S52 单片机,运行速度更快。而且设计所提供的是以 STC90C516RD+为核心的开发板。综合考虑本系统采用方案二。3.4 A/D 转换选择方案一:采用 ADC0809。方案二:采用 PCF8591。对于方案一,ADC0809 是美国国家半导体公司生产的 CMOS 工艺 8 通道,8 位逐

12、次逼近式 A/D 模数转换器。其内部有一个 8 通道多路开关,它可以根据地址码锁存译码后的信号,只选通 8 路模拟输入信号中的一个进行 A/D 转换。是目前国内应用最广泛的 8 位通用 A/D 芯片。对于方案二,PCF8591 是一个单片集成、单独供电、低功耗、8-bit CMOS 数据获取器件。PCF8591 具有 4 个模拟输入、1 个模拟输出和 1 个串行 I2C 总线接口。PCF8591 的 3 个地址引脚 A0, A1 和 A2 可用于硬件地址编程,允许在同个 I2C 总线上接入 8 个 PCF8591 器件,而无需额外的硬件。在 PCF8591 器件上输入输出的地址、控制和数据信号

13、都是通过双线双向 I2C 总线以串行的方式进行传输。综合考虑本系统采用方案二。3.5 选定方案按照系统的设计功能要求,本系统的设计必须采用单片机软件系统实现,初步确定设计系统由二氧化碳浓度检测模块、数据处理模块、显示模块共 3 个模块组成,电路系统框图如图 3-1 所示。LCD1602 显示屏MG811 传感器PCF8591 A/D STC90C516RD+单片机塔里木大学毕业设计第 5 页,共 24 页图 3-1 系统框图4 硬件系统设计及简介系统主要部件包括MG811二氧化碳传感器、STC90C516RD+单片机、LCD液晶显示、PCF8591。4.1 STC90C516RD+单片机STC

14、90C516RD+系列单片机是宏晶科技推出的新一代高速/低功耗的单片机,指令代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周期可任意选择,内部集成 MAX810 专用复位电路,时钟频率在 12MHz 以下时,复位脚可直接接地。STC90C51RD+单片机管脚如图 4-1 所示图 4-1 单片机管脚图各管脚功能:VCC:供电电压。GND:接地。P0 口:P0 口为一个8 位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。当P1 口的管脚第一次写1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH 编程时,P0

15、口作为原码输入口,当FIASH 进行校验时,P0输出原码,此时P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的8 位双向I/O 口,P1 口缓冲器能接收输出4TTL门电流。P1 口管脚写入1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1 口作为第八位地接收。P2 口:P2 口为一个内部上拉电阻的8 位双向I/O 口,P2 口缓冲器可接收,输出4 个TTL 门电流,当P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上

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

17、P3.1:TXD(串行输出口) ;P3.2:/INT0(外部中断0) ;P3.3:/INT1(外部中断1) ;P3.4:T0(记时器0 外部输入) ;P3.5:T1(记时器1外部输入) ;P3.6:/WR(外部数据存储器写选通) ;P3.7:/RD(外部数据存储器读选通) 。P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡

18、器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉塔里木大学毕业设计第 7 页,共 24 页冲。如想禁止ALE 的输出可在SFR8EH 地址上置0。此时,ALE 只有在执行MOVX,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000

19、H-FFFFH) ,不管是否有内部程序存储器。注意加密方式1 时,/EA 将内部锁定为RESET;当/EA 端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP) 。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。4.2 MG811MG811对CO 2具有很高的灵敏度和良好的选择性,探测范围为010000ppm,使用寿命长,快速的响应恢复特性,性能稳定可靠,有5个引脚分别是VCC(电源正输入) 、DOUT(TTL信号输出) 、AOUT(模拟信号输出) 、GND(电源负输入) 、TCM(温度补偿输出) ,

20、工作电压为DC6V, 双路信号输出(模拟量信号和TTL高低电平信号),具有TTL电平信号灯输出指示, ,TTL电平输出有效信号为低电平,模拟量输出电压0-2V,浓度越低输出电压越高。实物图如图4-4所示。图 4-2 MG811 实物图4.2.1 MG811 工作原理本传感器采用固体电解质电池原理,由下列固体电池构成:空气, NASICON,碳酸盐,CO 2 。原理图如图 4-3 所示。图 4-3 MG811 原理图当传感器置于 CO2气氛中时,将发生以下电极反应:负极:2Li + + CO2 + 1/2O2 + 2e - = Li2CO3正极:2Na+ + 1/2O2 + 2e- = Na2O

21、总电极反应:Li2CO3 + 2Na + = 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%、塔里木

22、大学毕业设计第 9 页,共 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 可 用 于 硬 件 地址 编 程 , 允 许 在 同 个 I2

23、C 总 线 上 接 入 8 个 PCF8591 器 件 , 而 无 需 额 外 的 硬 件 。 在PCF8591 器 件 上 输 入 输 出 的 地 址 、 控 制 和 数 据 信 号 都 是 通 过 双 线 双 向 I2C 总 线 以串 行 的 方 式 进 行 传 输 。 管 脚 图 如 图 4-6 所 示 。 PCF8591 原 理 图 如 图 4-7 所 示 。图 4-6 PCF8591 管脚图各管脚功能:AIN0 AIN3: 模 拟 信 号 输 入 端 。VDD、 VSS: 电 源 端 ( 2.5-6V) 。SDA、 SCL: I2C 总 线 的 数 据 线 、 时 钟 线 。OSC:

24、 外 部 时 钟 输 入 端 , 内 部 时 钟 输 出 端 。EXT: 内 部 、 外 部 时 钟 选 择 线 , 使 用 内 部 时 钟 时 EXT 接 地 。 AGND: 模 拟 信 号 地 。 AOUT: D/A 转 换 输 出 端 。 VREF: 基 准 电 源 端 。PCF8591 具有以下特性:1、 单 独 供 电 2、 PCF8591 的 操 作 电 压 范 围 2.5V-6V 3、 低 待 机 电 流 4、 通 过 I2C 总 线 串 行 输 入 /输 出 5、 PCF8591 通 过 3 个 硬 件 地 址 引 脚 寻 址 6、 PCF8591 的 采 样 率 由 I2C

25、总 线 速 率 决 定 7、 4 个 模 拟 输 入 可 编 程 为 单 端 型 或 差 分 输 入 8、 自 动 增 量 频 道 选 择 9、 PCF8591 的 模 拟 电 压 范 围 从 VSS 到 VDD 10、 PCF8591 内 置 跟 踪 保 持 电 路 11、 8-bit 逐 次 逼 近 A/D 转 换 器 塔里木大学毕业设计第 11 页,共 24 页12、 通 过 1 路 模 拟 输 出 实 现 DAC 增 益图 4-7 PCF8591 原理图4.4 LCD16021602 型 LCD 显示模块具有体积小,功耗低,显示内容丰富等特点。1602 型 LCD可以显示 2 行 16

26、 个字符,最佳工作电压为 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 的 电位 器 调 整 对 比 度 ) 。 第 4 脚 : RS 为 寄 存 器 选 择 , 高 电 平 1 时 选 择 数 据 寄 存 器 、 低 电 平 0 时 选 择指 令 寄 存 器 。 第 5 脚 : RW 为 读 写 信 号 线 , 高 电 平 (1)时 进 行 读 操 作 , 低 电 平 (0)时 进 行 写 操作 。 第 6 脚 : E(或 EN)端 为 使 能 (enable)端 。 第 7 14 脚 : D0 D7 为 8 位 双 向 数 据 端 。 第 15 16 脚 : 空 脚 或 背 灯 电 源

28、。 15 脚 背 光 正 极 , 16 脚 背 光 负 极 。4.5 总设计电路图图 4-9 为 总 体 电 路 图 , 电 路 是 在 Proteus 中 仿 真 , 由 于 Proteus 中 没 有 STC系 列 的 单 片 机 和 MG811, 所 以 STC90C51RD+单 片 机 用 AT89S52 代 替 , MG811 二 氧化 碳 传 感 器 用 一 个 滑 动 变 阻 器 代 替 。 其 它 元 器 件 有 : LCD1602 液 晶 显 示 ,PCF8591 数 模 转 换 。图 4-9 总 设 计 电 路 图5 软件设计5.1 系统流程图系统主程序首先对LCD初始化,

29、然后读取PCF8591通道3的值,计算二氧化碳的浓度,最后转化成液晶字符并通过LCD1602显示出来。程序不断地循环执行,显示二氧化碳的浓度。系统的流程图如图5-1所示。塔里木大学毕业设计第 13 页,共 24 页图 5-1 系统流程图5.2 LCD1602 显示程序LCD1602 初始化函数模块void init_lcd() /初始化函数 lcden=0; /默认开始状态为关使能端 write_com(0x0f);write_com(0x38); /显示模式设置,默认为 0x38write_com(0x01); /显示清屏,将上次的内容清除,默认为 0x01 write_com(0x0c);

30、 /显示功能设置 0x0f 为开显示,显示光标,光标闪烁;0x0c 为开显示,不显光标,光标不闪write_com(0x06); /设置光标状态默认 0x06,为读一个字符光标加 1 write_com(0x80); /设置初始化数据指针,是在读指令的操作里进行的写命令函数void write_com(uchar com)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/

31、D 转换程序bit ISendByte(unsigned char sla,unsigned char c)Start_I2c(); /启动总线SendByte(sla); /发送器件地址if(ack=0)return(0);SendByte(c); /发送数据if(ack=0)return(0);塔里木大学毕业设计第 15 页,共 24 页Stop_I2c(); /结束总线return(1);unsigned char IRcvByte(unsigned char sla) unsigned char c;Start_I2c(); /启动总线SendByte(sla+1); /发送器件地址i

32、f(ack=0)return(0);c=RcvByte(); /读取数据 0Ack_I2c(1); /发送非就答位Stop_I2c(); /结束总线return(c);5.4 计算 CO2浓度值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.;display();6 调试本设计的全过程都是在仿真软件中完成的,是将PROT

33、EUS软件和KEIL软件结合起来共同模仿的此温度控制系统的设计。首先在PROTEUS中设计出仿真硬件电路,在设计仿真电路的过程中,此软件中有许多元件可以供我们使用,但仍有些元器件无法找到,我就自己设计元件,但自己设计的元件无法模拟元件的电气特性和元件特性,我只有找功能相似或原理相同的元件来替代。再在KEIL软件中编写硬件电路的驱动程序,在编写程序的过程中,重要的是设置好单片机的I/O口和生成HEX文件,用来支持硬件电路 10。在这两个准备工作做好之后,将两个软件联合起来调试,即将KEIL生成的HEX文件导入到PROTEUS设计的主控芯片中,运行硬件电路,观察是否出现自己预想的效果。在出现问题时

34、,首先调试自己编写的源程序,再调试硬件电路。调试好之后,LCD1602可以正常显示出当前的二氧化碳浓度值。测试结果表明,本系统基本实现了预期功能。实物的调试是在普中开发板上进行的,将写好的程序生成的.hex 文件烧进STC90C51RD+单片机中,连接好线路,可以实现二氧化碳浓度从 0ppm 到 10000ppm 的变化。图 6-1 为实物调试图,实物调试在普中开发板上进行,下图为二氧化碳浓度上限。塔里木大学毕业设计第 17 页,共 24 页图 6-1 CO2浓度上限图 6-2 为二氧化碳浓度下限。图 6-2 CO2浓度下限图 6-3 为最终实物图图 6-3 实物图总 结随着毕业日子的到来,毕

35、业设计也接近了尾声。经过几周的奋战我的毕业设计终于完成了。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。本设计,主要用到了单片机,传感器,A/D 转换和 LCD 显示,通过本次毕业设计,使我对这些器件的了解得到了

36、进一步的升华,理论结合实践,通过不断的调试,基本实现了本设计预期的功能。由于本人的学识有限,本设计还存在一定的不足,检测到的二氧化碳浓度不够精确,这些都是有待提高的。二氧化碳浓度检测仪在温室大棚,生产生活中都有一定的应用,所以本设计有一定的应用价值,所以,本设计的功能还有待提高和增强,比如说,在温室大棚中对可塔里木大学毕业设计第 19 页,共 24 页以对二氧化碳的浓度自动化控制,增添一个报警功能,设置二氧化碳浓度的上限和下限,当超过一定的浓度是,可以对温室大棚中二氧化碳的浓度进行自动调整,提高农作物产量。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学

37、到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。致 谢时光飞逝,转眼间在信息工程学院的四年大学生活已经走到了最后的时刻,在这四年里,有老师对我的谆谆教导,我将永远铭记在心,还有同学之间的深厚的兄弟情谊,将永远作为我的动力源泉。谨此向他们表示诚挚的谢意。首先,我要感谢我的毕业设计导师XXX老师

38、,导师渊博的知识、严谨务实的治学态度、开拓进取的工作作风,诲人不倦的精神、睿智练达的学者风范在这段时间里耳濡目染,将成为我以后工作学习中最宝贵的财富,将对我的一生产生重要的影响。在此,谨向我尊敬的XXX老师表示我衷心的感谢和诚挚的敬意。其次,我要感谢在大学四年里所有教导过我的老师们,老师们严谨的治学态度,奠定了坚实的专业知识基础,老师的言传身教让我受益匪浅,即使我走上工作岗位,也会因为我深厚的功底而更加出色。再次,我要感谢和我一起生活了四年的计算机 12-2 班同学,以及和我并肩战斗的兄弟,是你们让我的大学生活更加有意义。 最后,感谢审稿老师对我论文的评阅,感谢父母在学习和生活中对我的大力支持

39、和帮助。 参考文献1纪建伟.温室二氧化碳浓度监控系统的研究J.沈阳农业大学学报,2001,32(2):54-56 2吴春蕾.温室二氧化碳浓度检测系统的研究D.天津:河北工业大学,2006:023杜深慧.二氧化碳浓度检测装置的设计与实现J.华北电力大学,2004:12-154连清汪.基于多 CPU 的智能温室大棚监控系统的研究J.科技情报开发与经济,2002,12(4):169-1705林敏,于忠得.HS1100/HS1101 电容式湿度传感器及其应用J.传感器,2001,10:44-456强易富,胡生清,于晓洋等.传感器M.北京:机械工业出版社.2001:13-30 7张福学,传感器应用及其电

40、路精选M北京:北京电子工业出版社,19928周立功等.51 单片机新技术M.北京:北京航空航天大学出版社,2003,01:12-159何立民.单片机应用系统设计M.北京:北京航空航天大学出版社,2000:3-1010赵文博,刘文涛单片机语言 C51 程序设计M北京:人民邮电出版社,2005:1-511赵亮.单片机 C 语言编程与实例M.人民邮电出版社,2003:15-1812牛余鹏,牛傲其.51 单片机 C 语言的编程技巧J.实用电子制作,2007:4-513龚运新.单片机 C 语言开发技术M.清华大学出版社,2006:20-21塔里木大学毕业设计第 21 页,共 24 页14程利民.单片机

41、C 语言编程实践M.电子工业出版社,2011:4-715张鹏.提高单片机应用系统可靠性的措施J.电测与仪表,1997:5-616房德君,吴刚.一种新型的单片机综合实验系统J.山东工程学院学报,199617牛君,张戈.单片机系统应用中的抗干扰措施J.现代电子技术,2003:19-2018荣彩云.单片机系统应用中的抗干扰措施J.仪表技术,2005:25-2619蔡共宣.基于单片机的数据采集与处理系统J. 科技情报开发与经济,2003:30-3520达争尚,何俊华.实施控制系统的单片机抗干扰设计J.测控技术,2003:6-8附录系统仿真图图 10-1 所示:图 10-1 系统仿真图源程序:#incl

42、ude /包含头文件#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) /延时函数int a

43、,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);write_com(

44、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%10+0;table8=CO2

45、/100%10+0;table9=CO2/10%10+0;table10=CO2%10+0;write_com(0x80);/显示第一行for(i=0;i16;i+) 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(); /启动总线SendByte(sla); /发送器件地址if(ack=0)return(0);SendByt

46、e(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(); /读取数据 0Ack_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.;display();

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

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报