A. 用單片機實現2位靜態數碼管(共陽)控制,其中系統還包括4個獨立按鍵(中斷形式),
2位共陽數碼管分別接在P0口和P口。難點是4個按鍵要採用中斷方式,所以,4個按鍵不但接成獨立式按鍵,還要用一個4輸入與門得到一個中斷請信號加到P3.2上,用INT0中斷。右移,左移指定的位,用小數點顯示。模擬圖如下。
B. 單片機的中斷方式的獨立按鍵實現鍵1,2的識別
void t0int (void)
{
TH0=65536-50000/256;//每50MS中斷一次
TL0=65536-50000%256;//每50MS中斷一次
TR0=0; //關中斷
P3=0xff;//讀按鍵
key=P3;
if(key!=0xff)
delay(10);//延時消抖
key=P3;//再讀去按鍵
if(key!=0xff)
{
if(key==0xfe)
key=1;// 假設1按下
if(key==0xfd)
key=2;// 假設1按下
P3=0xff
while(P3!=0xff);//等待按鍵松開
delay(10);//延時消抖
}
TR0=1;//啟動中斷為下次讀按鍵做准備
}
C. 單片機外部中斷與獨立鍵盤問題
注意幾點:
1, 外中斷的觸發需要用負跳變,而不要採用低電平
2, 讀取獨立鍵盤的時候,一定要消抖。
3, 在中斷中,請在開始時關閉中斷,等處理完當前中斷,再開中斷
請採納。
D. 單片機外部中斷有那些用處可不可以在中斷里放一個鍵盤掃描程序
外部中斷,需要有一個外部脈沖信號加到P3.2 或P3.3,引起中斷,才能執行到中斷服務程序。
要在中斷里放一個鍵盤掃描程序,那得需要鍵盤引起中斷才行的。多個獨立式按鍵,或矩陣式鍵盤,都不方便產生一個中斷信號的。
外部中斷,不是為了鍵盤的,為什麼會想到用鍵盤呢?
E. 單片機獨立式按鍵的外部中斷掃描
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
ucharkey;
voidext0()interrupt0
{
if(P1&0x01)key=1;
elseif(P1&0x02)key=2;
elseif(P1&0x04)key=3;
elseif(P1&0x08)key=4;
elsekey=0;
}
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
ucharled,i,j;
while(1)
{
switch(key)
{
case1:
led=0xfe;
for(i=0;i<10;i++)
for(j=0;j<8;j++)
{
P1=led;
led=_crol_(led,1);
delay(200);
}
break;
case2:
led=0x7f;
for(i=0;i<10;i++)
for(j=0;j<8;j++)
{
P1=led;
led=_cror_(led,1);
delay(200);
}
break;
case3:
led=0x0f;
for(i=0;i<10;i++)
{
P1=led;
delay(200);
led=~led;
P1=led;
delay(200);
led=~led;
}
break;
case4:
for(i=0;i<10;i++)
{
P1=0x00;
delay(200);
P1=0xff;
delay(200);
}
break;
}
}
}
F. 51系列單片機的按鍵中斷控製程序
void External_Interrupt_0() interrupt 0
{
Count_A = ~ Count_A;
LED1 = ~ LED1;
}
你用外部中斷0,是否是想按住按鍵時就停在哪裡,是就這樣改一下!void External_Interrupt_0() interrupt 0
{
Count_A = ~ Count_A;
LED1 = ~ LED1; while(!P32);
}
假如P32按下時下降沿或低電平觸發,進入外部中斷,執行完2條指令取反後,一直等待按鍵松開。
G. 單片機利用中斷掃描獨立式按鍵
你定時器中斷後,掃描下即便掃描到有按鍵按下先做個標記,等待下次中斷進入後,根據標記先判斷是否按鍵還處於按下狀態,是的話,經過你的再次定時器中斷,也已經實現了消抖延時的作用。此時可以採集按鍵值。
H. 求51單片機中斷式獨立按鍵的程序流程圖,完整一點謝謝。
你想問的是單片機掃描識別按鍵狀態的程序處理過程嗎?那樣的話可採用查詢和中斷結合的方法來解決這個問題。在程序的主循環中先不斷地去檢查中斷標志位,以此判斷有無外部中斷發生,在有中斷產生後,再通過查詢與按鍵相連的單片機埠的電平變化,可確定引起中斷的按鍵(即被按下的按鍵)。
I. 單片機應用中,獨立式按鍵操作的流程是什麼
一種是普通io口,一種是中彈的形式,普通io口是按下按鍵觸發按鍵子程序案件,指程序經過一段時間的,比如20~50毫秒的延時再次毒案件,如果按鍵值還是會按下,那麼就延時等待按鍵抬起按鍵,抬起後執行按鍵程序,然後返回中彈也是一樣的,按下按鍵之後進入中段讀按鍵狀態,是否還是為按一下是按一下等待延時再讀等待,然後等待案件採取後執行相應的代碼,然後退出總代。