基于单片机电器断路器保护器系统Proteus仿真(含全部资料)
全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等
资料下载:
通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu
目录
资料下载:
Proteus仿真功能
项目文件资料:
一、Proteus仿真源文件
二、AD原理图文件
二、报告说明书
三、系统流程图
四、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 charsbit 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)//限制20Vv_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)//不能小于0v_limit2--;lcd_see_limit();while(!v_down0);}if(!i_up)//电流上限+10{if(i_limit<999)//电流不能大于1Ai_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();//初始化LCDdat1[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);
}
}
六、全套资料包含
七:项目资源获取
需要完整的资料可以点击下面的名片关注,回复“资料”!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