单片机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);
}
}
为什么数码管闪得很很快? 展开
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);
}
}
为什么数码管闪得很很快? 展开
3个回答
展开全部
一 你没有消隐语句
二 你这种写法很不成熟
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;
}
}
你试着学学这种写法
二 你这种写法很不成熟
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;
}
}
你试着学学这种写法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delay(100);
延时太长才会闪,往下调到不闪为止!
延时太长才会闪,往下调到不闪为止!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delay(100) 延时太短。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询