導航:首頁 > 操作系統 > 單片機鍵盤流水

單片機鍵盤流水

發布時間:2023-02-10 07:15:04

『壹』 C51單片機按鍵切換流水燈

#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
sbitkey=P1^0;
ucharled,time;
voidt0isr()interrupt1
{
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
switch(time)
{
case0:P0=led;led=_crol_(led,1);break;
case1:P0=led;led=_cror_(led,1);brea;
case2:P0=led;led=~led;break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
TR0=1;
ET0=1;
EA=1;
led=0xfe;
while(1)
{
if(key==0)
{
while(key==0);
time++;
time%=3;
if(time==0)led=0xfe;
elseif(time==1)led=0x7f;
elseled=0x55;
}
}
}

『貳』 51單片機按鍵控制流水燈和數碼管(最好用外部中斷)

51單片機按鍵控制流水燈和數碼管,P1口接8個LED燈,P0口接一個共陽數碼管,P3.2和P3.3各接一個按鍵,分別用外部中斷0和中斷1。早蜂鳴器接在P2.7上。模擬圖如下。

『叄』 單片機 獨立鍵盤流水燈

KEY EQU 30H
LED EQU 31H
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
CLR EA
MOV SP,#5FH
MOV KEY,#0
MOV LED,#0FEH
LOOP:
MOV R7,#50
LCALL DELAY
LCALL KEYDEAL
MOV A,KEY
JNZ LOOP1
MOV A,LED
RL A
MOV LED,A
MOV P0,A
SJMP LOOP
LOOP1:
DEC A
JNZ LOOP2
MOV A,LED
RR A
MOV LED,A
MOV P0,A
SJMP LOOP
LOOP2:
DEC A
JNZ LOOP3
MOV A,LED
RL A
MOV LED,A
CPL A
MOV P0,A
SJMP LOOP
LOOP3:
MOV A,LED
RR A
MOV LED,A
CPL A
MOV P0,A
LJMP LOOP
;----------------------------
DELAY:
MOV R2,#2
DLY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY1
DJNZ R7,DELAY
RET
;-----------------------------
KEYDEAL:
JB P2.0,KEYEND
MOV R7,#10
LCALL DELAY
JB P2.0,KEYEND
INC KEY
MOV A,KEY
ANL A,#03H
MOV KEY,A
KEYEND:
RET
;-----------------------------
END

『肆』 52單片機獨立按鍵控制LED流水燈

怎麼個控製法,按一下,流水燈停下,再按一下開始,

還是按一下對應亮一個或亮下一個

還是想知道怎麼用按鍵

教你用按鍵的方法,功能你自己去實現。把io口拉高電平後,接按鍵,如果按鍵按下,會接地,讀出的io口電平會變為低,這樣就可以判斷說法按下按鍵,但要一直重復讀取io口數據,而且要防抖動。


unsignedinttemp,k=9;
P2=0xff;//用P2檢測鍵盤
temp=P2;
temp=temp&0xff;
if(temp!=0xff)//接地了,有按下
{
delayxms(10);//等鍵盤穩定,以確認不是誤按、抖動
temp=P2;//再次檢測
temp=temp&0xff; //防抖,確認是按下
if(temp!=0xff)//確認不是誤按、抖動
{
switch(temp)
{
case0xfe:k=0;break;
case0xfd:k=1;break;//不同情況做出不同處理,變為0的是按下的鍵
case0xfb:k=2;break;
case0xf7:k=3;break;
case0xef:k=4;break;
case0xdf:k=5;break;
case0xbf:k=6;break;
case0x7f:k=7;break;
}
}
}

『伍』 單片機矩陣鍵盤控制流水燈的問題

#include<reg52.h>
/*
void delay10ms()
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=110;j>0;j--);
} */
void main()
{
unsigned char a;
while(1)
{
P1=0xf7;
a=P1;
if(a!=0xf7)
{
// delay10ms();
a=P1;
a=a&0xf0;
if(a!=0xf7)
{
a=P1;
switch (a)
{
case 0xe7:P2=0xff;break;
case 0xd7:P2=0xfe;break;
case 0xb7:P2=0xfc;break;
case 0x77:P2=0xf8;break;
}
while(a!=0xf0)
{
a=P1;
a=a&0xf0;
}
}
}
P1=0xfb; //1111 1011
a=P1;
if(a!=0xfb)
{
// delay10ms();
a=P1;
a=a&0xf0;
if(a!=0xfb)
{
a=P1;
switch (a)
{
case 0xeb:P2=0xf0;break;
case 0xdb:P2=0xe0;break;
case 0xbb:P2=0xc0;break;
case 0x7b:P2=0x80;break;
}
while(a!=0xf0)
{
a=P1;
a=a&0xf0;
}
}
}
}
}

你這個程序只能在P1口的P1.3和P1.4之間閃爍,
a=P1;
a=a&0xf0;
if(a!=0xf7)
{
這里已經定死了 if 語句永遠也進不去。還有你這個程序層次很亂,看來你是個新手

『陸』 單片機,利用鍵盤控制LED燈顯示不同的流水形式(單燈流水、雙燈流水、隨機流水),這個程序該怎麼做啊。

首先、你要的是3個功能
如果你要用3個按鈕,那就每個實現1種
如果你用的是1個按鈕,那就1個實現3種
-
單燈流水,P*口(燈的介面) 循環左移命令 _crol_
比方:led1=0xff; _crol_(led1,1);P1=0xff; 這樣就OK
雙燈:也是一樣的道理,把_crol_(led1,2)改下2就可以了
注意左移命令,在頭文件 intrins.h 裡面
隨機流水? 這點有點不明白意思,是隨機亮滅,還是怎麼樣個隨機流水呢
原理就是用RAND 產生隨機數,然後付給LED燈IO口就可以了

『柒』 大神,單片機按鍵咋控制我設置流水燈,按第一個鍵往左流水,按第二個鍵往右流水

你這程序就是寫在紙上就算是完成作業了嗎?至少也得在電腦上打出來吧。你這真是正版的紙上談兵。
如果只寫程序就能交作業,那你可以交了,不必問了。反正也是隨便寫就行的。

『捌』 單片機按鍵控制流水燈狀態切換

現在一般不用2051了,呵呵,不過模擬也沒事。
這程序可以這樣寫:設一個變數作為按鍵的鍵值,按下為1,再次按下為0;首先寫一個流水燈的子程序,然後再主函數里去識別之前設置的鍵值,=1--->去執行流水燈;=0--->直接把P1口賦值0(也就是全亮)。這樣就可以實現了。

『玖』 單片機c52怎麼用4個鍵控制四種方式的流水燈,還能暫停,求解決!!!

這個程序可以試一下
#include "reg52.h"
typedef unsigned int WORD;

sbit key = P3^4;

void Delay_ms(WORD n)//軟體延時
{
WORD x;
while (n--)
{
x = 100;
while (x--);
}
}

void main()
{
bit Y=0;
P1=0X01;
P3=0XFF;
while(1)
{
if(key==0)
{
Delay_ms(10);
if(!key)
{
Y=~Y;
while(!key);
}
}

if(Y==1)
{
if(P1==0X00)P1=0X01;

Delay_ms(100);
P1=P1<<1;

}

}

}

『拾』 C51單片機編程,按鍵控制流水燈

#include "reg51.h"
unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED燈的花樣數據
void delay(unsigned char time){ //延時函數
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
bit dir=0,run=0; //標志位定義及初始化
char i;
while(1){
switch (P0 & 0x0f){ //讀取鍵值
case 0x0e:run=1;break; //K1動作,設run=1
case 0x0d:run=0,dir=0;break; // K2動作,設run=dir=0
case 0x0b:dir=1;break; //K3動作,設dir=1
case 0x07:dir=0;break; //K4動作,設dir=0
}
if (run) //若run=dir=1,自上而下流動
if(dir)
for(i=0;i<=3;i++){
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流動
P2=led[i];
delay(200);
}
else P2=0xff; //若run=0,全部燈滅
}
}

閱讀全文

與單片機鍵盤流水相關的資料

熱點內容
單片機狀態周期 瀏覽:620
lua中的android 瀏覽:441
加密貴還是植發貴 瀏覽:662
陽光壓縮機繼電器 瀏覽:969
修改阿里雲伺服器密碼 瀏覽:815
lk4102加密晶元 瀏覽:588
怎麼更改app店面 瀏覽:489
設備部門如何做好伺服器 瀏覽:849
androido下載 瀏覽:478
神奇高量戰法副圖源碼 瀏覽:830
匯編語言設計凱撒密碼加密器 瀏覽:392
主次梁加密是加在哪裡 瀏覽:664
模板匹配演算法matlab 瀏覽:825
外地程序員去北京 瀏覽:24
安卓機換蘋果12如何轉移數據 瀏覽:420
互聯網ntp伺服器地址及埠 瀏覽:613
pdf到word轉換器 瀏覽:269
飛行解壓素材 瀏覽:498
51單片機指令用背嗎 瀏覽:936
unityai演算法 瀏覽:834