51单片机开发:通过74HC595控制LED点阵

2023-11-11

1、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点阵可以用坐标系的思想来理解,用横坐标和纵坐标来确定操作哪个LED等;比如要点亮L1,就给POS1引脚高电平,NEG1引脚低电平;点亮L18,就给POS2引脚高电平,NEG2引脚低电平;
(4)应用:简单一点就是商户门头上显示字幕的LED点阵,一般都是红色的LED等;复杂一点的就是大型的LED点阵屏幕,LED灯是有红黄蓝三种,三个LED灯组成一个像素点,可以像液晶屏目一样显示画面;
(5)原理:当32个引脚的状态确定,LED点阵中所有LED灯的状态也确定,也就是构成了一副画面,不停的改变32个引脚的状态,就会组成不同的画面,也就显示出了动态的画面;

2、74HC595介绍

2.1、引脚介绍

在这里插入图片描述

引脚 功能说明
SER 串行数据输入引脚,用于接收传给芯片的数据
RCK 存储寄存器的锁存引脚,当出现上升沿时,把移位寄存器的数据刷新到存储寄存器
SCK 移位寄存器的锁存引脚,当出现上升沿时,移位寄存器里的数据向前移位,并从SER引脚上读取新的一位数据存到移位寄存器里;如果移位寄存器已经存了8位的数据,则会把最开始存入的那一位数据给挤出去,把被挤出去的数据从QH’引脚发送出去
QA-QH 并行输出引脚,输出高电平或者低电平
Q’H 串行数据输出引脚;当串行输入的数据多于8位的时候,会把已有的位挤出去,也就是从QH’引脚发送出去

2.2、芯片的内部组成

在这里插入图片描述

(1)组成:74HC595内部有两个寄存器,分别是移位寄存器和存储寄存器;
(2)移位寄存器:负责从SER引脚去读取数据并保存;当SRCLK出现上升沿时,读取SER引脚的状态并保存到移位寄存器中;
(3)存储寄存器:决定8个并行输出引脚的输出电平,每个bit对应一个引脚;
(4)当RCLK引脚出现上升沿时,将移位寄存器中的值刷新到存储寄存器中,这样就可以改变8个并行输出口的状态;

2.3、级联时候的工作流程

在这里插入图片描述

(1)每个芯片的数据都是通过SER引脚输入,并保存到移位寄存器中;
(2)SRCLK引脚出现一次上升沿,就读取SER引脚状态,将数据保存到移位寄存器中;
(3)上一级的QH’引脚,作为下一级的SER引脚的输入;
(4)控制所以74HC595芯片的数据,都是由第一级芯片SER引脚输入,依次输入到后级的芯片,可以用"流觞曲水"的场景去理解;
(5)当需要传递的数据都保存到各级芯片的移位寄存器后,RCLK引脚出现一次上升沿,就将移位寄存器的值刷新到存储寄存器中,更新8个并行输出引脚的状态;
(6)假设需要给4个74HC595芯片传递的数据是:0x11、0x22、0x33、0x44;则依次往第一级的74HC595(A)芯片的SER引脚输入这四个数,当全部输入完成后,这四个数据就会被保存到4个芯片的移位寄存器中;

3、为什么要用74HC595芯片来控制LED点阵?

3.1、不使用74HC595芯片

如果不使用74HC595(串转并模块),则32个引脚需要直接用51单片机的IO口去控制,51单片机总共就32个IO口,意味着51单片的所有IO口都要用来控制LED点阵,那51单片机就不能控制其他的外设,这是不能接受的;

3.2、使用74HC595芯片

(1)上面是用4片74HC595芯片级联的方式来控制16*16的点阵,每个74HC595有8个并行输出引脚,4片刚好32个输出引脚;
(2)采用74HC595芯片,只需要3个引脚就能控制LED点阵,减少了引脚的使用数目;
(3)补充:控制更大的LED点阵,还是使用3个引脚,只是要增加级联的74HC595芯片数量;

3.3、使用74HC595芯片的优缺点

(1)优点:节省了控制LED点阵需要的IO口数量;
(2)使用74HC595芯片增加成本,也增加了编程控制的难度;

4、通过74HC595芯片控制LED点阵的代码

#include <reg51.h>


sbit SER  = P3^4;			// 74HC595的串行输入端
sbit RCLK = P3^5;			// 锁存时钟
sbit SCLK = P3^6;			// 移位时钟


