基于AT89C51的气体浓度测量显示及报警系统课程设计.docx

上传人:b****8 文档编号:9376953 上传时间:2023-02-04 格式:DOCX 页数:41 大小:2.25MB
下载 相关 举报
基于AT89C51的气体浓度测量显示及报警系统课程设计.docx_第1页
第1页 / 共41页
基于AT89C51的气体浓度测量显示及报警系统课程设计.docx_第2页
第2页 / 共41页
基于AT89C51的气体浓度测量显示及报警系统课程设计.docx_第3页
第3页 / 共41页
基于AT89C51的气体浓度测量显示及报警系统课程设计.docx_第4页
第4页 / 共41页
基于AT89C51的气体浓度测量显示及报警系统课程设计.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

基于AT89C51的气体浓度测量显示及报警系统课程设计.docx

《基于AT89C51的气体浓度测量显示及报警系统课程设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51的气体浓度测量显示及报警系统课程设计.docx(41页珍藏版)》请在冰豆网上搜索。

基于AT89C51的气体浓度测量显示及报警系统课程设计.docx

基于AT89C51的气体浓度测量显示及报警系统课程设计

 

课程设计

基于AT89C51单片机的气体浓度测量显示及报警系统设计

 

2.3MQ-5气体传感器简介...............................................6

4.2编程环境KeilC51.................................................17

1.课程设计要求

1.1课程设计题目

基于AT89C51单片机的气体浓度测量显示及报警系统设计

1.2课程设计要求

(1)任选一种有害气体传感器;

(2)设计转换放大电路将气体浓度转换成标准的电信号;

(3)利用单片机组成测量系统实现有害气体浓度的精确测量及显示报警。

1.3课程设计具体工作

(1)原理图设计、软件设计、PCB;

(2)仿真实现;

(3)元件清单;

(4)设计报告。

 

2.气体浓度测量显示及报警系统简介

2.1AT89C51简介

AT89C51是一种带4K字节的闪烁可编程可擦除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。

其中包括128 字节内部RAM,32个I/O 口线,2个16位定时/计数器,一个5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51 降至0Hz 的静态逻辑操作,并支持两种可选的节电工作模式[26]。

空闲方式体制CPU 的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM 中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。

 

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。

AT89C51单片机管脚图如图1所示。

 

图1AT89C51芯片引脚图

2.2ADC0808简介

ADC0808芯片有28条引脚,采用双线直插式封装.ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

ADC0808是ADC0809的简化版本,功能基本相同。

一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。

ADC0808是CMOS单片型逐次逼近式A/D转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器。

ADC0808芯片有28条引脚,采用双列直插式封装,如图2所示。

图2ADC0808芯片引脚图

ADC0808的时序图如图3所示。

图3ADC0808时序图

2.3MQ-5气体传感器简介

2.3.1特点

(1)对液化气,天然气,城市煤气有较好的灵敏度;

(2)对乙醇,烟雾几乎不响应;

(3)快速的响应恢复特性;

(4)长期的使用寿命和可靠的稳定性;

2.3.2应用

适用于家庭或工业上对液化气,天然气,煤气的监测装置。

优良的抗乙醇,烟雾干扰能力。

2.3.3规格

(1)标准工作条件

表1MQ-5的标准工作条件

符号

参数名称

技术条件

备注

VC

回路电压

≤15V

ACorDC

VH

加热电压

5.0V±0.2V

ACorDC

RL

负载电阻

可调

RH

加热电阻

31Ω±3Ω

室温

PH

加热功耗

≤900mW

(2)环境条件

表2MQ-5的环境条件

符号

参数名称

技术条件

备注

Tao

使用温度

-10℃-50℃

Tas

存储温度

-20℃-70℃

Rh

相对湿度

小于95%Rh

O2

氧气浓度

21%(标准条件)

氧气浓度会影响

灵敏度特性

最小值大于2%

 

(3)灵敏度特性

表3MQ-5的灵敏度特性

符号

参数名称

技术参数

备注

RS

敏感体电阻

