zoukankan      html  css  js  c++  java
  • HC595驱动数码管

    74HC595是一个8位串行输入、并行输出的位移缓存器

    引脚定义
    12
    Q0~Q7:并行输出
    Q7’:串行输出
    SH_CP:移位寄存器时钟输入
    ST_CP:存储寄存器时钟输入
    DS:串行输入

    原理图
    1
    举例
    共阴极数码管控制

    #define uchar unsigned char
    
    void LED_Display(void);			// LED显示
    void LED_OUT(uchar X);			// 点亮数码管每一段
    
    // LED字模表
    unsigned char code LED_0F[] =
    {
       //0    1     2     3     4     5     6     7     8     9     A     b     C     d     E     F     -
       0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x8C, 0xBF, 0xC6, 0xA1, 0x86, 0xFF, 0xbf
    };
    
    sbit DIO = P1 ^ 0;				//串行数据输入
    sbit RCK  = P1 ^ 1;			//锁存
    sbit SCK = P1 ^ 2;				//移位
    
    void main(void)
    {
       while(1)
       {
          LED_Display();
       }
    }
    
    void LED_Display(void)
    {
       //显示第1位
       LED_OUT(LED_0F[1]); //段选
       LED_OUT(0x01); //位选
       RCK = 0;
       RCK = 1;
    
       //显示第2位
       LED_OUT(LED_0F[2]);
       LED_OUT(0x02);
       RCK = 0;
       RCK = 1;
    
       //显示第3位
       LED_OUT(LED_0F[3]);
       LED_OUT(0x04);
       RCK = 0;
       RCK = 1;
    
       //显示第4位
       LED_OUT(LED_0F[4]);
       LED_OUT(0x08);
       RCK = 0;
       RCK = 1;
    }
    
    void LED_OUT(uchar X)
    {
       uchar i;
    
       for(i = 8; i >= 1; i--)
       {
          if(X & 0x80)
          {
             DIO = 1;
          }
          else
          {
             DIO = 0;
          }
    
          X <<= 1;
    
          SCK = 0;
          SCK = 1;
       }
    }
    
  • 相关阅读:
    敏捷冲刺二
    敏捷冲刺一
    软工网络15-Alpha阶段敏捷冲刺
    Scrum 冲刺博客
    软工网络15团队作业3——需求分析与设计
    软工网络15团队作业2——团队计划
    软件网络15团队作业1
    【Alpha阶段】第一次Scrum Meeting
    Scrum 冲刺博客集合
    第 1 篇 Scrum 冲刺博客
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709296.html
Copyright © 2011-2022 走看看