51单片机 8*8LED点阵(入门教学)

这篇具有很好参考价值的文章主要介绍了51单片机 8*8LED点阵(入门教学)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. LED 点阵介绍

LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随 处可见,被广泛应用于汽车报站器,广告屏等。 通常应用较多的是 8*8 点阵,然后使用多个 8*8 点阵可组成不同分辨率的 LED 点阵显示屏,比如16*16 点阵可以使用 4 个 8*8 点阵构成。因此理解了 8*8LED 点阵的工作原理,其他分辨率的 LED 点阵显示屏都是一样的。这里以 8*8LED 点 阵来做介绍。其内部结构图如下所示:

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

8*8 点阵共由 64 个发光二极管组成,且每个发光二极管是放置在行线和列线 的交叉点上,当对应的某一行置 1 电平,某一列置 0 电平,则相应的二极管就亮; 如要将第一个点点亮,则 1 脚接高电平 a 脚接低电平,则第一个点就亮了;如果 要将第一行点亮,则第 1 脚要接高电平,而(a、b、c、d、e、f、g、h )这些 引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第 a 脚接低电平, 而(1、2、3、4、5、6、7、8)接高电平,那么第一列就会点亮。由此可见,LED 点阵的使用也是非常简单的。

  1. 点阵显示

为了方便理解,这里使用Proteus仿真软件绘制电路图。

首先,我们来点亮左上角第一个灯。

原理图如下:

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

在选择led点阵的时候,一定要判断那边正那边负,像下图这样,一边接地一边接Vcc,来判断点阵的正负级,便于编写程序。

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

上面为负极,控制列。下面为正极,控制行。

下面这张图的左右两个电路原理是一样的,只要控制相应的I/O口,就可以点亮我们想要的哪一个灯。

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

点亮第一个灯的程序代码:

#include "reg52.h"

#define  LED_col  P2 //列
#define  LED_row  P3 //行

void main()
{
    LED_col=0x7F;//第一列,根据实际电路连接判断,每个人连接电路的I/O口都可能不一样
    while(1)
    {    
        LED_row=0x80;//第一行,根据实际电路连接判断,每个人连接电路的I/O口都可能不一样
    }
}
  1. 显示数字等字符或图像

字符或图像就是由多个点组成,想要在LED点阵上显示数字或简单的图像,首先要获取在 LED 点阵上显示数字字符所需的数据,即一个数字字符在 LED 点阵上显示,对应的每行每列都会有一些灯点亮或者熄灭,这样就会构成一组数据,也就是数字字符的显示数据,我们只要将这些数据通过单片机发送到点阵对应的行或列就能显示数字字符。

要实现行列不同位置亮灯,需要使用动态显示的方法,也要结合扫描的方法。 在第一行亮灯一段时间以后灭掉,点亮第二行一段时间以后灭掉,点亮第三行一 段时间以后灭掉,如此点亮,直到八行全部点亮一次,在第一行点亮到最后一行 灭掉的总时间不能超过人肉眼可识别的时间,即 24 毫秒。在每一行点亮的时候, 给列一个新的数据,此时对应列的数据就可以体现在这行上要点亮的灯上。这样 就和动态数码管的显示一样,只不过数码管的 LED 灯是段值。这里使用 LED 点 阵显示数字,也是多个 LED 同时点亮。

数字字符数据如何获取呢?这里给大家介绍一个非常好用的工具-取字模软 件

双击打开该软件,首先选择“基本操作->新建图像”,设置图像的宽度和高 度为8,点击确定后将在显示窗口出现一个8*8的白色格子,这个就类似于8*8LED 点阵,具体操作如下:

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档
8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

可以看到上图 8*8 点阵区域非常小,我们可以将其放大,选择“模拟动画”, 后点击“放大格点”,如下所示:

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

然后设置取模数据的取模方式等内容,选择“参数设置”后点击“其他 选项”,具体操作如下:

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

然后可以在这个 8*8 白色格子里面点击,点击后即会在对应位置出现一 个黑点,表示在 LED 点阵对应位置的 LED 灯点亮,未点击位置(白色)表示 LED 点阵对应位置的 LED 灯熄灭。 比如在 8*8LED 点阵上显示数字 0,那么可以在图中 8*8 白色框内通过点 击对应位置描出一个数字 0 ,如下所示:

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

到这里我们就将数字 0 的数据生成了,然后将生成的数据复制到我们程序定义的数组中,如:

u8 hang[8]={0x00,0x7E,0x81,0x81,0x81,0x81,0x7E,0x00};

这些数据其实就是上述描绘的数字 0 从左到右依次每列对应的行数据。 至于其它数字或字符及简单图形的显示取模方法与上述类似。 既然是动态扫描,就需要不断的扫描每列,因此可以把 LED 点阵的列控制也 用数组存储起来,为后面循环调用提供方便。根据数字 0 取模的数据特点是从左 至右每列对应的行数据,因此扫描时也应该从左至右的顺序,如下:

