第八章、stc89c52中LED点阵屏的控制

news/2024/10/28 20:17:55/

1、LED点阵屏简介

  •  LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等
  • LED点阵屏分类     按颜色:单色、双色、全彩     按像素:8*8、16*16等(大规模的LED点阵通常由很多个小点阵拼接而成)

 2、LED点点阵屏显示原理

  • LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已
  • LED点阵屏与数码管一样,有共阴和共阳两种接法,不同的接法对应的电路结构不同
  • LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示

 stc89c52开发板上的引脚对应关系如下:

  • P0_0~P0_7  为阴极,由单片机控制。置0为有效
  • D0~D7 为阳极,由74HC595 芯片获取

 3、74HC595芯片介绍

 

  • OE :为芯片使能位  置0时芯片开始工作
  • RCLK:(register clock)寄存器时钟 ——置1时,将数据搬移到右端
  • SRCLR: (serial clear)串行清零端 (置0时清空)
  • SRCLK:(serial clock)串行时钟——置1时,向下移动数据
  • SER:串行数据   ——负责输入数据
  • QH' :多片级联

4、C51中的str、sbit

  • sfr(special function register):特殊功能寄存器声明     例:sfr P0 = 0x80;     声明P0口寄存器,物理地址为0x80
  • sbit(special bit):特殊位声明     例:sbit P0_1 = 0x81;    或    sbit P0_1 = P0^1;     声明P0寄存器的第1位
  • 可位寻址/不可位寻址:在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作

5、使用LED点阵屏显示静态图形

#include <REGX52.H>
#include "Delay.h"sbit RCK=P3^5;		//RCLK
sbit SCK=P3^6;		//SRCLK
sbit SER=P3^4;		//SER/*** @brief   往74HC595芯片中写入 一个字节数据 来控制 D0~D7  * @param   Byte  一个字节数据* @retval   无*/
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){SER = (0x80>>i)&Byte;   //写入数据SCK = 1;      //向下移位SCK = 0;}RCK = 1;RCK = 0;
}/*** @brief  LED点阵屏显示一列数据* @param  Column 要选择的列,范围:0~7,0在最左边* @param  Byte 选择列显示的一字节数据,高位在上,1为亮,0为灭* @retval 无*/
void MatrixLED_ShowColumn(unsigned char Column,Byte)
{_74HC595_WriteByte(Byte);P0=~(0x80>>Column);//  LED 消影Delay(1);P0=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);}
}

利用LED点阵屏显示笑脸图形:

6、使用LED点阵屏显示动态图形——小日本

#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"//动画数据  小日本
unsigned char code Animation[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x12,0x01,0xFF,0x00,0x10,0x08,0x00,0x00,0x7F,0x49,0x49,0x49,0x7F,0x00,0x00,0x02,0x24,0x2A,0x32,0xFF,0x32,0x2A,0x24,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};void main()
{unsigned char i,Offset=0,Count=0;MatrixLED_Init();  // 前面实验的函数,进行了写到了MatrixLED.c 文件中了while(1){for(i=0;i<8;i++)	//循环8次,显示8列数据{MatrixLED_ShowColumn(i,Animation[i+Offset]);   // 前面实验的函数,进行了写到了MatrixLED.c 文件中了}Count++;			//计次延时if(Count>15){Count=0;Offset++;		//偏移+8,切换下一帧画面if(Offset>33){Offset=0;}}}
}

演示效果:

LED点阵屏 显示动画


http://www.ppmy.cn/news/444369.html

相关文章

51定时中断系统控制LED点阵屏显示逐帧动画

写在前面 最近回头看之前写的文章感到一种很浓的公式感&#xff0c;我确实是提前写好了模板每次都套用&#xff0c;整篇看下来感觉就像是在交老师布置的实验报告&#xff0c;看起来很成熟但实际上背离了自己的初衷&#xff0c;接下来我会尽可能的复现自己在做的时候的尝试和思…

51单片机入门 - 驱动 8x8 LED 点阵屏

硬件型号、软件版本、以及烧录流程 操作系统&#xff1a;Windows 10 x84-64单片机&#xff1a;STC89C52RC编译器&#xff1a;SDCC烧录软件&#xff1a;stcgal 1.6开发板&#xff1a;普中51单片机开发板A2套件&#xff08;2022&#xff09; 在 VS Code 中新建项目到烧录的过程…

一文教你玩LED点阵屏32*64/64*64----基于STM32

以32*64点阵屏为例&#xff0c;详解LED点阵屏驱动全过程 首先要了解LED点阵屏幕的显示原理。 一般LED点阵屏在某一时间段内只能点亮某一行或者某一列&#xff0c;因为人的眼睛只有24帧速度&#xff0c;只要屏幕速度超过这个值&#xff0c;我们看到的是一个连续完整的画面。一般…

led点阵屏静态图

话不多说&#xff0c;上代码&#xff0c;前提是你已经知道各行代码的意思。跟着老师的代码走最好&#xff0c;每一行都一样&#xff0c;要不然会有意想不到的错误&#xff0c;小白阶段就不要自己创新代码了。X﹏X #include <REGX52.H> sbit RCKP3^5; //RCLK sbit SCKP3^6…

【Arduino实验11 LED点阵屏显示】

目录 一、实验目的 二、实验设备与环境 三、实验重点 四、实验难点 五、实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一、实验目的 1熟悉8*8点阵屏的原理与功能&#xff1b; 2 掌握数组变量的使用&#xff1b; 3 连接点阵屏显示电路&#x…

MCU-51:LED点阵屏

目录 一、点阵屏介绍1.1 简介1.2 分类 二、点阵屏原理2.1 点阵屏显示原理2.2 74HC595芯片介绍 三、代码演示3.1 静态笑脸3.2 动态Hello! 注意&#xff1a;一定要看 之前我们介绍了控制LED灯亮灭的操作&#xff0c;今天我们要介绍一下控制LED点阵屏亮灭的操作&#xff0c;8*8的L…

6. LED 点阵屏

点阵屏介绍 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合&#xff0c;如汽车报站器、广告屏以及公告牌等 LED点阵屏分类 按颜色&#xff1a;单色、双色、全彩 按像素&…

[入门教程]详细讲解STM32控制LED点阵屏(HUB75接口)

本文适合初级入门的同学&#xff0c;大佬请绕道。讲解怎么用stm32驱动成品LED点阵屏显示一副七色无灰度的图片&#xff0c;有灰度的图片可以入门后继续研究。 使用软硬件&#xff1a; 软件&#xff1a;Keil5&#xff0c;程序在后面会给出 硬件&#xff1a;STM32F103最小系统、…