打印

急急急!!数码管闪烁

[复制链接]
3102|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuezhaoxu|  楼主 | 2010-3-13 20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//很简单,P0显示段码,P2为位选,要P2.0控制数码管个位闪烁,但是在PROTEUSS上仿真并不闪烁,这到底是为什么啊???


#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit d1=P2^0;
sbit d2=P2^1;
uchar t;
void delaynms(uchar i)
{
uchar j,m;
for(j=0;j<i;j++)
{
  for(m=0;m<121;m++);
  }

}
void ininttime0(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;

}
void timer_int0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t=20){t=0;d1=~d1;}//个位闪烁

}
void displayled(void)
{
P0=seg7[0];//个位显示0
d1=0;
delaynms(20);
d1=1;
P0=seg7[1];//十位显示1
d2=0;
delaynms(20);
d2=1;
}
void main(void)
{
ininttime0();
while(1)
  displayled();
}

相关帖子

沙发
chunyang| | 2010-3-13 21:06 | 只看该作者
提高刷新率,同时注意驱动电流要够。

使用特权

评论回复
板凳
liushiming82| | 2010-3-13 21:19 | 只看该作者
刷新前有没有关要显示的位选了

使用特权

评论回复
地板
clleady| | 2010-3-13 21:21 | 只看该作者
if(t=20){t=0;d1=~d1;}//个位闪烁
改成if(t==20){t=0;d1=~d1;}//个位闪烁

使用特权

评论回复
5
zsuqing| | 2010-3-13 21:21 | 只看该作者
if(t=20){t=0;d1=~d1;}//个位闪烁
这句错了 if(t==20)){t=0;d1=~d1;}//个位闪烁
程序写得要严禁 按标准方式写 查找错误 方便些 关键部位 要用解释

使用特权

评论回复
6
yuezhaoxu|  楼主 | 2010-3-13 21:25 | 只看该作者
谢谢各位改过后还是不行,应该还有别的原因:3楼说的能详细点么

使用特权

评论回复
7
zsuqing| | 2010-3-13 21:42 | 只看该作者
图 源程序 传上来

使用特权

评论回复
8
ccxlslr| | 2010-3-13 21:55 | 只看该作者
还有人真以为Proteus什么都能呢!
我诉你,在单频执行时,proteus仍然全亮,并且它基本不表现那个,只要达到基本要求,它就全亮

使用特权

评论回复
9
hufa123| | 2010-3-14 12:17 | 只看该作者
每次你都D1=0;D1=1;中断后什么情况很难把握

使用特权

评论回复
10
hufa123| | 2010-3-14 12:19 | 只看该作者
:$看错了 。。

使用特权

评论回复
11
lirunze| | 2010-3-14 19:48 | 只看该作者
循环刷新时间要快,但是每一位刷新完之后要有一定得时间间隔。

使用特权

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

本版积分规则

28

主题

66

帖子

1

粉丝