51单片机——LED点阵屏

  • LED点阵屏
  • LED点阵屏原理
  • 74HC595串转并芯片
  • 源代码
    • 例程一:静态笑脸
      • 效果展示
    • 例程二:笑脸->平脸->哭脸
      • 效果展示

LED点阵屏

c51的LED点阵屏其实就是一个8*8像素的屏幕,一共有64个发光二极管。如下图

LED点阵屏原理

其实这个原理和数码管是一样的,都是利用人的视觉暂留,不停扫描LED点阵,依次点亮每一盏灯,只不过数码管扩引脚采用的是38译码器,点阵屏采用的是74HC595串转并芯片。参考数码管

原理图如下:
他的DPa~DPh其实就是上图的D0-D7

74HC595串转并芯片

  • 跳线帽OE:OutputEnable,代表输出使能,此位必须置1该芯片才可以输出,所以跳线帽J24必须拔下来,点阵才可以被点亮。因为跳线帽相当于一根导线把VCC,OE,GND连接起来,这种情况下,OE会被GND强制拉成0。(文中第一张图J24跳线帽已拔)
  • 输出端:DPa-DPh正好对应LED点阵,QH’是用来做多个led点阵级联的。
  • 输入端(简写部分单词)
    P34-SER:代表串行输入,我们串行输入就是把数据放到这。
    P35-SCK :上升沿移位,即RCK从0-1电位变化会让数据往下移一位
    P36-RCK:上升沿锁存,搬运工,即SCK从0-1电位变化会把数据搬运到芯片输出端

这样可能还是理解不清楚,看下图:

源代码

例程一:静态笑脸

#include <REGX52.H>
#include "Delay.h"sbit RCK=P3^5;     //RCLK ,上升沿锁存,搬运工
sbit SCK=P3^6;     //SRCLK,上升沿移位
sbit SER=P3^4;     //SER,串行输入的每个bit#define MATRIX_LED_PORT       P0/*** @brief  74HC595写入一个字节* @param  Byte 要写入的字节* @retval 无*/
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){SER=Byte&(0x80>>i);SCK=1;//给一个上升沿(之前是0),让他把数据往下移SCK=0;//复位0}RCK=1;//上升沿锁存,搬运RCK=0;//复位0
}/*** @brief  LED点阵屏显示一列数据* @param  Column 要选择的列,范围:0~7,0在最左边* @param  Data 选择列显示的数据,高位在上,1为亮,0为灭* @retval 无*/
void MatrixLED_ShowColumn(unsigned char Column,Data)
{_74HC595_WriteByte(Data);MATRIX_LED_PORT=~(0x80>>Column);Delay(1);MATRIX_LED_PORT=0xFF;
}void main()
{SCK=0;RCK=0;while(1){MatrixLED_ShowColumn(0,0x3C);//第一列MatrixLED_ShowColumn(1,0x42);//第二列MatrixLED_ShowColumn(2,0xA9);MatrixLED_ShowColumn(3,0x85);MatrixLED_ShowColumn(4,0x85);MatrixLED_ShowColumn(5,0xA9);MatrixLED_ShowColumn(6,0x42);MatrixLED_ShowColumn(7,0x3C);}
}

效果展示

表情有点折磨啊。。。

例程二:笑脸->平脸->哭脸

MatrixLed.h

#ifndef __MATRIX_LED_H__
#define __MATRIX_LED_H__
void MatrixLED_Init();
void MatrixLED_ShowColumn(unsigned char Column,Data);
#endif

MatrixLed.c

#include <REGX52.H>
#include "Delay.h"sbit RCK=P3^5;      //RCLK
sbit SCK=P3^6;     //SRCLK
sbit SER=P3^4;     //SER#define MATRIX_LED_PORT     P0/*** @brief  74HC595写入一个字节* @param  Byte 要写入的字节* @retval 无*/
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){SER=Byte&(0x80>>i);SCK=1;SCK=0;}RCK=1;RCK=0;
}/*** @brief  点阵屏初始化* @param  无* @retval 无*/
void MatrixLED_Init()
{SCK=0;RCK=0;
}/*** @brief  LED点阵屏显示一列数据* @param  Column 要选择的列,范围:0~7,0在最左边* @param  Data 选择列显示的数据,高位在上,1为亮,0为灭* @retval 无*/
void MatrixLED_ShowColumn(unsigned char Column,Data)
{_74HC595_WriteByte(Data);MATRIX_LED_PORT=~(0x80>>Column);Delay(1);MATRIX_LED_PORT=0xFF;
}

main.c

