23-基于单片机的全自动抽油烟机控制系统设计(定时、日历显示、步进电机、时间设定、掉电保护、LCD1602、阈值调节、多页切换)

23-基于单片机的全自动抽油烟机控制系统设计(定时、日历显示、步进电机、时间设定、掉电保护、LCD1602、阈值调节、多页切换)

功能描述:

基于单片机实现的自动抽油烟机控制系统,实现了在液晶显示器LCD1602上,日历显示,年、月、日、星期,油烟测量阈值、时、分、秒、抽烟挡位、实时测量值。所有显示的值都可以进行手动调节,加或减。当监测到当前油烟值大于设定阈值后,步进电机将会转动,带动油烟抽出。可手动设定抽油烟机的启动和关闭的时间,一共可以设置5组。将设定好的数据将会保存在外置Flash(24C02)中。

1、日历显示,年、月、日、星期、时、分、秒
2、油烟实时测量值
3、人机交互可调节,年、月、日、星期、时、分、秒、阈值
4、抽油烟挡位设置
4、多页切换可以设置定时启动关闭的时间
5、设置参数可以保存在Flash中

有哪些资料:

1、仿真工程文件
2、原理图工程文件
3、源代码
4、物料清单BOM
5、流程图

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

/***********架构:显示**********/
#include <reg51.h>
#include "lcd1602.h"
#include"ds1302.h"
#include"i2c.h"
#include <ADC0832.h>

sbit k1=P3^2;//按钮
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;
sbit AA=P2^4;//电机
sbit BB=P2^5;
sbit CC=P2^6;
sbit DD=P2^7;
sbit stop=P3^1;
sbit buzzer=P3^7;
//-----------------------------------显示数组
uchar ye=0;//第一页
uchar hang1[]="2000.00.00 0 000";//日期+星期
uchar hang2[]="00:00:00 D:0 000";//时间+转速
uchar hang3[]="00:00  00:00 ";//第二页
uchar hang4[]="TIME1:       ";
uchar lcd_xian=0;//显示延时变量
//-----------------------------------
uchar cursor=0;//光标位置
uchar code cursor_num[]={1,3,1,6,1,9,1,11,1,15,2,1,2,4,2,7,2,11,2,1,2,4,2,8,2,11};//光标位置数组.行+列

uchar shi1=6,fen1=0,shi2=0,fen2=0;//时间控制
uchar num=0,bei=0;
uchar speed=0,sec=0;//速度
uchar start=0,flag=0;
uchar yanwu_lim=50;
uchar yanwu=0;

void Delay1ms(uchar i)
{
	while(i--)
		delay_uint(110);
}
void read()
{
	shi1=At24c02Read(4*num);
	fen1=At24c02Read(4*num+1);
	shi2=At24c02Read(4*num+2);
	fen2=At24c02Read(4*num+3);
}
//**************************************主函数
void main()
{
uchar two;
//初始化
	init_1602();
	Ds1302ReadTime();//启动DS1302
	TIME[0]=0;
	Ds1302Init();
//显示初始化
	for(num=0;num<5;num++)
	{
		shi1=At24c02Read(4*num); 
		if(shi1==0xff)
		{
			shi1=0x06+2*num;
			At24c02Write(4*num,shi1);
			Delay1ms(10);
		}
		fen1=At24c02Read(4*num+1);
		if(fen1==0xff)
		{
			fen1=0;
			At24c02Write(4*num+1,fen1);
			Delay1ms(10);
		}
		shi2=At24c02Read(4*num+2);
		if(shi2==0xff)
		{
			shi2=shi1+1;
			At24c02Write(4*num+2,shi2);
			Delay1ms(10);
		} 
		fen2=At24c02Read(4*num+3);
		if(fen2==0xff)
		{
			fen2=0;
			At24c02Write(4*num+3,fen2);
			Delay1ms(10);
		}
	}
	num=0;
	speed=At24c02Read(20);//读取速度 
		if(speed>9)
		{
			speed=5;
			At24c02Write(20,5);
			Delay1ms(10);
		}
//===============定时器初始化
	TMOD|=0X01;
	TH0=(65536-10000)/256;//给定时器赋初值,定时10ms
	TL0=(65536-10000)%256;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
//===============
	yanwu=ADC1();
	yanwu = 0;
	start=0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我Eric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值