您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 例程17-74HC595
第17讲74HC595实验亚博科技Arduino视频教程亚博科技Arduino视频教程74HC595简单说来就是具有8位移位寄存器和一个存储器,以及三态输出功能。这里我们用它来控制8个LED小灯。我们为什么要用74HC595来控制小灯呢?一定会有很多朋友会问这个问题,我想问的是我们要是单纯的用Arduino控制8个小灯的话要占用多少个I/O呢?答案是8个。但是我们的ArduinoUNO有几个I/O口呢?加上模拟接口也就20个吧,这8个小灯占用了太多的资源了,我们用74HC595的目的就是减少I/O口的使用数量。用74HC595以后我们可以用3个数字I/O口控制8个LED小灯岂不美哉。下面是我们要准备的元器件:74HC595直插芯片*1直插LED*8220Ω直插电阻*8面包板*1面包板跳线若干亚博科技Arduino视频教程准备好元件我们就按下面的原理图连接电路亚博科技Arduino视频教程真值表:亚博科技Arduino视频教程管脚图:管脚说明:亚博科技Arduino视频教程时序图:亚博科技Arduino视频教程此电路图看似复杂,我们仔细分析以后再结合参考实物就会发现很简单。按照右图链接好电路后,就可以开始编写程序了。亚博科技Arduino视频教程参考例程://connect74hc595pin10:MR---VCC;Pin13:OE---GNDintlatchPin=5;//to595pin12intclockPin=4;intdataPin=2;//这里定义了那三个脚voidsetup(){pinMode(latchPin,OUTPUT);pinMode(clockPin,OUTPUT);pinMode(dataPin,OUTPUT);//让三个脚都是输出状态}voidloop(){for(inta=0;a256;a++)//这个循环的意思是让a这个变量+1一直加到到256,每次循环都进行下面的活//动{digitalWrite(latchPin,LOW);//将ST_CP口上面加低电平让芯片准备好接收数据亚博科技Arduino视频教程shiftOut(dataPin,clockPin,MSBFIRST,a);/*dataPin:数据输出引脚,数据的每一位将逐次输出。引脚模式需要设置成输出clockPin:时钟输出引脚,为数据输出提供时钟,引脚模式需要设置成输出。bitOrder:数据位移顺序选择位,该参数为byte类型,有两种类型可选择,分别是高位先入MSBFIRST和低位先入LSBFIRST。val:所要输出的数据值。*/digitalWrite(latchPin,HIGH);//将ST_CP这个针脚恢复到高电平delay(1000);//暂停1秒钟让你看到效果}}voidshiftOut(uint8_tdataPin,uint8_tclockPin,uint8_tbitOrder,uint8_tval){uint8_ti;for(i=0;i8;i++){if(bitOrder==LSBFIRST)digitalWrite(dataPin,!!(val&(1i)));elsedigitalWrite(dataPin,!!(val&(1(7-i))));digitalWrite(clockPin,HIGH);digitalWrite(clockPin,LOW);}}函数原型在wiring_shift.c文件中,位于Arduino安装的这个目录下:\Arduino\hardware\arduino\cores\arduino亚博科技Arduino视频教程谢谢大家!
本文标题:例程17-74HC595
链接地址:https://www.777doc.com/doc-7299771 .html