当前位置: 首页 > news >正文

51单片机-驱动LED点阵模块教程

本章概述思维导图:

51单片机驱动LED点阵模块教程

LED点阵简介

LED点阵是由多个发光二极管(LED)按矩阵形式排列组成的显示设备,常见规格包括8×8、16×16、32×32等。在我们日常生活的电器中随处可见。LED点阵实物图如下:

应用场景:

信息显示:广告牌、公告牌、交通标识、电子钟表、计时器(如体育赛事倒计时)。

设备交互:家电温度显示、工业设备状态指示、智能仪表数据可视化。

动态效果:结合传感器实现实时数据更新,或通过滚动显示、动画增强视觉效果。

特殊应用:全彩LED点阵用于舞台灯光、艺术装置,支持PWM调光实现色彩混合。

典型驱动LED点阵模块电路示例:以16×16点阵为列:

        行驱动:两片74HC138级联,生成16路低电平信号选择行。

        列驱动:两片74HC595级联,串行输入转为16路并行输出控制列。

        流程:单片机发送行地址至74HC138,同时通过74HC595输出列数据,逐行扫描刷新显示。

总结:LED点阵通过灵活的矩阵设计和驱动方案,成为信息展示与交互的核心元件,其性能与成本平衡需根据具体需求选择合适规格和控制方式。


LED8*8点阵硬件电路原理图分析

电路原理图分析:

LED8*8点阵一共有16个引脚控制,行(DPa~DPh)引脚由74HC595并行输出脚(QA~QH)控制,列(K1~K8)引脚由STC51单片机P0 I/O端口控制;

74HC595芯片的VCC引脚、GND引脚、OE引脚引出一个编号为J24的座子,这是为了方便驱动74HC595芯片,要使74HC595芯片工作需使跳线帽将OE引脚和GND引脚进行连接;不工作时,需使跳线帽将OE引脚与VCC引脚进行连接;原理:OE使能引脚(低电平有效);

74HC595芯片的SRCLR复位引脚与VCC进行连接;原理:SRCLR是低电平复位,为了防止误触,通常与VCC进行连接;

74HC595芯片的RCLK存储寄存器时钟引脚与MCU的P35引脚进行连接,分析P35引脚为74HC595芯片提供一个存储寄存器的时钟信号;

74HC595芯片SRCLK移位寄存器时钟引脚与MCU的P36引脚进行连接,分析P36引脚为74HC595芯片提供一个移位寄存器的时钟信号;

74HC595芯片的QA~QH为并行输出脚与开发板的8*8点阵LED灯DPa~DPh行引脚进行连接实现阳极控制;

74HC595芯片的QH'为串行输出脚,功能用于级联下一级74HC595芯片实现控制;(本电路不需要使用);

MCU的P0端口(P00~P07)引脚连接8*8点阵LED灯的列引脚实现LED灯阴极控制;

(本章的内容主要是讲解8*8LED点阵灯模块的,但是跟上一章的内容是息息相关的。所有会有大部分知识点重合,小伙伴们就当复习啦!)

驱动8*8LED点阵软件编程设计

驱动8*8LED点阵第一个灯步骤

第一步:实现第一列点亮,需给P0端口写入高低电平控制LED阴极。第一列点亮,其余列不点亮。我们应给P07写入低电平,(P00~P06)写入高电平。十六进制表达方式为:0x7f;

第二步:实现第一行点亮,74HC595需串行输入并行输出控制LED阳极,第一行点亮,其余行不点亮。我们应给DPh写入高电平,(DPa~DPg)写入低电平。十六进制表达方式为:0x80;

第三步:在主函数中将第一步和第二步结合起来实现点亮第一个LED灯操作