u8 lie[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

显示0的代码:

#include "reg52.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;


u8 lie[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 hang[8]={0x00,0x7e,0x81,0x81,0x81,0x81,0x7e,0x00};

#define  LED_col  P2      //列
#define  LED_row  P3      //行

void delay_10us(u16 ten_us)//延时函数,ten_us=1 时,大约延时 10us
{
    while(ten_us--);
}



void main()
{
    u8 i=0;
    while(1)
    {    
        for(i=0;i<8;i++)//循环 8 次扫描 8 行、列
        {
            LED_col=lie[i];//传送列选数据
            LED_row=hang[i];//传送行选数据
            delay_10us(100);
            LED_row=0x00;//消影
        }    
    }
}

仿真结果:

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

这里不知道为啥,需要把点阵转过来,如果不转显示的0就是横这的,有知道的小伙伴可以评论区讨论。我觉得还是灵活多变吧。

如果要显示心型就把hang数组改为:

u8 hang={0x38,0x7C,0x7E,0x3F,0x3F,0x7E,0x7C,0x38};
8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

仿真:文章来源地址https://www.toymoban.com/news/detail-786116.html

8*8led点阵电路原理图,51单片机系列,51单片机,单片机,stm32,Powered by 金山文档

到了这里,关于51单片机 8*8LED点阵(入门教学)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机8*8 LED点阵实现原理讲解

    本篇文章将为大家讲解LED8*8点阵的使用方法。 LED 8 8点阵是由64个LED灯珠组成的,它们排列在一个8 8的矩阵中。每个LED灯珠都可以独立控制,因此可以通过控制不同的LED灯珠来显示不同的图形、数字、字母等。 LED 8 8点阵的原理是利用LED灯珠的发光特性,通过控制LED灯珠的亮灭

    2024年02月09日
    浏览(37)
  • 【【51单片机实现LED点阵屏幕和动画显示】】

    我们先搞清楚74HC595的原理 sfr 特殊功能寄存器声明 sbit 特殊位声明 就举个例子,我们在之前的各种测试中对LED进行控制会直接输入P2=什么什么,那我想问你怎么知道P2口控制的就是LED呢,其实这些就是已经在内部声明完成了,我们可以直接拿来使用 内部

    2024年02月11日
    浏览(38)
  • 51单片机——LED 点阵点亮一个点,小白详解

    LED点阵介绍:        LED点阵是由发光二极管排列组成的显示器件,在我们生活中的电器中随处可见,被广泛用于汽车报站器,广告屏等。         通常用用较多的是8*8点阵,然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏,比如16*16点阵可以使用4个8*8点阵构成。因

    2024年02月09日
    浏览(36)
  • 51单片机学习--LED点阵屏显示图形&动画

    为了通用性考虑,需要把用到的几个口用特殊位声明来重新命名,由于RCLK在头文件中已有定义,所以这里把P3^5声明成RCK吧。。这样的做法可以提高可读性 接下来编写74HC595的输入函数 执行完八次循环后数据就会存到移位寄存器里面了,接下来要输出只需要给RCLK一个高电平即

    2024年02月14日
    浏览(32)
  • 三、51单片机用74HC595控制LED点阵

    (1)外观 (2)作用 LED点阵通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片等,LED点阵显示被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。 以8*8LED点阵为例。 (1)单片机端口直接驱动。驱动8*8的点阵需要2个IO端口(16个IO口)。 (2)使用串转并移位锁存器驱

    2024年02月03日
    浏览(61)
  • 51单片机开发:通过74HC595控制LED点阵

    (1)LED点阵就是多个LED发光二极管的集合,在单个LED的发光原理上没有任何区别; (2)上面是16x16的LED点阵,总共有16x16=256个LED灯,由32个引脚来控制,其中16个引脚是正极(posn,n=1、2······、16),16个引脚是负极(NEGn,n=1、2······、16); (3)LED点阵可以用坐标系的思想来理解,

    2024年02月12日
    浏览(40)
  • 【51单片机】LED点阵屏的纵向动画流动字幕

    学习完点阵屏,小伙伴们可能都想要展示一下自己的名字,而有的同学的名字太过复杂,宽为8的点阵屏无法写出,于是我便想到了纵向显示笔画过于复杂的名字。 就比如“嘉”字,横向无法写出,我们就把字体给拉长,丑是丑了点,但可以完整显示了🐶: 采用这种表示,将一

    2023年04月13日
    浏览(29)
  • 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

      开发板上使用了 64 个红色 LED 按照行列排布组成的 8*8 LED 点阵。下面介绍 LED 点阵的使用。    LED 点阵 是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见,被广泛应用于汽车报站器,广告屏等。如下所示:   通常应用较多的是 8*8 点阵,然后使

    2023年04月08日
    浏览(32)
  • 毕业设计 基于51单片机控制LED点阵显示器的设计

    序 🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的

    2024年02月02日
    浏览(57)
  • 基于AT89C51单片机的LED点阵显示屏设计

    点击链接获取Keil源码与Project Backups仿真图: [[https://download.csdn.net/download/qq_64505944/88637464?spm=1001.2014.3001.5503]] **[源码获取] B 源码+仿真图+课程设计+50 工程实训(三)课题设计 LED点阵显示屏设计 LED点阵显示屏通过编程控制可以显示中英文字符、图形及视频动态图形,广泛用于指

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包