找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1699|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)4*4矩陣鍵盤電路,按鍵按下兩邊都是高電平是什么原因?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:827939 發(fā)表于 2022-10-17 22:49 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
代碼都是相同的代碼分別,第一個(gè)原理圖是自己畫的原理圖,按鍵按下之后,按鍵兩邊都是高電平。請各位大佬分析分析我自己畫的原理圖為什么是高電平,哪一步出了問題。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int   
sbit k=P2^0;
sbit led=P2^1;
uchar temp,tema,row,column,i;
uchar dis[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code colcode[4]={0xfe,0xfd,0xfb,0xf7};
uint time;
void delay(time)                                                  
{
    uint j;
    for(j=0;j<time;j++)
    {}
}

void main()                                                           
{        
                k=0;
                P0=dis[0];
    while(1)
    {
                                P1=0xf0;         
                                temp=P1&0xf0;
                                if(temp!=0xf0)
                                {
                                                delay(1000);
                                                temp=P1&0xf0;
                                                if(temp!=0xf0)
                                                {
                                                        switch(temp)
                                                        {
                                                        case 0x70 : row=3;break;
                                                        case 0xb0 : row=2;break;
                                                        case 0xd0 : row=1;break;
                                                        case 0xe0 : row=0;break;
                                                        default : break;
                                                }
                                                for(i=0; i<4; i++)
                                                {
                                                        P1=colcode[ i];
                                                        temp=P1&0xf0;
                                                        temp=~temp;
                                                        if(temp!=0x0f)column=i;
                                                }
                                }}
                                P0=dis[row*4+column];
                }
                }

00.zip

92.52 KB, 下載次數(shù): 2

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

使用道具 舉報(bào)

沙發(fā)
ID:629502 發(fā)表于 2022-10-18 08:26 | 只看該作者
按鍵按下不就是通的了,相當(dāng)于你按鍵掃描時(shí)那個(gè)口輸出的電平和輸入電平是相同的
回復(fù)

使用道具 舉報(bào)

板凳
ID:1048116 發(fā)表于 2022-10-18 09:04 | 只看該作者
按鍵按下,按鍵兩邊不就是短路嗎。而且你這程序掃描的時(shí)候只掃描了一次,要行和列各掃描一次才行。
回復(fù)

使用道具 舉報(bào)

地板
ID:384109 發(fā)表于 2022-10-18 09:16 | 只看該作者
是不是上拉電阻阻值不對
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2022-10-18 10:37 | 只看該作者
這是Proteus的仿真bug
如果用示波器觀察按鍵兩端電壓
會(huì)發(fā)現(xiàn)兩端電壓會(huì)是2.5V
表示置0的引腳不足以拉低置1的引腳
回復(fù)

使用道具 舉報(bào)

6#
ID:827939 發(fā)表于 2022-10-18 10:42 | 只看該作者
lkc8210 發(fā)表于 2022-10-18 10:37
這是Proteus的仿真bug
如果用示波器觀察按鍵兩端電壓
會(huì)發(fā)現(xiàn)兩端電壓會(huì)是2.5V

這個(gè)bug要怎么解決啊
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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