08:LED点阵

LED点阵

  • 1、什么是LED点阵
  • 2、如何驱动LED点整
  • 3、原理图分析
  • 4、74HC595的接法分析
  • 5、74HC595芯片分析
  • 6、编程实践(全屏点亮)

1、什么是LED点阵

在这里插入图片描述
如图为16x16的LED点阵,每一个点里面都有一个LED灯

在这里插入图片描述

上图为一个8x8点阵LED原理图(横向为正极,纵向为负极);点阵的优势就是8+8个IO口独立控制8*8个LED亮灭。

2、如何驱动LED点整

(1)单片机端口直接驱动:
要驱动8x8的点阵需要2个IO端口(16个IO口)、要驱动16x16的点阵需要4个IO端口(32个IO口)。
(2)使用串转并移位锁存器(74HC595)驱动:
在这里插入图片描述
从SER端口串行输入一个8位二进制,然后通过QA~QH并行输出(同时输出)。
所以要驱动16x16点阵只需要4个74HC495和4个IO口。但是实际上只需要3个IO口即可(数据口、SCLK、RCLK),因为595里面还有一个QH’端口(串行输出口),这样就可以把4个595 级联起来。

3、原理图分析

在这里插入图片描述

如图每一个8x8的点整都有POS和NEG;
(1)POS就是Positive正极,NEG是negetive负极。
由图得:图中2个74HC595(CD,下面为C,上面为D)的输出端口都接NEG1~16负极。那么正极如何接喃?

在这里插入图片描述

4、74HC595的接法分析

所以J17端口(POS1~8)正极连接到P595A,J18端口连接P595B。连接如下图:

在这里插入图片描述

