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

1 LED的工作原理

LED的符号:LED的工作是有方向性的,只有当正极接到LED阳极,负极接到LED阴极的时候才能工作,反接LED是不能正常工作的。
在这里插入图片描述
开发板上原理图:LED的阳极串联一个电阻,然后连接到电源VCC(高电平),而阴极连接到单片机的I/O口。想点亮一盏LED就把单片机相对应的I/O口赋为低电平。
pai
排阻需要上电使用。

1.1 LED流水灯

1.11 CODE

#include<reg52.h>//包含头文件
#include<intrins.h>//包含循环左移函数_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显示的段码

字型共阳极段码共阴极断码字型共阳极段码共阴极段码
0C0H3FH990H6FH
1F9H06HA88H77H
2A4H5BHB83H7CH
3B0H4FHCC6H39H
499H66HDA1H5EH
592H6DHE86H79H
682H7DHF8EH71H
7F8H07HFFH00H
880H7FH

静态显示
静态显示就是当数码管显示某一个字符时,相应的发光二极管一直处于发光或熄灭状态。具有程序简单,亮度高,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逻辑电源

功能真值表

输出使能输出控制工作状态
OEDIR
LLBn输入An输出
LHAn输入Bn输出
HX高阻态

D74HC138

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

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

功能真值表
在这里插入图片描述

动态显示电路

在这里插入图片描述
在这里插入图片描述

动态显示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();  //数码管显示函数	
	}		
}

在这里插入图片描述

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值