void main(void)
{
	unsigned char i = 0;
	unsigned char d1, d2, d3, d4;  	// 要给4个595并行输出端输出的值

	d1 = 0;
	d2 = 0;
	d3 = 0xff;
	d4 = 0xff;

	SCLK = 0;
	RCLK = 0;

	//1、发送数据顺序:先发送最后一级595的数据,最后发送第一级595的数据
	//2、每个bit数据,先发送高位再发送低位
	//3、先通过第一级的SER引脚将4片595芯片的数据发送出去,最后再给RCLK制造上升沿,将移位寄存器的值刷新到存储寄存器

	for (i=0; i<8; i++)
	{	
		SER = d1 >> 7;	 		// 将最高bit取出来给SER	
		SCLK = 0;	
		SCLK = 1;  				// 制造了一个SCLK的上升沿,把数据报错到移位寄存器中
		d1 = d1 << 1;		  	// 将已经发送出去的数据丢弃
	}

	for (i=0; i<8; i++)
	{
		SER = d2 >> 7;	 		// 将d2的最高bit取出来给SER
		SCLK = 0;
		SCLK = 1;  				// 2步制造了一个SCLK的上升沿
		d2 = d2 << 1;
	}


	for (i=0; i<8; i++)
	{
		SER = d3 >> 7;	 		// 将d3的最高bit取出来给SER
		SCLK = 0;
		SCLK = 1;  				// 2步制造了一个SCLK的上升沿
		d3 = d3 << 1;
	}

	for (i=0; i<8; i++)
	{
		SER = d4 >> 7;	 		// 将d4的最高bit取出来给SER
		SCLK = 0;
		SCLK = 1;  				// 2步制造了一个SCLK的上升沿
		d4 = d4 << 1;
	}

	//截止到现在,数据情况:第一级5095(d4)、第一级5095(d3)、第一级5095(d2)、第一级5095(d1)
	//数据还保存在移位寄存器中

	// 给RCLK引脚一个上升沿,4片595芯片都将移位寄存器中的数据刷新到存储寄存器中
	//每片595芯片的8个并行输出口状态被改变
	RCLK = 0;
	RCLK = 1;

}

5、用点阵显示汉字

在这里插入图片描述

(1)显示汉字有专门的字模提取软件,输入点阵的规格和显示的汉字,软件会生成显示汉字需要的数据;
(2)取模分为横向取模和纵向取模,具体采用哪种取模方式和点阵显示函数相关;
(3)如果要实现商店门头上点阵的汉字移动效果,则需要对每一帧图像都进行汉字取模,然后依次在点阵上显示;

推荐

给大家推荐一个学校嵌入式知识的网站,博主在大学时候学习嵌入式知识、找工作的时候都在用这个网站,网站里有C语言、Linux等等的笔试题、面试常问问题等等知识,无论是学习基础知识、面试刷题、交流工作经验都是不错的选择。大家一起进步,欢迎留言交流。
链接:学习神器跳转
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机开发:通过74HC595控制LED点阵 的相关文章

  • halcon之Blob分析实战

    Blob分析 Blob Analysis 在计算机视觉中的Blob是指图像中的具有相似颜色 纹理等特征所组成的一块连通区域 Blob分析 Blob Analysis 是对图像中相同像素的连通域进行分析 该连通域称为Blob 其过程其实就是将
  • 【数据结构】栈

    文章目录 1 栈的概念及结构 2 栈的实现 2 1栈的实现思路 2 2概念理解题 2 3栈的结构体定义 2 4函数接口 功能 2 5头文件Stack h 2 6函数实现Stack c 2 7测试函数Test c 2 8有效的括号 利用栈实现
  • Oracl之动态Sql编写总结

    一 概述 在通常的sql操作中 sql语句基本上都是固定的 如 SELECT t empno t ename FROM scott emp t WHERE t deptno 20 但有的时候 从应用的需要或程序的编写出发 都可能需要用到动态
  • 【抽样技术】CH2 简单随机抽样补充——比率估计与回归估计

    目录 一 概述 1 问题的提出 2 比率估计与回归估计的作用和使用条件 3 辅助变量的特点 4 相关符号 二 比率估计量 编辑 编辑 1 问题的提出 2 定义 3 比估计与简单估计的比较 4 比率估计的思想 5 比率估计量及其性质 1 引理