(1)QA-QH8路并行输出接到点阵的一个端口
(2)QH’串行输出口接下一个74HC595的串行输入SER(串联顺序按照ABCD)
(3)SER串行输入接:第一个595的SER通过跳线帽JP595接P3.4,后面的每一个SER接前一个的QH’。这样就构成了ABCD4个595芯片依次串联。所以将来编程时整个4个74HC595的串行数据都是从P3.4出来的(一共由32位)。
(4)SCLK (SRCLK)接P3.6
(5)RCLK接P3.5
总结:
(1)SCLK和RCLK是一样的接法,都在接在P3.5和P3.6上。
(2)总共涉及到的IO口有3个:P3.4、P3.5、P3.6
(3外部接线重点:2个8片杜邦线+1个跳线帽

5、74HC595芯片分析

(1)芯片与芯片之间的通信,都是按照一定的时序进行的。
(2)时序就是芯片与芯片之间的通信引脚上电平变化以时间轴为参考的变化顺序
(3)时序是通信双方事先定义好的,通信的发送方必须按照时序来发送有意义的信息,通信的接收放按照时序去接收解析发送方发来的电平变化信息,然后就知道发送方要给我发送什么东西了。
(4)我们编程时:发送方是单片机,接收方是74HC595。因为595芯片本身是不能编程的,他的时序芯片出厂时已经设定好了。因此我们单片机必须迁就595芯片,按照595芯片的时序来给他发信息。
(5)所以我们要先搞清楚74HC595的时序规则。595的芯片手册上就有它的时序描述(时序图),参考描述就可以明白595芯片的时序规则,然后将其用编程语言表述出来就是程序了。
(6)74HC595的时序关键是:SCLK和RCLK。SCLK是移位时钟,595芯片内部在每个SCLK的上升沿会对SER引脚进行一次采样输入,就向595内部输入了1位,如此循环8次就输入了8位二进制。RCLK是锁存时钟,QA-QH的8位并行输出信号在RCLK的上升沿进行一次锁存更新。

【注】小知识
sbit定义位变量
(1)之前编程都是直接操作一个IO端口,可以用端口名(P0、P1)来整体操作一个IO端口中的8个引脚。但是这种方法不能操控单独1个IO口。
(2)今天编程需要单独操作1个IO引脚,譬如要操作P3.4,但是直接写P3.4的话语言是不认识的,而必须使用sbit关键字来定义一个引脚。

sbit SER =P3^4 ;

6、编程实践(全屏点亮)

#include <REGX51.H>sbit SER =  P3^4; //定义输入端
sbit RCLK = P3^5; //锁存时钟
sbit SCLK = P3^6; //移位时钟void main (void)
{unsigned char i,d1,d2,d3,d4;d1 = 0;d2 = 0;d3 = 0XFF;//全为高电平d4 = 0XFF;//全为高电平RCLK = 0;SCLK = 0;for(i=0 ;i<=7 ;i++){SER = d1 >> 7; //将d1的最高位赋值给SERSCLK = 0;SCLK = 1; //对SER引脚进行一次采样d1 = d1 << 1; //将d1的次高位移到最高位}//至此已经在8个SCLK上升沿把dl的8位依次全部发出去了//但是还没有进行锁存,所以QA-QH还没东西for(i=0 ;i<=7 ;i++){SER = d2 >> 7;SCLK = 0;SCLK = 1;d2 = d2 << 1;}//至此已经把d1和d2都发出去了,并且d1已经被d2挤到第2个595芯片里面去了for(i=0 ;i<=7 ;i++){SER = d3 >> 7;SCLK = 0;SCLK = 1;d3 = d3 << 1;}//至此已经把d1、d2、d3都发出去了,并且d1已经被d2、d3挤到第3个595芯片里面去了for(i=0 ;i<=7 ;i++){SER = d4 >> 7;SCLK = 0;SCLK = 1;d4 = d4 << 1;}//至此已经把d1、d2、d3、d4都发出去了,并且d1已经被d2、d3、d4挤到第4个595芯片里面去了RCLK = 0;RCLK = 1; //进行锁存,全部并行同一时间输出//按照我们写的程序,d1和d2是负极,d3和d4是正极。}

结果展示:

在这里插入图片描述
利用函数进行代码改进:

#include <REGX51.H>sbit SER =  P3^4; //定义输入端
sbit RCLK = P3^5; //锁存时钟
sbit SCLK = P3^6; //移位时钟void shixu (unsigned char d)
{unsigned char i;for(i=0 ;i<=7 ;i++){SER = d >> 7; //将d的最高位赋值给SERSCLK = 0;SCLK = 1; //对SER引脚进行一次采样d = d << 1; //将d的次高位移到最高位}
}
//时序代码void main (void)
{unsigned char d1,d2,d3,d4;d1 = 0;d2 = 0;d3 = 0XFF;d4 = 0XFF;RCLK = 0;SCLK = 0;shixu(d1);shixu(d2);shixu(d3);shixu(d4);	RCLK = 0;RCLK = 1; //进行锁存,全部并行同一时间输出//按照我们写的程序,d1和d2是负极,d3和d4是正极。}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/453324.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(一)

原文&#xff1a;Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 前言 机器学习海啸 2006 年&#xff0c;Geoffrey Hinton 等人发表了一篇论文&#xff0c;展示了如何训练一个能够以最先进的精度…

CodeFuse成功支持通义千问算法大赛,评测方案已开源

前段时间&#xff0c; 首届通义千问AI挑战赛成功举办&#xff0c;CodeFuse 为大赛提供技术支持&#xff0c;模型微调框架 MFTCoder 和 CodeFuseEval 评测框架为大赛保驾护航&#xff0c;助力大赛圆满完成。我们基于leetcode 阿里和蚂蚁最新面试题库建设了“模型赛马”在线打榜的…

【GAMES101】Lecture 15 全局光照

本节继承上一节的难度并继续加深&#xff0c;讲这个BRDF&#xff0c;然后理解反射方程和渲染方程&#xff0c;最终实现全局光照&#xff0c;以下内容很抽象……如果想要深入理解建议到隔壁基于物理着色&#xff1a;BRDF - 知乎 (zhihu.com)或者多看几遍视频&#xff0c;我也是回…

VScode+PlatformIO 物联网Iot开发平台环境搭建

1.vscode &#xff08;1&#xff09;安装platformIO插件 &#xff08;2&#xff09;新建项目或导入已有的arduino项目 Name&#xff1a;需要填写你项目的名称&#xff1b; Board&#xff1a;点开是一个下拉框&#xff0c;但是可以输入你想要的开发板&#xff0c;这里选择&quo…

华为配置OSPF与BFD联动示例

配置OSPF与BFD联动示例 组网图形 图1 配置OSPF与BFD联动组网图 OSPF与BFD联动简介配置注意事项组网需求配置思路操作步骤配置文件 OSPF与BFD联动简介 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种用于检测转发引擎之间通信故障的检测…

什么是前端工程化,请举例说明

前端工程化 前端工程化的定义为什么需要前端工程化前端工程化的核心概念 模块化开发&#xff1a;组件化开发&#xff1a;规范化开发&#xff1a;自动化开发&#xff1a;持续集成 前端工程化的主要工具前端工程化的应用总结&#xff1a; 前端工程化 前端工程化的定义 前端工程…

本地缓存Ehcache的应用实践 | 京东云技术团队

java本地缓存包含多个框架&#xff0c;其中常用的包括&#xff1a;Caffeine、Guava Cache和Ehcache&#xff0c; 其中Caffeine号称本地缓存之王&#xff0c;也是近年来被众多程序员推崇的缓存框架&#xff0c;同时也是SpringBoot内置的本地缓存实现。但是除了Caffeine之外&…

MySQL操作问题汇总

MySQL操作问题汇总 1.无法远程连接Ubuntu的MySQL2.ubuntu忘记mysql的root密码时的操作 1.无法远程连接Ubuntu的MySQL (1) 需要检查防火墙状态 > sudo ufw status #如果防火墙开启的情况&#xff0c;添加规则&#xff1a;允许3306端口开启 > sudo ufw allow 3306 (2) 需要…

3D DRAM引领存储变革,重塑智能时代计算格局

3D DRAM作为一种应对DRAM技术挑战的解决方案&#xff0c;正逐渐被视为未来内存市场的关键发展方向。与3D NAND类似&#xff0c;3D DRAM采用了立体堆叠技术来突破传统二维平面架构的局限。 在传统DRAM中&#xff0c;存储单元由一个晶体管和一个电容器组成&#xff0c;晶体管负责…

XCTF:3-1[WriteUP]

从题目中获取文件 使用file命令查看文件类型 修改后缀为.rar后进行解压缩 再次使用file命令查询该文件的类型 再次修改后缀为.pcap或者.pcapng 使用wireshark打开&#xff0c;直接搜索flag字样 在多个数据包里发现了flag.rar、flag.txt等文件 尝试使用http导出文件 有一个fl…

《Python 网络爬虫简易速速上手小册》第2章:网络爬虫准备工作(2024 最新版)

文章目录 2.1 选择合适的爬虫工具和库2.1.1 重点基础知识讲解2.1.2 重点案例&#xff1a;使用 Scrapy 抓取电商网站2.1.3 拓展案例 1&#xff1a;使用 Requests 和 BeautifulSoup 抓取博客文章2.1.4 拓展案例 2&#xff1a;使用 Selenium 抓取动态内容 2.2 设置开发环境2.2.1 重…

C语言小游戏:贪吃蛇(游戏开发的环境和功能介绍)

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载&#xff0c;请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主&#xff0c;代码兴国&#xff01;❤❤❤ 生命不停&#xff0c;学习不止。铁汁们&#xff0c;我是大伟&#xff0c;欢迎来到大伟的游戏时间&#xff0c…