单片机控制继电器程序

单片机控制继电器程序,第1张

这个是简单的电路图,因为单片机上电时,各IO口有个瞬间高电平脉冲;这里选用PNP三极管来驱动。至于你说的按任意键启动。。。。这个没多大意义了,这里给你的是按键开、关继电器。 //按K1 继电器吸合

//按K2 继电器断开

/*********************************************************/#include <reg52.h>

sbit K1 =P3^2//K1

sbit K2 =P3^3//K2

sbit JDQ=P1^0 //继电器/*********************************************************/

void Delay(unsigned int ii) //1MS

{

unsigned int jj

for(ii>0ii--)

for(jj=0jj<125jj++)

{}

}

void main()

{ while(1){

if (K1==0)

{

Delay(10)

if(K1==0){

JDQ=0//吸合

P0=0x00//P0口LED亮

}

}if (K2==0){

Delay(10)

if(K2==0){

JDQ=1//释放

P0=0xff//P0口LED灯灭

}

}

}

}

#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=0x4CTL0=0x00 //定时时间50ms

ET0=1 //允许定时器0中断

TR0=1 //定时器0启动

}

void time0_server_(void)interrupt 1 //定时器0中断函数

{

TH0=0x4CTL0=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

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11131142.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存