#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"//动画数据,三帧
unsigned char code Animation[]={0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,0x3C,0x42,0xA1,0x85,0x85,0xA1,0x42,0x3C,0x3C,0x42,0xA5,0x89,0x89,0xA5,0x42,0x3C,
};void main()
{unsigned char i,Offset=0,Count=0;MatrixLED_Init();while(1){for(i=0;i<8;i++) //循环8次,显示8列数据{MatrixLED_ShowColumn(i,Animation[i+Offset]);}Count++;            //计次延时if(Count>15){Count=0;Offset+=8;     //偏移+8,切换下一帧画面if(Offset>16){Offset=0;}}}
}

效果展示

51单片机led点阵屏动画

51单片机——LED点阵屏相关推荐

  1. 51单片机LED点阵屏逐帧显示和流动显示图像

    上一篇逐帧显示用的是定时和中断控制,碰到了一些麻烦,我觉得也是一种不错的办法,因为Delay的时间更短,而且如果不那么介意亮度的情况甚至可以不用Delay()函数,这里采用将要显示的图像按顺序存储在数 ...

  2. 51单片机——LED点阵屏显示动画

    1.前言 LED点阵屏显示图形: https://blog.csdn.net/YLG_lin/article/details/126587462?spm=1001.2014.3001.5501 当我们 ...

  3. 51单片机——LED点阵屏(显示滚动画面)

    目录 一.关于数码管.LED点阵屏显示的注意点 二.功能介绍 三.主要模块的介绍 3.1 74HC595模块和点阵屏显示函数 3.1.1 74HC595介绍 3.1.2 点阵屏显示函数MatrixLE ...

  4. 51单片机——LED点阵屏显示图形

    1.前言 1.1 LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字.图片.视频等.LED点阵屏广泛应用于各种公共场合,如汽车报站器.广告屏以及公告牌 ...

  5. 51单片机LED点阵屏学习笔记

    移位寄存器74HC595 移位寄存器74HC595是一个串行转并行的寄存器,该寄存器主要用来控制LED点阵屏,控制原理和控制数码管的原理类似, 下面详细说明一下74HC595的底层原理: SER的作用 ...

  6. 51单片机-LED模块-来回流水灯

    51单片机-LED模块-来回流水灯 1. 视频 哔哩哔哩视频地址: https://www.bilibili.com/video/av89552821 51单片机-LED模块-来回流水灯 2. 文件 ...

  7. 51单片机LED模拟交通灯

    51单片机LED模拟交通灯 文章目录 51单片机LED模拟交通灯 实验环境 仿真图 代码解析 效果演示 实验环境 实验软件: Keil5 + Proteus7 实验元件: AT89C51 * 1, L ...

  8. 51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真

    51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真 Proteus仿真 取模软件:pctolcd2002 程序代码 #include<reg52.h>unsigned ch ...

  9. 51单片机LED点阵显示文字

    51单片机LED点阵显示文字 代码如下. #include <REGX51.H> #define u8 unsigned char sbit SER = P3^4; sbit RCLK = ...

  10. 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

    文章目录 一.LED点阵介绍 二.硬件设计 三.软件设计 1.LED点阵(点亮一个点) 2.LED点阵(显示数字) 3.LED点阵(显示图像) 四.实验现象 1.LED 点阵(点亮一个点) 2. LE ...

最新文章

  1. NBT:人类肠道培养细菌的1520个基因组
  2. Too many open files
  3. Java通过JDBC来连接SqlServer数据库
  4. 国内数十位NLP大佬合作,综述预训练模型的过去、现在与未来
  5. 特征工程完全手册 - 从预处理、构造、选择、降维、不平衡处理
  6. java分隔符的引号,使用分隔符拆分带引号的字符串
  7. vue从入门到进阶:简介(一)
  8. jsbridge原理_React Hooks 原理与最佳实践
  9. C/C++基础语法,赶紧收藏好哟~
  10. [导入]Response.Redirect 打开新窗口的两种方法
  11. 2014手机号码归属地数据库
  12. 重启计算机找不到打印机,如何解决重启后打印机找不到设备
  13. html编写网页超链接的标记,HTML网页超链接标记
  14. Web基础(从零开始)——HTML文本域(textarea标签)
  15. ONLYOFFICE历史版本功能的开发技术之一
  16. 股票的压力位和支撑位
  17. GPS,RTK,PPS及网络RTK科普
  18. Tether是操纵市场的幕后黑手吗?
  19. 恢复出厂设置android手机号码,手机怎么恢复出厂设置 安卓手机恢复出厂设置方法汇总...
  20. VBA 2000年之后活期存款利息计算

热门文章

  1. cbv本质,前后端交互编码方式,django模板使用的2种方式,模板语法
  2. win10插上耳机还外放解决解决方法
  3. 车内看车头正不正技巧_侧方位停车把把入库技巧,驾校没教的中途修正方法很实用...
  4. 十大经典的心理学效应
  5. 微型计算机是以微处理器为基础,在计算机中以微处理器为核心组成的微型计算机属于第几代计算机...
  6. C语言简单编程之一元二次方程求解
  7. 计算机科普扫盲——固态硬盘
  8. 如何把PPT文件压缩到最小
  9. python 爬取订单_【python实战】【持续更新】爬取某发卡网订单
  10. 刚刚,百度宣布造车!