单片机8位数码管共阴数码管

#include<reg52.h>sbitduan=P2^2;//定义锁存使能端口段锁存sbitwei=P2^3;//位锁存unsignedcharcodetable_d... #include <reg52.h>
sbit duan=P2^2;//定义锁存使能端口 段锁存
sbit wei=P2^3;// 位锁存
unsigned char code table_duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
unsigned char code table_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsigned int a[8];
void delay(int i)
{
while(--i);
}
void display(int i)
{
unsigned int t=0,j;
for(j=0;j<=500;j++)
{
for(;t<i;t++)
{
P0=table_wei[t+2];
wei=1;
wei=0;

P0=table_duan[a[t]];
duan=1;
duan=0;
delay(100);
}
}
}
void main()
{
int num=0;
while(1)
{
num++;
if (num==100) num=0;
a[0]=num/10;
a[1]=num%10;
display(2);
}
}
为什么数码管闪得很很快?
展开
 我来答
半拉苹果
2012-02-17 · TA获得超过560个赞
知道小有建树答主
回答量:646
采纳率:0%
帮助的人:132万
展开全部
一 你没有消隐语句
二 你这种写法很不成熟
void time1(void) interrupt 3
{
TH1=-(1000/256);
TL1=-(1000%256);
if(++cnt>7)cnt=0;
switch (cnt)
{
case 0:P0=SEG7[sec%10];P2=ACT[cnt];break;
case 1:P0=SEG7[sec/10];P2=ACT[cnt];break;
case 2:P0=SEG7[min%10];P2=ACT[cnt];break;
case 3:P0=SEG7[min/10];P2=ACT[cnt];break;
case 4:P0=SEG7[hour%10];P2=ACT[cnt];break;
case 5:P0=SEG7[hour/10];P2=ACT[cnt];break;
case 6:P0=0x00;P2=0xff;break;
case 7:P0=WEEK_SEG7[week];P2=ACT[cnt];break;
default:break;
}
}

你试着学学这种写法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
末代小将
2012-02-17 · TA获得超过144个赞
知道小有建树答主
回答量:492
采纳率:50%
帮助的人:161万
展开全部
delay(100);
延时太长才会闪,往下调到不闪为止!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ice65
2012-02-17 · TA获得超过630个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:287万
展开全部
delay(100) 延时太短。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式