51单片机LED显示接口电路及仿真

LED显示接口电路

  • 1 LED的工作原理
    • 1.1 LED流水灯
      • 1.11 CODE
  • 2 LED显示器
    • 动态显示
    • 在动态显示中需要用到的芯片
      • 74HC245
      • D74HC138
    • 动态显示电路
    • 动态显示CODE

1 LED的工作原理

LED的符号:LED的工作是有方向性的,只有当正极接到LED阳极,负极接到LED阴极的时候才能工作,反接LED是不能正常工作的。
51单片机LED显示接口电路及仿真_第1张图片
开发板上原理图:LED的阳极串联一个电阻,然后连接到电源VCC(高电平),而阴极连接到单片机的I/O口。想点亮一盏LED就把单片机相对应的I/O口赋为低电平。
51单片机LED显示接口电路及仿真_第2张图片
排阻需要上电使用。

1.1 LED流水灯

1.11 CODE

#include//包含头文件
#include//包含循环左移函数_crol_()和循环右移函数_cror_()
#define LED P1//将P1口定义位LED

void delay(int i)//延时函数
{
	while(i--);//i=1时,大约延时10us
}
int main(void)//主函数
{
	char i;
	LED = 0xfe;//点亮第一盏LED
	while(1)//无限循环
	{	
		for(i=0;i<7;i++)
		{	
			LED = _crol_(LED,1);//将LED的值左移一位
			delay(50000);//大约延时450ms
		}
		for(i=0;i<7;i++)
		{
			LED=_cror_(LED,1);//将LED的值右移一位
			delay(50000);
		}
	}
}

2 LED显示器

LED显示器是由发光二极管作为显示字段的数码型显示器件,具有显示清晰、成本低廉、配置灵活、与单片机接口简单。
LED显示

  1. 段显示:8段:7段数码管+一个小数点;米字段。
  2. 点阵显示:5x8,8x8点阵。

LED数码管

  1. 共阴极:各二极管的阴极连接在一起,公共端接低电平时,某段阳极加上高电平则该段发光二极管就导通发光。
  2. 共阳极:各二极管的阳极连接在一起,公共端接高电平时,某段阴极加上低电平则该段发光二极管就导通发光。

LED显示的段码

字型 共阳极段码 共阴极断码 字型 共阳极段码 共阴极段码
0 C0H 3FH 9 90H 6FH
1 F9H 06H A 88H 77H
2 A4H 5BH B 83H 7CH
3 B0H 4FH C C6H 39H
4 99H 66H D A1H 5EH
5 92H 6DH E 86H 79H
6 82H 7DH F 8EH 71H
7 F8H 07H FFH 00H
8 80H 7FH

静态显示
静态显示就是当数码管显示某一个字符时,相应的发光二极管一直处于发光或熄灭状态。具有程序简单,亮度高,CPU工作效率高等优点。一般应用于显示位数较少的系统中。

动态显示

动态显示采用扫描的方式轮流点亮LED数码管的个位。通常将多个数码管的段选线并联在一起,用一个8位I/O口控制;各个数码管的位选线(数码管的公共端)由另外的I/O口控制。通过控制公共端是否有效,逐个循环点亮各位显示器。由于人眼具有视觉暂留效应。虽然任一时刻只有一位数码管被点亮,但因为每个数码管点亮的时间间隔很短,看起来数码管都在同时显示。

在动态显示中需要用到的芯片

74HC245

一种三态输出、八路信号收发器,主要应用于大屏显示,以及其他的消费类电子产品中增加驱动。
工作电压: 3.0V-5.0V
管脚定义

符号 管角名称 说明
A0-A7 数据输入/输出
B0-B7 数据输入/输出
OE 输出使能(低电平有效)
DIR 方向控制 DIR=1,从A到B;DIR=0,从B到A
GND 逻辑地
VDD 逻辑电源

功能真值表

输出使能 输出控制 工作状态
OE DIR
L L Bn输入An输出
L H An输入Bn输出
H X 高阻态

D74HC138

一种三通道输入、八通道输出译码器,主要应用于消费类电子产品。
工作电压:3.0V-5.0V
管脚说明

名称 功能说明
Yn 数据输出
An 数据输入
En 使能控制
VDD 逻辑电源
GND 逻辑地

功能真值表
51单片机LED显示接口电路及仿真_第3张图片

动态显示电路

51单片机LED显示接口电路及仿真_第4张图片
51单片机LED显示接口电路及仿真_第5张图片

动态显示CODE

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
sbit A=P2^0;
sbit B=P2^1;
sbit C=P2^2;

unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
					0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

void delay(unsigned int i)
{
	while(i--);	
}
void smgDisplay()
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		switch(i)	 //位选,选择点亮的数码管,
		{
		   case(0):
				A=1;B=1;C=1; break;//显示第0位
			case(1):
				A=0;B=1;C=1; break;//显示第1位
			case(2):
				A=1;B=0;C=1; break;//显示第2位
			case(3):	
				A=0;B=0;C=1; break;//显示第3位
			case(4):
				A=1;B=1;C=0; break;//显示第4位
			case(5):
				A=0;B=1;C=0; break;//显示第5位
			case(6):
				A=1;B=0;C=0; break;//显示第6位
			case(7):
				A=0;B=0;C=0; break;//显示第7位	
		}
		P0=smgduan[i];//发送段码
		delay(100); //间隔一段时间扫描	
		P0=0x00;//消隐
	}
}
void main()
{	
	while(1)
	{	
		smgDisplay();  //数码管显示函数	
	}		
}

51单片机LED显示接口电路及仿真_第6张图片

你可能感兴趣的:(单片机,单片机)