74HC595在【8x8LED点阵】中的运用_两片74hc595控制8*8矩阵-程序员宅基地

技术标签: 74HC595 级联  单片机  

首先介绍一下74HC595工作原理

不同厂家不同的型号的74HC595,它的符号命名会有所不同,但引脚规则是统一适用的,下面按我自己理解总结一下。

如下图:
13引脚:OE串行数据输入端使能端,低电平有效,接低电平/跳线帽接地。

11引脚:上升沿到达时(SRCLK由0变1),从最高位开始依次输出8位数据。

12引脚:RCLK为输出存储器锁存时钟线,只需记住当RCLK由0到1,即上升沿到达(产生一个正脉冲)时,进来的8位数据分别从1~7引脚输出。实现串行信号----->并行信号。

14引脚:相当于搬运工,串行数据输入;

10引脚:主复位,低电平有效,实验时将它接高电平。
在这里插入图片描述
脑字还是懵懵的?似懂非懂?那换一种通俗点的解释:
就像做冰糖葫芦,假设1串冰糖葫芦有8个枣(命名为0~7号),当11引脚上升沿到达时,拿出0号枣准备往棍子最底端串,即串行输入。

当12引脚上升沿到达时,0号枣被送往棍子下方第0个位置,14引脚代表将枣送入的那股推力(手),即搬运工的作用。

当8个枣(实验中指8位二进制数中的0和1)全部被串行输入到木棍上时。每个枣被依次串入的间隔时间就是上升沿之间的延迟,用两个_nop_();函数表示

等8个枣全部被串入时,即做完一串冰糖葫芦,传输完成,吃冰糖葫芦当然是横着吃(串转并)(有谁竖着吃…跳过此步>_>),最后一个吃到的就是第0号串入的枣,即串入的0–7号枣,对应"吃"/输出的7----0号枣。

这下应该清楚了74HC595“串入” “并出”的概念吧在这里插入图片描述
例如:点亮左上角第一个二极管:DPh高电平,P0^7低电平
在这里插入图片描述

忙里偷闲做的【8*8】点阵 “爱心”“米字图” 亲测有效
在这里插入图片描述

#include "reg51.h"    //注意这里使用“reg52.h"可能会出现重复定义错误,因为52.h中已定义过RCLK
#include<intrins.h>
typedef unsigned int u16;	 
typedef unsigned char u8;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
u8 ledduan[]={
    0x38,0x44,0x42,0x21,0x42,0x44,0x38,0x00};//每一列的7~0二极管状态
