Arduino中shiftOut怎么用?

我们知道,shiftOut这个函数有四个参数,而且常常用于74hc595控制数码管或者LED的流水灯的程序中,一个74hc595一个shiftOut函数,整在一起,常常把初学者搞晕。这里我们来把关键点捋一捋。

1、四个参数
函数shiftOut(dataPin,clockPin,bitOrder,val)有四个参数,即:dataPin、clockPin、bitOrder、val,其具体含义如下:
dataPin:对于arduino板,它是输出每一位数据的引脚(如某数字口),引脚需配置成输出模式。
clockPin:为位移芯片提供时钟的脚(即指arduino板上的某个数字口),当我们准备将dataPin的数据推送出去时,发送一个高电平(当然,这个引脚须配置成输出模式)。
bitOrder:输出位的顺序,有最高位优先(MSBFIRST)和最低位优先(LSBFIRST)两种方式。
val:所要输出的数据值,该数据值将以byte形式输出。

2、与位移芯片对应关系
dataPin:自然是要对应位移芯片的DS引脚(数据引脚),需要注意的是这些数据必须在SCK引脚(SH_CP)触发上升沿的时候才会被逐位送入位移芯片(如hc595,hc164等芯片)
clockPin:对应的是位移芯片的SH_CP引脚,负责将dataPin送来的数据一位一位的送到芯片的寄存器中,每出现一个上升沿就送一位进入寄存器。
补充:需要补充的是,位移芯片还有一个ST_CP引脚RCK,这个引脚负责输出芯片中已有的数据到8个输出管脚,换句话说,如果没有它的触发,芯片是不会向外输出的,它也是上升沿触发,也就是说需要一个由低到高的电平调变来触发。
总结:SH_CP,负责进,ST_CP负责出,不同的是SH_CP,是逐位的输入,ST_CP一次输出。

3、数据的操作方式
shiftOut函数的作用是将一个数据的一个字节一次性送出,其内部实际是配合clockPin的时钟信号,一个一个bit的就写入了位移芯片,它是一个无返回值函数。从最高有效位(最左边)或最低有效位(最右边)开始,依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。

4、假如没有shiftOut
既然说没有它的情况,那么我们就首先了解有它的情况。有了它,我们可以一次向位移寄存器写入一个字节(8个位),类似批处理的方式。所以,没有它,我们就要把字节拆解了一个位一个位的写入位移芯片。这样效率太低,尤其是对于我们的数码管显示操作来说,太不直观了。
注意
shiftOut目前只能输出1个字节(8位),所以如果输出值大于255需要分两步。

具体有关shiftOut结合595的仿真,请参考我前面的博文。

  • 15
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值