基于51单片机的报警器(模拟量,上限,TLC1543,LCD1602)原理图、流程图、物料清单、仿真图、源代码

基于51单片机的报警器(模拟量,上限,TLC1543,LCD1602)

简易报警器
(可用作CO2、CH4、CO、粉尘、酒精、NH2等模拟量传感器报警)
1、测量物理量的浓度值
2、如果浓度值超过阀值,报警。
3、阀值可调请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

#include "reg51.h"
#include "lcd1602.h"
#include"TLC1543.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1=P2^3;//按钮
sbit k2=P2^4;
sbit sw=P2^5;
sbit led=P3^7;//警示灯
uint alho=0;//酒精浓度
uint limit=100;
uchar disp1[]="Value:0.00mg/L";
uchar disp2[]="  0.00mg/L";
uchar time=0;
//主函数
void main()
{
	init_1602();		
	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		if(!k1)//加
		{
			if(limit<400)
				limit++;
			while(!k1);
		}
		if(!k2)//减
		{
			if(limit>0)
				limit--;
			while(!k2);
		}
	}
}
//定时器中断
void Timer0() interrupt 1
{
	unsigned long k;
	if(time<10)//0.5s
		time++;
	else
	{
		time=0;
		//测量酒精
		alho=TLC1543_read(0);
		k=alho;
		k=k*400/4096;//计算酒精浓度
		alho=k;		
		//显示
		disp1[6]=alho/100+0x30;
		disp1[8]=alho%100/10+0x30;
		disp1[9]=alho%10+0x30;		
		disp2[2]=limit/100+0x30;
		disp2[4]=limit%100/10+0x30;
		disp2[5]=limit%10+0x30;
		write_string(1,0,disp1);
		write_string(2,4,disp2);
		//报警
		if(alho>limit)
		{
			led=0;
		}
		else
			led=1;
	}
	TH0=0X3C;
	TL0=0XB0;
}
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