数码管显示问题

[复制链接]
3004|12
 楼主| yueyinji1989 发表于 2012-10-9 15:40 | 显示全部楼层 |阅读模式
请问我用定时中断去显示数码管,0-60,为什么数码管总会有个二极管不亮的?
图:数码管应该显示02的!可是总缺失一个部位!
有高手可以帮忙么?
谢谢!
代码如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char

sbit WEI=P2^0;
sbit DUAL=P2^1;

uchar code seg[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};

uchar num,count,ge,shi;

void delay(uchar i);
void display(uchar shi, uchar ge);

void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
IE=0x82;
TR0=1;
while(1)
{
display(shi,ge);   //显示
};
}
//中断
void T0_time0()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
  {
   num=0;
   count++;
   if(count==60)//计数60后为0
    {
     count=0;
    }
   ge=count%10;
   shi=count/10;
  
  }
}
//显示子函数
void display(uchar shi, uchar ge)
{
DUAL=1;//段选
P0=seg[ge];//个位
DUAL=0;
P0=0XFF;
WEI=1;//位选
P0=0xfe;
WEI=0;
delay(10);
DUAL=1;
P0=seg[shi];//十位
DUAL=0;
P0=0XFF;
WEI=1;
P0=0xfd;
WEI=0;
delay(10);

}
//延时
void delay(uchar i)
{
   uint j;
   for(; i>0; i--)
    for(j=110; j>0; j--);

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
阿南 发表于 2012-10-9 17:50 | 显示全部楼层
把全部都点亮(显示88),确定下是否为硬件问题。
longmaodo 发表于 2012-10-9 18:05 | 显示全部楼层
如果是仿真的话 很容易出现这问题
anazel 发表于 2012-10-9 19:56 | 显示全部楼层
嗯,不能全信仿真
yuantongboshi 发表于 2012-10-9 20:30 | 显示全部楼层
建议您先检查一下硬件部分,软件仿真时不完全可靠的。
yuantongboshi 发表于 2012-10-9 20:33 | 显示全部楼层
具体到单片机问题您可以登陆:www.bjytbs.com
NE5532 发表于 2012-10-9 20:40 | 显示全部楼层
用静态验证硬件问题,另外不推荐仿真学单片机。
yuantongboshi 发表于 2012-10-9 20:53 | 显示全部楼层
有可能是段码出了问题,您再对照LED数码管的共阴极或共阳极对应点亮的段码值吧。
大道至简 发表于 2012-10-10 02:42 | 显示全部楼层
首先确定数码管是不是坏了
duhemayi 发表于 2012-10-10 12:01 | 显示全部楼层
刷新速度太慢了!
 楼主| yueyinji1989 发表于 2012-10-10 22:15 | 显示全部楼层
谢谢各位,昨天因为有事没能上网!你们的建议我都会去尝试的了,硬件之前确定没问题了,初步是软件仿真问题吧,等硬件回来烧进去看看。
longmaodo 发表于 2012-10-11 09:22 | 显示全部楼层
这是仿真 应该不存在数码管坏了的情况 9# 大道至简
longmaodo 发表于 2012-10-11 09:24 | 显示全部楼层
话说斑竹必须买硬件,学着可有意思了。 11# yueyinji1989
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

281

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部