1 介绍

1.1 74HC595芯片简述

  74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SER输入到内部的8位位移缓存器,并由QA~QH'输出,而并行输出则是在SCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。

芯片主要功能多用为:扩展端口,减小单片机芯片端口的压力。

2 功能要求:通过 74HC595 模块控制 LED 点阵以一行循环滚动显示。

3 硬件设计:

3.1 系统框图

3.2 74HC595原理图和LED8x8原理图

4 软件设计

 1 #include "reg52.h"
2
3 typedef unsigned int u16; //取值范围0-65535
4 typedef unsigned char u8; //取值范围0-255
5
6 //定义74HC595控制管脚,采用SPI通信
7 sbit SH_CP = P3^6; //移位寄存器时钟输入
8 sbit ST_CP = P3^5; //存储寄存器时钟输入
9 sbit DS = P3^4; //串行数据输入
10 // OE = 0; //输出使能控制端,低电平有效
11
12 #define LED8X8_COL_PORT P0 //LED点阵列控制端口
13 u8 ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //显示条纹设置
14
15 //延时函数,ten_us=1时,大约延时10us
16 void delay_10us(u16 ten_us)
17 {
18 while(ten_us--);
19 }
20
21 //延时函数,ms=1时,大约延时1ms
22 void delay_ms(u16 ms)
23 {
24 u16 i,j;
25 for(i=ms;i>0;i--)
26 {
27 for(j=110;j>0;j--);
28 }
29 }
30
31 void hc595_wr(u8 dat)
32 {
33 u8 i=0;
34 for(i=0;i<8;i++) //循环8次即可将一个字节写入寄存器中
35 {
36 DS=dat>>7; //优先传输一个字节中的高位,先传高位
37 dat=dat<<1; //将低位移动到高位
38 SH_CP=0;
39 delay_10us(1);
40 SH_CP=1;
41 delay_10us(1);//移位寄存器在时钟SH_CP上升沿将端口数据送入寄存器中
42 }
43 ST_CP=0;
44 delay_10us(1);
45 ST_CP=1; //存储寄存器在时钟ST_CP上升沿将前面写入到寄存器的数据输出
46 }
47
48 void main()
49 {
50 u8 i=0;
51 LED8X8_COL_PORT=0x00;
52 while(1)
53 {
54 for(i=0;i<8;i++)
55 {
56 hc595_wr(0x00); //消除前面寄存器缓存数据
57 hc595_wr(ghc595_buf[i]); //写入新的数据
58 delay_ms(500); //延时500ms
59 }
60 }
61 }

led8x8_74hc595.c

5 实验现象

  8*8LED点阵以一行循环滚动显示。

参考资料

(1)(79条消息) 【单片机基础篇】74HC595芯片详解_liangmaoxuan的专栏-CSDN博客_595芯片

(2)74hc595的主要功能(74hc595引脚图及功能_工作原理及电压_典型应用电路) - 电子常识 - 电子发烧友网 (elecfans.com)

IO扩展(74HC595)_单片机_普中的更多相关文章

  1. 宏定义中的##操作符和... and _ _VA_ARGS_ _

    1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used i ...

  2. C#中的流_字节_字符_字符串之间的相互转换

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  3. HashTable集合和练习题_计算一个字符串中每一个字符出现的次数

    HashTable集合 /** * java.util.Hashtable<K,V>集合 implement Map<K,V>接口 * Hashtable:底层也是一个哈希表, ...

  4. OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图

    读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ...

  5. c语言中的# ## 可变参数宏 ...和_ _VA_ARGS_ _

    1.#假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串.例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字 ...

  6. 直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章

    直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章_e-works数字化企业网 http://articles.e-works.net.cn/Component/Article ...

  7. CentOS7中_带sqlite3_CGO的golang程序_交叉编译到arm中

    CentOS7中_带sqlite3_CGO的golang程序_交叉编译到arm中 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-10-28. 编写了个golang程序,用到了这个C ...

  8. cc38b_demo_C++_异常_(2)txwtech在异常中使用虚函数-多态

    //cc38b_demo,21days_C++_异常_(2)txwtech20200121在异常中使用虚函数-多态 //--异常层次结构//*异常的类-创建自己的异常类//*异常派生-就是继承//*异 ...

  9. Hash table集合-练习_计算一个字符串中每个字符出现次数

    Hash table集合 java.util.Hashtable<K,V>集合implements Map<K,V>接口Hashtable:底层也是一个哈希表,是一个线程安全的 ...

  10. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

随机推荐

  1. 通过 AWS CLI 操作 AWS S3

    AWS S3后台提供了上传文件的地方,但是大文件上传比较慢--- 几十kb/s.使用AWS CLI上传文件相对较快 1:安装CLI (这里环境是 Windows) 参考官方文档 :https://do ...

  2. Http 中所有的 data 中base64 类型

    https://blog.csdn.net/webxiaoma/article/details/70053444 一.我们在看代码时经常在img或css背景图片中看到: src="data: ...

  3. vs minmax冲突

    简介 RT 参考链接 https://blog.csdn.net/danelumax2/article/details/9172465 预处理器设置 项目属性 --> C/C++ --> ...

  4. angular虚拟滚动

    方案:采用cdk-virtual-scroll-viewport和ng-zorro的Timeline时间轴组件结合 方案2: 监听overflow元素scroll事件 onScroll(event) ...

  5. Product-Marketing-Online: 在线营销: 如何优化 Amazon的 广告投放 以提高 ROI(投资产出滤)?

    如何优化亚马逊广告以提高ROI? 2025-01-06 10:07 在竞争激烈的Amazon.com亚马逊市场,优化广告以提高ROI是商家的关键任务. 以下是一些实用的策略: 一.精准的关键词研究与选 ...

  6. flink 1.11.2 学习笔记(5)-lambda表达式的使用问题

    flink的api,提供了流畅的链式编程写法,写起来行云流水,感受一下: SingleOutputStreamOperator<Tuple3<String, Integer, String ...

  7. GStreamer开发笔记(九):gst-rtcp-server安装和部署实现简单的rtsp-server服务器推流Demo

    前言   Gstreamer还有一个重要的功能就是充当rtsp流媒体服务器.   注意   本ubuntu是虚拟机,对延迟可能影响较大,延迟可作为参考,物理机可能更快.   Demo      RTP ...

  8. 进阶篇:3.2.5)DFM钣金-常见装配和成形结构

    本章目的:了解钣金件常见装配和成型的结构 1.钣金件装配 钣金件的装配方式非常多,而钣金件广泛应用于各种行业中,各自行业具有各自行业常用的装配方式,以下将介绍在电子电器等行业广泛应用的钣金件装配方式. ...

  9. Unity 随机生成道路-最小生成树

    要使用Prim算法来确保生成的 Cube 之间不会有孤岛,你需要按照以下步骤进行实现: 1. 创建一个数据结构来表示 Cube,包括位置信息和是否已经被连接的状态.2. 初始化一个空列表(或优先队列) ...

  10. web图片怎么导入ps?这个方法给你轻松解决!

    随着WebP格式图片因其体积小.加载快的优势在网站中日益普及,对于图片编辑者来说,能够直接在Photoshop中打开和编辑WebP文件变得尤为重要. WebPShop插件应运而生,它是一个专为Phot ...