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

【Proteus仿真】8*8LED点阵控制系列仿真——循环显示数字/按键控制显示图案

目录

0案例视频效果展示

0.1例子1:8*8LED点阵循环显示数字0-9

0.2例子2:8*8LED点阵通过按钮控制显示图案

1基础知识补充

1.18*8LED点阵基础知识

1.1.1物理结构

1.1.2显示原理

1.1.3驱动方式

1.1.4字形码

1.1.5软件要点(以 AT89C51 为例)

1.1.6电源与亮度

1.1.7总结

2例子1:8*8LED点阵循环显示数字0-9

2.1电路原理图

2.1.1电路组成及接线

2.2控制程序

2.2.1控制程序步骤

2.2.3源代码

3例子2:8*8LED点阵通过按钮控制显示图案

3.1电路原理图

3.1.1电路组成及接线

3.2控制程序

3.2.1控制程序步骤

3.2.3源代码

  7 硬件工程师笔试面试相关文章链接(部分链接)


摘要:本文介绍了8×8 LED点阵的基本原理与应用实例。第一部分详细讲解了8×8点阵的物理结构、显示原理(采用逐行/列扫描方式)及驱动方式(单片机直接驱动或专用驱动芯片)。第二部分展示了两个具体案例:案例1实现数字0-9的循环显示,通过定时器中断控制扫描刷新;案例2通过按键控制切换显示不同图案。两个案例均包含完整的电路原理图和单片机控制程序(基于AT89C51),程序采用中断服务程序实现快速扫描,主程序负责更新显示内容。文章提供了LED点阵的字形码表、电源设计要点及软件实现方法,具有实践指导意义。

0案例视频效果展示

0.1例子1:8*8LED点阵循环显示数字0-9

例子17:8*8LED点阵循环显示数字0-9

0.2例子2:8*8LED点阵通过按钮控制显示图案

例子:8*8LED点阵通过按钮控制显示图案

1基础知识补充

1.18*8LED点阵基础知识

1.1.1物理结构

64 只 LED 按 8 行(R0-R7)×8 列(C0-C7)排列,所有阳极接行、阴极接列(或相反)。

常见封装:1088/1388/1588 等,底部两排引脚,行、列交叉分布(需查脚位图)。

1.1.2显示原理

逐行(或逐列)扫描:
① 选通行(给高电平),其余行关闭;
② 在列线上送出该行的 8 位字形码(低电平点亮/高电平熄灭,取决于共阳/共阴)。

扫描频率≥100 Hz,利用人眼暂留得到无闪烁稳定图像。

1.1.3驱动方式

单片机直接驱动:8 条行线 + 8 条列线 = 16 IO 口(加限流电阻)。

节省 IO:

行用 74HC138(3→8 译码器),列用 74HC595(8 位移位寄存器)+ 三极管或 ULN2803 增强电流。

专用驱动 MAX7219(串行输入,集成扫描、译码、恒流)。

1.1.4字形码

每个数字 0-9 占 8 Byte(每行 1 Byte)。

共阴示例(低电平点亮):
0:0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C
1:0x10,0x18,0x10,0x10,0x10,0x10,0x10,0x7C

1.1.5软件要点(以 AT89C51 为例)

定时器 0/1 产生 1 ms 中断 → 每次中断显示 1 行,8 ms 扫描整屏。

中断里:
① 关闭所有行;
② 输出列数据(P0);
③ 打开当前行(P2);
④ 行号++ & 0x07。

主循环:
每 500 ms 把缓冲区指针移向下一个数字的字形表首地址。

1.1.6电源与亮度

单行最大电流 ≈ 160 mA(20 mA × 8 LED)。

占空比 1/8,平均电流 20 mA,可直接由单片机端口(加限流)或加三极管。

1.1.7总结


8×8 点阵就是 64 只 LED 排成棋盘,用“轮流点亮某一行(列)并送对应列(行)数据”的扫描方式,在 100 Hz 以上频率下让人眼看到完整图形。

2例子1:8*8LED点阵循环显示数字0-9

实现功能:8X8LED点阵屏循环显示数字0~9,刷新过程由定时器中断完成。

本质:利用定时器中断定时刷新8×8点阵的每一行(或列),在中断服务程序中快速逐行(列)扫描并输出对应字形码,主程序只需更新显示缓冲区内容,实现数字0~9的循环滚动。

2.1电路原理图

2.1.1电路组成及接线

名称

接线

AT89C51单片机

XTAL1/XTAL2—>连接晶振电路

RST—>连接复位电路

P0.0-P0.7—>总线收发器/排阻

P3.0-P3.7—>LED点阵

复位电路

晶振电路

排阻

LED点阵

总线收发器

2.2控制程序

2.2.1控制程序步骤

库文件

数字(0-9)对应16进制码值

主程序

INT0中断函数

2.2.3源代码

//功能:8X8LED点阵屏循环显示数字0~9,刷新过程由定时器中断完成。#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar code Table_of_Digits[]={0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,          //00x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,           //10x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00, //20x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00, //30x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,           //40x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00,          //50x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00,          //60x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,           //70x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, //80x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00           //9};uchar i=0,t=0,Num_Index;//主程序void main(){P3=0x80;                         Num_Index=0;                 //从0开始显示TMOD=0x00;                            //T0方式0TH0=(8192-2000)/32;             //2ms定时TL0=(8192-2000)%32;IE=0x82;TR0=1;                                       //启动T0while(1);}//INT0中断函数void LED_Screen_Display() interrupt 1{TH0=(8192-2000)/32;             //恢复初值TL0=(8192-2000)%32;P0=0xff;                            //输出位码和段码P0=~Table_of_Digits[Num_Index*8+i];P3=_crol_(P3,1);             if(++i==8) i=0;                  //每屏一个数字由8个字节构成if(++t==250)                     //每个数字刷新显示一段时间{t=0;if(++Num_Index==10) Num_Index=0;    //显示下一个数字}}

