74HC595芯片——单芯片控制代码示例

2023-10-30

1.关于74HC595

                                                                      

                         

                 芯片示意图                                                                  TSSOP封装

引脚说明

符号

引脚

描述

Q0--Q7

第15脚,第1-7脚

8位并行数据输出

GND

第8脚

Q7’

第9脚

串行数据输出

/MR

第10脚

主复位(低电平有效)

SH_CP

第11脚

数据输入时钟线

ST_CP

第12脚

输出存储器锁存时钟线

/OE

第13脚

输出有效(低电平有效)

DS

第14脚

串行数据输入

VCC

第16脚

电源

2.关于此芯片具体原理参考:

快速上手移位寄存器74HC595,并使用ATTiny13A的三个IO口驱动数码管【IC原来如此】 

3.代码示例

       关于芯片,我们关注的是SH、ST、DS引脚。所以代码主要从从这3个引脚的控制入手。

代码流程:一个字节(8个位)的数据写入BUFF数组→将数组的数据写入芯片缓存区→全部写入后发送到引脚→将BUFF数组全部清零→循环上述步骤

/*    编程平台:keil 5
      编程芯片:STC15W204S (89C51同样适用) 
*/

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;

sbit ST=P3^0;     //引脚映射
sbit SH=P3^1;
sbit DS=P3^2 ;

#define SH_L SH=0  //宏定义引脚高低电平
#define SH_H SH=1
#define ST_L ST=0
#define ST_H ST=1
#define DS_L DS=0
#define DS_H DS=1
/*ST_L  为ST引脚电平置低  
  ST_H  为ST引脚电平置高,DS_L/DS_L/SH_L/SH_H 同理  */

u8 BUFF[8] = {0};  //用于缓存发送数据的数组,一个595芯片一次可发送8个位

void Delay(u16 num);
void HC595_Init();
void HC595_Clear();
void HC595_control(u8 A);
void HC595_Sent(u8 BUFF[8]);
void DS_H_Sent();
void DS_L_Sent();



void Delay(u16 num)  //ms延时   @晶振35M
{
    unsigned char k, j;
    u16 n;
    for (n = 0; n < num; n++)
    {        
        k = 33;
        j = 66;
        do
        {
            while (--j)
                ;
        } while (--k);
    }
}

void HC595_Init()  //ST引脚一个上升沿将数据发送到引脚上,初始化将ST引脚模拟一个上升沿,                                   
                   //将原有数据发送出去  
{
    ST_L;            //ST引脚拉低
    Delay(10);    
    ST_H;             //ST引脚拉高,完成一个上升沿操作
    Delay(10);
    ST_L;            //之后将3个引脚全部拉低
    SH_L;
    DS_L;
    Delay(10);
}
void HC595_Clear()  //BUFF数组全部位清零
{
    u8 k;
    for (k = 0; k < 8; k++)
    {
        BUFF[k] = 0;
    }
}
void HC595_control(u8 A)    //将要发送的数据写入BUFF数组
{


    for (i = 0; i < 8; i++) 
    {
        if (A & 0x80)             //0X80==1000 0000  数据最高位和1相与
            BUFF[i] =1;           //最高位是1则写1进BUFF数组,若为0,因BUFF数组
                                  //本身开始时全部置零,故不用处理

        A <<= 1;                   //数据左移一位
    }
                                   //整个for循环完成了一个8位数据从高位到低位写入BUFF数组
  HC595_Sent(BUFF);                // 该函数如下↓↓↓
}


void HC595_Sent(u8 BUFF[8])   //将BUFF数组的数据写入芯片缓存区,发送完8位后,ST引脚完成一次上 
                              //升沿操作,将芯片内部缓存区的数据发送到对应引脚上面
{
    for (i = 0; i < 8; i++)
    {
        if (BUFF[7 - i] == 1)       
             DS_H_Sent( );
        else DS_L_Sent( ); 
    }

    ST_L;                //ST引脚的上升沿操作
    Delay(1);
    ST_H;
   HC595_Clear();       //完成一个字节数据发送后将BUFF数组清零
}
//以下2个函数完成了将数据发送到缓存区的操作
//数据位为1,则DS置1,然后SH引脚完成一个上升沿操作即可将数据位发送到内部缓存区
void DS_H_Sent()
{
    DS_H;
    SH_L;
    Delay(1);
    SH_H;
}
//数据位为0,则DS置0,然后SH引脚完成一个上升沿操作即可将数据位发送到内部缓存区
void DS_L_Sent()
{
    DS_L;
    SH_L;
    Delay(1);
    SH_H;
}


