找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17740|回復(fù): 0
收起左側(cè)

單片機按鍵+ -操作程序源代碼

[復(fù)制鏈接]
ID:11064 發(fā)表于 2015-11-3 19:48 | 顯示全部樓層 |閱讀模式
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

sbit KEY_UP =P3^3;  //該按鍵按一次加1
sbit KEY_DOWN =P3^4; //該按鍵按1次減1

unsigned char code SHU[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9

/*------------------------------------------------
uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
unsigned char 是定義無符號字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
        while(--t);
}
/*------------------------------------------------
mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
unsigned char 是定義無符號字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
        while(t--)
        {
                //大致延時1mS
            DelayUs2x(245);
                DelayUs2x(245);
        }
}

/*-- 主函數(shù) --*/
void main (void)
{
        unsigned char num=0;                  
        KEY_UP=1; //按鍵輸入端口電平置高
        KEY_DOWN=1;
        while (1)         //主循環(huán)
          {
                  if(!KEY_UP)  //如果檢測到低電平,說明按鍵按下
            {
                         DelayMs(10); //延時去抖,一般10-20ms
                     if(!KEY_UP)     //再次確認按鍵是否按下,沒有按下則退出
                           {
                        while(!KEY_UP);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
                               {
                                           if(num<9)    //加操作
                                          num++;
                                 }
                           }
                }
                if(!KEY_DOWN)  //如果檢測到低電平,說明按鍵按下
            {
                         DelayMs(10); //延時去抖,一般10-20ms
                     if(!KEY_DOWN)     //再次確認按鍵是否按下,沒有按下則退出
                           {
                        while(!KEY_DOWN);//如果確認按下按鍵等待按鍵釋放,沒有釋放則一直等待
                               {
                                       if(num>0)  //減操作
                                  num--;
                                 }
                           }
                }
                   P2=0xfe; //數(shù)碼管的位碼,只有先選通,才能夠顯示,第一位數(shù)碼管選通,即二進制1111 1110
            P0=SHU[num%10]; //在數(shù)碼管中顯示一個數(shù)字
        }
}
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表