u8 ledwei[]={
    0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//第1列到第8列位选

void delay(u16 i)
{
    
	while(i--);	
}

void Hc595SendByte(u8 dat)
{
    
	u8 a;
	SRCLK=0;
	RCLK=0;
	for(a=0;a<8;a++)		//重复发送ledduan[i]中的段码,使每一列对应二极管亮
	{
    
		SER=dat>>7;			//从最高位开始发送
		dat<<=1;            //左移依次左移1位,发送次高位,


		SRCLK=1;			//0-1,上升沿到达,发送一位数据(段码中的1位二进制值)
		_nop_();            
		_nop_();            // 内置延时函数
		SRCLK=0;	        //初始化SRCLK,重回低电平,为下一个上升沿输入做准备
	}


	RCLK=1;					//RCLK从0到1,上升沿到达,输出前面接收的段码数据
	_nop_();                
	_nop_();                
	RCLK=0;                 //初始化RCLK,重回低电平,为下一个上升沿输出做准备
}

void main()
{
    			
	u8 i;
	while(1)
	{
    
		P0=0x7f;
		for(i=0;i<8;i++)
		{
    
			P0=ledwei[i];		  //位选
			Hc595SendByte(ledduan[i]);	//发送段选数据
			delay(100);		   //时间足够短,视觉暂留
			Hc595SendByte(0x00);  //消//消隐,将dat置回初值隐
		}	
	}		
}
分割线*************************************************

在这里插入图片描述

#include "reg51.h"	//注意这里使用“reg52.h"可能会出现重复定义错误,因为52.h中已定义过RCLK	
#include<intrins.h>

typedef unsigned int u16;	 
typedef unsigned char u8;

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;

u8 ledduan[]={
    0x99,0x5a,0x3c,0xff,0xff,0x3c,0x5a,0x99};//每一列的二极管状态
u8 ledwei[]={
    0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//第1列到第8列

void delay(u16 i)
{
    
	while(i--);
}

void Hc595SendByte(u8 dat)
{
    
	u8 a;
	SRCLK=0;
	RCLK=0;
	for(a=0;a<8;a++)//重复发送ledduan[i]中的段码,使每一列对应二极管亮
	{
    
		
		SER=dat>>7;       //从最高位开始发送
		dat<<=1;          //左移依次左移1位,发送次高位,
		
		SRCLK=1;          //0-1,上升沿到达,发送一位数据(段码中的1位二进制值)
		_nop_();
		_nop_();          // 内置延时函数
		SRCLK=0;          //初始化SRCLK,重回低电平,为下一个上升沿输入做准备
	}
		RCLK=1;			  //RCLK从0到1,上升沿到达,输出前面接收的段码数据
		_nop_();
		_nop_();
		RCLK=0;           //初始化RCLK,重回低电平,为下一个上升沿输出做准备
}

void main()
{
    
	
	u8 i;
	while(1)
	{
    
		
		for(i=0;i<8;i++)
		{
    
			P0=ledwei[i];
			Hc595SendByte(ledduan[i]);
			delay(200);          //时间足够短,则图像看起来就是一个完整的图案
			Hc595SendByte(0x00);//消隐,将dat置回初值
		}
	}
}

若发现错误,欢迎指出,共同进步,谢谢!

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

智能推荐

洛谷——P1075 [NOIP2012 普及组] 质因数分解_【noip2012普及组】质因数分解c++-程序员宅基地

文章浏览阅读480次。P1075 [NOIP2012 普及组] 质因数分解题目描述已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。输入格式一个正整数nn。输出格式一个正整数pp,即较大的那个质数。输入输出样例输入 #1复制21输出 #1复制7java:package com.kk.luogu;import java.util.Scanner;//P1075 [NOIP2012 普及组] 质因数分解public class P1075 { public stati_【noip2012普及组】质因数分解c++

基于PysimpleGUI+pymysql建立的简单管理系统(6)—查找功能_pysimplegui 管理系统-程序员宅基地

文章浏览阅读116次。基于PysimpleGUI+pymysql建立的简单管理系统(6)_pysimplegui 管理系统

Java工作流详解(附6大工作流框架对比)-程序员宅基地

文章浏览阅读1.4w次,点赞7次,收藏58次。Jflow是一个国产的开源工作流引擎,与业务场景结合紧密,再带表单引擎,数据表较多,中文概念较多,可配置型性强,支持作为中间件模式的集成。配置点集中在,节点属性,流程属性,方向条件。概念名词比较清晰,文档全面。有qq群技术支持。流程设计器界面干净,从节点类型分类,分流,合流,分合流,子线程等等。表单与流程完美结合,与其它几款流程引擎设计理念不同。Jflow更适用,贴近用户操作。表单引擎中的精华是审核组件,满足国内审批要求的需求,退回,分合流审核,会签,并行处理,队列处理,概念清晰,容易理解。_工作流

TFRecord格式数据读取+划分训练集、验证集和测试集_如何从tfrecord拆出一个小数据集-程序员宅基地

文章浏览阅读1.3k次。可以参考深度学习笔记:在小数据集上从头训练卷积神经网络_笨牛慢耕的博客-程序员宅基地_小数据集训练ImageDataGenerator.flow_from_directory可以提取TFrecord数据格式。image_dataset_from_directory是更古老的东西也能作为TFrecord数据提取的工具,但是提取的是整个文件夹中的文件数据集,如果想要划分为训练集和验证集,可以尝试使flow_from_directory。示例如下:#使用原模块,subset参数.._如何从tfrecord拆出一个小数据集

程序猿头头(js数组reverse,sort,concat,slice, splice)_splice/sort/reverse js-程序员宅基地

文章浏览阅读274次。reversereverse不是排序方法,它只是数组颠倒方法,可以将数组的顺序颠倒过来。// 书中的例子,只是作为反向排序讲解,不够全面let values = [1, 2, 3, 4, 5]; values.reverse();console.log(values); // [5,4,3,2,1]let numbers = [5,1,2,6,3];numbers.reverse();console.log(numbers); // [3, 6, 2, 1, 5]let chars =_splice/sort/reverse js

制作交叉编译工具链的方法总结(详细)_make[1]: *** [makefile:215: csu/subdir_lib] error -程序员宅基地

文章浏览阅读7.4k次,点赞3次,收藏11次。 网上这类文章比较多,但是都不是很具体,刚好有门课结课论文要写这个,所以就总结了一下。以下的过程都是在ubuntu7.10上实际运行过的。第一次在csdn上写文章。写的不好还请见谅。

随便推点

Android 自定义FloatView实现悬浮视图_android floatview-程序员宅基地

文章浏览阅读6.3k次,点赞2次,收藏9次。 前言:自定义FlaotView不需要任何权限,继承FrameLayout,通过WindowManager实现悬浮。资源文件:drawable、drawable-hdpi、layout菜单背景(menu_bg.xml):&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;selector ="http://s..._android floatview

python plt.subplot_Python Matplotlib subplot函数详解:创建子图-程序员宅基地

文章浏览阅读1.7k次。使用 Matplotlib 除可以生成包含多条折线的复式折线图之外,它还允许在一张数据图上包含多个子图。调用 subplot() 函数可以创建一个子图,然后程序就可以在子图上进行绘制。subplot(nrows, ncols, index, **kwargs) 函数的 nrows 参数指定将数据图区域分成多少行;ncols 参数指定将数据图区域分成多少列;index 参数指定获取第几个区域。sub..._python plt.subplot

关于QT调试操作步骤_qtcreator 如何debug-程序员宅基地

文章浏览阅读2.6k次。关于QT调试操作步骤 1.首先,用QtCreator打开Qt工程,然后点击左下角的电脑图标,再在弹出的菜单中选择“Debug”。 **2.接下来,在需要进行调试的代码部分设下断点。设断点的方法是在要设断点的代码行前的空白处点击鼠标。****3.如果想清除断点,则在该断点上再点击一下即可清除。**..._qtcreator 如何debug

什么是BIOS?为什么开机先从BIOS开始?以及操作系统启动过程-程序员宅基地

文章浏览阅读1.1w次,点赞9次,收藏67次。1、什么是BIOS?BIOS是英文bai"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个daoROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。有人认为既然BIOS是"程序",那它就应该是属于软件,感觉就像自己常用的Word或Excel。但也很多人不这么认为,因为它与一般的软件还是有一些区别_bios

Git 命令大全 && 常用的 35 个 Git 命令_git基本操作命令-程序员宅基地

文章浏览阅读1.2w次,点赞7次,收藏88次。add远程仓库: git remote add origin [email protected]:zhang/vue_shop.gitgit push推送到远程仓库: git push -u origin master 并以master 分支保存git status 检查项目状态 > git add . 添加所有文件到暂存区 > git commit –m “描述” 在本地提交 > git push 上传 > git pull 拉取远程代码 > git reset 回退..._git基本操作命令

2579页阿里P8Android学习笔记在互联网上火了,完整版开放下载(1)-程序员宅基地

文章浏览阅读735次,点赞23次,收藏14次。有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!后有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊![外链图片转存中…(img-65Xx6NTa-1712987646672)]

推荐文章

热门文章

相关标签