51单片机——LED点阵屏
51单片机——LED点阵屏
- LED点阵屏
- LED点阵屏原理
- 74HC595串转并芯片
- 源代码
- 例程一:静态笑脸
- 效果展示
- 例程二:笑脸->平脸->哭脸
- 效果展示
LED点阵屏
c51的LED点阵屏其实就是一个8*8像素的屏幕,一共有64个发光二极管。如下图
LED点阵屏原理
其实这个原理和数码管是一样的,都是利用人的视觉暂留,不停扫描LED点阵,依次点亮每一盏灯,只不过数码管扩引脚采用的是38译码器,点阵屏采用的是74HC595串转并芯片。参考数码管
原理图如下:
他的DPa~DPh其实就是上图的D0-D7
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 <REGX52.H>
#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 <REGX52.H>
#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点阵屏动画
51单片机——LED点阵屏相关推荐
- 51单片机LED点阵屏逐帧显示和流动显示图像
上一篇逐帧显示用的是定时和中断控制,碰到了一些麻烦,我觉得也是一种不错的办法,因为Delay的时间更短,而且如果不那么介意亮度的情况甚至可以不用Delay()函数,这里采用将要显示的图像按顺序存储在数 ...
- 51单片机——LED点阵屏显示动画
1.前言 LED点阵屏显示图形: https://blog.csdn.net/YLG_lin/article/details/126587462?spm=1001.2014.3001.5501 当我们 ...
- 51单片机——LED点阵屏(显示滚动画面)
目录 一.关于数码管.LED点阵屏显示的注意点 二.功能介绍 三.主要模块的介绍 3.1 74HC595模块和点阵屏显示函数 3.1.1 74HC595介绍 3.1.2 点阵屏显示函数MatrixLE ...
- 51单片机——LED点阵屏显示图形
1.前言 1.1 LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字.图片.视频等.LED点阵屏广泛应用于各种公共场合,如汽车报站器.广告屏以及公告牌 ...
- 51单片机LED点阵屏学习笔记
移位寄存器74HC595 移位寄存器74HC595是一个串行转并行的寄存器,该寄存器主要用来控制LED点阵屏,控制原理和控制数码管的原理类似, 下面详细说明一下74HC595的底层原理: SER的作用 ...
- 51单片机-LED模块-来回流水灯
51单片机-LED模块-来回流水灯 1. 视频 哔哩哔哩视频地址: https://www.bilibili.com/video/av89552821 51单片机-LED模块-来回流水灯 2. 文件 ...
- 51单片机LED模拟交通灯
51单片机LED模拟交通灯 文章目录 51单片机LED模拟交通灯 实验环境 仿真图 代码解析 效果演示 实验环境 实验软件: Keil5 + Proteus7 实验元件: AT89C51 * 1, L ...
- 51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真
51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真 Proteus仿真 取模软件:pctolcd2002 程序代码 #include<reg52.h>unsigned ch ...
- 51单片机LED点阵显示文字
51单片机LED点阵显示文字 代码如下. #include <REGX51.H> #define u8 unsigned char sbit SER = P3^4; sbit RCLK = ...
- 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像
文章目录 一.LED点阵介绍 二.硬件设计 三.软件设计 1.LED点阵(点亮一个点) 2.LED点阵(显示数字) 3.LED点阵(显示图像) 四.实验现象 1.LED 点阵(点亮一个点) 2. LE ...
最新文章
- NBT:人类肠道培养细菌的1520个基因组
- Too many open files
- Java通过JDBC来连接SqlServer数据库
- 国内数十位NLP大佬合作,综述预训练模型的过去、现在与未来
- 特征工程完全手册 - 从预处理、构造、选择、降维、不平衡处理
- java分隔符的引号,使用分隔符拆分带引号的字符串
- vue从入门到进阶:简介(一)
- jsbridge原理_React Hooks 原理与最佳实践
- C/C++基础语法,赶紧收藏好哟~
- [导入]Response.Redirect 打开新窗口的两种方法
- 2014手机号码归属地数据库
- 重启计算机找不到打印机,如何解决重启后打印机找不到设备
- html编写网页超链接的标记,HTML网页超链接标记
- Web基础(从零开始)——HTML文本域(textarea标签)
- ONLYOFFICE历史版本功能的开发技术之一
- 股票的压力位和支撑位
- GPS,RTK,PPS及网络RTK科普
- Tether是操纵市场的幕后黑手吗?
- 恢复出厂设置android手机号码,手机怎么恢复出厂设置 安卓手机恢复出厂设置方法汇总...
- VBA 2000年之后活期存款利息计算
热门文章
- cbv本质,前后端交互编码方式,django模板使用的2种方式,模板语法
- win10插上耳机还外放解决解决方法
- 车内看车头正不正技巧_侧方位停车把把入库技巧,驾校没教的中途修正方法很实用...
- 十大经典的心理学效应
- 微型计算机是以微处理器为基础,在计算机中以微处理器为核心组成的微型计算机属于第几代计算机...
- C语言简单编程之一元二次方程求解
- 计算机科普扫盲——固态硬盘
- 如何把PPT文件压缩到最小
- python 爬取订单_【python实战】【持续更新】爬取某发卡网订单
- 刚刚,百度宣布造车!