基于单片机的电磁炉系统设计

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于51单片机,通过DS18B20温度传感器检测温度,通过八位数码管显示,
如果温度超过阈值,则蜂鸣器报警,红灯亮起;若不超过阈值,则蜂鸣器停止报警,
红灯熄灭;然后两个按键,一个按键按下后进入设置定时模式,另一个按键按下后,
分增加定时时间,每次按下增加30秒;开始定时后,对应的LED灯亮起,倒计时结束后,
蜂鸣器报警;采用滑动变组器连接ADC0832数模转换器模拟功率因数,功率引述超过阈值,
则蜂鸣器报警,红灯亮起

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

原理图:

三、程序编程

cpp 复制代码
#include "hardware.h"  //此头文件已包含了<reg51.h>头文件
#include "DS18B20.h"
#include "software.h"
#include<intrins.h>
#include<stdio.h>

sbit key = P3^0;
sbit key1 = P3^1;
sbit led = P3^5;
sbit led1 = P3^6;
sbit CS=P1^0;                 //adc0832引脚
sbit CLK=P1^1;
sbit DIO=P1^2;
sbit beep = P3^7;

int u;
int u1;
int flag=0;
int num2 = 0;
int flag1=0,flag2=0,flag3=0;
static wdyz = 500,glyz=80;
uchar get_AD_Res()            //ADC0832启动读取函数 心率
{
	uchar i, data1=0, data2=0;
	CS=0;
	
	CLK=0;DIO=1;_nop_();
	CLK=1;_nop_();
	
	CLK=0;DIO=1;_nop_(); 
	CLK=1;_nop_();
	
	CLK=0;DIO=0;_nop_();
	CLK=1;_nop_();
	
	CLK=0;DIO=1;_nop_(); 
	
	for(i=0; i<8; i++)
	{
		CLK=1;_nop_();
		CLK=0;_nop_();
		data1=(data1<<1)|(uchar)DIO; 
	}
	
	for(i=0; i<8; i++)
	{
		data2=data2|(uchar)DIO<<i;
		CLK=1;_nop_();
		CLK=0;_nop_();
	}
	CS=1;
	
	return(data1 == data2)?data1:0;
}

void main()
{
	TMOD = 0X11;       //设置定时器1和定时器0为工作方式1,16位定时器/计数器
	TH0 = (65536-45872)/256; //装初值,11.0592M晶振,定时50ms,计数个数 N = 45872(在计数时需要预先填装初始计数个数)
	TL0 = (65536-45872)%256; //...
	TH1 = (65536-45872)/256; //...
	TL1 = (65536-45872)%256; //同上
	EA = 1; //全局中断允许位 | 打开总中断(相当于中断的总开关,打开之后其他中断发生时才能有效)
	ET0 = 1;//定时器/计数器0中断允许位 | 打开
	ET1 = 1;//定时器/计数器1中断允许位 | 打开
	TR0 = 1;//定时器0运行控制位 | 允许定时器0运行
	TR1 = 0;//定时器1运行控制位 | 允许定时器1运行
	led1 = 0;
	led = 0;
	beep =0;
	while(1)  //主循环 不断对数码管服务函数扫描
	{
		 SEGDisplay();//数码管服务函数(不断对数码管进行扫描)
		 u = get_AD_Res();
		 if(u>99)
		 {
			 u = 99;
		 }
		if(key == 0)
		{
			flag++;
			if(flag > 2)
			{
				flag = 0;
			}
			while(!key);
		}
		if(flag == 1)
		{
		if(key1 == 0)
		{
			num2 += 30;
			while(!key1);
		}
	 }
		switch(flag)
		{
			case 0:TR1 = 0; led1 = 0 ;break; //开始计时
			case 1:TR1 = 0; led1 = 0;break;
			case 2:TR1 = 1; led1= 1;
		}
		
		if(temp > wdyz)  //温度大于阈值
		{
			flag1 = 1;
		}
		else
		{
			flag1 = 2;
		}
		
		if(u>glyz)
		{
			flag2 = 1;
		}
		else
		{
			flag2 = 2;
		}
		flag3 = flag1*flag2;
		if(flag3==1 || flag3 == 2)
		{
			beep = 1;
			led =  1;
		}
		else if(flag3 == 4)
		{
			beep = 0;
			led =  0;
		}
		
		if(flag5 == 1)
		{
			beep = 1;
		}
	}
}

四、实现现象

具体动态效果看B站演示视频:

基于单片机的电磁炉系统设计

全部资料(源程序、仿真文件、安装包、演示视频、原理图):

百度网盘资料下载https://pan.baidu.com/s/1srPGXe0rPOZpKCPAgQ7g0w?pwd=ckb4

相关推荐
A9better6 小时前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习
思诺学长6 小时前
BMS(电池管理系统)的主要功能和架构简述
单片机·嵌入式硬件
czhaii7 小时前
全局不关总中断的 RTOS / CosyOS-II for STCAI MCU
单片机
qq_401700417 小时前
STM32低功耗Tickless模式
stm32·单片机
点灯小铭9 小时前
基于单片机的自动存包柜设计
数据库·单片机·mongodb·毕业设计·课程设计
学生董格11 小时前
[嵌入式embed]RT-ThreadStudio-STM32F103C8T6(江协科技)+移植RT-Thread v4.11模版
科技·stm32·嵌入式硬件
szxinmai主板定制专家11 小时前
一种基于 RK3568+AI 的国产化充电桩安全智能交互终端的设计与实现,终端支持各种复杂的交互功能和实时数据处理需求
arm开发·人工智能·嵌入式硬件·安全
萧技电创EIIA12 小时前
基于stc12单片机的PID恒温烙铁设计
单片机·嵌入式硬件·pid过程控制
szxinmai主板定制专家13 小时前
基于 ZYNQ ARM+FPGA+AI YOLOV4 的电网悬垂绝缘子缺陷检测系统的研究
arm开发·人工智能·嵌入式硬件·yolo·fpga开发
光子物联单片机13 小时前
STM32G474单片机开发入门(八)内部FLASH详解及读写实战
stm32·单片机·嵌入式硬件·mcu