51单片机——LED点阵屏

51单片机——LED点阵屏51 单片机 LED 点阵屏 LED 点阵屏 LED 点阵屏原理 74HC595 串转并芯片源代码例程一 静态笑脸效果展示例程二 笑脸 gt 平脸 gt 哭脸效果展示 LED 点阵屏 c51 的 LED 点阵屏其实就是一个 8 8 像素的屏幕 一共有 64 个发光二极管 如下图 LED 点阵屏原理其实这个原理和数码管是一样的 都是利用人的视觉暂留 不停扫描 LED 点阵 依次点亮每一盏灯 只不过数码管扩引脚采用的是 38 译码器 点阵屏采用的是 74HC595 串转并芯片 参考数码管原理图如下 他的 DPa DPh 其实就是上图的 D0 D7

LED点阵屏

LED点阵屏原理

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  
     #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  
     #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点阵屏动画

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212359.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午8:13
下一篇 2026年3月18日 下午8:14


相关推荐

  • div 隐藏和显示方式

    div 隐藏和显示方式在 js 中可以使用两种方式控制 div 的显示和隐藏 都能够实现显示和隐藏 但是又有所不同 一 方式 1 隐藏后仍占有页面空间 显示空白 nbsp nbsp div 的 visibility 可以控制 div 的显示和隐藏 但是隐藏后页面显示空白 nbsp nbsp style visibility none nbsp nbsp nbsp 在 Div 中设置 style 属性 nbsp nbsp document getElementBy

    2026年3月19日
    2
  • 如何给mysql创建一个账户「建议收藏」

    如何给mysql创建一个账户「建议收藏」1.使用root账户登录到mysql:mysql -uroot -p2.创建用户名和密码:grant all on *.* to 用户名@’127.0.0.1′ identified by "密码";3.创建成功后,需设置访问权限。首先切换到mysql数据库:use mysql;4.修改新建用户的权限:update user set host = ‘%’ where user = ‘attckne…

    2022年8月18日
    14
  • JSESSIONID 作用

    JSESSIONID 作用1 第一次访问服务器的时候 会在响应头里面看到 Set Cookie 信息 只有在首次访问服务器的时候才会在响应头中出现该信息 上图中 JSESSIONID ghco9xdnaco3 Path acr 首次访问服务器时服务端创建 session HttpSessions request getSession nbsp 当这句代码需要创建 session 的时候

    2025年6月25日
    6
  • ap调试教程_超声波发生器说明书

    ap调试教程_超声波发生器说明书前言:在传统APA自动泊车系统中,通常使用超声波雷达进行车辆前后辈避障以及侧向车位探测。目前市场上大多数带有自动泊车功能的车辆均配有12个超声波雷达,本文从硬件安装及超声波雷达调试标定两方面对自动泊车超声波雷达的安装调试进行说明1硬件安装自动泊车配置的超声波雷达一般为两组12个雷达探头。单组6个雷达探头串联,其中第1和第6号雷达为长距LRU雷达,2-4号为短距SRU避障雷达。超声探头均…

    2025年10月26日
    4
  • pycharm svn设置_新手配置交换机详细教程

    pycharm svn设置_新手配置交换机详细教程1.打开pycharm设置配置svn.exe的地址Seting-versioncontrol-subversion按照红色填入svn.exe的路径2.在配置的时候找不到svn.exe的方法原因是在默认安装svn的时候忽略了安装svn.exe2.1在卸载或更改程序中重新安装一下svn2.2按照图片进行操作完成后需要重新打开pycharm设置,就可以找到svn.exe3.配置自动化脚本svn的地址导出的时候可以选择放置的位置如D盘4.注意事项pycharm的使用和本地使用没有太

    2022年8月25日
    14
  • 彻底弄懂二叉树的先序,中序,后序三种遍历与做题方式_二叉树的先序,中序,后序遍历例题

    彻底弄懂二叉树的先序,中序,后序三种遍历与做题方式_二叉树的先序,中序,后序遍历例题二叉树二叉树遍历二叉树题目计算机二级先序中序后序根

    2025年11月13日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号