
1、定义一个常量,表示按钮的按下和释放状态,以及指示灯的状态,比如按钮按下的常量为BTN_PRESS,释放的常量为BTN_RELEASE,指示灯灭的常量为LED_OFF,亮的常量为LED_ON。
2、定义一个初始化函数,用于初始化继电器的状态,设置按钮的状态为释放状态,指示灯的状态为灭状态,并将按钮和指示灯状态赋值给对应的变量。
3、定义一个循环函数,用于不断监测按钮的按下状态,当按钮按下时,则执行指示灯的急停功能,即将指示灯的状态置为灭状态,否则将指示灯的状态置为亮状态。
4、最后创建一个主函数,用于调用上述初始化函数和循环函数,从而实现控制博图带按钮的指示灯急停继电器的功能。
这个是简单的电路图,因为单片机上电时,各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
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)