找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5616|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

4X4鍵盤掃描兩位數(shù)碼管顯示 含源碼!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


代碼如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define GPIO_KEY P1
#define weixuan P2
//0~F的共陽數(shù)碼管段碼,最后一個(gè)是黑屏
const uchar SEG_CODE[] =
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
  0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF
};
sbit wei1=P2^0;
sbit wei2=P2^1;
uchar ge,shi,KeyValue,j;
/*****延時(shí)函數(shù)*****/
void delay1ms(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=112;y>0;y--);  //12M晶振下,延時(shí)1MS
}

/*****顯示函數(shù)*****/
void xianshi(uchar k)
{
          ge=k%10;  //個(gè)位
          shi=k/10; //十位
          if(k>9)
          {
                weixuan=0x02;
                P0=SEG_CODE[ge];//個(gè)位段選
                delay1ms(10);
                weixuan=0x01;
                P0=SEG_CODE[shi];//十位段碼,顯示
                delay1ms(10);       
          }
          else
          {
                weixuan=0x02;
                P0=SEG_CODE[ge];//個(gè)位段選
                delay1ms(10);                                                 
          }
}
/***鍵盤掃描函數(shù)***/
uchar keyscan()
{
        char a=0;
                GPIO_KEY=0x0f;   //P1口值準(zhǔn)備
                        if(GPIO_KEY!=0x0f)
                        {
                                delay1ms(10);   //延時(shí)消抖
                                if(GPIO_KEY!=0x0f)//再次判斷
                                {
                                        GPIO_KEY=0x0f;  //再次裝值準(zhǔn)備
                                        switch(GPIO_KEY)  //測(cè)試行
                                        {
                                                case(0x07):KeyValue=0;break; //第一行
                                                case(0x0b):KeyValue=1;break; //第二行
                                                case(0x0d):KeyValue=2;break; //第三行
                                                case(0x0e):KeyValue=3;break; //第四行                                                       
                                        }
                                        GPIO_KEY=0xf0;   //高四位賦1,判斷準(zhǔn)備
                                        switch(GPIO_KEY) //測(cè)試行
                                        {
                                                case(0x70):KeyValue=KeyValue;break;           //0-3
                                                case(0xb0):KeyValue=KeyValue+4;break;  //4-7
                                                case(0xd0):KeyValue=KeyValue+8;break;  //8-11
                                                case(0xe0):KeyValue=KeyValue+12;break; //12-15               
                                        }
                                        while((GPIO_KEY!=0x0f)&&(a<10)) //判斷是否松手,假若沒有松手,
                                                                           //一段延時(shí)后依舊判斷松手完成
                                        {
                                                delay1ms(1);
                                                a++;
                                        }
                                        a=0;               
                                }
                        }        
                        return KeyValue;
}

/*****主函數(shù)*******/
void main()
{
        uchar b;
        while(1)
        {       
                b=keyscan();
                xianshi(b);       
        }       
}



4X4鍵盤數(shù)碼管顯示.rar

65.04 KB, 下載次數(shù): 54, 下載積分: 黑幣 -5

4X4矩陣鍵盤數(shù)碼管顯示

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:985169 發(fā)表于 2021-12-5 20:38 | 只看該作者
我想問一下要顯示三位的辦?
回復(fù)

使用道具 舉報(bào)

板凳
ID:74649 發(fā)表于 2023-9-9 08:26 | 只看該作者
慢慢學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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