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仿真