【51单片机-数码管】:用51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s

【51单片机-数码管】:用51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s_第1张图片


学习目标:

【51单片机-数码管】:用51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s_第2张图片

        用普中51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s。


学习内容:

        随机数码管 00-99  循环0.5s  显示。

       数码管是一种数字显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母、符号等。数码管的原理是利用LED的发光特性,通过控制LED的亮灭来显示数字等信息。数码管通常有共阳极和共阴极两种类型,其中共阳极的数码管的所有LED的阳极都连接在一起,而共阴极的数码管的所有LED的阴极都连接在一起。在使用数码管时,需要根据具体的型号和类型来确定引脚的使用方式,一般来说,数码管的引脚包括电源引脚、控制引脚和数据引脚等。其中电源引脚用于连接电源,控制引脚用于控制数码管的亮灭和显示内容,数据引脚用于传输显示的数字等信息。在使用数码管时,需要根据具体的引脚定义和使用方式来进行连接和控制。

【51单片机-数码管】:用51单片机写一个八个数码管中选用任意相邻两个数码管,用来循环显示0-99之间的数据,数据显示间隔为0.5s_第3张图片


延时的方式完成:

        简单用延时完成!

#include 

#define uint unsigned int
#define uchar unsigned char

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

uchar code table[]={
    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};

void delay(uint z) {
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

void led_q(int i)
{
	int j;
	for(j=0;j<2;j++)
	{
		LSA=0; 
		LSB=0; 
		LSC=0; 	
	}
	P0=table[i%10];
	delay(10);

	for(j=0;j<2;j++)
	{
		LSA=1; 
		LSB=0; 
		LSC=0; 	
	}
	P0=table[i/10];
	delay(10);
	P0 = 0x00;
}

void main()
{
    uchar i=0,j=0;
    while(1)
    {
	
		for(j=0;j<25;j++)
		{
			led_q(i);
		}	
		i++;
		if(i == 100)
			i=0;
    }
}

定时器的方式完成:

        代码如下:



#include 

#define uint unsigned int
#define uchar unsigned char

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

uchar code table[]={
    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};

void delay(uint z) {
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

void led_q(int i)
{
	int j;
	for(j=0;j<2;j++)
	{
		LSA=0; 
		LSB=0; 
		LSC=0; 	
	}
	P0=table[i%10];
	delay(10);

	for(j=0;j<2;j++)
	{
		LSA=1; 
		LSB=0; 
		LSC=0; 	
	}
	P0=table[i/10];
	delay(10);
	P0 = 0x00;
}

void main()
{
    uchar i=0,j=0;
    TMOD = 0x01; //设置定时器0为模式1
    TH0 = 0xFC; //给定时器赋初值,定时1ms
    TL0 = 0x67;
    TR0 = 1; //启动定时器0
    while(1)
    {
        if(TF0 == 1) //判断定时器是否溢出
        {
            TF0 = 0; //清除TF0标志
            TH0 = 0xFC; //给定时器赋初值,定时1ms
            TL0 = 0x67;
            for(j=0;j<25;j++)
            {
                led_q(i);
            }   
            i++;
            if(i == 100)
                i=0;
        }
    }
}

成功就是一把梯子,双手插在口袋的人是爬不上去的。

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