10KΩ-60KΩ(1000ppm甲烷

探测范围:

300-5000ppm

液化气,天然气,煤气。

α

(1000ppm/5000ppmCH4)

浓度斜率

≤0.6

标准工作条件

温度:

20℃±2℃Vc:

5.0V±0.1V相对湿度:

65%±5%Vh:

5.0V±0.1V

不少于24小时

预热时间

(4)结构外形测试电路

表4MQ-5的结构外形

部件

材料

1

气体敏感层

二氧化锡

2

电极

金(Au)

3

测量电极引线

铂(Pt)

4

加热器

镍铬合金(Ni-Cr)

5

陶瓷管

三氧化二铝

6

防爆网

100目双层不锈钢(SUB316)

7

卡环

镀镍铜材(Ni-Cu)

8

基座

胶木

9

针状管脚

镀镍铜材(Ni-Cu)

MQ-5气敏元件的结构和外形如Fig.1所示。

测量电路如图Fig.2所示。

Fig.1MQ-5的结构外形Fig.2MQ-5的测试电路

由微型AL2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。

封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。

2.3.4灵敏度调整

MQ-5型气敏元件对不同种类,不同浓度的气体有不同的电阻值。

因此,在使用此类型气敏元件时,灵敏度的调整是很重要的。

建议用1000ppm异丁烷或氢气校准传感器。

2.4LCD1602简介

 在日常生活中,液晶显示模块已作为很多电子产品的通用器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。

而液晶显示器各种图形的显示原理为:

(1)线段的显示

点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。

例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。

这就是LCD显示的基本原理。

(2)字符的显示

用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。

这样一来就组成某个字符。

但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

(3)汉字的显示

汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。

(4)LCD1602的基本参数及引脚功能如图2.4所示。

图2.41602LCD尺寸图

(6)1602LCD的指令时序如图5、6所示。

图5读操作时序

图6写操作时序

3.气体浓度测量显示及报警系统设计

3.1系统的硬件组成和元器件选择

(1)系统的硬件原理图,如图7所示。

图7系统原理图

3.2电路总体设计

(1)电路总体设计模块图,如图8所示。

图8电路总体设计模块图

主机选用单片机AT89C51来实现,利用单片机软件编程灵活、自由度大的特点,力求用软件完善各种控制。

本系统选用的AT89C51芯片时钟为12MHz,运算速度快,控制功能完善;选用气体传感器MQ-5来实现气体浓度的采集;选用ADC0808来实现模拟量与数字量的转换;选用LCD1602来实现气体浓度的显示;选用蜂鸣器和LED灯来

实现报警。

3.3数据采集模块的设计

数据采集电路主要由气体传感器MQ-5和滑动变阻器组成。

由MQ-5感测空气中的有害气体浓度的变化,经过其内部器件处理将气体浓度这个模拟信号转换成对应的电信号,MQ-5输出的电信号通过滑动变阻器的调节改变进入ADC0808的电信号值。

数据采集模块如图9所示。

图9数据采集电路

3.4数据转换模块的设计

外部的模拟信号量需要转变成数字量才能进一步的由单片机进行处理。

ADC0808可以非常方便的处理输入的模拟信号量。

ADC通过逐次比较(successiveapproximation)方式,将输入端的模拟电压转换成8位的数字量。

数据转换模块如图10所示。

图10数据转换模块

while

(1)

{

ST=0;delay1ms

(1);

ST=1;delay1ms

(1);

ST=0;//寄存器SAR复位,启动ADC0809

while

(1)

{

if(EOC==1)//ADC0808转换结束后改引脚为高低平

{

OE=1;//输出允许信号为1时表示把ADC0808采集的数据输出

getdata=P0;//把采集到的数据送到P0口处理

OE=0;//又打开ADC0808让继续开始转换

3.5显示及报警模块的设计

经由单片机处理后的数字量通过LCD1602进行显示当前的气体浓度值,同时如果当前的气体浓度对人体无害,则绿灯亮;如果当前的气体浓度对人体有害,则红灯亮同时蜂鸣器报警。

显示及报警模块如图11所示。

图11显示及报警模块

voidinit_play()//初始化显示

{

lcd_init();

wr_com(0x80);//第1行第一列

display(str1);//显示Consentration

wr_com(0xc0);//第二行第一列

display(str2);//显示空格

wr_com(0xc9);//第二行第九列

display(str3);//显示ppm

}

voidshow_Concentration()//浓度值显示

{

disdata[0]=con/1000+0x30;//千位数

disdata[1]=con%1000/100+0x30;//百位数

disdata[2]=con%100/10+0x30;//十位数

disdata[3]=con%10+0x30;//个位数

if(disdata[0]==0x30)

disdata[0]=0x20;//如果千位为0,不显示

if(disdata[1]==0x30)

disdata[1]=0x20;//如果千位为0,百位为0也不显示

if(disdata[2]==0x30)

disdata[2]=0x20;//如果千位为0,百位为0,十位为0也不显示

wr_com(0xc3);

wr_dat(disdata[0]);//显示千位

wr_com(0xc4);

wr_dat(disdata[1]);//显示百位

wr_com(0xc5);

wr_dat(disdata[2]);//显示十位

wr_com(0xc6);

wr_dat(disdata[3]);//显示个位

}

show_Concentration();//LCD1602显示

if(con<320)//如果采集到的浓度小于320不报警

{

G_LED=0;

R_LED=1;

SPK=1;

}

else//如果浓度大于320则声光报警

{

G_LED=1;

R_LED=0;

SPK=0;

}

break;//跳出继续进行ADC0808的采集

4.气体浓度测量显示及报警系统的软件设计

4.1系统的软件设计

系统的软件由主程序模块、数据采集模块和显示报警模块三大模块组成。

在主程序中首先给定参数值,然后通过启动AD转换循环显示当前电压。

4,2编程环境-KeilC51

KeilC51是一种专为8051单片机设计的高级语言C编译器,支持符合ANSI标准的C语言程序设计,同时针对8051单片机自身特点作了一些特殊扩展。

C语言对语法的限制不太严格,用户在编写程序时有较大的空间,但它毕竟还是一种程序设计语言,与其他计算机语言一样,采用C语言进行程序设计时,仍需要遵从一定的语法规则。

KeilC51编译器支持标准C语言的数据类型,另外还根据8051单片机的特点扩展了bit、sbit、sfr、sfr16数据类型。

KeilC51编译器支持两种指针类型:

一般指针和基于存储器的指针。

一般指针需要占3个字节,基于存储器的指针只需要1~2个字节。

一般指针具有良好的兼容性但运行速度较慢,基于存储器的指针是C51编译器专门针对8051单片机存储器特点进行的扩展,它只适用于8051单片机,但具有较高的运行速度。

4.3软件流程框图

N

N

Y

N

Y

图12软件流程图

4.4系统程序

(1)主程序

voidmain()//主函数

{

Init();//定时器初始化

init_play();//初始化显示

while

(1)

{

ST=0;delay1ms

(1);

ST=1;delay1ms

(1);

ST=0;//寄存器SAR复位,启动ADC0809

while

(1)

{

if(EOC==1)//ADC0808转换结束后改引脚为高低平

{

OE=1;//输出允许信号为1时表示把ADC0808采集的数据输出

getdata=P0;//把采集到的数据送到P0口处理

OE=0;//又打开ADC0808让继续开始转换

con=getdata*19.53;//因为有AD采集回来的数为0~255;显示温度为0~5000

show_Concentration();//LCD1602显示

if(con<320)//如果采集到的浓度小于320不报警

{

G_LED=0;

R_LED=1;

SPK=1;

}

else//如果浓度大于320则声光报警

{

G_LED=1;

R_LED=0;

SPK=0;

}

break;//跳出继续进行ADC0808的采集

}

}

}

}

5简单电压数据采集系统仿真调试

5.1系统仿真调试

本次课程设计中主要是通过protues进行系统的仿真与调试,对所设计的系统进行可行性的验证。

5.2仿真调试环境-protues7.7

Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译功能特点

5.3系统仿真调试结果

图13系统仿真调试结果

 

图14系统仿真调试结果

结论

本文所研制的气体浓度测量显示及报警系统是单片机控制的系统,它的主要特点是:

(1)该仪器的数学模型、测量原理简单,

(2)使用范围大。

(3)该仪器可以进行有害气体浓度的实时显示,使用方便。

(4)该仪器的软件系统全部采用C语言编写,提高了程序的可读性和可移植性。

气体浓度测量显示及报警系统的研制开发具有广阔的应用前景,经分析论证,误差小;整个单片机系统稳定、可靠、准确。

参考文献

[1]《单片机原理与应用-基于Proteus虚拟仿真技术》徐爱钧徐阳著第二版

[2]《单片机应用技术(C语言版)》王静霞主编

[3]MQ-5使用说明

[4]XX文库

[5]中国知网

致谢

在本次课程设计期间,我们组得到了实验室的老师、同学的热情帮助,向他们学到了许多宝贵知识和经验。

值此设计报告完成之际,谨向曾经给予我们组关心和帮助的老师、同学和亲友表示衷心的感谢。

感谢赵志杰老师、张玉茹老师、王立琦老师、董世成老师这段时间来对我们组的课题、研究的悉心指导。

我们组的研究课题是在各位老师的指导下完成的,从课题的理解和总体思路的设计,老师们给了我们组很重要的指导。

老师们对待学术问题的严谨态度,对设计的实用化思想,更是对我们组的言传身教,是我们组学习和研究上的良师益友,对我们组工作和学习上的指导更使我们组受益匪浅。

感谢给了我们组很大帮助的同学,使我们组能少走弯路,顺利的完成课题。

感谢父母与家人对我们组多年的教诲和关爱,没有他们在生活上的帮助,我们组完成学业是不可能的。

附件一:

基于AT89C51的气体浓度测量显示及报警系统电路板图

附件二:

基于AT89C51的气体浓度测量显示及报警系统实物图

附件三:

基于AT89C51的气体浓度测量显示及报警系统的程序清单

#include

#defineucharunsignedchar

#defineuintunsignedint

unsignedintcon;

unsignedchargetdata;

sbitRS=P2^0;

sbitRW=P2^1;

sbitEN=P2^2;

sbitST=P2^5;//AD0809转换启动信号与地址所存允许引脚注意:

在使用时ALE和STRT信号引脚连在一起

sbitOE=P2^7;//ADC0808输出允许信号

sbitEOC=P2^6;//ADC0808转换结束信号引脚

sbitCLK=P2^4;//ADC0808的时钟引脚

sbitG_LED=P3^0;//浓度小于320时的绿灯指示

sbitR_LED=P3^1;//浓度大于320时的红灯指示

sbitSPK=P3^7;//浓度大于320时蜂鸣器报警

unsignedcharcodestr1[]={"Concentration:

"};

unsignedcharcodestr2[]={""};

unsignedcharcodestr3[]={"ppm"};

uchardatadisdata[5];

voidInit()//定时器0的初始化定时器0给ADC0808提供时钟让其工作

{

EA=1;

ET0=1;

TMOD=0x02;

TH0=245;

TL0=0;

TR0=1;//开启定时器0给ADC0808提供时钟

}

/*************************lcd1602程序**************************/

voiddelay1ms(unsignedintms)//延时1毫秒

{unsignedinti,j;

for(i=0;i

for(j=0;j<100;j++);

}

voidwr_com(unsignedcharcom)//写指令//

{delay1ms

(1);

RS=0;

RW=0;

EN=0;

P1=com;

delay1ms

(1);

EN=1;

delay1ms

(1);

EN=0;

}

voidwr_dat(unsignedchardat)//写数据//

{delay1ms

(1);;

RS=1;

RW=0;

EN=0;

P1=dat;

delay1ms

(1);

EN=1;

delay1ms

(1);

EN=0;

}

voidlcd_init()//初始化设置//

{delay1ms(15);

wr_com(0x38);delay1ms(5);//数据位数8位,2行,5*7点阵--工作方式设置

wr_com(0x08);delay1ms(5);//显示状态设置:

显示未开

wr_com(0x01);delay1ms(5);//清屏,将光标设置为第一行第一列

wr_com(0x06);delay1ms(5);//增量方式右移,显示字符不移动

wr_com(0x0c);delay1ms(5);//开显示,不显示光标,光标位字符不闪烁

}

voiddisplay(unsignedchar*p)//显示//

{

while(*p!

='\0')

{

wr_dat(*p);

p++;

delay1ms

(1);

}

}

voidinit_play()//初始化显示

{

lcd_init();

wr_com(0x80);//第1行第一列

display(str1);//显示Consentration

wr_com(0xc0);//第二行第一列

display(str2);//显示空格

wr_com(0xc9);//第二行第九列

display(str3);//显示ppm

}

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

voidshow_Concentration()//浓度值显示

{

disdata[0]=con/1000+0x30;//千位数

disdata[1]=con%1000/100+0x30;//百位数

disdata[2]=con%100/10+0x

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1