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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

at89c51 3x3矩陣鍵盤實(shí)現(xiàn)led顯示按鍵1-9 哪里錯了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:189690 發(fā)表于 2017-4-17 12:54 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#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

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

使用道具 舉報(bào)

沙發(fā)
ID:7485 發(fā)表于 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ù)的語句放在這兒不對。如果沒有鍵按下就不會顯示。
回復(fù)

使用道具 舉報(bào)

板凳
ID:149451 發(fā)表于 2017-4-17 19:47 | 只看該作者
單片機(jī)的應(yīng)用記住:P0口需加上拉電阻。你把它加上試試,有驚喜喲!!!你的程序仿真了,沒錯的,可以正常顯示。
回復(fù)

使用道具 舉報(bào)

地板
ID:190593 發(fā)表于 2017-4-17 20:25 | 只看該作者
51單片機(jī)P0口要接1k或者10k的上拉
回復(fù)

使用道具 舉報(bào)

5#
ID:189690 發(fā)表于 2017-4-18 18:47 | 只看該作者
確實(shí)是沒加電阻的問題 10k電阻還是顯示不了 470Ω就可以了  此貼完結(jié) 謝謝大家
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 无码一区二区三区视频 | 久久久免费少妇高潮毛片 | 成人国产精品久久 | 亚洲国产精品一区 | 羞羞午夜| 国产成人免费视频网站视频社区 | 国产 欧美 日韩 一区 | 久久高清国产视频 | 中文成人在线 | 国产色99精品9i | 网络毛片 | 日日操av | 亚洲美女天堂网 | 国产精品一区二区在线播放 | 二区中文字幕 | 午夜激情免费视频 | 做a视频| 国产精品1区2区3区 中文字幕一区二区三区四区 | 韩日一区二区 | 精品无码三级在线观看视频 | 超碰在线免费公开 | 午夜专区 | 成人欧美一区二区三区在线播放 | 国产精品久久久久久久久久不蜜臀 | 久久亚洲精品国产精品紫薇 | 波多野结衣一区二区三区在线观看 | 偷拍自拍在线观看 | 日韩一区二区三区在线 | 一级毛片免费完整视频 | 国产999精品久久久久久 | 精品美女| 国产在线观看一区二区 | 91免费在线 | 久久三区| 青青久久av北条麻妃海外网 | 亚洲精品国产成人 | 欧美一级网站 | 视频一区在线观看 | 日本不卡免费新一二三区 | 亚洲国产精品久久久久久 | 亚洲欧美综合精品久久成人 |