❶ 一个按键怎么实现两个Led灯切换,就是按下第一个灯亮松手灯灭,再按一下第二个灯亮松平灯灭。单片机C
/*
按键位置:P0.1;
功能:1,当第一次按键按下,第一个灯亮,按键放开灯灭
2,当第二次按键按下,第二个灯亮,按键放开灯灭
3,重复执行前面两个步骤
灯的位置:P2口;
*/
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit BUTTON=P0^1;//按键的位置
void DELAY(uint x)
{
uchar s,j;
for(s=0;s<x;s++)
for(j=0;j<114;j++);
}
void main()
{
uint led=0;
while(1)
{
if(BUTTON==0)
{
led++;
if(led==1)//第一次按键按下
{
P2=0XFE;//1111 1110 第一个灯亮
DELAY(500);//延时
while(BUTTON!=0)//等待按键放开
{
P2=0xff;/1111 1111灯灭
DELAY(500)//延时
}
}
if(led==2)//第二次按键按下
{
led=0;//要给次数初始化
P2=0XFC;//1111 1101第二个灯亮
DELAY(500);//延时
while(BUTTON!=0)//等待按键放开
{
P2=0xff;//1111 1111第二个灯灭
DELAY(500)//延时
}
}
}
}
❷ 求C51单片机 按键切换三种样式流水灯代码
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
ucharled,tm,key;
sbitK=P1^0;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tm++;
if(tm>=10)
{
tm=0;
switch(key)
{
case0:led=_crol_(led,1);P0=led;break;
念搜返case1:led=_cror_(led,1);P0=led;break;
case2:led=~led;P0=led;break;
漏凯default:break;
仔饥}
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
led=0xfe;
key=0;
while(1)
{
if(K==0)
{
while(K==0);
key++;
key%=3;
if(key==0)led=0xfe;
elseif(key==1)led=0x7f;
elseled=0x55;
}
}
}
❸ 基于51单片机的自动路灯控制,需要哪几部分组成能实现
首先肯定是要有单片机最小系统,晶振电路复位电路啥的。
再就是需要检测天黑不黑,所以需要光敏电阻,但光敏电阻的值需要再经比较器处理成高低电平触发信号然后再给单片机。这是信号输入部分
然后还需要控制输出,也就是能让单片机对路灯通断电控制,这就是需要接继电器