精品基于AT89C51的气体浓度测量显示及报警系统毕业论文.docx
- 文档编号:27333270
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:29
- 大小:2.18MB
精品基于AT89C51的气体浓度测量显示及报警系统毕业论文.docx
《精品基于AT89C51的气体浓度测量显示及报警系统毕业论文.docx》由会员分享,可在线阅读,更多相关《精品基于AT89C51的气体浓度测量显示及报警系统毕业论文.docx(29页珍藏版)》请在冰豆网上搜索。
精品基于AT89C51的气体浓度测量显示及报警系统毕业论文
哈尔滨商业大学课程设计
基于AT89C51单片机的气体浓度测量显示及报警系统设计
学生姓名王琴、李赛赛、汪金萍、周珊珊
指导教师赵志杰、张玉茹、王立琦、董世成
专业电子信息工程
(2)班
学院计算机与信息工程学院
2014年3月14日
目录
1.课程设计要求1
1.1课程设计题目1
1.2课程设计要求1
1.3课程设计具体工作1
2.气体浓度测量显示及报警系统简介2
2.1AT89C51简介2
2.2AD0808简介.......................................................5
2.3MQ-5气体传感器简介...............................................6
2.4LCD1602简介.....................................................10
3.气体浓度测量显示及报警系统设计.....................................14
3.1系统的硬件组成和元器件选择14
3.2电路总体设计14
3.3数据采集模块的设计15
3.4数据转换模块的设计15
3.5显示及报警模块的设计15
4.气体浓度测量显示及报警系统的软件设计17
4.1系统的软件设计17
4.2编程环境KeilC51.................................................17
4.3软件流程框图18
4.4系统程序19
5气体浓度测量显示及报警系统仿真调试22
5.1系统仿真调试22
5.2仿真调试环境-PROTEUS7.722
5.3系统仿真调试结果23
结论24
参考文献25
致谢25
附件一:
26
基于AT89C51单片机的气体浓度测量显示及报警系统电路板图26
附件二:
27
基于AT89C51单片机的气体浓度测量显示及报警系统实物图27
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个IO 口线,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路模拟输入信号中的一个进行AD转换。
ADC0808是ADC0809的简化版本,功能基本相同。
一般在硬件仿真时采用ADC0808进行AD转换,实际使用时采用ADC0809进行AD转换。
ADC0808是CMOS单片型逐次逼近式AD转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型AD转换器。
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甲烷
探测范围:
液化气,天然气,煤气。
α
(1000ppm5000ppmCH4)
浓度斜率
≤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]=con1000+0x30;千位数
disdata[2]=con%10010+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设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模年即将增加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 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(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 基于 AT89C51 气体 浓度 测量 显示 报警 系统 毕业论文