查看: 4089|回复: 1

使用74hc595驱动一位数码管

[复制链接]

该用户从未签到

发表于 2018-7-20 22:42 | 显示全部楼层 |阅读模式
本帖最后由 darknight 于 2018-7-20 22:42 编辑

74hc595是一种常用的I/O拓展芯片,今天我尝试用一个74hc595来驱动一个一位七段数码管,效果还行



功能:数码管循环显示0~4,每个数字停留一秒因为这次数码管没有用到DP,所以数码管的DP引脚悬空


shiftOut() 功能为软件模拟SPI串行输出




主要代码如下:

kittenblock中小学创客名师推荐的图形化编程软件

/*
 * darknight
 * 使用74HC595扩展I/O,控制数码管
 *(shiftOut串行输出的使用)
 *
 *74hc595与arduino的引脚连接表
 *74hc595 Arduino
 *ST_CP   8
 *SH_CP   12
 *DS      11
 *MR      VCC
 *OE      GND
 *VCC     VCC
 *GND     GND
 *
 *74hc595与数码管引脚连接表
 *74hc595 数码管
 *Q0      A
 *Q1      B
 *Q2      C
 *Q3      D
 *Q4      E
 *Q5      F
 *Q6      G
 *Q7      DP(这个用不到)
 */
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
void setup() {
  // put your setup code here, to run once:
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int j=0;j<5;j++)
  {
  digitalWrite(latchPin, LOW);
//将latchPin的电平拉低

  display(j);
//shiftOut(dataPin, clockPin, LSBFIRST, 159);    显示0
//用shiftOut() 函数将将8位串行数据发送到595的缓存器中
   
  digitalWrite(latchPin, HIGH);
//latchPin产生一个上升沿
//缓存器中的的数据将以并行的方式输出到8个端口上


  delay(1000);
  }
  
  
}
void display(int i )
{
  switch(i)
  {
    case 0:shiftOut(dataPin, clockPin, LSBFIRST, 0x02);break;//显示0
    case 1:shiftOut(dataPin, clockPin, LSBFIRST, 0x9f);break;//显示1
    case 2:shiftOut(dataPin, clockPin, LSBFIRST, 0x25);break;//显示2
    case 3:shiftOut(dataPin, clockPin, LSBFIRST, 0x0d);break;//显示3
    case 4:shiftOut(dataPin, clockPin, LSBFIRST, 0x99);break;//显示4
    default:shiftOut(dataPin, clockPin, LSBFIRST, 0x02);//显示0
  }
  
}


74hc595引脚图

74hc595引脚图

一位数码管引脚图

一位数码管引脚图

连接图

连接图

实际效果图

实际效果图

SMG.zip

945 Bytes, 下载次数: 37

ino文件

  • TA的每日心情
    奋斗
    2020-2-25 13:49
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2020-2-1 21:43 | 显示全部楼层
    本帖最后由 wadmm123 于 2020-2-1 21:47 编辑

    首先感谢楼主的分享,要是去掉switch,前面加个数组。代码简化很多,可读性也会好很多哦

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    天猫精灵接入语音提示找不到该设备?
    天猫精灵接入语音提示找不
    今天又刷了一遍代码,天猫精灵提示 没有找到你要操作的设备! 怎么回事啊??? 折腾
    引入库的问题,不知道怎么叙述 看图吧
    引入库的问题,不知道怎么
    最左边的是主文件 也就是启动的文件 后边三个是引入的 在后边这个文件再引入库就报错
    blinker电源插座
    blinker电源插座
    这台blinker电源插座有blinker控制和手动控制两种工作方式. 1.blinker控制:滑条用于设
    blinker灯、环境传感器套件意见收集
    blinker灯、环境传感器套
    计划春节后推出blinker氛围灯和环境检测套件。 本帖收集相关建议,如若采纳,发红包(
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表