双电源供电系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
for(j=1;j<=8;j++) //处理1个字节8位
{
cord=irdata[k];
if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差
{
value=value|0x80;
}
else
{
value=value;
}
if(j<8)
{
value=value>>1;
总电路如下图
图5
4 程序框图
程序如下:
#include<STC15F104E.H>//包含头文件,含特殊功能寄存器的定义
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char //定义无符号字符
#define uint unsigned int
{
if(outa==1)
b=0;
if(j1==1&&b==0)
cd=1;
if(j1==0&&b==0)
cd=0;
if(outb==1)
{cd=0;b=1; }
if(j1==0)
cd=0;
}
void main(void)
{
dstime=0;
EX0init(); //初始化外部中断
TIM0init();//初始化定时器0
case 0x44:if (j1==1)cd=1;break;
case 0x43:cd=0;break;
}
irpro_ok=0;//处理完成标志
}
void Ircordpro(void)//红外码值处理函数
{
uchar i, j, k;
uchar cord,value;
k=1;
for(i=0;i<4;i++) //处理4个字节
在设计的过程中,我们也认识到了自己所学知识的不足。这也让我们再次认识到知识是无尽 的,只有不断的充实自己、完善自己的知识理论体系,才能够更好的胜任自己以后的工作。 设计过程中知识的不足也让我们更加坚定了终身学习的决心。
在设计的过程中,我也得到了我们设计小组的成员和很多同学的帮助。这也加强了我与其他同学合作的能力。查找资料的过程中我也增强自己学习的能力,这些都将让我在以后的学习、生活和工作中受益匪浅。
{
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断
EA = 1; //开总中断
}
void Ir_work(void)//红外键值散转程序
{
switch(IRcord[2])//判断第三个数码值
{
case 0x45:kg=1;break;
case 0x47:kg=0;break;
图2
J1是主电源,J2是备用电源。当J1有电时Q3基极为高电平Q3截止,若P3.4为高电平Q4导通,否则截止。当J1断电时Q3导通,若P3.4为高电平Q4导通,若为低电平Q4截止。
3.3备用电源电量监控电路
LM393为主要芯片。LM 393是由两个独立的、高精度电压比较器组成的集成电路,失调电压最大为2.0mv,它专为获得宽电压范围,单电源供电而设计的,也可以双电源供电;而且无论电源电压大小,电源消耗的电流都很低即使单电源供电比较器的共模输入电压范围接近地电平。单电源:2.0V to 36V。电源电流消耗很低(0.4mA);最大输入失调电压:±3mA
irtime=来自百度文库;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{irtime=0;startflag=1;}
}
void TIM0init(void)//定时器初始化
{
TMOD=0x02;//定时器工作方式2
TH0=0x00;
TL0=0x00;
ET0=1;
TR0=1;
}
void EX0init(void)
单片机
课程设计
院系电气(机电)工程
题目名称路由器双电源供电及管理系统
指导教师吴泽
小组人员叶晓航4703120074
王丹丹4703120055
裴秀凤4703120058
马志超470312008
二○一四年十二月二十六日
1背景
工作日定点停电几乎是每个学校的惯例,当你在下载资料或正在打游戏的时候宿舍电被关了给同学的学习与生活带来了诸多的无奈。后来发现即使宿舍的电被停了而校园网并没有断此时有一个双电源供电了的路由器或者交换机就显得非常有必要了,这样完全可以忽视宿舍断电带来的麻烦与不便。刚好利用手头的一块12V锂电池,查资料发现Tenda W3111R路由器采用lv1482SN宽电源芯片12V锂电池完全可用。结合所学知识制作了一个双电源管理系统。该设备造价便宜使用方便。
2设计要求和主要内容
本系统有主电源和备用电源。平时主电源供电,当主电源地停电或主电源电压低于备用电源电压0.8V时,备用电源供电。两电源转换时间低于1us完全不影响路由器工作,此部分由硬件电路完成。根据12V锂电池(输出电压10.8-12.5V)输出电压曲线,当电池电压低于10.8V主电源有电时开始充电。若主电源停电则断开对外供电电路保护备用电源等主电源有电时开始充电并回复外电路供电。当电池电压达到12.5V时停止充电。有定时功能:工作日宿舍停电半小时后停止对路由器供电 ,断网睡觉。星期天则全天不断网,增加红外遥控功能能人为地控制对备用电源充电及是否对路由器供。
总之,对于这样的课程设计活动,我们收获了很多东西,也将使我们在以后的学习、工作中 更加轻松和积极。这也正是参加这次活动的目的和意义。
参
[1]刘同法,肖志刚,彭继卫.C51单片机C程序模板与应用工程实践
[2]李广弟,朱月秀,冷祖祁.单片机基础
[3] 郭天祥.51单片机C语言教程
IE2 |= 0x04; //开定时器2中断
EA = 1;
}
void t2int() interrupt 12 //中断入口
{ dstime++;
if(j1==1)
AUXR &=~0x10;
if(dstime==60000)
{ kg=0;
dstime=0;
AUXR &=~0x10;
}
}
void chongdian (void)
{
static unsigned char i; //接收红外信号处理
static bit startflag; //是否开始处理标志位
if(startflag)
{
if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
i=0;
irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
bit irpro_ok,irok;
uchar IRcord[4];
uchar irdata[33];
uint b=1;
uint a=0;
void tim0 (void) interrupt 1 using 1//定时器0中断服务函数
{
irtime++; //用于计数2个下降沿之间的时间
}
void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数
图1
单片机检测P3.0引脚是否为高电平 若为高电平则系统需要充电,检测P3.1引脚若为高电平则充电完成,P3.2外接红外接头,接收红外信号,P3.3检测主电源是否有电若为高电平则表示主电源有电若为低电平则表示主电源断电。P3.4是向外供电电路控制端口,P3.5是充电控制接口。
3.2双电源自动切换电路
{TIM2init(); //初始化定时器2
a=0;
}
if (j1==1&&a==0)
{kg=1;}
} }
通过这将近半个多月的单片机处理的课程设计,我们先在图书馆里查找了相关的书籍,如单片机类的编程书籍,即丰富了自己的 知识范围,又对与自己所学的知识有了更深的了解和认识,同时也对它的应用有了一个大体 的认识。这样将会更加激励我好好学习相关的知识,不断的将所学的知识用于实践。于实践 中牢牢的掌握它。
P3=0xff;
P3M1=0x08;
while(1)//主循环
{
if(irok) //如果接收好了进行红外处理
{
Ircordpro();
irok=0;
}
if(irpro_ok)
{
Ir_work();
}
chongdian ();
if (j1==1)//记录高电平信息
if (j1==1)
a=1;
if(j1==0&&a==1)
3系统主要硬件电路设计
3.1单片机简介
STC15F104W单片机时STC生产的单时钟(1T)单片机,此单片机只有8个引脚其中有6个IO口,剩下2个是VCC和GND ,不需要带晶振内部自带有时钟发生电路。这6个IO口实际上是我们普通单片机上的P3口,实际编程时也是使用P3.X来实现IO口操作,除P3.1没有复用功能外,其他引脚均有复用功能。芯片默认是不需要复位电路的,上电自复位的。可以通过软件来选择引脚作为复位脚。同时在烧录软件上可以选择低压复位。有两个定时器分别是定时器0和2。T0工作在方式0时是16位可自动重装初始值的定时计数器,方式2时是8位自动重装的计数器,方式3时是可分解的;T2的工作模式固定在16位自动重装初始值模式该芯片的定时器模块可产生更高精度的定时时间。电路如下
#define TURE 1
#define FALSE 0
sbit outa=P3^0;
sbit outb=P3^1;
sbit IR=P3^2;
sbit j1=P3^3;
sbit kg=P3^4;
sbit cd=P3^5;
uchar irtime;//红外全局变量
uint dstime ;//定时全局变量
}
k++;
}
IRcord[i]=value;
value=0;
} irpro_ok=1;//处理完毕标志位置1
}
void TIM2init(void)
{
AUXR &= ~0x04; //定时器2为12T模式
T2L = 16; //初始化计时值
T2H = 21;
AUXR |= 0x10; //定时器2开始计时
控制电路如下:
图3
电压比较器从R7获取基准电压,分别通过R4、R5与备用电源电压相比较。若INA-电压小于INA+则备用电源需要充电OUTA为低电平。若INB+电压大于INB-则充电完成OUTB为高电平。
3.4红外接收电路
图4
红外接收电路主要有VS1838组成解码原理为当一个键按下超过22ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(用户编码)(9ms~18ms),高8位地址码(用户编码)(9ms~18ms),8位数据码(键值数据码)(9ms~18ms)和这8位数据的反码(键值数据码反码)(9ms~18ms)组成。红外接头收到信号后单片机判断脉冲的长短确定是0还是1计算出键值。
for(j=1;j<=8;j++) //处理1个字节8位
{
cord=irdata[k];
if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差
{
value=value|0x80;
}
else
{
value=value;
}
if(j<8)
{
value=value>>1;
总电路如下图
图5
4 程序框图
程序如下:
#include<STC15F104E.H>//包含头文件,含特殊功能寄存器的定义
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char //定义无符号字符
#define uint unsigned int
{
if(outa==1)
b=0;
if(j1==1&&b==0)
cd=1;
if(j1==0&&b==0)
cd=0;
if(outb==1)
{cd=0;b=1; }
if(j1==0)
cd=0;
}
void main(void)
{
dstime=0;
EX0init(); //初始化外部中断
TIM0init();//初始化定时器0
case 0x44:if (j1==1)cd=1;break;
case 0x43:cd=0;break;
}
irpro_ok=0;//处理完成标志
}
void Ircordpro(void)//红外码值处理函数
{
uchar i, j, k;
uchar cord,value;
k=1;
for(i=0;i<4;i++) //处理4个字节
在设计的过程中,我们也认识到了自己所学知识的不足。这也让我们再次认识到知识是无尽 的,只有不断的充实自己、完善自己的知识理论体系,才能够更好的胜任自己以后的工作。 设计过程中知识的不足也让我们更加坚定了终身学习的决心。
在设计的过程中,我也得到了我们设计小组的成员和很多同学的帮助。这也加强了我与其他同学合作的能力。查找资料的过程中我也增强自己学习的能力,这些都将让我在以后的学习、生活和工作中受益匪浅。
{
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断
EA = 1; //开总中断
}
void Ir_work(void)//红外键值散转程序
{
switch(IRcord[2])//判断第三个数码值
{
case 0x45:kg=1;break;
case 0x47:kg=0;break;
图2
J1是主电源,J2是备用电源。当J1有电时Q3基极为高电平Q3截止,若P3.4为高电平Q4导通,否则截止。当J1断电时Q3导通,若P3.4为高电平Q4导通,若为低电平Q4截止。
3.3备用电源电量监控电路
LM393为主要芯片。LM 393是由两个独立的、高精度电压比较器组成的集成电路,失调电压最大为2.0mv,它专为获得宽电压范围,单电源供电而设计的,也可以双电源供电;而且无论电源电压大小,电源消耗的电流都很低即使单电源供电比较器的共模输入电压范围接近地电平。单电源:2.0V to 36V。电源电流消耗很低(0.4mA);最大输入失调电压:±3mA
irtime=来自百度文库;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{irtime=0;startflag=1;}
}
void TIM0init(void)//定时器初始化
{
TMOD=0x02;//定时器工作方式2
TH0=0x00;
TL0=0x00;
ET0=1;
TR0=1;
}
void EX0init(void)
单片机
课程设计
院系电气(机电)工程
题目名称路由器双电源供电及管理系统
指导教师吴泽
小组人员叶晓航4703120074
王丹丹4703120055
裴秀凤4703120058
马志超470312008
二○一四年十二月二十六日
1背景
工作日定点停电几乎是每个学校的惯例,当你在下载资料或正在打游戏的时候宿舍电被关了给同学的学习与生活带来了诸多的无奈。后来发现即使宿舍的电被停了而校园网并没有断此时有一个双电源供电了的路由器或者交换机就显得非常有必要了,这样完全可以忽视宿舍断电带来的麻烦与不便。刚好利用手头的一块12V锂电池,查资料发现Tenda W3111R路由器采用lv1482SN宽电源芯片12V锂电池完全可用。结合所学知识制作了一个双电源管理系统。该设备造价便宜使用方便。
2设计要求和主要内容
本系统有主电源和备用电源。平时主电源供电,当主电源地停电或主电源电压低于备用电源电压0.8V时,备用电源供电。两电源转换时间低于1us完全不影响路由器工作,此部分由硬件电路完成。根据12V锂电池(输出电压10.8-12.5V)输出电压曲线,当电池电压低于10.8V主电源有电时开始充电。若主电源停电则断开对外供电电路保护备用电源等主电源有电时开始充电并回复外电路供电。当电池电压达到12.5V时停止充电。有定时功能:工作日宿舍停电半小时后停止对路由器供电 ,断网睡觉。星期天则全天不断网,增加红外遥控功能能人为地控制对备用电源充电及是否对路由器供。
总之,对于这样的课程设计活动,我们收获了很多东西,也将使我们在以后的学习、工作中 更加轻松和积极。这也正是参加这次活动的目的和意义。
参
[1]刘同法,肖志刚,彭继卫.C51单片机C程序模板与应用工程实践
[2]李广弟,朱月秀,冷祖祁.单片机基础
[3] 郭天祥.51单片机C语言教程
IE2 |= 0x04; //开定时器2中断
EA = 1;
}
void t2int() interrupt 12 //中断入口
{ dstime++;
if(j1==1)
AUXR &=~0x10;
if(dstime==60000)
{ kg=0;
dstime=0;
AUXR &=~0x10;
}
}
void chongdian (void)
{
static unsigned char i; //接收红外信号处理
static bit startflag; //是否开始处理标志位
if(startflag)
{
if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
i=0;
irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
bit irpro_ok,irok;
uchar IRcord[4];
uchar irdata[33];
uint b=1;
uint a=0;
void tim0 (void) interrupt 1 using 1//定时器0中断服务函数
{
irtime++; //用于计数2个下降沿之间的时间
}
void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数
图1
单片机检测P3.0引脚是否为高电平 若为高电平则系统需要充电,检测P3.1引脚若为高电平则充电完成,P3.2外接红外接头,接收红外信号,P3.3检测主电源是否有电若为高电平则表示主电源有电若为低电平则表示主电源断电。P3.4是向外供电电路控制端口,P3.5是充电控制接口。
3.2双电源自动切换电路
{TIM2init(); //初始化定时器2
a=0;
}
if (j1==1&&a==0)
{kg=1;}
} }
通过这将近半个多月的单片机处理的课程设计,我们先在图书馆里查找了相关的书籍,如单片机类的编程书籍,即丰富了自己的 知识范围,又对与自己所学的知识有了更深的了解和认识,同时也对它的应用有了一个大体 的认识。这样将会更加激励我好好学习相关的知识,不断的将所学的知识用于实践。于实践 中牢牢的掌握它。
P3=0xff;
P3M1=0x08;
while(1)//主循环
{
if(irok) //如果接收好了进行红外处理
{
Ircordpro();
irok=0;
}
if(irpro_ok)
{
Ir_work();
}
chongdian ();
if (j1==1)//记录高电平信息
if (j1==1)
a=1;
if(j1==0&&a==1)
3系统主要硬件电路设计
3.1单片机简介
STC15F104W单片机时STC生产的单时钟(1T)单片机,此单片机只有8个引脚其中有6个IO口,剩下2个是VCC和GND ,不需要带晶振内部自带有时钟发生电路。这6个IO口实际上是我们普通单片机上的P3口,实际编程时也是使用P3.X来实现IO口操作,除P3.1没有复用功能外,其他引脚均有复用功能。芯片默认是不需要复位电路的,上电自复位的。可以通过软件来选择引脚作为复位脚。同时在烧录软件上可以选择低压复位。有两个定时器分别是定时器0和2。T0工作在方式0时是16位可自动重装初始值的定时计数器,方式2时是8位自动重装的计数器,方式3时是可分解的;T2的工作模式固定在16位自动重装初始值模式该芯片的定时器模块可产生更高精度的定时时间。电路如下
#define TURE 1
#define FALSE 0
sbit outa=P3^0;
sbit outb=P3^1;
sbit IR=P3^2;
sbit j1=P3^3;
sbit kg=P3^4;
sbit cd=P3^5;
uchar irtime;//红外全局变量
uint dstime ;//定时全局变量
}
k++;
}
IRcord[i]=value;
value=0;
} irpro_ok=1;//处理完毕标志位置1
}
void TIM2init(void)
{
AUXR &= ~0x04; //定时器2为12T模式
T2L = 16; //初始化计时值
T2H = 21;
AUXR |= 0x10; //定时器2开始计时
控制电路如下:
图3
电压比较器从R7获取基准电压,分别通过R4、R5与备用电源电压相比较。若INA-电压小于INA+则备用电源需要充电OUTA为低电平。若INB+电压大于INB-则充电完成OUTB为高电平。
3.4红外接收电路
图4
红外接收电路主要有VS1838组成解码原理为当一个键按下超过22ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(用户编码)(9ms~18ms),高8位地址码(用户编码)(9ms~18ms),8位数据码(键值数据码)(9ms~18ms)和这8位数据的反码(键值数据码反码)(9ms~18ms)组成。红外接头收到信号后单片机判断脉冲的长短确定是0还是1计算出键值。