欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

搜索
查看: 5206|回復(fù): 6
收起左側(cè)

新人求助:做一個(gè)4*4矩陣鍵盤按鍵識(shí)別的仿真和編程,可是弄完還是仿真不了

[復(fù)制鏈接]
ID:287943 發(fā)表于 2018-3-19 13:11 | 顯示全部樓層 |閱讀模式
100黑幣
IMG_0509.PNG
這是仿真原理圖


#include<reg51.h>
void delay_5ms()
{
        unsigned char i,j;
        for(i=0;i<=25;i++)
          for(j=0;j<=200;j++);
}
unsigned char key_scan()
{
        unsigned char key_temp0,key_temp1;
        unsigned char key_num=0;
        P1=0x0f;
        key_temp0=P1;
        if(key_temp0!=0x0f)
        {
                delay_5ms();
                key_temp0=P1;
                if(key_temp0!=0x0f)
                {
                        P1=0xf0;
                        key_temp1=P1;
                        if(key_temp0==0x0e)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=4;break;
                                        case 0xd0: key_num=3;break;
                                        case 0xb0: key_num=2;break;
                                        case 0x70: key_num=1;break;
                                        default:key_num=0;break;
                                }
                        }
                        else if(key_temp0==0x0d)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=8;break;
                                        case 0xd0: key_num=7;break;
                                        case 0xb0: key_num=6;break;
                                        case 0x70: key_num=5;break;
                                        default:key_num=0;break;
                                }
                        }
                        else if(key_temp0==0x0b)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=12;break;
                                        case 0xd0: key_num=11;break;
                                        case 0xb0: key_num=10;break;
                                        case 0x70: key_num=9;break;
                                        default:key_num=0;break;
                                }
                        }
                        else if(key_temp0==0x07)
                        {
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=16;break;
                                        case 0xd0: key_num=15;break;
                                        case 0xb0: key_num=14;break;
                                        case 0x70: key_num=13;break;
                                        default:key_num=0;break;
                                }
                        }
                }
        }
return key_num;
}
void main()
{
        unsigned char key_num;
        do
        {
                key_num=key_scan();
                P2=key_num/10;
                P3=key_num%10;
        }while(1);
}



這是程序代碼


不知道錯(cuò)在哪里,很迷茫,在這里請(qǐng)教各位大神了

回復(fù)

使用道具 舉報(bào)

ID:287943 發(fā)表于 2018-3-19 13:15 | 顯示全部樓層
要實(shí)現(xiàn)按下按鍵1時(shí)顯示1, 按下2時(shí)顯示2......按下16時(shí)顯示16
回復(fù)

使用道具 舉報(bào)

ID:294005 發(fā)表于 2018-3-19 14:58 | 顯示全部樓層
你要把你的問題說清楚,是按鍵沒反應(yīng),還是不顯示,還是什么?   一步一步的排除問題,先是把主程序里面的keynum設(shè)置成全局變量隨便賦一個(gè)值,屏蔽按鍵掃描,先看看能不能顯示你設(shè)置的值,能顯示再處理按鍵
回復(fù)

使用道具 舉報(bào)

ID:287943 發(fā)表于 2018-3-19 15:17 | 顯示全部樓層
wildxie 發(fā)表于 2018-3-19 14:58
你要把你的問題說清楚,是按鍵沒反應(yīng),還是不顯示,還是什么?   一步一步的排除問題,先是把主程序里面的ke ...

調(diào)試的時(shí)候沒有顯示
回復(fù)

使用道具 舉報(bào)

ID:212149 發(fā)表于 2018-3-19 15:59 | 顯示全部樓層
key_temp1=P1;
                        if(key_temp0==0x0e)
                        {
                                 key_temp1=P1;//新加的
                                switch(key_temp1)
                                {
                                        case 0xe0: key_num=4;break;
                                        case 0xd0: key_num=3;break;
                                        case 0xb0: key_num=2;break;
                                        case 0x70: key_num=1;break;
                                        default:key_num=0;break;
                                }
                        }
四段都是同樣的問題以這段為例,我講一下我看出的問題,首先你在switch之前應(yīng)當(dāng)對(duì) key_temp1賦值,如果不賦值的話你可以debuy一下應(yīng)該key_temp1都是0xf0,你可以試一下看
回復(fù)

使用道具 舉報(bào)

ID:294005 發(fā)表于 2018-3-19 17:02 | 顯示全部樓層
剛剛沒注意看圖,74LS47下面的幾個(gè)pin都要拉高,然后key_num/10和%10得到的是十進(jìn)制數(shù),要轉(zhuǎn)換成BCD碼(8421最常用)發(fā)給74LS47,可以先用撥碼開關(guān)把顯示調(diào)試好
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2018-3-19 21:10 | 顯示全部樓層
本帖最后由 zl2168 于 2018-3-19 21:11 編輯

實(shí)例75  4×4矩陣式鍵盤
Proteus仿真一下,確認(rèn)有效。
實(shí)例75 4×4矩陣式鍵盤.rar (44.8 KB, 下載次數(shù): 30)
4×4矩陣式鍵盤.jpg
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語(yǔ)句條條有注解。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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