标题: 51单片机按键控制数码管在我的板子上运行不了,别人的板可以 [打印本页]

作者: 禾几_    时间: 2020-11-1 22:50
标题: 51单片机按键控制数码管在我的板子上运行不了,别人的板可以
同样的图和代码,发给师傅运行没问题,在另一个师兄那里数码管不亮,在我这里实现不了按键控制,想知道是什么问题
#include <reg51.h>
#define uint unsigned int
uint k;
unsigned char   x,y,z;
unsigned char seg7code[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delayms()
{
uint i,j;
for(i=200;i>0;i--)
  for(j=100;j>0;j--);
}
void scannkey()
{
P3=0x0f;
    while(P1==0x0f);
if(P3!=0x0f)
{
  delayms();                      //????

   x=P3;
   P3=0xf0;
   y=P3;
   z=x|y;
   switch(z)
   {
         
    case(0xee):k=0;break;
    case(0xde):k=1;break;
    case(0xbe):k=2;break;
    case(0x7e):k=3;break;
    case(0xed):k=4;break;  
    case(0xdd):k=5;break;  
    case(0xbd):k=6;break;  
    case(0x7d):k=7;break;
    case(0xeb):k=8;break;   
    case(0xdb):k=9;break;  
    case(0xbb):k=10;break;  
    case(0x7b):k=11;break;
    case(0xe7):k=12;break;   
    case(0xd7):k=13;break;  
    case(0xb7):k=14;break;
    case(0x77):k=15;break;
      }
  }
}
void main()
{
while(1)
{
  scannkey();
  P0=seg7code[k];
}
}

救救我救救孩子吧

作者: wulin    时间: 2020-11-2 07:38
任何软件都是基于硬件条件编写的。原因是你和师兄都是机械套用,没有根据自己板子的电路作相应修改。这个按键扫描程序中写了一句有条件死循环 while(P1==0x0f); ,没有硬件图看不出原作者意图。
作者: 权威人物    时间: 2020-11-2 09:16
1、 while(P1==0x0f);这是干什么的?
2、按键抖动不用处理?
3、你确定硬件无任何问题?

作者: TTQ001    时间: 2020-11-2 10:44
需要检查电路是否正常。 你可以跟师兄, 师傅讨论
作者: zhanshenrui    时间: 2020-11-2 14:38
应该是电路问题
作者: 7617    时间: 2020-11-2 15:19
检查电路有无问题
作者: 禾几_    时间: 2020-11-2 18:13
wulin 发表于 2020-11-2 07:38
任何软件都是基于硬件条件编写的。原因是你和师兄都是机械套用,没有根据自己板子的电路作相应修改。这个按 ...

图片发不出来,protues上的仿真图都是一样的
作者: 禾几_    时间: 2020-11-2 18:16
权威人物 发表于 2020-11-2 09:16
1、 while(P1==0x0f);这是干什么的?
2、按键抖动不用处理?
3、你确定硬件无任何问题?

这个是仿真,我们做完后是原原本本发给师傅的,但是三个人用同样的代码同样的图仿真出了不同的结果T_T
作者: wujin0731    时间: 2020-11-2 20:23
要根据你自己的电路原理图写端口
作者: 123456弄    时间: 2020-11-2 23:44
检查下电路




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1