Note01。arduino和74hc595的使用
当我们在搭建arduino项目时,时常因为需要接入按钮、传感器、舵机、LED等而遇到IO口不足的问题,此时就需要使用到74HC595。
74HC595是一个8位串行输入、并行输出(SIPO,SerialInParallelOut)的移位寄存器。其具有8个输出引脚,而只需要3个输入引脚。并可以串接多个IC实现更多输出引脚需求。
引脚图
74HC595引脚图
GND
连接到Arduino的GND
VCC
连接到Arduino的5V
SER
串行输入,用于向移位寄存器存入数据,一次一位(bit)
SRCLK
移位寄存器时钟,74HC595由上升沿驱动,当向移位寄存器写入数据时,SRCLK必须为高电平。
RCLK(latch)
锁存器时钟,高电平时,移位寄存器的内容拷贝到锁存寄存器,同时表现为输出。Latch相当于一个阀门。
SRCLR
低电平有效。可以一次性将移位寄存器所有位置为0。通常情况此引脚连接高电平。
OE
低电平有效。高电平时输出引脚禁用或为高阻态。低电平时输出引脚正常工作。
QAQH
输出引脚,可以连接LED或者7段数码管
QH‘
可用于串接74HC595。当此引脚连接到SER引脚,并同时给2个IC同样的时钟,则可认为是一个具有16个输出的IC。在保证电源供应的情况下,可以串接多个IC。
工作原理
74HC595具有2个寄存器(可理解为2个存储容器),每个可以存储8位(bit)数据。一个叫做移位寄存器,用于接收输入数据。当74HC595接收到时钟脉冲时:移位寄存器中的位置向左移动一位。移位寄存器的Bit0(右边第一位)接收当前DATA引脚的数据,如果脉冲上升沿时data引脚为高电平则为1并写入移位寄存器,反之则为0。当使能(高电平)RCLK(latch)引脚时,移位寄存器中的数据会拷贝到第二个寄存器,存储(锁存)寄存器。其每个位(bit)均对应连接到QAQH输出引脚,因此当存储(锁存)寄存器中内容发生变化时,相应的表现在输出引脚上。
移位寄存器和锁存寄存器原理图
实验1:使用Arduino和74HC595控制LED
实验材料5mmLED8220欧电阻874HC595芯片1面包板1ArduinoUnoR31杜邦线若干
面包板视图
Arduino代码intlatchPin5;RCLK
intclockPin6;SRCLK
intdataPin4;SER
byteleds0;
voidsetup(){
putyoursetupcodehere,torunonce:
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
}
voidloop(){
putyourmaincodehere,torunrepeatedly:
leds0;allledsoff
updateShiftReg();
delay(500);
for(inti0;i8;i){
bitSet(leds,i);
updateShiftReg();
delay(500);
}
}
voidupdateShiftReg(){
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,LSBFIRST,leds);
digitalWrite(latchPin,HIGH);
}
代码解析
byteleds0;
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指定从数据的那一端开始,如果从最右边的位开始向左移,则称为LeastSignificantBitFirst(LSBFIRST)。反之则从左边的位开始向右移,则称为MostSignificantBitFirst(MSBFIRST)。参数4为实际需要进入移位寄存器的数据。允许的数据类型:byte。
实验二:使用PWM控制LED的亮度
原理:
通过控制IC的OE引脚来控制LED的亮度。OE(OutputEnable)引脚位低电平有效,高电平时位禁止输出,低电平时为正常输出。当通过analogWrite()函数使用PWM控制,则可以实现LED的亮度调节。
实际再PWM的高电平时,OE引脚会短暂的金庸IC输出,但此过程高于人眼所能感知的频率,因此能实现亮度明暗的变化。
面包板视图
Arduino代码intlatchPin5;RCLK
intclockPin6;SRCLK
intdataPin4;SER
intoePin3;OECtrlPWM
byteleds0;
voidsetup(){
putyoursetupcodehere,torunonce:
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
pinMode(oePin,OUTPUT);
}
voidloop(){
putyourmaincodehere,torunrepeatedly:
setBright(255);
leds0;allledsoff
updateShiftReg();
delay(500);
for(inti0;i8;i){
bitSet(leds,i);
updateShiftReg();
delay(500);
}
for(bytebr255;br0;br){
setBright(br);
delay(50);
}
}
voidupdateShiftReg(){
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,LSBFIRST,leds);
digitalWrite(latchPin,HIGH);
}
voidsetBright(bytebr){
analogWrite(oePin,255br);
}
实践:注意确认引脚连接无误后再接通电源
视频:文章修改时无法添加视频
新年心愿作文导语:告别了旧年,我们跨入了新的一年。新年是新的萌芽新的希望,那么你有什么愿望呢?下面小编整理了新年心愿作文,欢迎参考借鉴!新年心愿作文时光就像一条永不停息的小河,匆匆地……
汪峰章子怡,勇敢的心怒放国际章,我要飞得更高中国内地男歌手、音乐创作人汪峰有4段重要恋情。华语影视女演员、制片人章子怡有5段重要恋情。两人加在一起属于9段高手,他们能擦出爱情的火花吗?汪峰汪峰,1971年6月……
专家房价永远也跌不下去,因为有限跌令过去20年经济的高速发展,让房地产市场在其中起到了举足轻重的作用,大量的农村人口进城给城市发展带来了强大的动力,城市兴建楼宇成为了一种大趋势,市场需求明显增加,人们对于住房的需……
唱歌熔岩可以帮助预测危险的喷发从火山熔岩湖传播的声波可以确定隐藏在深处的熔岩的温度和成分,并及时发现即将喷发的情况。2018年基拉韦厄火山喷发的熔岩流当一大块岩石落入熔岩湖中时,它产生的振动会传……
六年级观后感我和我的父辈观后感范文(四)起来!不愿做奴隶的人们!把我们的血肉,筑成我们新的长城!无论身在故土还是异国他乡,每当听到这雄壮激昂、催人奋进的中华人民共和国国歌的时刻,深为自己是一名中国人而骄傲,一种强烈的……
理想的山水天空城作文在现实生活或工作学习中,大家都有写作文的经历,对作文很是熟悉吧,作文根据体裁的不同可以分为记叙文、说明文、应用文、议论文。那么你知道一篇好的作文该怎么写吗?以下是小编精心整理的……
自己的位置中考作文雄鹰只有进入天空才能自由翱翔,小鱼只有进入江河才能自在游动,狮子只有进入森林才能尽情奔驰。天空、江河、森林就是他们的位置。所以,人只有找准自己的位置,才能充分实现自己的人生价值……
今早凌晨,C罗梅西在国家队又发风了,贝尔重新回到世界杯决赛圈今早凌晨,欧国联A2组第二轮,葡萄牙坐阵主场,葡萄牙40横扫瑞士,37岁的C罗点了双响炮,看台上的母亲激动得哭了。目前葡萄牙积分是4分升至榜首,瑞士0分垫底。在首轮,葡萄……
研究太阳系是一个混乱而危险的地方研究:太阳系是一个混乱而危险的地方科学家们分析了小行星的碎片,并了解了早期太阳系的样子。这是一个不友好的地方。事实是,自数十亿年前形成以来,小行星没有太大变化。这使……
老虎的海洋之旅800字六年级作文一天,ldquo;森林之王rdquo;老虎吃饱喝足后,正躺在一棵大树下享受着美美的阳光浴,可老虎翻来覆去怎么也睡不着,就胡思乱想着:我这么厉害,森林里大至羚羊,小至老鼠看见了我……
路特斯ELETRE即将来袭,百公里加速不到3秒,纯电续航高达在得到吉利集团的入主之后,被称为莲花跑车的路特斯得以暂时休养生息,而这也同时给路特斯带来了一些重要的变化。过去长期以轻量化跑车征战消费市场的小众路斯特,开始想要往更大的宽广的主……
灯谜猜奥运冠军名字1、石林总集(奥运冠军)2、开放颇不易(奥运冠军)3、见格格连连嘱咐(奥运冠军)4、表扬一通抚慰他(奥运冠军)5、齐天大圣行万里(奥运冠军)6、一……