獨立按鍵c語言程式詳解
方法/步驟
獨立按鍵0~F數碼管顯示,實現加一加二,減一減二數碼管顯示
#include "reg51.h"//包含標頭檔案,一般情況不需要改動,標頭檔案包含特殊功能暫存器的定義
#define uint unsigned int
#define uchar unsigned char
sbit k0=P3^0;//定義按鍵
sbit k1=P3^1;//定義按鍵
sbit k2=P3^2;//定義按鍵
sbit k3=P3^3;//定義按鍵
uchar smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f
,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
/******************************************************************/
/* 延時函式宣告 */
/******************************************************************/
/*void mdelay(uint t)
{
uchar n;
for(;t>0;t--)
for(n=0;n<125;n++)
{;}
}*/
void mdelay(uint t)
{
uchar n;
while(t--)
{
for(n=0;n<123;n++)
{;}
}
}
/******************************************************************/
/* 主函式 */
/******************************************************************/
void main()
{
uchar count=0;
while(1)
{
P2=0x00;
P0=smg[count];//給數碼管賦個初值
if(k0==0)
{
mdelay(100);//去抖動
if(k0==0)
{
P0=smg[count];//k0按下數值加一
count++;
while(!k0);//如果按鍵按下,在此停下;如果按鍵鬆開,繼續檢測
if(count==16)
count=0;
}
}
if(k1==0)
{
mdelay(100);//去抖動
if(k1==0)
{
P0=smg[count];//k1按下數值減一
while(!k1);
if(count==0)
count=15;
else
count--;
}
}
if(k2==0)
{
mdelay(100);//去抖動
if(k2==0)
{
P0=smg[count];//k0按下數值加二
count=count+2;
while(!k2);//如果按鍵按下,在此停下;如果按鍵鬆開,繼續檢測
if(count==16)
count=0;
if(count==17)
count=1;
}
}
if(k3==0)
{
mdelay(100);//去抖動
if(k3==0)
{
P0=smg[count];//k1按下數值減二
while(!k3);
if(count==0)
count=14;
else if(count==1)
count=15;
else
count=count-2;
}
}
}
}
本經驗只供參考,如有不足,還請見諒。。