本篇文章主要是讲解如何简单示用74HC595,更具体的讲解请移步

https://www.cnblogs.com/lulipro/p/5067835.html#undefined

这篇文章讲解的更加详细.

/**************************************************************************************/

在开始前要预习的一些东西

595里面有2个8位寄存器:移位寄存器SRCLK、存储寄存器RCLK;

SER:串行输入口;

先放一张原理图.

在图中我们可以看到三个管脚

P43-SRCLK;

P54-RCLK;

P40-SER;

工作路径是SER->SRCLK->RCLK;

下面简单演示下如何在右起第二个数码管显示2.

/*段码*/

unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

/*位码*/
unsigned char code T_COM[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

sbit P_SRCLK=P4^3;//移动寄存器
sbit P_RCLK=P5^4;//存储寄存器
sbit P_SER=P4^0;//串行输入口

//我们首先定义一个函数

void Sent595_in(unsigned char dat){
unsigned int i=1;
for(i=1;i<=8;i++){
dat<<=1;
P_SER=CY;
P_SRCLK=1;
P_SRCLK=0;
}}

/*这个函数的作用是收到段码或位码dat后,8位二进制依次左移,溢出的数存储在CY中直接赋值给串行输入口P_SER,移动8次正好将8位二进制码全部输入.

然后移动寄存器上升沿有效给它一个高电平,

记得还原低电平.*/

//第二个函数

void Sent595_out(){
Sent595_in(T_COM[2]);
Sent595_in(smgduan[2]);
P_RCLK=1;
P_RCLK=0;
}

/*我们分别调用了两次Sent595_in,因为是两块HC595,所以必须是位码先放进去,位码放进去后再放入段码,于是原先的位码便会从Q7口进入上面的那块HC595中的SER口,起到位码的作用.

上面的HC595负责选择哪个数码管,下面的HC595负责选择数码管显示什么.

最后存储寄存器赋值高电平,然后还原.

1.简单使用两片74HC595实现动态显示数码管的更多相关文章

  1. 简单的两数之和再次乱入<< Add Two Numbers >>

    请看题目描述: You are given two linked lists representing two non-negative numbers. The digits are stored ...

  2. leetcode简单题目两道(3)

    本来打算写redis的,时间上有点没顾过来,只能是又拿出点自己的存货了. Problem Given an array nums, write a function to move all 's to ...

  3. leetcode简单题目两道(2)

    Problem Given an integer, write a function to determine if it is a power of three. Follow up: Could ...

  4. 通过简单的两数相加体会hashmap的好处

    目录 引入题目:两数相加 HashMap相关知识: Map集合 Map集合的特点 Map常用子类 HashMap集合 LinkedHashMap集合 Map集合的常用方法 Map集合的第一种遍历方式: ...

  5. leetcode简单题目两道(5)

    Problem Given an integer (signed bits), write a function to check whether it . Example: Given num = ...

  6. leetcode简单题目两道(4)

    心情还是有问题,保持每日更新,只能如此了. Problem Given a binary tree, return the level order traversal of its nodes' va ...

  7. Easy-UI中datebox的默认显示当前日期的最简单的两种方法

    在中有一个Today按钮就是实现显示当前日期,所以我们在src/jquery.datebox.js文件中可以找到currentText:'Today'.所以我们可以使用'currentText'和'T ...

  8. leetcode简单题目两道(1)

    Problem: You are playing the following Nim Game with your friend: There is a heap of stones on the t ...

  9. C语言播放声音最简单的两种方法

    1. 假设仅须要播放波形文件wav格式的声音,非常easy.仅仅需一句话: PlaySound(TEXT("Data\\1.wav"), NULL, SND_FILENAME | ...

随机推荐

  1. cookie倒计时

    使用cookie倒计时60s Vue实例创建一个变量time=0 生命周期一般是created,给time赋值一个cookie的键值-当前的时间(因为刚进入页面这时是没有cookie的,所以time变 ...

  2. 快速理解Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容的区别

    <Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容有何不同?>老猿介绍了二者的区别,为了快速理解,老猿在此使用另外一种方式补充说明一下: 1.使用%r是调用objec ...

  3. Python基础知识学习随笔

    Python学习随笔:PyCharm的错误检测使用及调整配置减少错误数量 Python学习随笔:获取当前主机名和用户名的方法 博客地址:https://blog.csdn.net/LaoYuanPyt ...

  4. Mysql为什么使用b+树,而不是b树、AVL树或红黑树?

    首先,我们应该考虑一个问题,数据库在磁盘中是怎样存储的?(答案写在下一篇文章中) b树.b+树.AVL树.红黑树的区别很大.虽然都可以提高搜索性能,但是作用方式不同. 通常文件和数据库都存储在磁盘,如 ...

  5. centos7 mysql 自动补全

    1 yum -y install epel-release #配置erel源 2 yum -y install python-pip 3 pip install mycli #用pip安装 可能会出现 ...

  6. linux文件实时同步

    参考博客:https://www.cnblogs.com/MacoLee/p/5633650.html 一.文件同步很简单 服务端:被动的接收传输过来的数据 客户端:主动提供数据给服务端 安装思路:服 ...

  7. (数据科学学习手札100)搞定matplotlib中的字体设置

    本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 matplotlib作为数据可视化的利器,被广泛 ...

  8. JavaScript:记录一些字符串和数组常用的方法

    字符串: 字符串的方法:注意:都不会改变原来的字符串,返回值为新的字符串.如果(1,2),一般是包含小标1,不包含下标2 str.charAt(i): 取str的第i+1个字符,类似数组的arr[i] ...

  9. Java中多线程安全问题实例分析

    案例 1 package com.duyang.thread.basic.basethread; 2 3 /** 4 * @author :jiaolian 5 * @date :Created in ...

  10. Kubernetes【K8S】(四):资源控制器

    什么是控制器 ​ Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为. 控制器类型 ReplicationController和Rep ...