❶ 一個按鍵怎麼實現兩個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單片機的自動路燈控制,需要哪幾部分組成能實現
首先肯定是要有單片機最小系統,晶振電路復位電路啥的。
再就是需要檢測天黑不黑,所以需要光敏電阻,但光敏電阻的值需要再經比較器處理成高低電平觸發信號然後再給單片機。這是信號輸入部分
然後還需要控制輸出,也就是能讓單片機對路燈通斷電控制,這就是需要接繼電器