51单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。

#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
sbit a=P1^4;//
sbit b=P2^3;//
sbit c=P2^5;//
sbit d=P2^7;//
uint t;
void Init_t0(void) //定时器初始化
{
TMOD=0x01;
TH0=0x4C;TL0=0x00; //50ms
ET0=1;
TR0=1;
}
void time0_server_(void)interrupt 1
{
TH0=0x4C;TL0=0x00;
t++;
}
void main()
{
Init_t0();
a=0;//
b=0;//
c=0;//
d=0;//
t = 0;
EA = 1;
while(1) //循环
{
switch(t)
{
case 0:
a = 1;
b = c = d = 0;
break;
case 40:
b = 1;
a = c = d = 0;
break;
case 80:
c = 1;
a = b = d = 0;
break;
case 120:
d = 1;
a = b = c = 0;
break;
case 160:
t=0;
break;
default:
break;

}
}
}

#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
sbit a=P1^4;//a继电器控制端
sbit b=P2^3;//b继电器控制端
sbit c=P2^5;//c继电器控制端
sbit d=P2^7;//d继电器控制端
uint t;
void Init_t0(void) //定时器初始化
{
TMOD=0x01; //定时器0工作于方式1,16位定时器
TH0=0x4C;TL0=0x00; //定时时间50ms
ET0=1; //允许定时器0中断
TR0=1; //定时器0启动
}
void time0_server_(void)interrupt 1 //定时器0中断函数
{
TH0=0x4C;TL0=0x00; //定时时间50ms
t++; //t每50ms加1
}
void main() //主函数
{
Init_t0();
a=0; //初始化,所有继电器释放
b=0;//
c=0;//
d=0;//
t = 0; //计时器从0开始计时
EA = 1; //开启总中断
while(1) //循环
{
switch(t) //以t为参数的分支程序,t每50ms加1
{
case 0: //如果t=0(最初2秒),继电器a吸合,其他释放
a = 1;
b = c = d = 0;
break;
case 40: //如果t=40(第二个2秒),继电器b吸合,其他释放
b = 1;
a = c = d = 0;
break;
case 80: //如果t=80(第三个2秒),继电器c吸合,其他释放
c = 1;
a = b = d = 0;
break;
case 120: //如果t=120(第四个2秒),继电器d吸合,其他释放
d = 1;
a = b = c = 0;
break;
case 160: //如果t=160(第四个2秒结束),t=0,重复最初2秒情况
t=0;
break;
default: //如果t与上述数字都不想等,啥也不做,免得干扰继电器状态
break;

}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-17
需要给你写吗追问

急需

追答

代做的
我id

51单片机,想用单片机控制继电器(长时间延时),感觉弊端很大,希望指点...
你这个方案的出发点就错了,看你的文字描述,是要在特定的时刻完成特定的切换动作,所以你这个方案的核心是实时时钟(RTC,Real Time Clock),而不是靠单片机延时。所以你的方案构成应当是:RTC芯片+单片机+继电器驱动电路。如果仅仅是练手,那么重点是要提高你的延时精度,多重循环的延时精度是很差的(...

51单片机按键控制继电器的编程,按下键继电器闭合再按下键继电器断开,求...
include <reg52.h> sbit K1 =P3^2 ; \/\/K1 sbit JDQ=P1^0; \/\/继电器\/***\/ unsigned char change = 0;void Delay(unsigned int ii) \/\/1MS { unsigned int jj;for(;ii>0;ii--)for(jj=0;jj<125;jj++){;} } void main(){ while(1){ if ((K1==0)&&(change == 0...

51单片机控制12V继电器原理图,附上文字说明。
用P10低电平触发,二极管为续流二极管,不加的话三极管很容易被击穿,希望采纳

51单片机控制继电器电的电路图和程序
稳妥起见,控制继电器线圈最好用三极管或场效应管,光耦的使用故障率还是比这两个的高。

谁会51单片机 继电器定时控制,数码管最大显示99 ,最小显示00可,以用...
1:继电器的电压选择和可以为5V的用一个三极管做电流放大控制,毕竟单片机的输出能力不够驱动继电器,三极管选择8050系列或8550系列,基极电阻可选用2K的。5V \/ 2K =2.5mA 足够使三极管饱和导通输出最大800mA的电流(自然散热情况下,继电器的电流在100mA左右)2:数码管两位的采用共阳,同样使用三极管控制...

51单片机程序烧入以后,继电器一直跳怎么回事,请教高手
应该是把控制继电器的引脚上电了,看一下电路图,把那个引脚屏蔽掉就行了。

51单片机如何控制通断?有两个端点,之间的电压大小约为3.2伏,想用单片 ...
我建议你用继电器,由三极管驱动继电器,然后控制两点的闭合就行了,你看看电路图

用51单片机控制12V继电器,也就是5V控制12V的继电器,继电器的阻值为100...
看你的意思你用的是PNP型三极管吧,这样你还是不行的。。。你的单片机输出低时,三极管发射极与基极的电压为12V,发射结正偏,是不,貌似可以导通吧。好吧,当你输出高电平时,三极管发射极与基极的电压为12V-5V=7V,发射结还是正偏是不,你的始终导通,没法控制了。。。况且,你的电路正好满足发射...

为什么我的C51单片机不能驱动继电器啊,
只有接上高电平,继电器释放的声音,你误以为吸合!三极管是好的,是单片机的控制端也就是接1K电阻的那端与地短路了,包含单片机的I\/O口损坏,造成输出端短路接地(可能性小)。仔细分析你的问题,只有这种可能!你的单片机要上拉电阻的,你没接!希望能帮你,更希望你自己能学好模拟电路!

51单片机智能小车制作,求通俗易懂的讲解
系统的单片机程序:include"reg52.h"definedet_Dist2.55\/\/ 单个脉冲对应的小车行走距离,其值为车轮周长 \/4#defineRD9\/\/ 小车对角轴长度。definePI3.1415926 defineANG_9090 defineANG_90_T102 defineANG_180189\/ 全局变量定义区。\/sbitP10=P1^0;\/\/ 控制继电器的开闭sbitP11=P1^1;\/\/ 控制金属...

相似回答