Note-01.arduino和74hc595的使用

Note-01.arduino和74hc595的使用

当我们在搭建arduino项目时,时常因为需要接入按钮、传感器、舵机、LED等而遇到I/O口不足的问题,此时就需要使用到74HC595。

74HC595是一个8位串行输入、并行输出(SIPO,Serial-In-Parallel-Out)的移位寄存器。其具有8个输出引脚,而只需要3个输入引脚。并可以串接多个IC实现更多输出引脚需求。

引脚图

74HC595引脚图

GND

连接到Arduino的GND

VCC

连接到Arduino的5V

SER

串行输入,用于向移位寄存器存入数据,一次一位(bit)

SRCLK

移位寄存器时钟,74HC595由上升沿驱动,当向移位寄存器写入数据时,SRCLK必须为高电平。

RCLK(latch)

锁存器时钟,高电平时,移位寄存器的内容拷贝到锁存寄存器,同时表现为输出。Latch相当于一个阀门。

SRCLR

低电平有效。可以一次性将移位寄存器所有位置为0。通常情况此引脚连接高电平。

OE

低电平有效。高电平时输出引脚禁用或为高阻态。低电平时输出引脚正常工作。

QA-QH

输出引脚,可以连接LED或者7段数码管

QH‘

可用于串接74HC595。当此引脚连接到SER引脚,并同时给2个IC同样的时钟,则可认为是一个具有16个输出的IC。在保证电源供应的情况下,可以串接多个IC。

工作原理

74HC595具有2个寄存器(可理解为2个存储容器),每个可以存储8位(bit)数据。

  • 一个叫做移位寄存器,用于接收输入数据。
    • 当74HC595接收到时钟脉冲时:
      • 移位寄存器中的位置向左移动一位。
      • 移位寄存器的Bit0(右边第一位)接收当前DATA引脚的数据,如果脉冲上升沿时data引脚为高电平则为1并写入移位寄存器,反之则为0。
  • 当使能(高电平)RCLK(latch)引脚时,移位寄存器中的数据会拷贝到第二个寄存器,存储(锁存)寄存器。其每个位(bit)均对应连接到QA-QH输出引脚,因此当存储(锁存)寄存器中内容发生变化时,相应的表现在输出引脚上。

移位寄存器和锁存寄存器原理图

实验1:使用Arduino和74HC595控制LED

实验材料

  • 5mm LED *8
  • 220欧电阻 *8
  • 74HC595芯片 *1
  • 面包板 *1
  • Arduino Uno R3 *1
  • 杜邦线 若干

面包板视图

Arduino代码

int latchPin = 5; //RCLK

int clockPin = 6; // SRCLK

int dataPin = 4; // SER

byte leds = 0;

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:

leds = 0; // all leds off

updateShiftReg();

delay(500);

for(int i=0; i<8; i++){

bitSet(leds, i);

updateShiftReg();

delay(500);

}

}

void updateShiftReg(){

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, LSBFIRST, leds);

digitalWrite(latchPin, HIGH);

}

代码解析

byte leds = 0;

byte数据类型为8位(bit),刚好能对应8个输出以及8个led。

bitSet(leds, i);

bitSet(x, n):设置变量的某一位(位置为1)。

  • X:要设置位的变量
  • n:要设置变量的哪一位,从最右边0开始为最低有效位。

updateShiftReg();

updateShiftReg()函数首先将latch锁存引脚置为低电平,然后调用shiftOut()移位函数,然后再将latch锁存引脚置为高电平实现输出。

shiftOut(dataPin, clockPin, LSBFIRST, leds);

shiftOut(dataPin, clockPin, bitOrder, value)函数可以实现每次调用时对寄存器进行移位操作。

  • 参数1和2位数据和时钟。
  • 参数3指定从数据的那一端开始,如果从最右边的位开始向左移,则称为“Least Significant Bit First”(LSBFIRST)。反之则从左边的位开始向右移,则称为Most Significant Bit First”(MSBFIRST)。
  • 参数4为实际需要进入移位寄存器的数据。允许的数据类型:byte。

实验二:使用PWM控制LED的亮度

原理:

通过控制IC的OE引脚来控制LED的亮度。OE(Output Enable)引脚位低电平有效,高电平时位禁止输出,低电平时为正常输出。当通过analogWrite() 函数使用PWM控制,则可以实现LED的亮度调节。

实际再PWM的高电平时,OE引脚会短暂的金庸IC输出,但此过程高于人眼所能感知的频率,因此能实现亮度明暗的变化。

