召唤师 发表于 2020-4-5 09:57:57

proteus仿真矩阵按键异常!

遇到的问题描述在图片上,麻烦大家帮我看看,想不明白。同时我把程序和工程文件附在附件上。

召唤师 发表于 2020-4-5 09:58:33

本帖最后由 召唤师 于 2020-4-5 09:59 编辑

不好意思,附件发不上来,我把代码贴上。
                          
#include<reg52.h>
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
sbit key1=P2^4;
sbit key2=P2^5;
sbit key3=P2^6;
sbit key4=P2^7;
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;

int main()
{
   ENLED=0;
   ADDR3=1;
   ADDR0=0;
   ADDR1=0;
   ADDR2=0;
      P2=0xFE;
      while(1){
      LED1=key1;
      LED2=key2;
      LED3=key3;
      LED4=key4;
      }
return 0;
}

cyrus白 发表于 2020-4-5 11:14:28

这个好像跟程序没有关系,按K1 - K4的每个按钮keyout1应该都会变成高电平,你再仔细看看电路图

召唤师 发表于 2020-4-5 11:15:59

cyrus白 发表于 2020-4-5 11:14
这个好像跟程序没有关系,按K1 - K4的每个按钮keyout1应该都会变成高电平,你再仔细看看电路图

看了半天不知道问题在哪,我也觉得很奇怪。

cyrus白 发表于 2020-4-5 11:20:21

cyrus白 发表于 2020-4-5 11:21:38

召唤师 发表于 2020-4-5 11:15
看了半天不知道问题在哪,我也觉得很奇怪。

你按下按钮的时候 不就相当于形成了一个回路了吗

召唤师 发表于 2020-4-5 12:05:44

cyrus白 发表于 2020-4-5 11:21
你按下按钮的时候 不就相当于形成了一个回路了吗

回路是没错,但是keyout1是用p2.0置0,也就是通过P2.0给keyout1低电平,行程回路之后不是应该强制拉倒低电平吗?

cyrus白 发表于 2020-4-5 12:23:28

召唤师 发表于 2020-4-5 12:05
回路是没错,但是keyout1是用p2.0置0,也就是通过P2.0给keyout1低电平,行程回路之后不是应该强制拉倒低 ...

P2.0口 和 keyout1之间不是还有个电阻吗,你P2.0口低电平,keyout1直接得到电源电压,就在电阻两端形成5V的电压咯

cyrus白 发表于 2020-4-5 12:26:51

再不行的话就看看P2 的内部电路的构造吧 ,我也就只选修过一门单片机{:10_245:},不是特别了解

cyrus白 发表于 2020-4-5 12:33:57

把那电阻去掉,按下按钮之后 keyout应该就是低电平

召唤师 发表于 2020-4-5 13:20:59

cyrus白 发表于 2020-4-5 12:33
把那电阻去掉,按下按钮之后 keyout应该就是低电平

没用。
页: [1]
查看完整版本: proteus仿真矩阵按键异常!