OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 为何同样的硬件原理图,我的板子上运行不了,别人的板可以?

共5条 1/1 1 跳转至

为何同样的硬件原理图,我的板子上运行不了,别人的板可以?

工程师
2020-11-02 23:05:02    评分

最近用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];
}
}





关键词: 按键     源码     故障     数码管    

工程师
2020-11-02 23:16:02    评分
2楼

任何软件都是基于硬件条件编写的。原因是你和师兄都是机械套用,没有根据自己板子的电路作相应修改。这个按键扫描程序中写了一句有条件死循环 while(P1==0x0f); ,没有硬件图看不出楼主你的想法或问题。


工程师
2020-11-02 23:18:18    评分
3楼

1、 while(P1==0x0f);这是干什么的?
2、按键抖动不用处理?
3、你确定硬件无任何问题?


助工
2020-11-02 23:22:06    评分
4楼
需要检查电路是否正常。 你可以跟师兄, 师傅讨论。记得给他们红包



工程师
2020-11-02 23:24:29    评分
5楼

检查电路有无问题。。。


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]