代码示例:

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit SER=P3^4;        //74HC595串行输入
sbit TRCLK=P3^5;      //74HC595存储寄存器时钟
sbit SRCLK=P3^6;      //74HC595移位寄存器时钟
#define LED_DZ P0     //宏定义LED点阵阴极端口
void HC595_out(u8 temp)//函数封装:74HC595芯片IO口扩展输出
{u8 i=0;for(i=0;i<8;i++){SER=temp>>7;   //取最高位temp<<=1;	   //左移一位SRCLK=0;       //移位时钟为低电平Delay_10us(1); //延时10us(上升沿触发)SRCLK=1;       //移位时钟为高电平,一位数据发送完成Delay_10us(1);}TRCLK=0;           //存储时钟为低电平Delay_10us(1);     //延时:上升沿的过程TRCLK=1;           //存储时钟为高电平,一字节数据传输完成Delay_10us(1);
}
int main()															 
{	LED_DZ=0x00;while(1){LED_DZ=~(0x80);//第一列点亮HC595_out(0x80);//第一行点亮}
}

8*8点阵LED点亮第一个灯效果展示图:


驱动8*8点阵LED灯显示笑脸步骤

第一步:首先我们在取模软件上进行输出内容的取模,步骤为:1、基本操作-新建图像设置8行8列的空白图像;2、参数设置-其它选项-选择纵向取模,不需要字节倒序,确定;3、开始在新建图像中设置要显示的图形,用鼠标单击空白小格就可点亮,双击就可取消点亮;4、取模方式-选择C51方式,就顺利输出点阵取模啦

第二步:将输出点阵取模存放到缓存区数组中,每个元素表示每一列中显示所有行的LED灯的个数。再将每一列点亮的状态存到到另一个缓冲区数组中。在主函数中利用人体视觉暂留(>24ms)实现稳定显示。

代码示例:

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
void Delay_10us(u16 us)//微秒延时函数:输入1大概延时时间为10us
{while(us--);
}
void Delay_ms(u16 ms) //毫秒延时函数:输入1大概延时时间为1ms
{u16 i,j;for(i=ms;i>0;i--){for(j=110;j>0;j--){}}
}
sbit SER=P3^4;        //74HC595串行输入
sbit TRCLK=P3^5;      //74HC595存储寄存器时钟
sbit SRCLK=P3^6;      //74HC595移位寄存器时钟
#define LED_DZ P0     //宏定义LED点阵阴极端口void HC595_out(u8 temp)//函数封装:74HC595芯片IO口扩展输出
{u8 i=0;for(i=0;i<8;i++){SER=temp>>7;   //取最高位temp<<=1;	   //左移一位SRCLK=0;       //移位时钟为低电平Delay_10us(1); //延时10us(上升沿触发)SRCLK=1;       //移位时钟为高电平,一位数据发送完成Delay_10us(1);}TRCLK=0;           //存储时钟为低电平Delay_10us(1);     //延时:上升沿的过程TRCLK=1;           //存储时钟为高电平,一字节数据传输完成Delay_10us(1);
}
u8 LED_zl[]={0x70,0x54,0x72,0x02,0x02,0x72,0x54,0x70};//纵向取模:一列中所有行的状态
u8 LED_Zh[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//每一列选中状态
int main()															 
{	while(1){u8 i=0;for(i=0;i<8;i++){HC595_out(LED_zl[i]);LED_DZ=LED_Zh[i];Delay_ms(1);        //延时1ms,等待显示HC595_out(0x00);	  //消隐}}
}

8*8LED点阵笑脸显示效果:

8*8点阵LED灯显示笑脸展示


制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!

http://www.lryc.cn/news/626697.html

相关文章:

  • Gitee仓库 日常操作详细步骤
  • 【笔记】动手学Ollama 第五章 Ollama 在 LangChain 中的使用 - Python 集成
  • 康师傅2025上半年销售收入减少超11亿元,但净利润增长20.5%
  • Linux《进程间通信(下)》
  • LidaReferv1论文细节解读
  • Linux面试经典题目(七)
  • 在SQL中使用大模型时间预测模型TimesFM
  • 不会写 SQL 也能出报表?积木报表 + AI 30 秒自动生成报表和图表
  • sqlalchemy 是怎么进行sql表结构管理的,怎么进行数据处理的
  • 深度学习核心技巧
  • SQL-leetcode— 2356. 每位教师所教授的科目种类的数量
  • Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发送重平衡(reblanace)
  • Mybatis执行SQL流程(五)之MapperProxy与MapperMethod
  • 在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本2)
  • 力扣 hot100 Day79
  • 大数据常见问题分析与解决方案
  • ODPS 十五周年实录 | 为 AI 而生的数据平台
  • Flask高效数据库操作指南
  • 面向AI应用的新一代迷你电脑架构解析 ——Qotom Q51251AI
  • 【39页PPT】大模型DeepSeek在运维场景中的应用(附下载方式)
  • imx6ull-驱动开发篇31——Linux异步通知
  • Jumpserver堡垒机使用VNC录入Linux图形界面资产
  • 十大经典 Java 算法解析与应用
  • 机器学习--数据清洗—(续篇)
  • (nice!!!)(LeetCode 每日一题) 1277. 统计全为 1 的正方形子矩阵 (动态规划)
  • C++ MFC/BCG编程:文件对话框(CFileDialog、CFolderPickerDialog)
  • 力扣48:旋转矩阵
  • 数据结构之排序大全(1)
  • 2.Shell脚本修炼手册之---创建第一个 Shell 脚本
  • 大模型入门实战 | 单卡 3090 十分钟完成 Qwen2.5-7B 首次微调