温室CO2浓度监测系统设计

更新时间:2023-06-01 03:40:01 阅读量: 实用文档 文档下载

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

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

基于89C51的CO2浓度检测系统

摘要:本文主要解决CO2的浓度检测问题。采集CO2的浓度,并在数码管上显示。

一. 原理

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。框图如下:

二. 硬件电路设计

1.传感器的选择

查询资料,GT03/04系列CO2浓度传感器可以测量室内空气中二氧化碳浓度值,CO2浓度高会让人在室内时感到疲惫不适。可经过通风调节系統控制室內、室外空气,让CO2值控制在最合适的环境,让人在室内更有活力,目前在大楼室内已大量使用CO2检知器/在农业应用提供植物的CO2让植物生产快速更健康。适用场合如下: 1) HVAC空调系统监控。 2)仪器测试设备。 3) 环境控制与监控系统。

4) 停车场与建筑物通风调节系统监控。 5) 一般室温 蔬果仓库-等农业大棚均可使用。 GT03/04系列CO2浓度传感器的说明如下:

图1

选GT03-612-N,具体规格如下表:

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

通过分析,设计的二氧化碳滤波放大电路如图:

图2

选用的CO2浓度传感器的测量范围为0~2000ppm,输出范围为电压0~10V,而ADC0809的输入为0~5V,所以先经过滤波和放大电路(实际上是缩小)把0~10V的电压变成0~5V。 上图中的C1,C2,C3起滤波作用,第一级反相比例放大电路的放大系数为 第二级反相比例放大电路为

R2

1, R1

R411

,所以两级放大电路的放大系数为 ,这样就 R322

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

可以把0~10V的电压变成0~5V。 3.转换及显示电路设计 1) ADC0809芯片:

ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。 (1)ADC0809的内部逻辑结构

由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

图3

(2).ADC0809引脚结构 ADC0809各脚功能如下: D7-D0:8位数字量输出引脚。 IN0-IN7:8位模拟量输入引脚。 VCC:+5V工作电压。 GND:地。

REF(+):参考电压正端。 REF(-):参考电压负端。 START:A/D转换启动信号输入端。 ALE:地址锁存允许信号输入端。

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

(以上两种信号用于启动A/D转换).

EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。 OE:输出允许控制端,用以打开三态数据输出锁存器。 CLK:时钟信号输入端(一般为500KHz)。 A、B、C:地址输入线。

ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ。VREF(+),VREF(-)为参考电压输入。 2)转换电路:

电路见下页的大图,采集得到的电压从ADC0809的IN0通道输入,经A/D转换后输入单片机。

3)显示电路:如图

2

图4

将P0口的八个管脚接上拉电阻并分别接四个数码管的8位段选端,再将P2.0~P2.3分别经反相器后接到四个数码管的位选段。见图3

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

A/D转换电路

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

图5

4.晶振和复位电路: 1)晶振电路如图4 2)复位电路如图

5

图6.晶振电路 图7.复位电路

三.数据转换

CO2浓度传感器的测量范围为0~2000ppm,假设经ADC0809输出的数字量为D,则对应的CO2浓度为:c D

2000

ppm,最后要保留一位小数,可以先把该值乘以10,再分256

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

解出对应的位。

10cD 20000D 580D 2

D 0.078,而D 0.078 D ,因1000256 100064100025

为测量范围为0~2000ppm,而实际输出的范围为0~1000ppm,所以D应该小于80H,故D 2用一个寄存器就可以存储,再除以25,得到的商为实际值的百位,余数再除以100得到的商为实际值的十位,得到的余数再除以10,商为实际值的个位,余数为小数点后的一位。

四.程序流程图

图8.程序流程图

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

五. 程序

ORG 0000H

LJMP MAIN ORG 0003H LJMP OPT ORG 0030H

MIAN:MOV R0,#50H;数据存放地址 SETB IT0 SETB EA SETB EX0

;**********************读键 KEY:MOV P2,#0FFH;把P2口做输入口 MOV A,P2;读P2口状态

CPL A;取正逻辑,高电平表示按下 ANL A,#80H;取第7位状态 JZ KEY

LACLL DIMS;延时去抖 MOV A,P2;再读P2口 CPL A ANL A,#80H JZ KEY;

;***********************等键释放 KEY1:MOV A,P2 CPL A ANL A,#80H

JNZ KEY1;为低电平则释放 ;**********************启动A/D转换 MOV DPTR,#7FF8H;地址 MOVX @DPTR,A;启动A/D转换 HERE:SJMP HERE

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

;*********************把浓度值的各位数存起来 L1:MOV A,@R0 RL A;乘以2 MOV B,#25

DIV AB;除以25,商为真实值的百位 MOV R1,#51H

MOV @R1,A;把百位存入51H INC R1

MOV A,B;把余数送A MOV B,#100

DIV AB;除以100,商为真实值的十位 MOV @R1,A;把十位存入52H INC R1 MOV B,#10

DIV AB;除以10,商为真实值的个位,余数为真实值的小数点后的数 MOV @R1,A;把个位存入53H INC R1

MOV @R1,B;把小数点后的数存入54H ;************************** DIS:MOV R2,01H;位选码 MOV A,R2

MOV DPTR,#TAB;把没有小数点的段选码表格首地址送DPTR LCALL DIS2;显示小数点后的数

MOV DPTR,#TAB1;把有小数点的段选码首地址送DPTR LCALL DIS2;显示个位及小数点 MOV DPTR,#TAB LCALL DIS2;显示十位 LCALL DIS2;显示百位 DIS2:MOV P2,A;送位选码 MOV A,@R1

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

MOVC A,@A+DPTR;取段选码 MOV P0,A;显示 ACALL DIMS;延时 DEC R1 MOV A,R2 RL A;左移 MOV R2,A RET DIMS:MOV R7,#0FH W1:MOV R6,#0FFH W2:DJNZ R6,W2 DJNZ R7,W1 RET

OPT:MOVX A,@DPTR;读数 MOV @R0,A;保存 LJMP L1 RETI

TAB: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,40H,00H TAB1: DB 0BFH,36H,0DBH,0CFH,0F6H,0EDH DB 0FDH,87H,0FFH,0EFH,0F7H,0FCH DB 0B9H,0DEH,0F9H,0F1H,0C0H,80H END

六. 心得体会

这一个礼拜的课程设计结束了。从理论到实践,在整整一个星期的日子里,我遇到了很多困难,但是同时也学到了好多东西。它不仅巩固了我以前所学的理论知识,更让我学到了很多课外的东西,锻炼了自己解决实际问题的能力。

七.参考文献

在温室内使用CO2浓度传感器,采集得到浓度,通过滤波放大,经ADC0809转换后变成数字信号,输入89C51内,再通过四位数码管显示出来。这是我的单片机课程设计,全部原创,欢迎借鉴

1、 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社,2005 2、 姚年春. PROTEL 99SE基础教程.北京:人民邮电出版社,2009 3 、袁保生.Protel99SE电路设计实验指导.太原:中北大学,2010 附图:总体电路

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

Top