基于51单片机的数码管显示方案

本文详细介绍了51单片机如何控制数码管显示,包括共阳极和共阴极数码管的区别,数码管的静态和动态显示原理,并提供了部分代码示例。适合初学者理解单片机对外部设备的控制。
摘要由CSDN通过智能技术生成

这一次给大家带来的项目是课堂作业级别的51单片机数码管显示,本次的项目着重于讲解原理,让大家明白单片机的io对于外界设备的控制是如何进行的。

共阳极和共阴极数码管的差异

(1)驱动方法的差异。一个数码管内部的8颗LED是独立驱动的。如果8颗LED的正极接在一起接到VCC上(负极分别接到单片机的不同引脚),这种接法就叫共阳极。反之如果8颗LED负极接在一起然后接到GND(正极就分别接到单片机的不同引脚)就叫共阴极。两种接法都可以驱动数码管显示,但是用来显示的单片机程序不同(共阳极时单片机0是亮,共阴极时单片机的1是亮)。

(2)驱动电流需求差异。数码管(其实就是LED)如果按照共阳极接法则单片机可以直接驱动显示,如果按照共阴极接法则单片机不能直接驱动,因为单片机的IO口提供的电流大小不够驱动数码管内部的LED显示,需要外部电路来提供一个大电流驱动的芯片来解决(一般会采用74HC245等数据缓冲器)。

数码管显示原理

静态数码管:
静态数码管显示原理为:数码管内部的led灯珠和外部引脚一一对应,利用总线式编码即可实现对八个led的统一编码,并且led顺序为顺时针旋转,可以通过0-F数字的笔画确定led状态,进而得到编码。
动态数码管:
动态数码管的显示分为两个部分,段选和位选,段选就是和静态数码管的显示一样,通过控制led的亮灭来表达字符。位选则是通过选通数码管的公共端来实现数码管的亮灭。由于八位并行I/O口仅能一次性输出一个数字,所以我们需要通过高速位选,利用视觉残留来实现八位数码管一起点亮,故称之为动态数码管。

按照上述的知识点,我们可以搭建下面的原理图:
在这里插入图片描述

部分代码示例

代码相对于其他项目来说较为简洁,但是由于字符编码问题,导致粘贴时出现乱码,这个大家不用担心,项目工程里面都是由注释的。

void DigDisplay()
{
   
	u8 i;
	for(i=0;i
  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值