说明
按下按键灯点亮,再次按下灯熄灭
Proteus仿真
注意:继电器的元器件设置Coil Resistance值一定要是(Default),否则灯不亮
使用到的元器件:
单片机:AT89C51
电容:CAP
极性电容:CAP-ELEC
电阻:RES
照明设备:LAMP
晶振:CRYSTAL
按键:BUTTON
三极管:PNP
继电器:RTE24005F
普通二极管:DIODE
C51代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Key = P1^0;//按键
sbit Relay = P2^4;//继电器控制引脚
//延时
void DelayMs(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void main()
{
P1 = 0xff;//按键设置高电平
Relay = 1;//设置为高电平
while(1)
{
if(Key == 0)//判断按键是否按下
{
DelayMs(10);//消抖
if(Key == 0)//再次判断按键是否按下
{
Relay = ~Relay;//反转继电器状态
while(Key == 0);//等待按键释放
DelayMs(10);//消抖
}
}
}
}