1. 程式人生 > >獨立按鍵

獨立按鍵

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;
  }
 }
}