基于单片机的煤气泄漏及报警系统的设计(3)

2019-05-18 12:52

系统软件采用MCS51汇编语言编制,包括系统主程序和中断服务子程序、误

差自动校准子程序等。主程序流程图如下

开始 程序初始化 A/D转换 数据处理 是否超过报警值 报警锁定, 等待复位 浓度显示 图 8 主程序流程图

6 系统调试与实现

8

系统同调试仿真阶段,理论上是用A/D转换器把气敏传感器检测到的电信号输送入单片机,现在用按键电路来代替。按键电路可以设定数值来代表需要的煤气浓度。数码管显示采用动态显示方式,结合按键电路的输入,在数码管上显示需要的煤气浓度数值。实现电路如图9

图9 系统总电路

分别对P1.0、P1.1、P1.2端口编程,实现分别控制数码管的个位、十位、百位的+1操作,关键程序:

GO:JNB GSET,S1 S1:LCALL,DELAY JB GSET,A1 INC SETG MOV A,SETG CJNE A,#10,J0 MOV SETG,#0 INC SETS

9

MOV A,SETS CJNE A,#10,J1 MOV SETS,#0 LJMP K2 J0:JB GSET,GO LCALL DISPLAY SJMP J0

以上程序是对个位数字的控制,十位,百位也是同样的方法。 关键显示子程序: DISPLAY:MOV A,SETG CLR P2.0 MOVC A,@A+DPTR MOV P0,A LCALL DELAY SETB P2.0

以上是对个位的赋值控制,对十位,百位的控制方法一样。

系统主程序:

#include #include #define uint unsigned int #define uchar unsigned char

sbit adrd=P3^7; //IO口定义 sbit adwr=P3^6; sbit csad=P3^5; sbit wei_g=P2^0; sbit wei_s=P2^1; sbit bjq=P1^3;

unsigned char j,k,adval; void delay(unsigned char i) {

//延时程序

10

for(j=I;j>0;j--) for(k=125;k>0;k--); }

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; void display(uchar sh_c,uchar g_c)

//显示程序

{

wei_g=1; wei_s=0; P0=table[g_c]; delay(5); wei_g=0; wei_s=1; P0=table[sh_c]; delay(5); }

void main() // 主程序{

uchar a,A1,A2; while(1) {

csad=0; // adwr=0;

_nop_(); adwr=1;

csad=1; // delay(10);

for(a=20;a>0;a--) { display(A1,A2);

选通ADCS 关闭ADCS 11

} //送去显示各位。

P1=0xff; //读取P1口之前先给其写全1 csad=0; //选通ADCS adrd=0; //AD读使能 adval=P1; adrd=1;

csad=1; //关闭ADCS adwr=0;

adval=adval/0.25; //数据处理

if(adval>51) //判断报警浓度大于20%报警 {

delay(20); if(adval>51) bjq=1; while(1)

; //报警控制,等待复位 } A1=adval/10; A2=adval; }; }

当煤气浓度达到单片机内程序所设置的限定值(20%)时,声音系统中的喇叭会发出警报的声音;当煤气浓度下降到限定值一下时,声音系统停止报警,等待下一次报警程序的执行。

结论:基于单片机的煤气泄漏及报警系统的设计,采用单片机技术,实现了系统的多样化和智能化。本系统设计电路简单,稳定性高,容易实现,成本低廉。本系统主要的功能:(1)对空气中煤气浓度的检测;(2)煤气浓度达到一定值时报警。

参考文献

//分出十,和个位

//AD数据读取赋给P1口

12


基于单片机的煤气泄漏及报警系统的设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:c语言习题及答案-爱课程mooc

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: