zoukankan      html  css  js  c++  java
  • 1.简单使用两片74HC595实现动态显示数码管

    本篇文章主要是讲解如何简单示用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负责选择数码管显示什么.

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

     

  • 相关阅读:
    集训作业 洛谷P1135 奇怪的电梯
    集训作业 洛谷P1433 吃奶酪
    集训作业 洛谷P1443 马的遍历
    集训作业 洛谷P1032 字串变换
    T3 成绩单 题解
    T4 字符串的修改 题解
    P3379 最近公共祖先(LCA) 洛谷
    集训作业 洛谷P3913 车的攻击
    解决intellij idea卡顿的方法
    好的在线开发工具推荐
  • 原文地址:https://www.cnblogs.com/cnleika/p/9876204.html
Copyright © 2011-2022 走看看