找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1714|回復(fù): 5
收起左側(cè)

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

[復(fù)制鏈接]
ID:827939 發(fā)表于 2022-10-17 22:49 | 顯示全部樓層 |閱讀模式
代碼都是相同的代碼分別,第一個原理圖是自己畫的原理圖,按鍵按下之后,按鍵兩邊都是高電平。請各位大佬分析分析我自己畫的原理圖為什么是高電平,哪一步出了問題。 GA7[[XJ$[M4R((2ZY6G6D.png

#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

回復(fù)

使用道具 舉報

ID:629502 發(fā)表于 2022-10-18 08:26 | 顯示全部樓層
按鍵按下不就是通的了,相當(dāng)于你按鍵掃描時那個口輸出的電平和輸入電平是相同的
回復(fù)

使用道具 舉報

ID:1048116 發(fā)表于 2022-10-18 09:04 | 顯示全部樓層
按鍵按下,按鍵兩邊不就是短路嗎。而且你這程序掃描的時候只掃描了一次,要行和列各掃描一次才行。
回復(fù)

使用道具 舉報

ID:384109 發(fā)表于 2022-10-18 09:16 | 顯示全部樓層
是不是上拉電阻阻值不對
回復(fù)

使用道具 舉報

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

使用道具 舉報

ID:827939 發(fā)表于 2022-10-18 10:42 | 顯示全部樓層
lkc8210 發(fā)表于 2022-10-18 10:37
這是Proteus的仿真bug
如果用示波器觀察按鍵兩端電壓
會發(fā)現(xiàn)兩端電壓會是2.5V

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

使用道具 舉報

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

本版積分規(guī)則

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

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

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