【51单片机】LED点阵屏

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

🎊专栏【51单片机】

🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。

🎆音乐分享【Waiting For Love】

大一同学小吉,欢迎并且感谢大家指出我的问题🥰

目录

🍔74HC595图片

🍔74HC595原理

🍔”上升沿“是什么意思

🎆LED点阵屏显示图形 

🎈现象

 🎈代码(三部分)

main.c 

Delay.c

Delay.h

🎈代码分析

建议小白仔细阅读下面的内容


🍔74HC595有两种,一种是接高电平的,一种是接低电平的

下面进行讲解 

【51单片机】LED点阵屏 

🍔接高电平

【51单片机】LED点阵屏

🍔原理

给SERCLK这个上升沿移位给低电平(因为上电的时候默认是高电平):比如给SER输入一个值(第一个值是最高位),然后再给上升沿一位给高电平,进行移位,当给最到满了给上升沿锁存放置高电平,存放在右边,

QH’指的是多片级联,如果超过8位的时候就使用这个多片级联,这样就可以实现三位控制八位,十六位,三十二位等等这种,大大节省了io口,常常用于io口的扩展。


刚开始是空的,然后后面会从SER口传入数据 

【51单片机】LED点阵屏

【51单片机】LED点阵屏

RCLK有什么用呢 

看下图

【51单片机】LED点阵屏

就是把左边的复制到右边去,进行存储 

如果存满了,还从SER口传入数据 ,会怎么样呢

会从右边的QH',再开辟一个空间进行存储

【51单片机】LED点阵屏

🍔”上升沿“是什么意思

在数字电路中,“上升沿”是指当一个数字信号由低电平变为高电平的瞬间。也就是说,在上升沿之前这个信号的电平始终是低电平,在上升沿之后这个信号的电平就变成了高电平。

与“上升沿”相对应的是“下降沿”,即当一个数字信号由高电平变为低电平的瞬间。在下降沿之前这个信号的电平始终是高电平,在下降沿之后这个信号的电平就变成了低电平。

在数字电路中,上升沿和下降沿通常被用作时序分析和时序控制的基础。比如,在移位寄存器中,时钟脉冲的上升沿通常被用来控制数据的向寄存器内部移动。当时钟脉冲发生上升沿时,数据就会被“锁存”到寄存器内部,然后在下一个时钟周期内再根据时钟脉冲的控制进行移位操作。 


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

🎆LED点阵屏显示图形 

🎈现象

【51单片机】LED点阵屏

 🎈代码(三部分)

main.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  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);
	}
}

Delay.c


void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

不明白这一段代码怎么写的同学建议看一下这一篇博客

【51单片机】使用STC烧录软件自动生成延时代码_在下小吉.的博客-CSDN博客

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);

#endif

🎈代码分析

建议小白仔细阅读下面的内容

【51单片机】LED点阵屏

【51单片机】LED点阵屏

【51单片机】LED点阵屏

【51单片机】LED点阵屏

【51单片机】LED点阵屏【51单片机】LED点阵屏

【51单片机】LED点阵屏

【51单片机】LED点阵屏 


🍔接低电平 

【51单片机】LED点阵屏

因为接的是低电平,所以和第一种情况刚好相反 

在上升沿之后这个信号的电平就变成了低电平(高电平 —>低电平)

所以

void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{
    u8 a;

    🏳️‍🌈SRCLK = 1;
    🏳️‍🌈RCLK = 1;

    for(a=0;a<8;a++)         //发送8位数
    {
        SER = dat1 >> 7;         //从最高位开始发送
        dat1 <<= 1;

        🎈SRCLK = 0;             //发送时序
        _nop_();
        _nop_();
        🎈SRCLK = 1;    
    }

  

    🎊RCLK = 0;
    _nop_();
    _nop_();
    🎊RCLK = 1;
}
刚好相反

🍔现象 

【51单片机】LED点阵屏

🍔连线 

【51单片机】LED点阵屏

🍔代码例子以及分析

/**************************************************************************************
		              LED点阵--点亮一个点实验												  
实现现象:下载程序后,LED点阵左上角第一个点的LED被点亮果

			
注意事项:必须将74HC595模块的JP595短接片短接,否则不会出现现象																				  
***************************************************************************************/

#include "reg51.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h"

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

//--定义使用的IO口--//
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;


/*******************************************************************************
* 函 数 名         : Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
* 函数功能		   : 通过595发送四个字节的数据
* 输    入         : dat1:第4个595输出数值
*                  * dat2: 第5个595输出数值
*                  * dat3:第2个595输出数值
*                  * dat4:第1个595输出数值
* 输    出         : 无
*******************************************************************************/
void Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{
	u8 a;

	SRCLK = 1;
	RCLK = 1;

	for(a=0;a<8;a++)		 //发送8位数
	{
		SER = dat1 >> 7;		 //从最高位开始发送
		dat1 <<= 1;

		SRCLK = 0;			 //发送时序
		_nop_();
		_nop_();
		SRCLK = 1;	
	}

	for(a=0;a<8;a++)		 //发送8位数
	{
		SER = dat2 >> 7;		 //从最高位开始发送
		dat2 <<= 1;

		SRCLK = 0;			 //发送时序
		_nop_();
		_nop_();
		SRCLK = 1;	
	}

	for(a=0;a<8;a++)		 //发送8位数
	{
		SER = dat3 >> 7;		 //从最高位开始发送
		dat3 <<= 1;

		SRCLK = 0;			 //发送时序
		_nop_();
		_nop_();
		SRCLK = 1;	
	}

	for(a=0;a<8;a++)		 //发送8位数
	{
		SER = dat4 >> 7;		 //从最高位开始发送
		dat4 <<= 1;

		SRCLK = 0;			 //发送时序
		_nop_();
		_nop_();
		SRCLK = 1;	
	}

	RCLK = 0;
	_nop_();
	_nop_();
	RCLK = 1;
}


void main()
{	
	
	Hc595SendByte(0xff,0xfe,0x00,0x01);
	while(1)
	{
	
	}		
}

🍔注意

必须将74HC595模块的JP595短接片短接,否则不会出现现象    

就是下图的东西

【51单片机】LED点阵屏

 

    🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰

 

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

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

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

相关文章

  • 【【51单片机实现LED点阵屏幕和动画显示】】

    我们先搞清楚74HC595的原理 sfr 特殊功能寄存器声明 sbit 特殊位声明 就举个例子,我们在之前的各种测试中对LED进行控制会直接输入P2=什么什么,那我想问你怎么知道P2口控制的就是LED呢,其实这些就是已经在内部声明完成了,我们可以直接拿来使用 内部

    2024年02月11日
    浏览(23)
  • 51单片机学习--LED点阵屏显示图形&动画

    为了通用性考虑,需要把用到的几个口用特殊位声明来重新命名,由于RCLK在头文件中已有定义,所以这里把P3^5声明成RCK吧。。这样的做法可以提高可读性 接下来编写74HC595的输入函数 执行完八次循环后数据就会存到移位寄存器里面了,接下来要输出只需要给RCLK一个高电平即

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

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

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

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

    2024年02月09日
    浏览(19)
  • 【51单片机】LED点阵屏的纵向动画流动字幕

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

    2023年04月13日
    浏览(14)
  • 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日
    浏览(21)
  • 三、51单片机用74HC595控制LED点阵

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

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

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

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

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

    2024年02月02日
    浏览(40)
  • 基于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日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包