51单片机——LED点阵屏_51单片机点阵显示i love you_酒醉梦醒的博客-程序员秘密

技术标签: 51单片机  led动画  74hc595串转并  led点阵  led  单片机  

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点阵屏动画

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LiuRenyou/article/details/118254108

智能推荐

JD-GUI反编译对齐源码行号,去掉注释_Bryce96的博客-程序员秘密

JD-GUI反编译class文件后会将源码的真实行号放在行首的注释中,在源码中调试的时候不方便在JD-GUI工具栏点击Help - &gt; PreferencesPreferences中相关选项改成这样再次反编译后,代码中会有大量的空行但是源码的位置都对齐了,注释也清掉了...

女程序员税后一万五,买了800元衣服却被男友怼,网友:麻溜分手_weixin_34088583的博客-程序员秘密

近日,在职场匿名论坛有一位女生分享了自己的经历。她说自己是做程序开发方面的工作,月薪税后是一万五。当时谈了一个男友,也有2年多了,由于女程序员和男友年龄都比较大了,于是准备买房结婚。而在平时,这个女程序员是比较节省的,毕竟在大城市这收入也不算高。就在上次逛街的时候,这个女程序员说自己破天荒第一次买了双高跟鞋以及2件衣服,总共是800元。可就因为自己花钱多了,陪自己逛街的男友一路说个不停,然后就把...

手把手教你摆脱愚蠢的有道云笔记过上Typora的好日子_太阳骑士索拉尔的博客-程序员秘密

前言本文撰写于Typora一开始学习MarkDown就有的有道云笔记,后来一段时间曾经尝试过印象笔记,但UI太不友好,很难上手就换了。应该说有道云还是不错的,毕竟猪厂产品,界面友好,可以清楚看到渲染前和渲染后的结果,尤其是作为网易系产品,你可以很轻松的在电脑,手机,ipad上同步使用但用着用着,感觉就没那么好了,我本人就是比较喜欢折腾工具的,不管是开发工具还是平时的工具,看到有推荐的其他好...

用Eclipse 开发Dynamic Web Project应用程序_blue_fire2008的博客-程序员秘密

简介:本文仅简单介绍基于Eclipse开发Dynamic Web Project应用下的JSP,Servlet及TOMCAT数据源的配置和开发。软件环境:Eclipse Java EE IDE for Web Developers压缩包eclipse-jee-indigo-SR2-win32.zipJDK安装包jdk-7u1-windows-i586.exeTOMCAT安装包apa

可信执行环境(TEE)介绍_tee可信执行环境 应用开发_braveheart95的博客-程序员秘密

可信执行环境(TEE)是Global Platform(GP)提出的概念。针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户,还包括服务提供者,移动运营商,以及芯片厂商。TEE是与设备上的Rich OS(通常是Android等)并存的运行环境,并且给Rich OS提供安全服务。它具有其自身的执行空间,比Rich OS的安全级别更高,但是比起安全元素(SE,通常是智能卡)的安全性

Github掘金:很全的 Java 权限认证框架!_androidstarjack的博客-程序员秘密

点击上方关注 “终端研发部”设为“星标”,和你一起掌握更多数据库知识来源:GitHub上sa-token项目今天给大家推荐的这个开源项目超级棒,可能是史上功能最全的 Java 权限认证框...

随便推点

IDEA自定义/修改方法注释和修改类注释.注释时增加时间和作者._Franciz小测测的博客-程序员秘密

基于IDEA2020 版本-DEA自定义/修改方法注释和修改类注释.注释时增加时间和作者.进入设置修改方法注释根据如图操作创建一个分类,分类名称我写的是MyAnnotation完成后得到如下图所示分类根据上图所示在刚才新建的分类下新建子类并输入注释内容** 1. @author Franciz 2. @date $date$*/并且全选以下内容:最终得到下图效果,然后保存3. 如何使用输入/man然后键盘回车就可以输出自定义的注释了如果要更改

Centos7.5搭建Hadoop2.8.5完全分布式集群部署_aodong4052的博客-程序员秘密

一、基础环境设置1. 准备4台客户机(VMware虚拟机)系统版本:Centos7.5节点配置:192.168.208.128 ——Master192.168.208.129 ——Slaver-1192.168.208.130 ——Slaver-2192.168.208.130 ——Slaver-32. 配置hosts文件,使4台客户机能够以主机名相互访问[root...

随机数生成方法_qq_32543205的博客-程序员秘密

1+(int)(10.0rand()/(RAND_MAX+1.0));整个语句的作用是产生随机数1~10。rand():用来产生一个随机数的函数,范围是[0, RAND_MAX],RAND_MAX是C中stdlib.h中宏定义的一个字符常量:#define RAND_MAX Ox7FFF其值最小为0,最大为Ox7FFF。10.0rand()得到一个浮点数,是10倍的[0, RAND_MAX...

程序员 2014-9-26 一天的奇妙之旅_brighthas的博客-程序员秘密

程序员 2014-9-26 一天的奇妙之旅http://forjs.org/book/xyfULqrrXg/section/gklpSJ3fmSg

pyqt5 QSS开源暗黑主题qdarkstyle 小记_pyqt5的qdarkstyle_JlexZzzz的博客-程序员秘密

pyqt5小记| QSS开源暗黑主题qdarkstyle ,读取QSS主题文件安装Pip install qdarkstyle使用import sysfrom PyQt5.QtGui import QIconimport qdarkstylefrom PyQt5 import QtCorefrom PyQt5.QtWidgets import QApplication, QMainWindowif __name__ == '__main__': app = QApplicat

个人作业4——alpha阶段个人总结_baguan8712的博客-程序员秘密

第一部分:个人总结1. 硬的问题。要在找工作的时候说服别人你是适合这个工作的, 那就要搞清楚对方期待什么东西,自信地展现出你的价值和能力。 (这个列表也可以说是 - 面试中最关键的问题)类别具体技能和面试问题现在的回答(大三)语言最拿手的计算机语言之一,代码量多少?C语言,略懂java软件实现(阅读代码的能力,实现,单元测试)你有没...

推荐文章

热门文章

相关标签