arduino二位数码管_用arduino和2个74HC595级联控制8位数码管显示

这篇博客展示了如何通过Arduino和2个74HC595芯片来级联控制8位数码管显示数字。作者提供了完整的代码实现,包括数码管的段选和位选,并给出了数码管显示0-9的示例。代码中包含了数码管的初始化、数码管数据的移位和锁存等关键步骤。
摘要由CSDN通过智能技术生成

初学者打出来的代码,可能不“美观”,希望大家点评,多多留下意见,话不多说上代码……

下面为8位数码管全部显示

#include "Arduino.h"

void set(int x);

void setup();

void loop();

void shu();

int SH_CP = 12;  //595_SH_CP/11   存储寄存器

int DS = 13;  //595_DS/14      移位寄存器

int ST_CP = 11;  //595_ST_CP/12   串行数据输入端

int OE = 10;    //595_OE/13      输出使能端

int MR = 9;  //595_MR/10      芯片复位端

/*数码管段选*/

int a[10][8]={0,0,1,1,1,1,1,1,    //0

0,0,0,0,0,1,1,0,    //1

0,1,0,1,1,0,1,1,    //2

0,1,0,0,1,1,1,1,    //3

0,1,1,0,0,1,1,0,    //4

0,1,1,0,1,1,0,1,    //5

0,1,1,1,1,1,0,1,    //6

0,0,0,0,0,1,1,1,    //7

0,1,1,1,1,1,1,1,    //8

0,1,1,0,0,1,1,1,};  //9

/*共阴极数码管位选*/

int b[8][8]={1,1,1,1,1,1,1,0,    //0

1,1,1,1,1,1,0,1,    //1

1,1,1,1,1,0,1,1,    //2

1,1,1,1,0,1,1,1,    //3

1,1,1,0,1,1,1,1,    //4

1,1,0,1,1,1,1,1,    //5

1,0,1,1,1,1,1,1,    //6

0,1,1,1,1,1,1,1,    //7

};

int data;

int j;

void set(int x)

{

if(x==0)digitalWrite(DS,LOW);

else digitalWrite(DS,HIGH);

}

void setup() {

pinMode(SH_CP,OUTPUT);

pinMode(DS,OUTPUT);

pinMode(ST_CP,OUTPUT);

pinMode(OE,OUTPUT);

pinMode(MR,OUTPUT);

}

void loop()

{

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接线: 首先将Arduino的VCC引脚连接到两个74HC595芯片的VCC引脚,并将GND引脚连接到两个74HC595芯片的GND引脚。 然后将Arduino的数字引脚2、3、4分别连接到74HC595芯片的SER、SRCLK、RCLK引脚,将74HC595芯片的Q0引脚连接到一个LED正极,LED负极连接到GND。将74HC595芯片的Q1引脚连接到另一个LED正极,LED负极连接到GND。 编程: 下面是一个简单的示例代码,用于控制两个74HC595级联的LED灯。代码通过移位操作将数据从Arduino输出到74HC595,然后通过锁存操作将数据输出到LED灯。代码中使用了shiftOut()函数和digitalWrite()函数来控制74HC595芯片和LED灯。 ``` int latchPin = 4; // RCLK引脚 int clockPin = 3; // SRCLK引脚 int dataPin = 2; // SER引脚 void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { // 将数据写入74HC595芯片 shiftOut(dataPin, clockPin, MSBFIRST, 0x01); // 控制第一个LED灯 shiftOut(dataPin, clockPin, MSBFIRST, 0x02); // 控制第二个LED灯 // 锁存数据到LED灯 digitalWrite(latchPin, HIGH); digitalWrite(latchPin, LOW); delay(1000); // 延迟1秒 } ``` 在上面的代码中,我们使用shiftOut()函数将数据从Arduino输出到74HC595芯片。shiftOut()函数的第一个参数是数据引脚,第二个参数是时钟引脚,第三个参数是比特序列中最高位的位数,第四个参数是要输出的数据。我们将0x01和0x02分别输出到两个74HC595芯片,以控制两个LED灯的状态。 然后,我们使用digitalWrite()函数将锁存引脚设置为高电平,将数据从74HC595芯片输出到LED灯。然后我们再将锁存引脚设置为低电平,以准备下一次数据的输出。 最后,我们使用delay()函数延迟1秒,以使LED灯的状态保持不变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值