和定時掃瞄矩陣按鍵差不多的原理,只不過跳線帽連線2和3。不明白的可以看這篇部落格。
定時掃瞄矩陣
實驗平台:ct107d
實驗晶元:stc15f2k60s2
實驗現象:s7開啟蜂鳴器,s6關閉蜂鳴器,s5開啟繼電器,s4關閉繼電器
**如下(這裡使用了標誌位控制蜂鳴器和繼電器)
#include
#define uchar unsigned char
#define uint unsigned int
sbit buzz = p0^6;
sbit relay = p0^4;
bit buzz_flag =0;
bit relay_flag =0;
sbit key_in1 = p3^0;
sbit key_in2 = p3^1;
sbit key_in3 = p3^2;
sbit key_in4 = p3^3;
uchar keysta=
;uchar kaymap=
;//uchar code duan=;//定義段碼陣列
//uchar disbuff[8];//定義顯示數字數字
void
set_buzz()
if(buzz_flag ==1)
}void
set_relay()
if(relay_flag ==1)
}void
keyscan()
; uchar j;
keybuff[0]
= keybuff[0]
<<
1|key_in1;
keybuff[1]
= keybuff[1]
<<
1|key_in2;
keybuff[2]
= keybuff[2]
<<
1|key_in3;
keybuff[3]
= keybuff[3]
<<
1|key_in4;
for(j=
0;j<
4;j++
)elseif(
(keybuff[j]
&0x0f)==
0x0f)}
}void
keyfun
(uchar key_value)
}void
keydrive()
; uchar i;
for(i=
0;i<
4;i++
) keyback[i]
= keysta[i];}
}}void
timer0init
(void
)//1毫秒@12.000mhz
void
time0
() interrupt 1
void
main()
}
藍橋杯微控制器矩陣按鍵掃瞄程式設計
藍橋杯的矩陣按鍵的掃瞄,使用reg52.h標頭檔案的時候需要自定義p4介面,因為在該標頭檔案中並沒有定義p4介面。include reg52.h include intrins.h typedef unsigned char u8 typedef unsigned int u16 sfr p4 0x...
藍橋杯 獨立按鍵控制LED燈及消抖
按鍵在閉合或斷開時,觸點會有抖動現象,大部分是通過軟體處理,也可用硬體處理。include unsigned char num 0 unsigned char flag 0 標記值 bit s7 0,s6 0,s5 0,s4 0 bit 的取值範圍為1 10 void delayms int ms ...
在定時器中斷函式裡執行獨立按鍵的掃瞄程式
上一例在主函式中利用累計定時器中斷的次數來實現獨立按鍵的檢測,但是 如果在某些專案中,需要主函式裡面間歇性地執行一些一氣呵成的耗時任務,當主函式正在執行一氣呵成的耗時任務時 前提沒有關閉定時器中斷 這個時候 如果有按鍵按下來,就有可能沒有被及時響應而遺漏了。解決辦法 在定時器裡面處理獨立按鍵的掃瞄程...