打印

高手帮忙看看 是怎么回事 怎么就是显示不出来呢

[复制链接]
983|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
八个数码管 显示 时分秒  还剩两个数码管 用作时分 分秒的分隔,我用PN4122三极管控制位选,电路图见附件

可是程序输入 用proteus仿真以后 确是一闪一闪的 ,而且数字也不是递加的
#include <reg51.h>   //头文件
unsigned char pore[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选数组
unsigned char Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段选数组
unsigned char n,m;
unsigned char htime; //定义时变量
unsigned char mtime; //定义分变量
unsigned char stime; //定义秒变量
void yshi(void) //延时函数(动态显示)
{
unsigned char i;
for(i=0;i<200;i++);
}
void ds(unsigned char s)//秒位控制计算
{
P2=0xbf;
P0=Tab[s/10];
yshi();
P2=0x7f;
P0=Tab[s%10];
yshi();
P2=0xff;
}
void dm(unsigned char m)//分位控制计算
{
P2=0xf7;
P0=Tab[m/10];
yshi();
P2=0xef;
P0=Tab[m%10];
yshi();
P2=0xdf;
P0=0xbf;
yshi();
P2=0xff;
}
void dh(unsigned char h)//时位控制计算
{
P2=0xfe;
P0=Tab[h/10];
yshi();
P2=0xed;
P0=Tab[h%10];
yshi();
P2=0xfb;
P0=0xbf;
yshi();
P2=0xff;
}
void main(void)
{
TMOD=0x01; //定时器工作方式选择  
EA=1;  //开总中断
ET0=1;  //开T0中断
TH0=(65536-46083)/256;    //赋初值
TL0=(65536-46083)%256;
TR0=1; //开始计时
htime=0;
mtime=0;
stime=0;
while(1)
         {
  ds(stime);
  yshi();
  dm(mtime);
  yshi();
  dh(htime);
  yshi();
  }
}
void Time(void) interrupt 1 using 1
{
n++;
if(n==20)
{
  n=0;
  stime++;
  }
  if(stime==60)
  {
   stime=0;
   mtime++;
  }
  if(mtime==60)
  {
   mtime=0;
   htime++;
  }
  if(htime==24)
  {
   htime=0;
  }
TH0=(65536-46083)/256;    //赋初值
TL0=(65536-46083)%256;
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

208

帖子

1

粉丝