数码管实验

原理:数个LED灯形成的数码管

主板上LED接口:

LED数码管上的接口:

主板和LED数码管插口的对应接线图:

 74HC573锁存器:

74HC573锁存器的特点:

1. OE非等于0,LE等于1的时候,输入和输出是相同的;

2. 当LE等于低电平(0),不管D0-D7怎么改变,(Q0-Q7)输出都会保持上一次的输入状态(D0-D7),这种状态就叫做锁村。

接线:

LED数码管一般都是共阳极的,单片机的P0口一般都不带有上拉电阻,而其他口都有,这里要加一个10k的上拉电阻。

效果:显示0

 

放大图:

MCU:

74HC573:

数码管:

Keil代码:

#include <reg52.h>

#define u16 unsigned int
#define u8  unsigned char

#define DATA P0		// P0端口,用于输出控制每个LED数码管的七段码显示情况

sbit seg_sel = P1^4;	// 控制74HC573的LE口的高低电平输出情况(锁存器一)
sbit bit_sel = P1^5;	// 控制74HC573的LE口的高低电平输出情况(锁存器二)

// 延迟函数
void delay(u16 time)
{
	u16 x, y;
	for(x=time; x>0; x--)
	{
		for(y=110; y>0; y--)
		{
			// 延迟1ms左右
		}
	}
}

// 主函数
void main(void)
{
	// 端口初始化
	P0 = 0xFF;
	P1 = 0xFF;
	
	// LE禁止锁存,即为低电平的时候
	seg_sel = 0;	
	bit_sel = 0;
	
	while(1)
	{
		// bit_sel
		bit_sel = 1;	// 保证Q[7..0]=D[7..0]
		DATA = 0x80;	// 要点亮的LED灯为高电平
		bit_sel = 0;	// LE引脚从1-->0,把Q端状态锁存起来,即DATA=0x80这个状态锁存起来,BIT[7..0]=0x80
		delay(5);
		
		// seg_sel
		seg_sel = 1;	// 保证Q[7..0]=D[7..0]
		DATA = 0xC0;	// 输出0的段码,即数字0
		seg_sel = 0;	// 保持状态
		delay(5);
	}
}

 

posted @ 2018-01-20 00:22  半生戎马,共话桑麻、  阅读(295)  评论(0)    收藏  举报
levels of contents