void main()
{
  HC595_Init() ;
  HC595_control(0x30);
}



注:上述代码需自行整理可用

调用函数HC595_control(u8 A)  即可完成芯片的控制

语句  HC595_control(0x30);达成的效果   

CH595引脚对应电平
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
0 0 1 1 0 0 0 0

可见,与0X30二进制展开  0b 0011 000 一一对应

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

74HC595芯片——单芯片控制代码示例 的相关文章

  • 公司自建机房IDC还是选择云服务器?以腾讯云为例

    大企业是选择自购服务器自建机房还是使用腾讯云服务器 都说企业上云是趋势 自建机房是一次性支出 上云租赁云服务器等产品需要年年续费 大型企业有必要把数据中心迁移上云吗 腾讯云服务器网想说 自建机房购买服务器等硬件并不是一次性支出 后续人工成本
  • 如何确定一个期刊是不是EI?

    去爱思唯尔官网下载最新的目录 网址 https www elsevier com solutions engineering village content compendex 打开EXCEL查看 SERIALS就是罗列出的所有的EI期刊和
  • 应急响应基础(三)——Windows日志分析

    Windows日志分析 一 Windows事件日志简介 1 Windows事件日志 Windows系统日志是记录系统中硬件 软件和系统问题的信息 同时还可以监视系统中发生的事件 用户可以通过它来检查错误发生的原因 或者寻找受到攻击时攻击者留

