数码管显示求助!!

2019-03-24 18:37发布

60秒内数码管计时演示,可是却得不到想要的结果,数码管总是在闪,不知到哪里出了问题,求高人指点!

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
void deplasy(uchar,uchar);
void delayms(uint);
uint n,m,shi,ge;
uchar code table[]={0x3f,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};

void main()
{TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)

{deplasy(shi,ge);
}}


void T0_time() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
m++;
if(m==20);
{
m=0;
n++;
if(n==60)
n=0;
shi=n/10;
ge=n%10;
}}
void delayms(uint s)
{uint i,j;
for(i=s;i>0;i--)
for(j=110;j>0;j--);
}

void deplasy(uchar shi,uchar ge)
{
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(10);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(10);

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
ddlxiaoxu
1楼-- · 2019-03-24 22:39
在两个dula=1;  前加一句P0=0x00;  消除影响
qinkaiabc
2楼-- · 2019-03-25 00:10
闪烁,延时长了点,你改短一点试试
shelion
3楼-- · 2019-03-25 04:40
你这是P0口接一个芯片,然后用这个芯片既控制数码管的段选又控制它的位选,这个我还没用过。
话说怎么也没看出个所以然来,数码管共阴共阳没错吧。。。
要不你先送位选数据,再送段选数据试试。。。
jishuaihu
4楼-- · 2019-03-25 08:39
http://bbs.eeworld.com.cn/viewthread.php?tid=362760
我是我给别人做的一动态驱动数码管的代码和实现思路。可以参考一下
闪烁的原因就是延时太短。
在两个dula=1;  前加一句P0=0x00;  消除影响这一个操作也是有必要的
常见泽1
5楼-- · 2019-03-25 11:51
 精彩回答 2  元偷偷看……
wjdgj1987
6楼-- · 2019-03-25 17:18
通过大家的指导,成功解决了我的问题!《电子工程世界》果然很强大!

一周热门 更多>