久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用矩陣鍵盤控制led點陣,就是一個按鍵控制顯示一個數(shù)字那種,求大神幫忙

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:445287 發(fā)表于 2018-12-13 15:58 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
#include<reg51.h>
#include<intrins.h>

typedef unsigned int u16;         
typedef unsigned char u8;

//--定義要使用的IO口--//

#define GPIO_DIG P0
#define GPIO_KEY P1
#define READPORTS P2

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 KeyValue;

void delay(u16 i){
    while(i--);      
}

/*******************************************************************************
* 函 數(shù) 名         : KeyDown
* 函數(shù)功能                   : 檢測有按鍵按下并讀取鍵值
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void KeyDown(void)
{
        char a=0;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
        {
                delay(1000);//延時10ms進行消抖
                if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
                {       
                        //測試列
                        GPIO_KEY=0X0F;
                        switch(GPIO_KEY)
                        {
                                case(0X07):        KeyValue=0;break;
                                case(0X0b):        KeyValue=1;break;
                                case(0X0d): KeyValue=2;break;
                                case(0X0e):        KeyValue=3;break;
                        }
                        //測試行
                        GPIO_KEY=0XF0;
                        switch(GPIO_KEY)
                        {
                                case(0X70):        KeyValue=KeyValue;break;
                                case(0Xb0):        KeyValue=KeyValue+4;break;
                                case(0Xd0): KeyValue=KeyValue+8;break;
                                case(0Xe0):        KeyValue=KeyValue+12;break;
                        }
                        while((a<50)&&(GPIO_KEY!=0xf0))         //檢測按鍵松手檢測
                        {
                                delay(1000);
                                a++;
                        }
                }
        }
}


//--列選通控制--//
unsigned char code TAB[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

//--點陣字碼--//
unsigned char code CHARCODE[16][8] = {

{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0

{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1

{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2

{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3

{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4

{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5

{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6

{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7

{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8

{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9

{0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P

{0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R

{0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E

{0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C

{0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H

{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I

};

/*******************************************************************************
* 函數(shù)名         : Hc595SendByte(unsigned char dat)
* 函數(shù)功能                   : 想74H595發(fā)送一個字節(jié)的數(shù)據(jù)
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
void Hc595SendByte(unsigned char dat)
{
        unsigned char a;
        SRCLK=0;
        RCLK=0;
        for(a=0;a<8;a++)
        {
                SER=dat>>7;
                dat<<=1;

                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;        
        }

        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}

void main(){   
        LSA=0; //給一個數(shù)碼管提供位選
        LSB=0;
        LSC=0;
             
    unsigned char tab, j;
    unsigned int  i;//無符號整數(shù)
    while(1){        
        for(i= 0; i<5000; i++ ){//兩個字之間的掃描間隔時間
            for(tab=0;tab<8;tab++)
                {        
                                KeyDown();
                Hc595SendByte(0x00);//消隱                                                                                                                                
                GPIO_DIG = TAB[tab];                                 //輸出字碼        
                Hc595SendByte(CHARCODE[KeyValue][tab]);        
                delay(2);               
            }
        }
        j++;
        if(j == 16){
            j = 0;
        }
    }
}      

IMG_20181212_225423.JPG (782.94 KB, 下載次數(shù): 75)

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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-12-13 21:23 | 只看該作者
您這個問題給的信息不全,估計是沒人能回答得了的,先轉(zhuǎn)移到冷門區(qū)了,自行點擊編輯按鈕補充一下吧,審核員會幫你重新轉(zhuǎn)到熱門問答區(qū)的
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品久久久 | 欧美性久久久 | 福利社午夜影院 | 欧美在线视频网 | 毛片免费看的 | 久久久成人精品 | 国产一级片在线观看视频 | 亚洲欧美视频一区 | 中文字幕91| 伊人天堂网 | 亚洲日韩中文字幕一区 | 欧美视频在线播放 | 狠狠撸在线视频 | 91玖玖| 欧美日韩大片 | 欧美精品久久久久 | 久久成人免费 | 亚洲精品国产成人 | 成人毛片一区二区三区 | 蜜桃一区二区三区 | av激情在线| 国产精品www| 国产一区免费 | 超碰3 | 精品国产乱码久久久久久丨区2区 | 日韩网 | www.婷婷| 999久久久免费精品国产 | 成人国产精品视频 | 国产日韩欧美激情 | 国产精品一区二区三区免费观看 | 在线观看日本网站 | 国产 欧美 日韩 一区 | 亚洲网站在线观看 | 青青草av | 中文字幕av免费 | 免费观看黄网站 | 九九热精品视频 | 亚洲免费久久久 | 91精品国产综合久久香蕉922 | av影音 |