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

標題: at89c51 3x3矩陣鍵盤實現(xiàn)led顯示按鍵1-9 哪里錯了 [打印本頁]

作者: 超級大樂透    時間: 2017-4-17 12:54
標題: at89c51 3x3矩陣鍵盤實現(xiàn)led顯示按鍵1-9 哪里錯了
#include<reg51.h>
#define key P0//定義按鍵端口
#define uchar unsigned char
sbit line0=P0^0;//定義行線
sbit line1=P0^1;
sbit line2=P0^2;
char led[]={0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//定義led顯示字行碼
char scancode2[]={0xef,0xdf};
bit iskey()//判斷是否有按鍵閉合
{
        key=0x07;//低三位為1,高三位為0
        if((key&0x07)==0x07)//屏蔽高三位(列線),只檢測低三位(行線)
                return 0;//沒有按鍵閉合
        else
                return 1;//有按鍵閉合
}
uchar key_identify()//識別建號
{
        uchar linecode=0,i,rowcode=0,scancode=0xf7;//初始化掃描碼,第一列為0,其他為1
        for(i=0;i<3;i++)//掃描三列
        {
                key=scancode;//輸出掃描碼,掃描各列
                if((key&0x07)==0x07)//屏蔽高三位(列線),只檢測低三位(行線)
                {                 
                        rowcode++;//無按鍵閉合
                        scancode=scancode2[rowcode-1];//輸出0的列線每次左移一位
                }
                else//已確定列號,再確定行號
                {
                        if(line0==0)linecode=0;
                        if(line1==0)linecode=3;
                        if(line2==0)linecode=6;
break;
                }
        }
        return (linecode+rowcode);//輸出鍵號
}
void wait_key_release()//等按鍵松開
{
        while(1)
        {
                key=0x07;//低三位為1,高三位為0
                if((key&0x07)==0x07)break;//讀行線狀態(tài),如果為高電平,則沒有按鍵閉合,鍵盤松開
        }
}
void display(uchar n)//led顯示數(shù)字
{
       
                P1=led[n];
                P0=0xff;
       
       
}
        int main(void)
        {
                uchar keycode;//保存鍵號
                unsigned int i;
                while(1)
                {
                        while(!iskey());//如果沒有按鍵按下,等待
                        for(i=0;i<500;i++);//消抖
                        if(iskey())//檢測是否有按鍵
                        {
                                keycode=key_identify();//識別鍵號
                                wait_key_release();//等待按鍵松開
                                display(keycode);//顯示
                        }
                }
        }
仿真時P0.0 P0.1 P0.2電平是灰的 按鍵沒反應(yīng) 詳情見附件

矩陣鍵盤led顯示.rar

19.08 KB, 下載次數(shù): 53


作者: ahshmj    時間: 2017-4-17 19:26
int main(void)
        {
                uchar keycode;//保存鍵號
                unsigned int i;
                while(1)
                {
                        while(!iskey());//如果沒有按鍵按下,等待
                        for(i=0;i<500;i++);//消抖
                        if(iskey())//檢測是否有按鍵
                        {
                                keycode=key_identify();//識別鍵號
                                wait_key_release();//等待按鍵松開
                                display(keycode);//顯示
                        }
                }
        }

調(diào)用顯示函數(shù)的語句放在這兒不對。如果沒有鍵按下就不會顯示。
作者: w1179benp    時間: 2017-4-17 19:47
單片機的應(yīng)用記住:P0口需加上拉電阻。你把它加上試試,有驚喜喲!!!!你的程序仿真了,沒錯的,可以正常顯示。
作者: HxFor51    時間: 2017-4-17 20:25
51單片機P0口要接1k或者10k的上拉
作者: 超級大樂透    時間: 2017-4-18 18:47
確實是沒加電阻的問題 10k電阻還是顯示不了 470Ω就可以了  此貼完結(jié) 謝謝大家




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 五月婷婷深深爱 | 激情婷婷丁香 | 黄色片毛片| 免费网站观看www在线观 | 国产精品96 | 国产福利在线视频 | 国产黄色大片 | 日韩一级片在线观看 | 国产黄色免费 | 成人福利片 | 天天干夜夜撸 | 成人免费视频视频 | 男女激情视频网站 | 蜜臀久久99精品久久久久久宅男 | 日韩一级片在线观看 | 日韩精品影视 | 在线精品一区 | 91播放| av观看网站| 中国黄色录像 | 成人午夜视频在线观看 | 国产伦精品一区二区免费 | 在线免费观看黄色片 | 日韩中文字幕精品 | 日本激情网站 | 亚洲综合在线播放 | 自拍三区 | 黄视频免费观看 | 茄子视频色 | 成人在线视频观看 | 欧美国产一区二区 | 久久久亚洲精品视频 | 91性高潮久久久久久久久 | 久久久久久久久久国产精品 | 国产成人精品免费视频 | 亚洲天堂网址 | 国产h片在线观看 | 欧美日韩在线一区 | 午夜激情在线观看 | 国产欧美久久久 | 国产九九热 |