利用嵌套式的for循环;
同时增加了一个if 条件判断;
利用了switch函数显示选择数码管公共真个开闭;
硬件:普中51双核A7板,STC89C516芯片;
接线:P0接J6掌握数字的显示;P2.2,P2.3,P2.4接J9ABC掌握数字开闭。
代码:
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u16 i)
{while(i--);}
void DigDisplay()
{u8 i,j,num;
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{ if(i+j>7)
{num=i+j-8;}
else
{num=j+i;}
switch(i) //位选,选择点亮的数码管
{ case(0):
LSA=0;LSB=0;LSC=0;break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0;break;
case(2):
LSA=0;LSB=1;LSC=0;break;
case(3):
LSA=1;LSB=1;LSC=0;break;
case(4):
LSA=0;LSB=0;LSC=1;break;
case(5):
LSA=1;LSB=0;LSC=1;break;
case(6):
LSA=0;LSB=1;LSC=1;break;
case(7):
LSA=1;LSB=1;LSC=1;break;
}
P0=smgduan[num]; //发送段码
delay(100); //间隔一段韶光扫描
P0=0x00;
if(num==8)
{num=num-8;}
}
delay(60000);
}
}
void main()
{while(1)
{DigDisplay();}}
视频加载中...
实现的效果:初始态:01234567→12345670→23456701。。。。,如此循环往来来往,动态显示。