Arduino UNO学习74HC595使用,循序渐进过程

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino UNO学习74HC595使用,循序渐进过程相关的知识,希望对你有一定的参考价值。

Arduino UNO利用74HC595程序演化

目的:加深对74HC595移位寄存器的理解和使用

在这里插入图片描述

  • 初学时,代码
int ST = 8;//ST CP of 74HC595
int HS = 12;//SH CP of 74HC595
int DS = 11; //DS of 74HC595
void setup ()
{
  pinMode(ST, OUTPUT); //锁存引脚设置
  pinMode(HS, OUTPUT); //时钟引脚设置
  pinMode(DS, OUTPUT); 数据引脚设置
}
void loop()
{

  digitalWrite(ST, LOW); //将ST_CP口上面加低电平让芯片准备好接收数据

  digitalWrite(HS, LOW);  //拉回活塞,等待数据放入
  digitalWrite(DS, HIGH); //数据加载
  digitalWrite(HS, HIGH); //将数据推送出去
  
  digitalWrite(HS, LOW); //拉回活塞,等待数据放入
  digitalWrite(DS, LOW);  //数据加载
  digitalWrite(HS, HIGH); //将数据推送出去
  
  digitalWrite(HS, LOW); //拉回活塞,等待数据放入
  digitalWrite(DS, HIGH);  //数据加载
  digitalWrite(HS, HIGH); //将数据推送出去

  digitalWrite(HS, LOW);
  digitalWrite(DS, LOW);
  digitalWrite(HS, HIGH);
  
  digitalWrite(HS, LOW);
  digitalWrite(DS, HIGH);
  digitalWrite(HS, HIGH);

  digitalWrite(HS, LOW);
  digitalWrite(DS, LOW);
  digitalWrite(HS, HIGH);

  digitalWrite(HS, LOW);
  digitalWrite(DS, HIGH);
  digitalWrite(HS, HIGH);

  digitalWrite(HS, LOW);
  digitalWrite(DS, LOW);
  digitalWrite(HS, HIGH);
  
  digitalWrite(ST, HIGH); //将ST_CP这个针脚恢复到高电平

}


  • 演化程序
int ST = 8;//ST CP of 74HC595
int HS = 12;//SH CP of 74HC595
int DS = 11; //DS of 74HC595

void setup ()
{
  pinMode(ST, OUTPUT); //锁存引脚设置
  pinMode(HS, OUTPUT); //时钟引脚设置
  pinMode(DS, OUTPUT); 数据引脚设置
}
void loop()
{
digitalWrite(ST, LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
putone();  
putzero();  
putone();
putzero();  
putone();
putzero();
putone();
putzero();  
digitalWrite(ST, HIGH); //将ST_CP这个针脚恢复到高电平
}

void putone(){
  digitalWrite(HS, LOW);  //拉回活塞,等待数据放入
  digitalWrite(DS, HIGH); //数据加载
  digitalWrite(HS, HIGH); //将数据推送出去
}

void putzero(){
  digitalWrite(HS, LOW);  //拉回活塞,等待数据放入
  digitalWrite(DS, LOW); //数据加载
  digitalWrite(HS, HIGH); //将数据推送出去
}
  • 进阶演化程序
int ST = 8;//ST CP of 74HC595
int HS = 12;//SH CP of 74HC595
int DS = 11; //DS of 74HC595

void setup ()
{
  pinMode(ST, OUTPUT); //锁存引脚设置
  pinMode(HS, OUTPUT); //时钟引脚设置
  pinMode(DS, OUTPUT); 数据引脚设置
}
void loop()
{

digitalWrite(ST, LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
putdate(1);
putdate(0);  
putdate(1);
putdate(0);  
putdate(1);
putdate(0);  
putdate(1);
putdate(0);   
digitalWrite(ST, HIGH); //将ST_CP这个针脚恢复到高电平

}

void putdate(bool number){
  digitalWrite(HS, LOW);  //拉回活塞,等待数据放入
  digitalWrite(DS, number); //数据加载
  digitalWrite(HS, HIGH); //将数据推送出去
}


  • 进阶加强演化程序
int ST = 8;//ST CP of 74HC595
int HS = 12;//SH CP of 74HC595
int DS = 11; //DS of 74HC595
bool num[8] = {1, 0, 1, 0, 1, 0, 1, 0}; //定义一个数组

void setup ()
{
  pinMode(ST, OUTPUT); //锁存引脚设置
  pinMode(HS, OUTPUT); //时钟引脚设置
  pinMode(DS, OUTPUT); 数据引脚设置
}
void loop()
{

 digitalWrite(ST, LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
for(int i=0;i<8;i++){
 putdate(num[i]);
} 
 digitalWrite(ST, HIGH); //将ST_CP这个针脚恢复到高电平

}

void putdate(bool number){
  digitalWrite(HS, LOW);  //拉回活塞,等待数据放入
  digitalWrite(DS, number); //数据加载
  digitalWrite(HS, HIGH); //将数据推送出去
}
  • 高阶演化
int ST = 8;//ST CP of 74HC595
int HS = 12;//SH CP of 74HC595
int DS = 11; //DS of 74HC595

void setup ()
{
  pinMode(ST,OUTPUT);//锁存引脚设置
  pinMode(HS,OUTPUT);//时钟引脚设置
  pinMode(DS,OUTPUT); //数据引脚设置
}
void loop()
{
    digitalWrite(ST,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
    shiftOut(DS,HS,MSBFIRST,0xAA);// 把0xAA二进制1010 1010的值送给595
    //用MSBFIRST参数与LSBFIRST可以改变点亮的顺序   
    digitalWrite(ST,HIGH); //将ST_CP这个针脚恢复到高电平

}

以上是关于Arduino UNO学习74HC595使用,循序渐进过程的主要内容,如果未能解决你的问题,请参考以下文章

在线仿真Arduino UNO+74HC595流水灯 + 按键控制

在线仿真Arduino UNO+74HC595流水灯 + 按键控制

Arduino UNO + 74HC595联级+数码管实现000-999循环计数显示+ Proteus仿真

Arduino UNO + 74HC595联级+数码管实现00-99循环计数显示+ Proteus仿真

Arduino UNO + 74HC595+数码管实现0-9循环计数显示+ Proteus仿真

Arduino UNO + 74HC595联级+数码管实现0000-9999循环计数显示+ Proteus仿真