随机推荐

  • 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

    import java util Arrays 问题 顺时针螺旋输出数组 题目特征 保持一种模式前进 遇到一定条件转换另一种模式前进 思路 用一个二维数组来不同取值来控制前进 设置变动的边界为改变的条件 public class Test1
  • [1160]ModuleNotFoundError: No module named setuptools_rust

    报错信息 Traceback most recent call last File line 1 in File tmp pip build my9sai1o cryptography setup py line 14 in from se
  • 复现iis 文件解析漏洞

    1 开启IIS服务 开始 管理工具 Internet信息服务 IIS 管理器 2 点击Internet信息服务 IIS 管理器 查看自己web网站中的文件和IIS服务的开始 停止 暂停按钮 查看IIS服务是否开启 若未开启请开启 HLY 本
  • 如何查看某个端口被占用

    查看8080端口是否被占用可以使用如下命令 Windows netstat ano find 8080 Linux netstat ano grep 8080 netstat命令详解 Netstat用于显示与IP TCP UDP和ICMP协
  • IPFS: NAT traversal(NAT穿越)

    IPFS是一个p2p网络 那么一定绕不开的一个问题就是NAT穿越 之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架 本文简单介绍一下什么是NAT 为什么有NAT技术 NAT主要用来缓解全球的IPv4地址不够用的情况 IP
  • springboot整合rabbitMq(未完成)

    1 下载安装如下软件 erlang语言和rabbitmq服务 2 配置环境变量 erl安装目录 bin rabbit安装目录 sbin 3 安装插件 打开cmd窗口 进入sbin的cmd窗口 输入rabbitmq plugins enabl
  • python3 学习笔记(三):函数与模块

    python3 学习笔记 python 优雅 明确 简单 函数与模块 1 函数 组织好的 可重复使用的 用来实现某一功能的代码段 1 定义 def function x pass 其中 def为关键字 function 为函数名 x为形参
  • C语言基础知识--weak关键字

    目录 一 C语言弱函数定义 weak关键字 1 weak关键字简介 2 weak关键字使用示例 二 总结 一 C语言弱函数定义 weak关键字 1 weak关键字简介 使用 attribute weak 修饰函数 告诉编译器此函数为同名函数
  • 修改服务器404页面,Apache服务器404页面设置具体步骤

    在网站运营过程中 由于某些原因有时候要对网页进行删除 也就意味以后用户或者用户访问删除页面都是访问不了的 如果用户和搜索引擎访问错误页面返回值不是404的话 那么就很不友好 大大增加跳出率 404页面就是引导用户从错误的页面访问到正确的页面
  • 经典算法题收集一

    1 题目一 有 n个人围成一圈 顺序排号 从第一个人开始报数 从 1 到 3 报数 凡报到 3 的人退出圈子 问最后留下的是原来第几号的那位 其实这是一个约瑟夫环问题 这个问题最本质其实就是循环链表的问题 围成一个圈之后 报数即是循环链表的
  • Oracle小数连接字符串时开头的0不见的问题

    小数在连接成字符串的时候 如果小数的开头是0 几的话 前面的 0 会被省略掉 在excel中也有这个特点 具体是为什么不清楚 如 select 0 8 from dual 结果 8 可以用下面的方式避免 防止导致查询到的最终结果不合适 se
  • leetcode分类刷题:基于数组的双指针(四、小的移动)

    leetcode上有些题是真的太难了 正常读题之后完全想不到要用双指针来求解 本次博客总结的题目是双指针初始时位于数组两端 哪个元素小就移动哪个指针 11 盛最多水的容器 1 这道题放在42 接雨水的相似题目里 可能是因为它们都有相似的双指
  • Android 10.0系统启动之init进程-[Android取经之路]

    原文链接 https blog csdn net yiranfeng article details 103549394 摘要 init进程是linux系统中用户空间的第一个进程 进程号为1 当bootloader启动后 启动kernel
  • CTFshow 击剑杯 部分WP

    摆烂了摆烂了 太难了 聪明的师傅已经组队打起月赛了 试试能不能苟住前5 苟住了 复现的后面再补充吧 文章目录 1 Misc 中文识别带师 2 Web 简单的验证码 easyPOP 3 Pwn pwn01 My sword is ready
  • FOX算法的MPI实现

    算法描述如下 将待相乘的矩阵A和B分成p个方块Ai j和Bi j 0 j i p 1 每块大小为 n p n p 并将他们分配给 p p 个处理器 开始时处理器Pi j存放有Ai j和Bi j 并负责计算块Ci j 然后Fox算法执行以下
  • 离线强化学习(Offline RL)系列7: (状态处理) OfflineRL中的状态空间的数据增强(7种增强方案)

    Arxiv原文 S4RL Surprisingly Simple Self Supervision for Offline Reinforcement Learning in Robotics 本文是由多伦多大学 斯坦福大学和Nvidia三
  • elementUI组件修改样式 覆盖无效

    在我们使用第三方UI组件库开发时有时需要对这些组件进行一些样式修改 为了vue页面样式模块化 不对全局样式造成污染 我们往往都会加入scoped属性用来限制样式的作用域 然而这也会导致当我们修改部分ui组件样式失效 为了避免这种情况 我们常
  • 区块链系统:什么是私钥?

    在比特币中 私钥本质上就是一个256位的随机整数 我们以JavaScript为例 演示如何创建比特币私钥 在JavaScript中 内置的Number类型使用56位表示整数和浮点数 最大可表示的整数最大只有9007199254740991
  • 经典C语言面试题1:malloc 和 new的区别?

    malloc free是 C C语言的标准库函数 而new delete是C 的运算符 malloc内存分配成功返回的类型为void 需要通过强制类型转换将void 转换为我们需要的类型 new内存分配失败时会抛出bac alloc异常 不
  • 51单片机开发:通过74HC595控制LED点阵

    1 LED点阵介绍 1 LED点阵就是多个LED发光二极管的集合 在单个LED的发光原理上没有任何区别 2 上面是16x16的LED点阵 总共有16x16 256个LED灯 由32个引脚来控制 其中16个引脚是正极 posn n 1 2 1