文档库 最新最全的文档下载
当前位置:文档库 › 数码管动态显示

数码管动态显示

#include "reg51.h"

//变量定义:
unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//表:共阳数码管 0-9
//引脚定义:
sbit SMG_q = P2^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P2^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P2^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P2^3; //定义数码管阳级控制脚(个位)

//函数声明:
void delay(); //延时子函时

//主函数,C语言的入口函数:
void main(void)
{
unsigned int num=0;
unsigned int sec = 0;
unsigned char i=0; //作为查表的索引号
while(1) //不停的循环扫描,不扫描则不显示或显示不正确,即为动态显示,
{
delay();
num++;
if(num == 200)
{
sec++;
num=0;
if(sec==10000)
{
sec=0;
}
}
//数码管显示 1234,可自行修改
SMG_q=0; //选择千位数码管
P0=table[sec/1000]; //查找"1"定义好的数码管段值与P0口输出,显示相应的1
delay(); //加入短暂延时
P0=0XFF; //清除数码管显示,因是共阳型,所以不是0
SMG_q=1; //关闭千位数码管

SMG_b=0; //选择百位数码管
P0=table[sec/100%10]; //查找"2"定义好的数码管段值与P0口输出,显示相应的2
delay(); //加入短暂延时
P0=0XFF; //清除数码管显示,因是共阳型,所以不是0
SMG_b=1; //关闭百位数码管

SMG_s=0; //选择十位数码管
P0=table[sec/10%10]; //查找"2"定义好的数码管段值与P0口输出,显示相应的2
delay(); //加入短暂延时
P0=0XFF; //清除数码管显示,因是共阳型,所以不是0
SMG_s=1; //关闭十位数码管

SMG_g=0; //选择个位数码管
P0=table[sec%10]; //查找"2"定义好的数码管段值与P0口输出,显示相应的2
delay(); //加入短暂延时
P0=0XFF; //清除数码管显示,因是共阳型,所以不是0
SMG_g=1; //关闭个位数码管
}
}

//延时子函数,短暂延时
void delay(void){
unsigned char i=10;
while(i--);
}

相关文档
相关文档 最新文档