基于单片机电器断路器保护器系统Proteus仿真(含全部资料)

++全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等++

资料下载:

通过网盘分享的文件:资料分享

链接: 百度网盘 请输入提取码 提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

[四、Keil c语言程序源代码](#四、Keil c语言程序源代码)


项目功能:

基于51单片机的断路器

1、测量电压、电流、温度

2、判断过压、欠压、过流和温度报警,并控制系统关闭。

设计是基于单片机控制的智能断路,该智能断路器能实时检测现场的电流、电压和温度,能实现短路瞬时保护、以及欠电压保护和过电压保护,并能够通过液晶屏显示实时的电流、电压和温度。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

|-------|----------|----|
| 元件 | 型号 | 数量 |
| 单片机 | AT89C51 | 1 |
| 电容 | 10uf | 1 |
| 电容 | 30pf | 2 |
| 晶振 | 12MHZ | 1 |
| 电阻 | 10k | 5 |
| 按钮 | | 10 |
| 温度传感器 | DS18B20 | 1 |
| 模数芯片 | ADC0832 | 2 |
| 电位器 | 1k | 2 |
| LED | 红色 | 5 |
| 电阻 | 100欧 | 5 |
| 三极管 | NPN | 2 |
| 显示器 | LCD1602 | 1 |
| 排阻 | 10k | 1 |
| 变压器 | 220V-12V | 1 |
| 电流互感器 | 10mA | 1 |
| 整流桥 | 2W01G | 2 |
| 继电器 | 5V | 2 |
| 电容 | 100uf | 3 |

五、Keil c语言程序源代码(部分)

复制代码
/*
电脑端说明:电脑端使用串口调试助手与单片机通讯
指令(字符格式):A电压上限加,B电压上限减,C电压下限加,D电压下限减,E电流上限加,F电流上限减,G温度上限加,H温度上限减,I继电器复位
*/
#include <REG51.h>
#include <intrins.h>
#include "adc0832.h"
#include "delay.h"
#include <temp.h>
#include <lcd.h>

#define uint unsigned int 
#define uchar unsigned char

sbit button=P1^6;		//复位按键
sbit out =P1^5;			//继电器驱动

sbit v_up0=P2^2;	//电压下限加
sbit v_down0=P2^3;//电压下限减
sbit v_up=P3^2;		//电压上限加
sbit v_down=P3^3;	//电压上限减
sbit i_up=P3^4;		//电流上限加
sbit i_down=P3^5;	//电流上限减
sbit t_up=P3^6;		//温度上限加
sbit t_down=P3^7;	//温度上限减

sbit led1=P1^7;//过压故障
sbit led2=P2^0;//欠压故障
sbit led3=P2^1;//短路故障
sbit led4=P3^1;//过热保护
//量程20V,1000mA
uint v_limit1=15,v_limit2=3,i_limit=400,t_limit=40;//定义极限参数
uint votage=0,current=0;//存储电压和电流
uint time=0;

uchar dat1[16]="                ";//第一行显存
uchar dat2[16]="                ";//第二行显存
//*********************************************
//显示极限函数
void lcd_see_limit()
{
	dat2[0]=(v_limit1%100)/10+0x30;//电压上限
	dat2[1]=v_limit1%10+0x30;
	dat2[3]=(v_limit2%100)/10+0x30;//电压下限
	dat2[4]=v_limit2%10+0x30;
	dat2[7]=(i_limit%1000)/100+0x30;//电流上限
	dat2[8]=(i_limit%100)/10+0x30;
	dat2[9]=i_limit%10+0x30;
	dat2[12]=(t_limit%1000)/100+0x30;//温度上限
	dat2[13]=(t_limit%100)/10+0x30;
	dat2[14]=t_limit%10+0x30;
	write_string(2,0,dat2);
}
//*********************************************
//显示数值函数
void lcd_see_zhi()
{
	dat1[1]=(votage %100)/10+0x30;//电压
	dat1[2]=votage%10+0x30;
	dat1[6]=(current%1000)/100+0x30;//电流
	dat1[7]=(current%100)/10+0x30;
	dat1[8]=current%10+0x30;
	dat1[12]=(temp1%1000)/100+0x30;//温度
	dat1[13]=(temp1%100)/10+0x30;
	dat1[14]=temp1%10+0x30;
	write_string(1,0,dat1);
}
//*********************************************
//按键检测
void key()
{
	if(!button)
	{
		out=0;//打开继电器
		time=100;
		lcd_see_limit();
		while(!button);//等待按钮松开
	}
	if(!v_up)//电压上限+
	{
		if(v_limit1<20)//限制20V
			v_limit1++;
		lcd_see_limit();
		while(!v_up);
	}
	if(!v_down)//电压上限-
	{
		if(v_limit1>v_limit2)//不能低于下限
			v_limit1--;
		lcd_see_limit();
		while(!v_down);
	}
	if(!v_up0)//电压下限+
	{
		if(v_limit2<v_limit1)//不能高于上限
			v_limit2++;
		lcd_see_limit();
		while(!v_up0);
	}
	if(!v_down0)//电压下限-
	{
		if(v_limit2>0)//不能小于0
		v_limit2--;
		lcd_see_limit();
		while(!v_down0);
	}
	if(!i_up)//电流上限+10
	{
		if(i_limit<999)//电流不能大于1A
			i_limit+=10;
		lcd_see_limit();
		while(!i_up);
	}
	if(!i_down)//电流上限-
	{
		if(i_limit>0)
			i_limit-=10;
		lcd_see_limit();
		while(!i_down);
	}
	if(!t_up)//温度上限+
	{
		if(t_limit<100)
			t_limit++;
		lcd_see_limit();
		while(!t_up);
	}
	if(!t_down)//温度上限-
	{
		if(t_limit>0)
			t_limit--;
		lcd_see_limit();
		while(!t_down);
	}
}

//*********************************************
void main()
{
	led1=0;
	led2=0;
	led3=0;
	CLK=0;//ADC时钟初始化
	out=1;//打开继电器
	init_1602();//初始化LCD
	dat1[3]='V';//显示初始化
	dat1[9]='m';
	dat1[10]='A';
	dat1[15]='C';
	write_string(1,0,dat1);//显示符号
	lcd_see_limit();//显示极限值
while(1)
{
	//读取电压
	votage=ADC1();
	//读取电流
	current=ADC2();
	//读取温度
	Ds18b20ReadTemp();
	votage=votage/6;//电压修正,电路测试环节可以修改
	current=current*7;//电流修正,电路测试环节可以修改
	lcd_see_zhi();//显示
	if(time>0)
	{
		time--;
		if(current>i_limit)//过流
		{
			led3=1;
		}
		else
		{
			led3=0;
		}
	}
	else
	{
	//判断
	if(votage>v_limit1)//过压
	{
		out=1;//关闭继电器
		led1=1;
	}
	else
	{
		led1=0;
	}
	if(votage<v_limit2)//欠压
	{
		out=1;//关闭继电器
		led2=1;
	}
	else
	{
		led2=0;
	}
	if(current>i_limit)//过流
	{
		out=1;//关闭继电器
		led3=1;
	}
	else
	{
		led3=0;
	}
	if(temp1>t_limit)//过热
	{
		out=1;//关闭继电器
		led4=1;
	}
	else
	{
		led4=0;
	}
	}
	key();//读取按键
	delay_uint(5000);
}
}

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复"资料"!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

相关推荐
爱倒腾的老唐5 小时前
01、如何学习单片机
单片机·嵌入式硬件·学习
点灯小铭5 小时前
基于单片机的夹具压力控制系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计
雾削木11 小时前
stm32解锁芯片
javascript·stm32·单片机·嵌入式硬件·gitee
璞致电子13 小时前
fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
linux·嵌入式硬件·学习·fpga开发·fpga·fpga开发板·xilinx开发板
三佛科技-1341638421213 小时前
手持小风扇MCU方案,智能风扇方案设计开发
单片机·嵌入式硬件
btzhy13 小时前
STM32单片机:基本定时器应用:PWM 生成(STM32L4xx)
stm32·单片机·嵌入式硬件·基本定时器应用:pwm生成
guangshui51614 小时前
18006.STM32通过SPI读取LAN9253数据
stm32·单片机·嵌入式硬件
greatofdream15 小时前
HDLBit 个人记录
fpga开发
小莞尔15 小时前
【51单片机】【protues仿真】基于51单片机全自动洗衣机系统
c语言·单片机·嵌入式硬件·物联网·51单片机