随机推荐

  • 拒绝“割韭菜”— 谈谈区块链正经的商用场景!

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 作者 林喜东 腾讯云高级工程师 最近区块链有多火 已经无需过多阐述 无论你是主动了解 还是被比特币 加密猫 3点钟无眠区块链等刷屏 相信区块链概念已经在多数人心中萌芽 但区块链这么火
  • ndvi计算公式_NDVI时间序列分析原理与实现(CV和Sen+MK趋势分析)

    NDVI时间序列分析原理与实现 CV和Sen MK趋势分析 总结两种常用的NDVI时间序列栅格分析方法 变异系数和Sen MK趋势分析 简单介绍原理和实现代码 实验数据均为年际变化数据 在CV中使用的是多波段ENVI数据 Sen MK趋势分
  • 《从Paxos到ZooKeeper》读书笔记之第一章(一)

    从Paxos到ZooKeeper 读书笔记之第一章 一 开始读 从Paxos到ZooKeeper 这本书 以了解和使用ZooKeeper 这里会记录一些随笔画下来的自以为的重点 自己理解和代码块 第一章 分布式结构 1 1 从集中式到分布式
  • springboot 启动后,调用接口时报错404问题汇总(层层推进、超全面)

    确保项目启动成功 看到这条日志才能判定项目是启动成功的 确保controller类被成功注册到了springboot容器中 首先 按springboot的类扫描规则来说 启动类和被扫描的组件类应该要在同一包下的 验证策略 从springbo
  • 联调QuartersII + ModelSim(下载安装)

    目录 1 ModelSim安装 1 之前埋得坑 2 如果额外装完整版的ModelSim 我还是推荐按照这个博客的步骤就好 安装文件我已经在上一篇博客一起给大家了 3 存在的问题 一定要管理员模式使用软件 2 联调QuartersII Mod
  • Mysql(数据库基础篇)

    棒棒有言 也许我一直照着别人的方向飞 可是这次 我想要用我的方式飞翔一次 人生 既要淡 又要有味 凡事不必太在意 一切随缘 缘深多聚聚 缘浅随它去 凡事看淡点看开些 顺其自然 无意于得 就无所谓失 人生 看轻看淡多少 痛苦就远离你多少 本章
  • MATLAB&机器学习进阶

    本文借鉴了数学建模清风老师的课件与思路 可以点击查看链接查看清风老师视频讲解 清风数学建模 https www bilibili com video BV1DW411s7wi 目录 一 K最近邻 KNN 二 决策树 三 支持向量机 四 集成
  • 喜欢就争取,得到就珍惜,错过就忘记—dbGet(二)

    通过前面一篇对dbGet基本用法的介绍 大家应该对它有一定了解了吧 那接来下 我们就要学习一下进阶的dbGet用法了 dbGet是由它基本的语法加上各种object的attribute的组合构成的 大家在熟悉基本语法之后 就应该去学习各个o
  • OpenThread is an Open Source Implementation of Thread IoT Networking Protocol

    本文转载至 http www cnx software com 2016 05 12 openthread is an open source implementation of thread iot networking protocol
  • zabbix邮件报警配置

    前言 Zabbix监控服务端 客户端都已经部署完成 被监控主机已经添加 Zabiix监控运行正常 在Zabbix服务端设置邮件报警 当被监控主机宕机或者达到触发器预设值时 会自动发送报警邮件到指定邮箱 邮件服务可以使用系统自带的邮件服务来发
  • linuxrpm命令卸载python_Linux RPM包安装、卸载、升级命令讲解

    一个 RPM 包包含了已压缩的软件文件集以及该软件的内容信息 通常表现为以 rpm 扩展名结尾的文件 例如 samba rpm 如果需要对RPM包进行操作则需要使用rpm命令 一 RPM包的来源 所有RPM包都在系统光盘的Packages目
  • coco数据集80个分类是哪些_目标分类定位,实时速度检测...目标检测5大挑战与解决方案...

    图像分类是指计算机根据图像内容对图像进行分类或分配标签 通常只需利用预先训练好的神经网络 对最后几个吞吐量层进行微调 然后就可以看到很好的结果 然而 仅在几年前 对图像中的单个目标进行分类和查找未知数量是极其困难的 现在 这项被称为目标检测
  • HTML 标签

    定义和用法 声明必须是 HTML 文档的第一行 位于 标签之前 声明不是 HTML 标签 它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令 在 HTML 4 01 中 声明引用 DTD 因为 HTML 4 01 基于
  • uinapp和php实现RSA + AES 双向通信加密

    使用场景 如果只是为了防止用户数据泄露 有条件用https 那不要犹豫 赶快买个证书 但是https也有局限性 加密层位于http层 应用层 和tcp层 传输层 之间 所以抓到的http层的数据并没有加密 单独加密的弊端 单独用RSA非对称
  • QT5.12.3+OPENCV4.2.0配置,MINGW编译与库文件调用

    目录 1 QT5 12 3 OPENCV4 2 0 2 准备工作 3 安装步骤 3 1 QT 3 2 CMAKE 3 3 OPENCV 4 使用MINGW编译OPENCV 5 QT调用库文件 6 QT测试OPENCV 1 QT5 12 3
  • PyTorch简介及环境搭建

    本文主要包含PyTorch的基本介绍 以及安装方法 文章目录 前言 PyTorch简介 PyTorch作用 对比PyTorch和Tensorflow PyTorch大版本的主要更新 PyTorch总结 PyTorch环境搭建 安装PyTor
  • python基础总结:1.9、错误和异常

    python基础总结 1 9 错误和异常 文章目录 python基础总结 1 9 错误和异常 1 语法错误 2 异常 3 处理异常 4 抛出异常 5 用户自定义异常 6 定义清理操作 7 预定义的清理操作 到目前为止 我们还没有提到错误消息
  • zabbix3.4.2使用discovery对磁盘IO进行监控

    https blog csdn net m0 37814112 article details 80997967
  • c++ 代码

    js 调用c 代码给的接口 c 代码储存在exe和dll文件中 转载于 https www cnblogs com guomengkai p 11502475 html
  • 74HC595芯片——单芯片控制代码示例

    1 关于74HC595 芯片示意图 TSSOP封装 引脚说明 符号 引脚 描述 Q0 Q7 第15脚 第1 7脚 8位并行数据输出 GND 第8脚 地 Q7 第9脚 串行数据输出 MR 第10脚 主复位 低电平有效