普中51单片机学习(十)

动态数码管

数码管显示原理

动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
普中51单片机学习(十)_第1张图片
普中51单片机学习(十)_第2张图片
PS:要学会看芯片资料

实验代码

#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[16]={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;
	for(i=0;i<8;i++)
	{
		switch(i)
		{
			case(0):
				LSA=0;LSB=0;LSC=0;break;
			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[i];
		delay(100);
		P0=0x00;
	}
}


void main(){
	while(1){
		DigDisplay();
	}
}

你可能感兴趣的:(51单片机,学习,嵌入式硬件)