【51单片机】静态与动态点亮数码管

静态:

<span style="font-family:Microsoft YaHei;font-size:18px;">#include<reg52.h>

sbit dula=P2^6; //数码管寄存器
sbit  wela=P2^7;  //位寄存器

void main()
{
	wela=1;
	P0=0xf8;
	wela=0;     //确定几位数码管亮,且使其状态保持
	
	dula=1;
	P0=0x3f;    //显示的数字
	dula=0;

	while(1);   //保持常亮
}</span>

 

动态:

<span style="font-family:Microsoft YaHei;font-size:18px;">#include<reg52.h>

sbit dula=P2^6;
sbit  wela=P2^7;

unsigned char num;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//定义一个数组,存储数码管的即将点亮的数值

void delay(unsigned int z)	;

void main()
{
	wela=1;
	P0=0xc0;
	wela=0;  //使得所有数码管都亮,且保持状态不变

	while(1)
	{
		for(num=0;num<16;num++)//循环点亮		{
			dula=1;
			P0=table[num];
			dula=0;
			delay(200);//延迟,达到闪烁的效果
		}
	}

}

void delay(unsigned int z)//延迟函数
{
	unsigned int x,y;
	for( x=0;x<50;x++)
		for(y=0;y<z;y++);
}
</span>



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章