Design of alcohol gas detector based on 51 microcontroller

Publisher:HarmonyJoyLatest update time:2023-02-09 Source: zhihu Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

Instructions for use:

After powering on, it needs to be preheated for a period of time. At this time, the LCD displays Loading... (the preheating process is changed to the voltage rising first and then falling, and the voltage is detected to detect whether the preheating is completed). After the preheating is completed, the alcohol concentration is displayed. , press key1 to enter the alarm setting mode, press key2 to increase, key3 to decrease, press key1 again to exit the alarm setting mode (key2 and key3 must be in the alarm setting mode to work)

Schematic:


PCB:

Program operation chart:

Part of the program:

#include "stc89x_90x.h"
#include "LCD1602.h"
#include "ADC0832.h"
#include "intrins.h"

sbit k1=P1^4;
sbit k2=P1^5;
sbit k3=P1^6;

sbit beep=P3^5;
sbit beep2=P3^2;
sbit beep3=P3^3;
sbit beep4=P3^4;
sbit led=P3^6;

unsigned char temp1[]={"Potency: **%"}; //ÏÔʾ¾Æ¾«Å¨¶È
unsigned char temp2[]={"early:**% "}; //ÏÔʾŨ¶ÈÔ¤¾¯Öµ
unsigned char temp3[]={"Loading... "};

unsigned char key,a;
unsigned char dat=50; //¾Æ¾«Å¨¶ÈÔ¤¾¯³õʼλ
long int m;

void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;

_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}


/********
void concentration()
¾Æ¾«Å¨¶È¼ÆËã
*********/
void concentration()
{
unsigned char count; //¶¨Òå8λµÄcout
long int a; / /¶¨Ò峤ÕûÐÐͱäÁ¿

count=ADC_acquisition(); //½«ADC0832¶Á³öµÄÖµ¸³¸øcount
a=count*50;
count=(float)(a/256);

if(count<13)
count=(float)(13); //µ±µçѹֵС ÓÚ1.4Vʱ£¬½«µçѹֵ¹Ì¶¨ÔÚ1.4V
else
count=(float)(count-13)*3.5; //¼ÆËã¾Æ¾«Å¨¶ÈΪһ¸ö¸¡ µãÐͱäÁ¿

/* ÕâÒ»¾äûÓÐÓÃÉÏÒ»¾ä countΪu8ÀàÐÍÒѾÍê³ÉÁËÀàÐÍת»»
count=(char)count;
*/

if(count>=100) //µ±Å¨¶È´óÓÚ100%ʱ£¬½«Å¨¶È¹Ì¶¨ÔÚ100%
{
count=100;
temp1[8]=count/100+'0';
}
else temp1[8]=' ';
temp1[9]=count%100/10+'0'; //½«Å¨¶ÈÖµ¸³¸øÊý×é temp1[10]=count%100%
10+ '0';
m=count;
}


/************
void loading()
³õʼ¼ÓÔØ(Ô¤ÈÈ)º¯Êý
*************/
void loading()
{
unsigned char s=10 ;
while(s--)
{
WriteInstruction(0x80);
a=0;
while(temp3[a]!='')
{
WriteData(temp3[a]);
a++;
}
}
Delay1000ms();Delay1000ms();
Delay1000ms ();Delay1000ms();
while(1)
{
concentration();
if(m==0)
{
temp3[7]=' ';
temp3[8]='O';
temp3[9]='K';
}
WriteInstruction(0x80);
a=0;
while(temp3[a]!='')
{
WriteData(temp3[a]);
a++;
}
if(m==0)
{
Delay1000ms();
break;
}
}
}

/********
void independent()
Ô¤¾¯Ñ¡ Ôñ룬k2ΪÔö¼Ó£¬k3Ϊ¼õÉÙ
*********/
void independent()
{
if(k2==0)
{
delay(1000);
if(k2==0)
{
while(k2==0 );
dat++;
if(dat==100)dat=99;
}
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
while(k3==0);
dat--;
if(dat==0)dat=1;
}
}
temp2[6]=dat/10+'0';
temp2[7]=dat%10+'0';
}

/****************
void first_line()
ÏÔʾµÚÒ»ÐУ¬¼´Îª¾Æ¾«Å¨¶È
***************/
void first_line ()
{
WriteInstruction(0x80);
a=0;
while(temp1[a]!='')
{
WriteData(temp1[a]);
a++;
}
delay(1000);
}

/**************
void second_line()
ÏÔʾµÚ¶ÐУ¬¼´Îª¾Æ¾«Å¨¶ÈÔ¤¾¯Öµ
**************/
void second_line()
{
independent();
temp2[6]=dat/10+'0';
temp2[7]=dat%10+'0';
WriteInstruction(0x80+0x40);
a=0;
while(temp2[ a]!='')
{
WriteData(temp2[a]);
a++;
}
delay(1000);
}

/********
void main()
Ö÷º¯Êý
********/
void main()
{
unsigned char n=0;
key=0;
Init();
loading();
Init ();
while(1)
{
concentration(); //¾Æ¾«Å¨¶È¼ì²âλ
first_line(); //ÏÔʾµÚÒ»Ðоƾ«Å¨¶È
if(k1==0)
{
delay(1000);
if( k1==0)
{
while(k1==0);
if(key==0)key=1;
else key=0;
}
}
if(key==1)
{
independent();
second_line();
n= 1;
}
if(key==0)
{
if(n==1)
{
WriteInstruction(0x01);
}
n=0;
}
if(dat<=m)
{
led=0;


Reference address:Design of alcohol gas detector based on 51 microcontroller

Previous article:Bluetooth password lock based on 51 microcontroller
Next article:Simulation design of dancing robot stepper machine based on 51 microcontroller

Latest Microcontroller Articles
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号