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

【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.xdnf.cn/news/19452.html

相关文章:

  • 【Netty4核心原理⑭】【Netty 内存分配 ByteBuf❷】
  • 计算机组成原理1 组成与各部件流程 9.1
  • 国内服务器如何安装docker或者是1panel
  • 鸿蒙总改变字体大小设置
  • 计算机网络---https(超文本传输安全协议)
  • Kafka面试精讲 Day 4:Consumer消费者模型与消费组
  • SQLSERVER关键字
  • npm 打包上传命令,撤销错误版本
  • 智能核心:机器人芯片的科技革新与未来挑战
  • 开源npm引导guide组件
  • GIT(了解)
  • 音视频开发入门:FFmpeg vs GStreamer,新手该如何选择?
  • 前端数据可视化:基于Vue3封装 ECharts 的最佳实践
  • Prometheus Alertmanager 告警组件学习
  • GD32F303在移植FreeRTOS时,系统卡死在Systick_Handler B.的处理方法
  • 164.在 Vue3 中使用 OpenLayers 加载 Esri 地图(多种形式)
  • 后端Web实战-多表操作员工列表查询
  • Spring Bean生命周期的完全指南
  • 面试常考css:三列布局实现方式
  • Interceptor拦截器入门知识及其工作原理
  • 虚拟化技术是什么?电脑Bios中的虚拟化技术怎么开启
  • S32K3平台FEE 应用笔记
  • C++ 多线程实战 01|为什么需要线程:并发 vs 并行,进程 vs 线程
  • 6 种可行的方法:小米手机备份到电脑并恢复
  • js语言编写科技风格博客网站-详细源码
  • AI-调查研究-66-机器人 机械臂 软件算法体系:轨迹规划·视觉定位·力控策略
  • 网络层和数据链路层
  • 智能对话系统优化方案:解决响应偏差与个性化缺失问题
  • OpenStack网络类型解析
  • 超越Transformer:语言模型未来的认知革命与架构重构