首先介绍一下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置回初值}}
}

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

74HC595在【8x8LED点阵】中的运用相关推荐

  1. MicroPython-On-ESP8266——8x8LED点阵模块(2)使用74HC595驱动

    MicroPython-On-ESP8266--8x8LED点阵模块(2)使用74HC595驱动 1. 使用74HC595驱动的原理 1.1. 基础回顾 上篇我们学习了8x8LED点阵屏的电路基础知识 ...

  2. 实验9:8X8LED点阵(点亮一个点)

    实验9:8X8LED点阵(点亮一个点) /******************************************************************************* ...

  3. C51玩8x8LED点阵:PointGame —— 收藏数爆炸的LED小游戏

    ** 前言 ** 我借同学的光驱把光盘中的文件拷出来后,开始尝试玩一玩单片机. 目前做的比较难的是8X8Led点阵的使用,元件感觉有点多啊. 我用的是普中科技HC6800-ES V2.0的开发板,很多 ...

  4. 8x8LED点阵显示数字和汉字

    8x8LED点阵原理 当 MR 为高电平,OE 为低电平时,数据在 SHCP 上升沿进入移位寄存器,在 STCP 上升沿输出到并行端口. 74595 的数据端: QA–QH: 八位并行输出端,可以直接 ...

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

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

  6. Linux数码管和点阵程序,随笔:python turtle绘制八段数码管和共阳极8x8led点阵

    为更新而更新,为保持更新状态而更新. 给学生讲解用gpiozero库控制八段管和8x8共阳极LED点阵.已经讲解了单个LED的控制,RGB彩色灯珠的控制,在讲解八段管就很容易理解,多个八段管的讲解稍微 ...

  7. 物联网开发笔记(77)- 使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块(续)

    一.目的 这一节我们继续学习如何使用我们的ESP32开发板控制带MAX7219驱动的8x8LED点阵模.我们使用库来显示,更加方便. 二.环境 ESP32 + MAX7219驱动的8x8LED点阵模块 ...

  8. Arduino + 74HC595实现24x24点阵贪吃蛇游戏

    Arduino + 74HC595实现24x24点阵贪吃蛇游戏 简介 硬件 开发环境 接线图 软件部分 方向控制 蛇身轨迹 碰壁检测 蛇身显示 刷新食物 仿真演示 源码和原理图下载 简介 本文是基于A ...

  9. MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理

    MicroPython-On-ESP8266--8x8LED点阵模块(1)驱动原理 1. 8x8LED点阵模块介绍 1.1. 显示模块的升级 之前已经试过点亮8段数码管,并能够使用两片HC595芯片来 ...

  10. 三、51单片机用74HC595控制LED点阵

    1.LED点阵简介 1.1.什么是LED点阵 (1)外观 (2)作用 LED点阵通过LED(发光二极管)组成,以灯珠亮灭来显示文字.图片等,LED点阵显示被广泛应用于各种公共场合,如汽车报站器.广告屏 ...

最新文章

  1. Apache+php+mysql在windows下的安装与配置(图文)
  2. 39.原码、反码、补码的转换
  3. 【mysql 】sql删除重复记录 You can't specify target table '表名' for update in FROM clause
  4. arm-none-eabi-gcc install
  5. LeetCode(38): 报数
  6. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...
  7. 设计模式笔记(15)---命令模式(行为型)
  8. AC日记——丢瓶盖 洛谷 P1316
  9. 堆栈小应用(一):括号匹配程序
  10. soapui返回值类型都有哪些_小程序都有哪些类型,开发小程序效果如何
  11. ENSP安装教程【手把手教学】
  12. 常用数据分析的基本方法
  13. c语言汉字转拼音,c语言汉字转拼音函数源码
  14. 如何提高用户逃离成本
  15. 外虚内实是什么意思_俗语“五虚令人贫,五实人富贵”是什么意思?有道理吗?...
  16. 计算机网络的利与弊,网络的利与弊辩论会总结.doc
  17. Centos 6或7系统 从Kernel panic – not syncing: Attempted to kill init 故障引发的一系列操作
  18. 2022软件测试技能 APP自动化测试 Python+Appium+Uiautomator2 实战教程
  19. 数学建模之MATLAB编程
  20. undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocat

热门文章

  1. Elasticjob安装与入门
  2. 23个机器学习最佳入门项目(附源代码)
  3. vue开发App商城实战项目
  4. Vue基础1-如何创建一个vue实例
  5. 你需要启用steam社区界面功能以进行购买_STEAM播放器成了:不用买游戏就能单独购买游戏音轨...
  6. 投资理财学习笔记五,1.6那些必知的宏观经济指标(下)
  7. 深度学习----GAN(生成对抗神经网络)原理解析
  8. testbed常见问题及处理(1)
  9. matlab实现手写数字识别案例,Matlab手写数字识别
  10. 【软件工程】——项目开发计划