面包板视图

Arduino代码

int latchPin = 5; //RCLK

int clockPin = 6; // SRCLK

int dataPin = 4; // SER

int oePin = 3; // OE Ctrl PWM

byte leds = 0;

void setup() {

// put your setup code here, to run once:

pinMode(latchPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(oePin, OUTPUT);

}

void loop() {

// put your main code here, to run repeatedly:

setBright(255);

leds = 0; // all leds off

updateShiftReg();

delay(500);

for(int i=0; i<8; i++){

bitSet(leds, i);

updateShiftReg();

delay(500);

}

for(byte br=255; br>0; br–){

setBright(br);

delay(50);

}

}

void updateShiftReg(){

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, LSBFIRST, leds);

digitalWrite(latchPin, HIGH);

}

void setBright(byte br){

analogWrite(oePin, 255-br);

}

实践:注意确认引脚连接无误后再接通电源

视频:文章修改时无法添加视频

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月13日
下一篇 2022年6月13日

相关推荐

  • 手机上的(手机上的视频怎么传到电脑上)

    每部手机都有独一无二的手机序列号?接电话最好固定在一个位置?这是真的吗?? 1 手机可以拨打全球共同紧急救援电话 假如你所在地区没信号同时又遇到了紧急状况,拨打112,手机就会自动…

    2022年8月22日
  • 梅西全场数据:90次触球,3射正,4过人3成功,1造点,1关键传球

    直播吧8月14日讯 法甲第二轮,巴黎主场5-2蒙彼利埃。梅西全场数据如下。 本场梅西有3次射正、2次射偏,4次过人3次成功,1次关键传球,90次触球,获评8.1分全场第二,仅次于双…

    2022年8月14日
  • 射电脉冲星RFI消干扰研究取得进展

    射电频率干扰(RFI)消除是射电天文领域信号处理的研究重点。消干扰方法创新对脉冲星测时等天文测量工作有改进意义。 近期,中国科学院新疆天文台行星科学研究团组副研究员单昊及其合作者利…

    2022年9月20日
  • 华为陶景文:跨边界协同,共建企业数字生态

    6月15日,以“因聚而生 为你所能”为主题的“华为伙伴暨开发者大会2022”,以线上直播+线下90多个分会场联动的形式盛大召开。会上,华为董事、CIO陶景文在《跨边界协同,共建企业…

    2022年6月16日
  • 对话「玄武云」陈永辉:如何成为中国版Salesforce+Twilio

    文 刘晓潼 编辑 江倩君 图片来源丨玄武科技 智慧CRM开启下半场。 “CRM颠覆进化的智慧时代已来。”玄武云科技控股有限公司(下称「玄武云」)董事长兼CEO陈永辉说道。 CRM最…

    2022年6月17日
  • 关于宋朝的“口嗨”-GDP“奇迹”

    互联网时代,揭短您得上图,装X得您有数儿——所谓有图有真相,大数据才是正义!所以,我们看到的粉宋派通常都是这样说的:宋朝是富裕宋,宋朝年入亿两白银,GDP占世界比80%;宋朝是铁血…

    2022年7月7日
  • 在商业智能BI开发过程中,什么问题的挑战性最大?

    我有时和商业智能BI项目上的同事闲聊,问他们在商业智能BI项目建设过程中,你觉得什么挑战性最大?有的人说我最怕业务逻辑太复杂,有的人说最怕用户的需求不明确,也有的人说复杂的业务场景…

    2022年6月23日
  • 迈锐宝XL推背感如何,有没有推背感?

    谢邀,本人购入XL Redline 550T锐联版有两个多月的时间了,目前开了1000多公里了。说说我自己对于XL这台车三大件的感受吧。 这台2.0T的发动机从数据上来看有241匹…

    2022年7月25日
  • 世界首个自校准光子芯片:光数据高速公路的交换

    由墨尔本莫纳什大学和 RMIT 大学领导的研究找到了一种方法来创建先进的光子集成电路,他们通过在数据高速公路之间架起桥梁,彻底改变当前光学芯片的连接性,并用晶片薄硅片取代笨重的 3…

    2022年7月9日
  • 光遇:测试服消失的物品,官方不会进行补偿?怎么一个懒字了得

    光遇:测试服消失的物品,官方不会进行补偿?怎么一个懒字了得 前言: 大家好,我是喜欢玩游戏、聊游戏的孟婆小叔。 测试服的资格,官方已经关闭通道。也就是说,在关闭之后,不管你以什么方…

    2022年6月30日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息