《初学者C51自学笔记》之数码管

图(b)为数码管的解剖图,分别是共阴和共阳型;共阴为例,若想显示数字1,从a端到dp端接P0^0~~P0^7;所以P0=0x06(00000110{从高位到低位});

显示方式

静态显示:            

        静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。

动态显示:

        动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

一个共阴数码管

段选是控制数码管的显示什么数字,而位选是控制那个数码管的;

数码管下面有空心那是反向器,也就是说P3^0输入高电平通过反向器后会变成低电平,数码管接的就是低电平了;

单片机的电流是不足以对数码管进行供电的(数码管所需电流大于单片机的电流),所以要接一个数字芯片(起着放大作用);、

如果是静态显示的话,这5个数码管都会显示同一个数字,不比动态显示灵活;

74HC138译码器

ABC表示加权,也就是说A为1是表示1,B为1是表示2,C为1是表示4,其控制着位选;

当你看到数码管同时显示12345时不要以为是同时点亮的,CPU同一时间只能做一件事,你所看到的同时亮是利用了视觉的的暂留和数码管的余晖,数码管是不会一下子熄灭而是慢慢地熄灭;

#include <reg52.h>
sbit smgen=P2^3;
sbit rs=P3^6;

unsigned char table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};
unsigned char table2[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};



void delay(unsigned int a)

{
	while(a--);
}

void main()
{
	unsigned char i;
	rs=0;
	while(1)
	{
		for(i=0;i<8;i++)
		{
		P2=table2[i];
		smgen=1;
		P1=table1[i];
		delay(200);
		}
	}		
}

P3^6一定要拉低,如果不拉低,时钟芯片就在工作,从而影响程序,会出现不完整显示

猜你喜欢

转载自blog.csdn.net/qq_40691438/article/details/81408156