新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 課程設(shè)計:矩陣鍵盤掃描顯示(c51反轉(zhuǎn)法)

        課程設(shè)計:矩陣鍵盤掃描顯示(c51反轉(zhuǎn)法)

        作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/201611/315825.htm

        //矩陣鍵盤掃描程序

        //采用翻轉(zhuǎn)識別法(相對代碼少一些)

        #include

        #define uchar unsigned char

        #define uint unsigned int

        uchar key=0;

        //共陽數(shù)碼管編碼如下(0-15)

        uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,

        0xc6,0xa1,0x86,0x8e};

        //函數(shù)聲明

        void display(uchar Duan_value);

        void delay(uchar t);

        void key_scan();

        void main()

        {

        while(1)

        {

        display(key);//顯示按鍵值

        key_scan();//按鍵掃描

        }

        }

        //延時函數(shù)

        void delay(uchar t)

        {

        uchar x,y;

        for(x=t;t>0;t--)

        for(y=111;y>0;y--);

        }

        //數(shù)碼管掃描函數(shù)

        void display(uchar value)

        {

        P2=table[value];

        }

        //按鍵掃描函數(shù)

        void key_scan()

        {

        uchar m0,m1;

        uchar temp;

        P1=0xf0;//這樣設(shè)置是為了能使低四位將高四位拉低,釋放時自動拉高高四位

        temp=P1;

        if(temp!=0xf0)

        {

        delay(10);//延時,去除抖動

        if(temp!=0xf0)

        {

        m0=temp;//獲得按鍵的列號

        P1=0x0f;

        temp=P1;

        if(temp!=0x0f)

        {

        m1=temp;//獲得按鍵的行號號

        temp=m0|m1;//獲得最終的號

        }

        switch(temp)

        {

        case 0xee:key=0;break;

        case 0xde:key=1;break;

        case 0xbe:key=2;break;

        case 0x7e:key=3;break;

        case 0xed:key=4;break;

        case 0xdd:key=5;break;

        case 0xbd:key=6;break;

        case 0x7d:key=7;break;

        case 0xeb:key=8;break;

        case 0xdb:key=9;break;

        case 0xbb:key=10;break;

        case 0x7b:key=11;break;

        case 0xe7:key=12;break;

        case 0xd7:key=13;break;

        case 0xb7:key=14;break;

        case 0x77:key=15;break;

        }

        do{

        temp=P1;//消除按起抖動

        temp&=0X0f;

        }while(temp!=0x0f);

        }

        }

        }



        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 罗平县| 吉水县| 佛山市| 林周县| 西华县| 怀宁县| 安西县| 汉中市| 洞头县| 贵溪市| 佛坪县| 沿河| 九台市| 武清区| 白城市| 阜新市| 浑源县| 北宁市| 翼城县| 张北县| 岚皋县| 平南县| 昌乐县| 宁晋县| 洛浦县| 沾化县| 康保县| 遂溪县| 融水| 河池市| 保定市| 项城市| 苏尼特右旗| 甘德县| 贵溪市| 南城县| 天门市| 通海县| 城口县| 尼木县| 元阳县|