2020-10-9发光数码管

2020年10月9日学习情况:
发光数码管:在这里插入图片描述
在这里插入图片描述

共阴极数码管:在这里插入图片描述
共阳极数码管:(一个在上端一个在下端)在这里插入图片描述



在proteus中51单片机有自动复位的功能所以不在另行连接复位电路实验结果如下:

#include<reg51.h>

unsigned char s[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

                      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(unsigned char i)

{

       while(i--);      

}

void seg()

{

   
int i = 0;

   
for(i  = 0;i<16;i++)

    {

       
	P2 = s[i];//0011 1111
	
	       
	delay(100); 
    }
}

void main()

{

   
	while(1)
	
		    {
		
		       
		seg();
		
		    }
		
}

在这里插入图片描述







动态数码管:

#include<reg51.h>

unsigned char s[] =
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

                                   0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char wei[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}
;

void delay(unsigned int i)

{

       while(i--);      

}

void seg()

{

   
int i = 0;

   
for(i  = 0;i<8;i++)

    {

       
P3 = ~wei[i] ;

       
P2 = s[i];//0011 1111

       
delay(10);

    }

   

}

void main()

{

   
while(1)

    {

       
seg();

       
delay(10);

    }

}

在这里插入图片描述

注意数值的取值范围,char的无符号范围是0255,有符号范围是-128+127,当你设定的数值超过这个范围时,则这个数值就不会发挥作用。

应用74ls138译码器来实现相关的功能:

在这里插入图片描述

1、改变之后的程序由unsigned
char wei[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80} ;

变为:unsigned char wei[] =
{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07} ;

2、另外一个就是P3 = wei[i]
;取反符号消失,因为74ls138中自带取反功能。


版权声明:本文为delay_satisfied原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。