首页 > 其他分享 >36 基于单片机的电磁炉系统设计

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

时间:2024-12-07 10:28:36浏览次数:7  
标签:P3 DIO CLK 36 电磁炉 单片机 flag sbit nop

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

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

二、硬件资源

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

编辑

原理图:

编辑

三、程序编程

#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站演示视频:
B站演示视频

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

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

百度网盘资料下载

标签:P3,DIO,CLK,36,电磁炉,单片机,flag,sbit,nop
From: https://blog.csdn.net/ldejsy/article/details/144256891

相关文章

  • 题解:AT_abc366_d [ABC366D] Cuboid Sum Query
    这是一个区间求和问题,因为Q很大,所以使用前缀和。N不超过100,所以在Q次询问中嵌套一次O(n)的循环是不会超时的。令s[i][j][k]表示第i层中左上角为(1,1),右下角为(j,k)的矩形中所有元素的和。s[i][j][k]=s[i][j-1][k]+s[i][j][k-1]-s[i][j-1][k-1]+a[i][j][k];然后在Q次询问中,枚举层数......
  • 题解:AT_abc369_e [ABC369E] Sightseeing Tour
    题目大意给定一个$N$个点,$M$条边的无向图。其中边有边权。有$Q$次询问,每一次给你$K$条必须经过的边(但是方向没有限制),问从$1$到$N$的最短路长度是多少。思路观察数据范围,可以发现:虽然$M$很大,但是$N$和$K$并不大。$K\le5$,可以暴力枚举每一条边经过时的方向以及......
  • 题解:AT_abc368_d[ABC368D] Minimum Steiner Tree
    题目大意题目给定一棵由$N$个节点组成的无根树,删除其中的一些点和边,使剩下的点和边仍然能够组成一棵树,且包含给定的$K$个特殊点,问最少剩下几个点。思路我们可以发现,这棵无根树的根必须是给定的特殊点之一,不然根节点就可以删除,答案就不是最优。所以我们使用深度优先搜索遍......
  • 题解:AT_abc368_c [ABC368C] Triple Attack
    思路$N$很大,导致$T$可能也会很大,所以一遍一遍的模拟就会超时。我们发现,题中有一个要求:每次必须打离自己最近的活着的敌人。我们就只用枚举每个敌人即可,在枚举的过程中计算答案。细节处理这道题有点难度,因为$T$是$3$的倍数时能量会变成$3$。这是个周期问题,自然会想到除......
  • 基于51单片机和16X16LED点阵屏(MAX7219驱动)的自制独立按键控制的小游戏《贪吃蛇》
    目录系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、自制独立按键(8位)3、16X16LED点阵屏(MAX7219驱动)四、主函数总结系列文章目录前言《贪吃蛇》,一款经典的、怀旧的小游戏,单片机入门必写程序。基于51单片机和8X8LED点阵屏(板载74HC595驱动)的......
  • 61 基于单片机的小车雷达避障及阈值可调
    所有仿真详情导航:PROTEUS专栏说明-CSDN博客目录一、主要功能二、硬件资源三、主程序编程四、资源下载一、主要功能        基于51单片机,采用超声波传感器检测距离,通过LCD1602显示屏显示,三个按键,第一个按键是切换模式,切换到阈值设置,两个按键负责阈值增减,初始阈......
  • 洛谷 P11362 [NOIP 2024] 遗失的赋值
    题目传送门如果没有其他限制,那么一个二元限制可能出现的方案数为\(v^2\)。考虑\(\{x_n\}\)的一个区间,设其中能放\(t\)个二元限制,它的左右端点有一元限制,求这\(t\)个限制的方案数。设这个数为\(f(t)\)。如果第一个二元限制的\(a\)与左端点\(i\)处的\(x\)值相同,那......
  • P1136 迎接仪式
    P1136迎接仪式动态规划好题状态设计:我们认为z是1,j是0,产生贡献的是01对我们用状态\(f[i][j][k][0/1]\)表示考虑到第\(i\)位,进行了\(j\)次将1变成0的操作和\(k\)次将0变成1的操作,操作过后第\(i\)位为\(0/1\)时的答案状态转移:然后我们就有方程:\(a_i=1:\)\(f......
  • 单片机中的中断处理过程
    单片机(MicrocontrollerUnit,MCU)是一种集成了处理器、存储器以及输入输出接口的微型计算机,广泛应用于各种嵌入式系统中。在单片机的应用开发中,中断系统是不可或缺的一部分,它使得单片机能及时响应并处理外部或内部的中断请求,从而实现高效的任务调度与管理。中断的基本概念中......
  • leetcode2836 在传球游戏中最大化函数值
    n名玩家在玩传球游戏,编号为i的玩家固定会把球传给编号为r[i]的玩家,任选一名玩家开始传球,恰好传k次,得分为这k次传球内所有接触过球的玩家的编号之和,如果玩家多次触球,则累加多次。问从哪个玩家开始传,能获得最大总得分,求最大得分。1<=n<=1E5;0<=r[i]<n;1<=k<=1E10分析:与倍增法求l......