数码管动态扫描c语言程序详解
1、首先分配I/O口,作出电路图

2、#include "reg51.h"//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

3、#define uint unsigned int//定义变量
#define uchar unsigned char

4、sbit laba=P1^2;//定义喇叭端口
uchar smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f
,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
uchar sm[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};

5、/******************************************************************/
/* 延时函数声明 */
/******************************************************************/
/*void mdelay(uint t)
{
uchar n;
for(;t>0;t--)
for(n=0;n<125;n++)
{;}
}*/
void mdelay(uint t)//大约1s的延时函数
{
uchar n;
while(t--)
{
for(n=0;n<123;n++)
{;}
}
}

6、/******************************************************************/
/* 主函数 */
/******************************************************************/
void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)//动态扫描
{
P2=sm[i];
P0=smg[i];
mdelay(1);
}
}
}

7、本经验只供参考,如有不足,还请见谅,如果有什么疑问请在下边留言,及时给你解答。。。