Arduino 595多级并联 Arduino显示八位数码管

翻百宝箱发现两年前买的595并联模块(德飞莱 数码管模块),能够支持8位数码管,接线需要CLK(时钟),SER(数据),ST(锁存)三根线。兴趣来了,就试着调试一下。

下图是接线的原理图。

直接贴代码了,也直接写注释

int LATCH = 2;//锁存端口
int SRCLK = 3;//时钟端口
int SER = 4;//数据端口

unsigned char Num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//这里是显示0-9的数字编码,对应的二进制编码可以看出对应辉管的开闭,这里只是方便使用,可以直接发送编码显示
unsigned char Point[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//这个是显示位置,大家可以转换到二进制看看到底怎么回事

void setup()
{
  pinMode(LATCH,OUTPUT);
  pinMode(SRCLK,OUTPUT);
  pinMode(SER,OUTPUT);//三个语句全部设定Arduino管脚为输出
  
  Serial.begin(115200);//串口通信Init,这里主要为了以后开发,顺手习惯加了,本Demo删掉即可
}

void SendByte(unsigned char dat)//发送Btye,也是写入的核心部分
{
  uint8_t i;//定义一个循环变量i
  for(i=0;i<8;i++)
  {
    digitalWrite(SRCLK,LOW);//首先根据手册,将时钟输出Low,然后才可以输入数据信号
    if(dat & 0x80)//这里是一个LSB
      digitalWrite(SER,HIGH);
    else 
      digitalWrite(SER,LOW);
    dat<<=1;
    digitalWrite(SRCLK,HIGH);
  }
}

void Send2Byte(unsigned char dat1,unsigned char dat2)
{
  SendByte(dat1);
  SendByte(dat2);
}

void Out595()
{
  digitalWrite(LATCH,LOW);
  delay(1);
  digitalWrite(LATCH,HIGH);
}

void loop()
{
  for(int i=0;i<8;i++)
  {
    Send2Byte(Point[i], Num[i]);
    Out595();
    delay(500);
  }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值