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

QQ登錄

只需一步,快速開始

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

矩陣鍵盤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63656 發(fā)表于 2014-10-26 17:44 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 2842687945 于 2014-10-26 20:48 編輯

/*******************利用定時(shí)器掃描讀取鍵碼*******************/
#include <reg52.h>
typedef unsigned int uint16;
typedef unsigned char uint8;
//定時(shí)器0的初始化
void time0(void)
{
        TMOD = 0x01;//設(shè)置定時(shí)器0的工作方式為1
        TH0 = 0xff;//定時(shí)10us定時(shí)器0的高位端
        TL0 = 0xf6;//定時(shí)10us定時(shí)器0的低位端
        ET0 = 1;//開啟定時(shí)器0中斷
        TR0 = 1;//啟動(dòng)定時(shí)器0
        EA = 1;//開啟總中斷
}
//矩陣鍵盤函數(shù)
void key_P1(void)
{
         uint8 code led[] = {
                                      0x3f,0x06,0x5b,0x4f,
                                      0x66,0x6d,0x7d,0x07,
                                      0x7f,0x6f,0x77,0x7c,
                                      0x39,0x5e,0x79,0x71
                                      };//共陰數(shù)碼管的段碼
         P1 = 0xef;//打開第一列
         //第一列的鍵碼
         switch(P1)
         {
                 case 0xee:P0 = led[0];break;
                case 0xed:P0 = led[1];break;
                case 0xeb:P0 = led[2];break;
                case 0xe7:P0 = led[3];break;
                default :break;
         }
         P1 = 0xdf;//打開第二列
         //第二列的鍵碼
         switch(P1)
         {
                 case 0xde:P0 = led[4];break;
                case 0xdd:P0 = led[5];break;
                case 0xdb:P0 = led[6];break;
                case 0xd7:P0 = led[7];break;
                default :break;
         }
         P1 = 0xbf;//打開第三列
         //第三列的鍵碼
         switch(P1)
         {
                 case 0xbe:P0 = led[8];break;
                case 0xbd:P0 = led[9];break;
                case 0xbb:P0 = led[10];break;
                case 0xb7:P0 = led[11];break;
                default :break;
         }
         P1 = 0x7f;//打開第四列
         //第四列的鍵碼
         switch(P1)
         {
                 case 0x7e:P0 = led[12];break;
                case 0x7d:P0 = led[13];break;
                case 0x7b:P0 = led[14];break;
                case 0x77:P0 = led[15];break;
                default :break;
         }
}
//主函數(shù)
void main(void)
{
        P1 = 0xff;//P1口的初始化
        time0();//初始化
        while(1)
        {
               
        }
}
//定時(shí)器0的子服務(wù)函數(shù)
void inti(void) interrupt 1
{
        TH0 = 0xff;//重新賦值
        TL0 = 0xf6;
        key_P1();//調(diào)用矩陣鍵盤函數(shù)
}

QQ截圖20141026204753.png (19.56 KB, 下載次數(shù): 134)

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

使用道具 舉報(bào)

沙發(fā)
ID:44262 發(fā)表于 2014-10-26 20:06 來(lái)自手機(jī) | 只看該作者
有電路圖嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:64817 發(fā)表于 2014-11-1 17:18 | 只看該作者
能否詳細(xì)解說(shuō)一下,進(jìn)入一次中斷檢測(cè)一次key_P1()的值,如何消抖處理,,。學(xué)習(xí)一下。
回復(fù)

使用道具 舉報(bào)

地板
ID:69319 發(fā)表于 2014-12-8 19:10 | 只看該作者
樓主這個(gè)程序能不能用匯編寫給我學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

5#
ID:203338 發(fā)表于 2017-9-25 10:45 | 只看該作者
666可以看看
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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