【51单片机】LED点阵屏的纵向动画流动字幕

这篇具有很好参考价值的文章主要介绍了【51单片机】LED点阵屏的纵向动画流动字幕。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 小伙伴们大家好,最近学习了点阵屏,写篇blog记录一下。😁

【51单片机】LED点阵屏的纵向动画流动字幕

🗣️前言:

学习完点阵屏,小伙伴们可能都想要展示一下自己的名字,而有的同学的名字太过复杂,宽为8的点阵屏无法写出,于是我便想到了纵向显示笔画过于复杂的名字。
就比如“嘉”字,横向无法写出,我们就把字体给拉长,丑是丑了点,但可以完整显示了🐶:
【51单片机】LED点阵屏的纵向动画流动字幕
采用这种表示,将一整串名字自上到下进行展示,就可以把名字完整展示出来啦!💕

🤔思路:

横向流动的原理

1.要想将一长串的字幕展示出来,我们需要定义一个数组,把所有需要亮的位置显示出来。
这里要注意是纵向取模哦!
【51单片机】LED点阵屏的纵向动画流动字幕
2.实现流动的效果:
【51单片机】LED点阵屏的纵向动画流动字幕

纵向流动原理:

横向显示是通过列进行快速的扫描,我们需要把每一列的数据输入到点阵屏,再通过偏移量一列列的移动达到流动的效果

纵向显示的最大不同在于偏移量是向下一行行移动的,因此我们需要改变我们的扫描方式。
---->按行扫描
【51单片机】LED点阵屏的纵向动画流动字幕
由下图,P0口控制列的显示,DP_口控制行的显示
【51单片机】LED点阵屏的纵向动画流动字幕

P0口很容易控制,只需将数据取反,赋值即可.
难点在于DP_口的控制:根据原理图,DP_口接到了74HC595芯片上,进行了串行数据向并行数据的转换,点阵屏从74HC595的输出端得到数据.

根据上面的图,DPh控制第一行,DP口是二极管的阳极,要想第一行亮就要输入1000 0000 ,第二行亮:0100 0000 第三行0010 0000,

为了方便位的偏移,我们规定行是从0开始到7,这样我们想让哪一行亮,就可以写作Row=0x80>>Row; (Row是选中的行数),有了要显示的行数Row,

下一步就要把这个数据导入到74HC595, 由原理图,74HC595的输入是根据三个单片机的IO口进行控制的,
【51单片机】LED点阵屏的纵向动画流动字幕
== 74HC595的具体原理如下: ==
【51单片机】LED点阵屏的纵向动画流动字幕
先将输入的最低位放在串行的数据线SER上,给个上升沿SERCLK,数据移到最上面的格子,再给数据的次低位,给个上升沿,SER线上的数据移到第一个格子,同时刚刚存放的数据向下移,移满八个后,给个上升沿锁存,数据便从左边移到了右边.

举个简单的例子,要使点阵屏的第一行亮,DPh=1,其余全给0,即1000 0000 ,十六进制是0x80,要把1000 0000通过74HC595的输入端移到输出端,根据角标的对应关系,QH–>DPh,QG–>DPg,QF–>DPf… 应该先把高位1给到数据线SER,这样通过一位位的向下移动,1就到了最下面,锁存后QH=1,DPh=1
原理清楚后,上代码😈
【51单片机】LED点阵屏的纵向动画流动字幕

代码:

MetrixLED.c

#include <REGX52.H>
#include "Delay.h"

sbit RCK=P3^5;
sbit SCK=P3^6;
sbit SER=P3^4;

void MetrixLED_Init()
{
	RCK=0;
	SCK=0;
}

//74HC595输出要显示哪一行 Row:0~7
void _74HC595_WriteRow(unsigned char Row)
{
	unsigned char i = 0;
	Row=0x80>>Row;
	for(i=0;i<8;i++)
	{
		SER=Row&(0x80>>i);
		SCK=1;
		SCK=0;
	}
	RCK=1;
	RCK=0;
}

//Data: 1亮0灭
void MertixLED_ShowRow(unsigned char Row,Data)
{
	_74HC595_WriteRow(Row);
	P0=~Data;
	Delay(2);
	_74HC595_WriteRow(0xff);
}

MetrixLED.h

#ifndef __METRIXLED_H__
#define __METRIXLED_H__

void MetrixLED_Init();
void MertixLED_ShowRow(unsigned char Row,Data);

#endif

Delay.c

#include <REGX52.H>
#include <INTRINS.H>
void Delay(unsigned char xms)		//@11.0592MHz
{
	unsigned char i, j;
	while(xms--)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}

Delay.h

#ifndef __delay_H__
#define __delay_H__
void Delay(unsigned char xms);
#endif

main.c文章来源地址https://www.toymoban.com/news/detail-411974.html