3例子2:8*8LED点阵通过按钮控制显示图案

实现功能:每次按下K1时,会使8X8LED点阵屏循环显示不同图形。

本质:利用定时器中断定时刷新8×8点阵的每一行(或列),在中断服务程序中快速逐行(列)扫描并输出对应字形码,主程序只需更新显示缓冲区内容,实现图案的显示。

3.1电路原理图

3.1.1电路组成及接线

名称

接线

AT89C51单片机

XTAL1/XTAL2—>连接晶振电路

RST—>连接复位电路

P0.0-P0.7—>总线收发器/排阻

P1.0-P1.7—>LED点阵

P3.2—>按键

复位电路

晶振电路

排阻

LED点阵

总线收发器

按键

3.2控制程序

3.2.1控制程序步骤

库文件

待显示图形编码

主程序

INT0中断控制点阵屏显示函数

INT0中断函数

3.2.3源代码

//功能:每次按下K1时,会使8X8LED点阵屏循环显示不同图形。#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//待显示图形编码uchar code M[][8]={{0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00},                //图1{0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00},               //图2{0x00,0x20,0x30,0x38,0x3c,0x3e,0x00,0x00}        //图3};uchar i,j;//主程序void main(){P0=0xff;P1=0xff;                           TMOD=0x01;                            //T0方式1TH0=(65536-2000)/256; //2ms定时TL0=(65536-2000)%256;IT0=1;                                        //下降沿触发IE=0x83;                           //允许定时器0、外部0中断i=0xff;                                        //i的初值设为0xff,加1后将从0开始while(1);}//INT0中断控制点阵屏显示void Show_Dot_Matrix() interrupt 1{TH0=(65536-2000)/256; //恢复初值TL0=(65536-2000)%256;P0=0xff;                            //输出位码和段码P0=~M[i][j];P1=_crol_(P1,1);             j=(j+1)%8;}//INT0中断(定时器由键盘中断启动)void Key_Down() interrupt 0{P0=0xff;P1=0x80;j=0;i=(i+1)%3;                                 //i在0,1,2中取值,因为只要3个图形TR0=1;}

  7 硬件工程师笔试面试相关文章链接(部分链接)

更多文章可前往主页观看

1、硬件工程师笔面试真题汇总(2025版本)_硬件工程师面试题-CSDN博客https://blog.csdn.net/XU157303764/article/details/140742900?spm=1011.2415.3001.5331硬件工程师笔试面试高频考点汇总——(2025版)_电容或者电感对锁存器的影响-CSDN博客https://blog.csdn.net/XU157303764/article/details/1488349782、硬件工程师笔试面试汇总(2025版本)_硬件工程师面试题-CSDN博客https://blog.csdn.net/XU157303764/article/details/1419048583、硬件工程师笔试面试学习汇总——器件篇目录(2025版本)_【【硬件工程师炼成之路】器件篇(更新中。。。)-CSDN博客https://blog.csdn.net/XU157303764/article/details/142316204

硬件工程师笔记——电子器件汇总大全-CSDN博客https://blog.csdn.net/XU157303764/article/details/147342935?spm=1011.2415.3001.5331Multisim14使用教程详尽版--(2025最新版)-CSDN博客https://blog.csdn.net/XU157303764/article/details/147197406?spm=1011.2415.3001.5331

http://www.dtcms.com/a/361703.html

相关文章:

  • 虚拟机- + linux
  • UFUNCTION C++ 的再次理解
  • 凸集与优化
  • Python OpenCV图像处理与深度学习:Python OpenCV视频处理入门
  • C++实时视频抽帧抓图功能(附源码)
  • DeepSeek-V3.1 模型 API 新特性拆解:逆向 + 火山双渠道适配与推理模式智能切换指南
  • 基于FPGA的红外与可见光图像融合算法
  • Day42 Grad-CAM与Hook函数
  • 进程与线程 - 并发的基石
  • SQL执行过程及原理详解
  • [SWPUCTF 2018]SimplePHP
  • 实现自己的AI视频监控系统-第三章-信息的推送与共享2
  • 刘洋洋《一笔相思绘红妆》上线,献给当代痴心人的一封情书
  • 互斥量(Mutex,全称 Mutual Exclusion)用于保证同一时间只有一个线程(或进程)访问共享资源,从而避免并发操作导致的数据不一致问题
  • RAG-文本到SQL
  • SOME/IP-SD中IPv4端点选项与IPv4 SD端点选项
  • 突破超强回归模型,高斯过程回归!
  • 使用 BayesFlow 神经网络简化贝叶斯推断的案例分享(二)
  • 无重复字符的最长子串,leetCode热题100,C++实现
  • 【FireCrawl】:本地部署AI爬虫+DIFY集成+V2新特性
  • FFmpeg 不同编码的压缩命令详解
  • 速卖通自养号测评系统开发指南:环境隔离与行为模拟实战
  • 测试-用例篇
  • FFMPEG AAC
  • 【LeetCode每日一题】19. 删除链表的倒数第 N 个结点 24. 两两交换链表中的节点
  • Java内存模型下的高性能锁优化与无锁编程实践指南
  • 几种特殊的数字滤波器---原理及设计
  • 【零碎小知识点 】(四) Java多线程编程深入与实践
  • MongoDB主从切换实战:如何让指定从库“精准”升级为主库?保姆级教程!
  • 36. Ansible变量+管理机密