双电源供电系统Word文档格式.docx
- 文档编号:22313613
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:14
- 大小:2MB
双电源供电系统Word文档格式.docx
《双电源供电系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《双电源供电系统Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
工作日宿舍停电半小时后停止对路由器供电,断网睡觉。
星期天则全天不断网,增加红外遥控功能能人为地控制对备用电源充电及是否对路由器供。
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位自动重装初始值模式该芯片的定时器模块可产生更高精度的定时时间。
电路如下
图1
单片机检测P3.0引脚是否为高电平若为高电平则系统需要充电,检测P3.1引脚若为高电平则充电完成,P3.2外接红外接头,接收红外信号,P3.3检测主电源是否有电若为高电平则表示主电源有电若为低电平则表示主电源断电。
P3.4是向外供电电路控制端口,P3.5是充电控制接口。
3.2双电源自动切换电路
图2
J1是主电源,J2是备用电源。
当J1有电时Q3基极为高电平Q3截止,若P3.4为高电平Q4导通,否则截止。
当J1断电时Q3导通,若P3.4为高电平Q4导通,若为低电平Q4截止。
3.3备用电源电量监控电路
LM393为主要芯片。
LM393是由两个独立的、高精度电压比较器组成的集成电路,失调电压最大为2.0mv,它专为获得宽电压范围,单电源供电而设计的,也可以双电源供电;
而且无论电源电压大小,电源消耗的电流都很低即使单电源供电比较器的共模输入电压范围接近地电平。
单电源:
2.0Vto36V。
电源电流消耗很低(0.4mA);
最大输入失调电压:
±
3mA
控制电路如下:
图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计算出键值。
总电路如下图
图5
4程序框图
程序如下:
#include<
STC15F104E.H>
//包含头文件,含特殊功能寄存器的定义
stdio.h>
intrins.h>
#defineucharunsignedchar//定义无符号字符
#defineuintunsignedint
#defineTURE1
#defineFALSE0
sbitouta=P3^0;
sbitoutb=P3^1;
sbitIR=P3^2;
sbitj1=P3^3;
sbitkg=P3^4;
sbitcd=P3^5;
ucharirtime;
//红外全局变量
uintdstime;
//定时全局变量
bitirpro_ok,irok;
ucharIRcord[4];
ucharirdata[33];
uintb=1;
uinta=0;
voidtim0(void)interrupt1using1//定时器0中断服务函数
{
irtime++;
//用于计数2个下降沿之间的时间
}
voidex0_isr(void)interrupt0using0//外部中断0服务函数
staticunsignedchari;
//接收红外信号处理
staticbitstartflag;
//是否开始处理标志位
if(startflag)
{
if(irtime<
63&
&
irtime>
=33)//引导码TC9012的头码,9ms+4.5ms
i=0;
irdata[i]=irtime;
//存储每个电平的持续时间,用于以后判断是0还是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{irtime=0;
startflag=1;
voidTIM0init(void)//定时器初始化
TMOD=0x02;
//定时器工作方式2
TH0=0x00;
TL0=0x00;
ET0=1;
TR0=1;
voidEX0init(void)
IT0=1;
//指定外部中断0下降沿触发,INT0(P3.2)
EX0=1;
//使能外部中断
EA=1;
//开总中断
voidIr_work(void)//红外键值散转程序
{
switch(IRcord[2])//判断第三个数码值
case0x45:
kg=1;
break;
case0x47:
kg=0;
case0x44:
if(j1==1)cd=1;
case0x43:
cd=0;
}
irpro_ok=0;
//处理完成标志
voidIrcordpro(void)//红外码值处理函数
{
uchari,j,k;
ucharcord,value;
k=1;
for(i=0;
i<
4;
i++)//处理4个字节
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;
k++;
IRcord[i]=value;
value=0;
}irpro_ok=1;
//处理完毕标志位置1
voidTIM2init(void)
AUXR&
=~0x04;
//定时器2为12T模式
T2L=16;
//初始化计时值
T2H=21;
AUXR|=0x10;
//定时器2开始计时
IE2|=0x04;
//开定时器2中断
voidt2int()interrupt12//中断入口
{dstime++;
if(j1==1)
AUXR&
=~0x10;
if(dstime==60000)
{kg=0;
dstime=0;
voidchongdian(void)
if(outa==1)
b=0;
if(j1==1&
b==0)
cd=1;
if(j1==0&
cd=0;
if(outb==1)
{cd=0;
b=1;
if(j1==0)
}
voidmain(void)
dstime=0;
EX0init();
//初始化外部中断
TIM0init();
//初始化定时器0
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;
a==1)
{TIM2init();
//初始化定时器2
a=0;
if(j1==1&
a==0)
{kg=1;
}}
5心得体会
通过这将近半个多月的单片机处理的课程设计,我们先在图书馆里查找了相关的书籍,如单片机类的编程书籍,即丰富了自己的知识范围,又对与自己所学的知识有了更深的了解和认识,同时也对它的应用有了一个大体的认识。
这样将会更加激励我好好学习相关的知识,不断的将所学的知识用于实践。
于实践中牢牢的掌握它。
在设计的过程中,我们也认识到了自己所学知识的不足。
这也让我们再次认识到知识是无尽的,只有不断的充实自己、完善自己的知识理论体系,才能够更好的胜任自己以后的工作。
设计过程中知识的不足也让我们更加坚定了终身学习的决心。
在设计的过程中,我也得到了我们设计小组的成员和很多同学的帮助。
这也加强了我与其他同学合作的能力。
查找资料的过程中我也增强自己学习的能力,这些都将让我在以后的学习、生活和工作中受益匪浅。
总之,对于这样的课程设计活动,我们收获了很多东西,也将使我们在以后的学习、工作中更加轻松和积极。
这也正是参加这次活动的目的和意义。
参考文献
[1]刘同法,肖志刚,彭继卫.C51单片机C程序模板与应用工程实践
[2]李广弟,朱月秀,冷祖祁.单片机基础
[3]郭天祥.51单片机C语言教程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 双电源 供电系统