#include <REGX52.H>
#include "MetrixLED.h"
unsigned char code Animation[]={
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//	0xFE,0x10,0x10,0x7C,0x10,0x10,0x10,0xFF,  //你的名字 横向取模
//	0x00,0x24,0x48,0x8F,0x95,0xF4,0xA4,0xAA,
//	0xAA,0x91,0x00,0x00,0x24,0xFF,0x24,0x00,
//	0x48,0x22,0x9D,0x00,0x55,0xFF,0x77,0x22,
//	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void main()
{
	unsigned char i,offset=0,count=0;
	MetrixLED_Init();
    while(1)
	{
		for(i=0;i<8;i++)
		{
			MertixLED_ShowRow(i,Animation[i+offset]);
		}
		count++;
		if(count>5)
		{
			count=0;
			offset++;
			if(offset>48)  //不要忘记改这里
				offset=0;
			
		}
	}
}

到了这里,关于【51单片机】LED点阵屏的纵向动画流动字幕的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机】LED点阵屏

    🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Waiting For Love】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔74HC595图片 🍔74HC595原理 🍔”上升沿“是什么意思 🎆LED点阵屏显示图形  🎈现象  🎈代码(三部分) main.c  Del

    2024年02月02日
    浏览(34)
  • 51单片机——LED点阵屏(显示滚动画面)

    目录   一、关于数码管、LED点阵屏显示的注意点 二、功能介绍 三、主要模块的介绍 3.1 74HC595模块和点阵屏显示函数 3.1.1 74HC595介绍 3.1.2 点阵屏显示函数MatrixLED() 3.2定时器中断模块 四、程序实现 五、效果展示   一定要消影,不然显示的画面有重影。不管是数码管还是LED点阵

    2023年04月17日
    浏览(32)
  • 51单片机 8*8LED点阵(入门教学)

    LED 点阵介绍 LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随 处可见,被广泛应用于汽车报站器,广告屏等。 通常应用较多的是 8*8 点阵,然后使用多个 8*8 点阵可组成不同分辨率的 LED 点阵显示屏,比如16*16 点阵可以使用 4 个 8*8 点阵构成。因此理解

    2024年02月02日
    浏览(35)
  • 51单片机——LED 点阵点亮一个点,小白详解

    LED点阵介绍:        LED点阵是由发光二极管排列组成的显示器件,在我们生活中的电器中随处可见,被广泛用于汽车报站器,广告屏等。         通常用用较多的是8*8点阵,然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏,比如16*16点阵可以使用4个8*8点阵构成。因

    2024年02月09日
    浏览(36)
  • 51单片机8*8 LED点阵实现原理讲解

    本篇文章将为大家讲解LED8*8点阵的使用方法。 LED 8 8点阵是由64个LED灯珠组成的,它们排列在一个8 8的矩阵中。每个LED灯珠都可以独立控制,因此可以通过控制不同的LED灯珠来显示不同的图形、数字、字母等。 LED 8 8点阵的原理是利用LED灯珠的发光特性,通过控制LED灯珠的亮灭

    2024年02月09日
    浏览(36)
  • 51单片机开发:通过74HC595控制LED点阵

    (1)LED点阵就是多个LED发光二极管的集合,在单个LED的发光原理上没有任何区别; (2)上面是16x16的LED点阵,总共有16x16=256个LED灯,由32个引脚来控制,其中16个引脚是正极(posn,n=1、2······、16),16个引脚是负极(NEGn,n=1、2······、16); (3)LED点阵可以用坐标系的思想来理解,

    2024年02月12日
    浏览(39)
  • 三、51单片机用74HC595控制LED点阵

    (1)外观 (2)作用 LED点阵通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片等,LED点阵显示被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。 以8*8LED点阵为例。 (1)单片机端口直接驱动。驱动8*8的点阵需要2个IO端口(16个IO口)。 (2)使用串转并移位锁存器驱

    2024年02月03日
    浏览(61)
  • 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

      开发板上使用了 64 个红色 LED 按照行列排布组成的 8*8 LED 点阵。下面介绍 LED 点阵的使用。    LED 点阵 是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见,被广泛应用于汽车报站器,广告屏等。如下所示:   通常应用较多的是 8*8 点阵,然后使

    2023年04月08日
    浏览(32)
  • 毕业设计 基于51单片机控制LED点阵显示器的设计

    序 🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的

    2024年02月02日
    浏览(57)
  • 基于AT89C51单片机的LED点阵显示屏设计

    点击链接获取Keil源码与Project Backups仿真图: [[https://download.csdn.net/download/qq_64505944/88637464?spm=1001.2014.3001.5503]] **[源码获取] B 源码+仿真图+课程设计+50 工程实训(三)课题设计 LED点阵显示屏设计 LED点阵显示屏通过编程控制可以显示中英文字符、图形及视频动态图形,广泛用于指

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包