獨立按鍵
4x4按鍵P3口控制(獨立只需用到S4~S7,也就是p3.0~p3.3,con3接3和2)
點燈需要的硬體再這裡也需要用到,如譯碼器,或非門,資料選擇器。
#include "STC15F2K60S2.h" 微控制器標頭檔案名,定義一些特殊的資料暫存器0.0,如#include "reg51.h",是在打微控制器程式前需要打出來的,如c語言的#include "stdio.h"
每次檢測按鍵按下時需要有延時去抖,因為在按下按鍵時按鍵其實是接觸分離了很多次然後才穩定下來的,所以在接觸分離時需要延遲程式要避過,然後再次檢測穩定時的狀態是什麼,延時最好設定為一毫秒,長了反應慢,短了反應太快。
#include "STC15F2K60S2.h"
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
delay(unsigned int MS)
{//延時程式
unsigned int i,j;
for(i=0;i<MS;i++)
for(j=0;j<MS;j++);
}
void main()
{
In();
P2=0x80;//開啟Y4C
LED1=1;LED2=1;LED3=1;LED4=1;
while(1)
{
if((P3&0x0f)!=0x0f)
{//檢測按鍵是否按下
delay(500);//延時去抖
if((P3&0x01)!=0x01)//再次檢測
{
LED1=!LED1;//點亮或者熄滅L1
while((P3&0x01)!=0x01);//檢查是否放開按鍵
}
if((P3&0x02)!=0x02)
{
LED2=!LED2;
while((P3&0x02)!=0x02);
}
if((P3&0x04)!=0x04)
{
LED3=!LED3;
while((P3&0x04)!=0x04);
}
if((P3&0x08)!=0x08)
{
LED4=!LED4;
while((P3&0x08)!=0x08);
}
else;
}
}
}