数码显示00-50,proteus仿真和实际不同,求解决

2019-07-16 06:25发布

数码显示.jpg
我用proteus做一个00-50的数码显示,仿真时候没问题,
P3.6,P3.7脚连接开关,接低电平时分别控制数字上升下降,
但是自己买了芯片电路时却没反应
一开电源,数码管初始显示正确,为00
但是之后P3.6,P3.7无法控制,数字一直为00
用万用表测量P3.6,P3.7时正常,即平时为高电平,需要控制时接地转低电平
我的程序就是判断低电平则升高或降低
仿真完全没问题,运行的杠杠的。

晶振12MHZ,电容33pF
20脚接地,40脚接VCC,RST脚如图,31脚EA接VCC高电平。
求教大虾,哪里有问题啊,如何解决啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
zhihuizhou
1楼-- · 2019-07-16 11:04
你的是不是按键加一或者减一?
qqddsshhjj
2楼-- · 2019-07-16 16:39
zhihuizhou 发表于 2012-2-14 14:09
你的是不是按键加一或者减一?

对的,按下去就加1或减一,按住不放可以连续加减
diangongshi
3楼-- · 2019-07-16 18:03
 精彩回答 2  元偷偷看……
qqddsshhjj
4楼-- · 2019-07-16 21:29
本帖最后由 qqddsshhjj 于 2012-2-16 12:38 编辑
diangongshi 发表于 2012-2-16 09:13
把你的程序发出来大家帮你看看,


#include<reg51.h>
unsigned char tabe[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char i,j,k,count;
sbit s1=P3^7;
sbit s2=P3^6;
void delay(j)
{for(i=40;i>0;i--)
for(j=500;j>0;j--);

}
void main(void)
{        count=0;
P0=tabe[count/10];
     P2=tabe[count%10];
         
         while(1)
  {if(s1==0)
   delay();
   if(s1==0)
        {if(count==30)
          continue;
          else{count++;
          }
         P0=tabe[count/10] ;
         P2=tabe[count%10];
      
        
                        }
   
   else
           if(s2==0)
   delay();
       if(s2==0)
           {if(count==0)
          continue;
          else{count--;}
          }
         P0=tabe[count/10] ;
         P2=tabe[count%10];
        
                        
   }
}


这是我对应上图的程序,唯一不同的是这段程序我昨晚改写成了00-30。
请指正,谢谢。
diangongshi
5楼-- · 2019-07-16 22:34
qqddsshhjj 发表于 2012-2-16 12:33
#include
unsigned char tabe[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

你这个程序是错的,delay(中怎么没有参数)
昙花香
6楼-- · 2019-07-17 03:15
看不懂

一周热门 更多>