扩展Arduino-595_第1页
扩展Arduino-595_第2页
扩展Arduino-595_第3页
扩展Arduino-595_第4页
扩展Arduino-595_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

扩展扩展 ArduinoArduino 数字输出端口 数字输出端口 3 Comments Posted by flamingoeda in Arduino 随着你对 Arduino 的深入理解和应用 相信很快就会遇到 Arduino 端口不够用的情况了 比如你可 能需要在你的项目里控制更多的 LED 或者继 电器 但却发现 12 似乎是一个很难超越的数字 或者 你的声音项目里需要更多的电位器 但是 Arduino 板上 6 个模拟输入接口的限制却让你捉襟见肘 如果此时 Arduino 的处理能力还尚能满足你的要求 只是接口数目不够 能够采用的一种办法就是 对 Arduino 的数字端口和模拟端口进行扩展 下图就是一个 Arduino 数字输出端口扩展板 利用它 原理上你可以将 Arduino 上的 3 个数字输出端口扩展成 8 个数字输出端口 通俗说来就是 3 个换 8 个 实验这块板最简单的办法是用三根数字连接线 分别将该扩展板上的 SCK RCK 和 SER 引脚与传感器 扩展板上的数字 I O 的 8 9 和 10 号引脚相连接 相应的测试代码如下所示 int dataPin 8 SER int latchPin 9 RCK int clockPin 10 SCK void setup pinMode latchPin OUTPUT pinMode clockPin OUTPUT pinMode dataPin OUTPUT void loop for int j 0 j 255 j start transmit data digitalWrite latchPin LOW shiftOut dataPin clockPin MSBFIRST j end transmit data digitalWrite latchPin HIGH delay 500 上述代码中最核心的是对函数 shiftOut 的调用 它的作用往扩展板上的 8 个数字引脚上写一个字 节 该字节的每一位分别对应扩展板上 8 个数字输出 I O 引脚中的一个 除此之外 shiftOut 函 数在调用之前需要调用 digitalWrite 将 RCK 置低 调用完成之后再置高 这是由芯片的控制时序 决定的 程序运行时的效果相当于一个递增的计数器 在扩展板的 8 个输出端口上分别接 8 个 LED 灯 可以看到相应的累加效果 今天调试 8 8 双色 LED 显示屏 用三个 74HC595 级联 一点心得 1 连接方式 三个 595 的 11 12 脚相连 第一级的 14 脚接 MCU 的串行数据输出 第一级的 9 QH 接第二级的 14 脚 第二 级的 9 QH 接第三级的 14 脚 如有更多级可以一直串下去 2 数据输出 先将第三级 最后一级 的数据输出 只需发出移位脉冲 不要发锁存脉冲 然后是上一级 直到所有级的数据 全部发完 数据现在是一一对应 这时 MCU 发出锁存脉冲 这样数据即可对号入座了 以上信息希望对刚开始用 595 的朋友有用 由于水平有限 不足或错误之处请各位多多指教 如果读到这你以为一切就结束了的话 那可就大错特错了 除了单个使用之外 这一扩展板其实是 可以通过相应的连接线实现级连的 也就是说 如果两块相连的话 你就可以用 Arduino 上的三个 数字 I O 端口扩展出 16 个数字输出端口 如果三块相连的话 你就可以用 Arduino 上的三个数字 I O 端口扩展出 24 个数字输出端口来 理认上讲这样的扩展是可以一直做下去的 但受限于处理器 的处理能力和电源大小 外部干扰等的影响 这样的扩展在实际应用中当然是有一定限制的 至于 是多少嘛 那就得由实际的应用场景来决定了 下面来看两块数字输出扩展板如果级联使用 在上述接好的电路的基础上 我们只需要再用一根数 字输出扩展板连接线 将第一块数字输出扩展板上的输出端口 OUTPUT 与第二块数字输出扩展 板上的输入端口 INPUT 连接起来 电路部分就算完成了 程序部分我们对上面的程序做一点点小的修改 由于是两块数字输出扩展板 因此我们需要分别调 用两次 shiftOut 函数 来为两块数字输出扩展板分别设置不同的值 int dataPin 8 SER int latchPin 9 RCK int clockPin 10 SCK void setup pinMode latchPin OUTPUT pinMode clockPin OUTPUT pinMode dataPin OUTPUT void loop for int j 0 j QB QC QH 下降沿移位寄存器数据不 下降沿移位寄存器数据不变变 脉冲 脉冲宽宽度 度 5V 时时 大于几十 大于几十 纳纳秒就行了 我通常都秒就行了 我通常都选选微秒微秒级级 RCK 12 脚脚 上升沿 上升沿时时移位寄存器的数据移位寄存器的数据进进入数据存入数据存储储寄存器 下寄存器 下 降沿降沿时时存存储储寄存器数据不寄存器数据不变变 通常我将 通常我将 RCK 置置为为低低电电平 当移位平 当移位结结 束后 在束后 在 RCK 端端产产生一个正脉冲 生一个正脉冲 5V 时时 大于几十 大于几十纳纳秒就行了 我秒就行了 我 通常都通常都选选微秒微秒级级 更新 更新显显示数据 示数据 G 13 脚脚 高高电电平平时时禁止禁止输输出 高阻出 高阻态态 如果的引脚不 如果的引脚不紧张紧张 用一 用一 个引脚控制它 可以方便地个引脚控制它 可以方便地产产生生闪烁闪烁和熄和熄灭灭效果 比通效果 比通过过数据端移数据端移 位控制要省位控制要省时时省力 省力 注注 1 74164 和和 74595 功能相仿 都是功能相仿 都是 8 位串行位串行输输入入转转并行并行输输出移位寄出移位寄 存器 存器 74164 的的驱动电驱动电流流 25mA 比比 74595 35mA 的要小的要小 14 脚封装 脚封装 体体积积也小一些 也小一些 2 74595 的主要的主要优优点是具有数据存点是具有数据存储储寄存器 在移位的寄存器 在移位的过过程中 程中 输输出出 端的数据可以保持不端的数据可以保持不变变 这这在串行速度慢的在串行速度慢的场场合很有用合很有用处处 数 数码码管管 没有没有闪烁闪烁感 感 3 595 是串入并出是串入并出带带有有锁锁存功能移位寄存器 它的使用方法很存功能移位寄存器 它的使用方法很简单简单 在正常使用在正常使用时时 SCLR 为为高高电电平 平 G 为为低低电电平 从平 从 SER 每每输输入一位入一位 数据 串行数据 串行输输 595 是串入并出是串入并出带带有有锁锁存功能移位寄存器 它的使用存功能移位寄存器 它的使用 方法很方法很简单简单 如下面的真 如下面的真值值表 在正常使用表 在正常使用时时 SCLR 为为高高电电平 平 G 为为低低电电平 从平 从 SER 每每输输入一位数据 串行入一位数据 串行输输入入时钟时钟 SCK 上升沿有上升沿有 效一次 直到八位数据效一次 直到八位数据输输入完入完毕毕 输输出出时钟时钟上升沿有效一次 此上升沿有效一次 此时时 输输入的数据就被送到了入的数据就被送到了输输出端 入出端 入时钟时钟 SCK 上升沿有效一次 直到上升沿有效一次 直到 八位数据八位数据输输入完入完毕毕 输输出出时钟时钟上升沿有效一次 此上升沿有效一次 此时时 输输入的数据就入的数据就 被送到了被送到了输输出端 出端 其其实实 看了看了这这么多么多 595 的的资资料料 觉觉得没什么得没什么难难的的 关关键键是看懂其是看懂其时时序序 图图 说说到底到底 就是下面三步就是下面三步 引用引用 第一步 目的 将要准第一步 目的 将要准备输备输入的位数据移入入的位数据移入 74HC595 数据数据输输入端入端 上 上 方法 送位数据到方法 送位数据到 P1 0 第二步 目的 将位数据逐位移入第二步 目的 将位数据逐位移入 74HC595 即数据串入 即数据串入 方法 方法 P1 2 产产生一上升沿 将生一上升沿 将 P1 0 上的数据移入上的数据移入 74HC595 中中 从低到高 从低到高 第三步 目的 并行第三步 目的 并行输输出数据 即数据并出出数据 即数据并出 方法 方法 P1 1 产产生一上升沿 将由生一上升沿 将由 P1 0 上已移入数据寄存器中上已移入数据寄存器中 的数据的数据 送入到送入到输输出出锁锁存器 存器 说说明 明 从上可分析 从从上可分析 从 P1 2 产产生一上升沿 移入数据 和生一上升沿 移入数据 和 P1 1 产产 生一上升沿生一上升沿 输输出数据 是二个独立出数据 是二个独立过过程 程 实际应实际应用用时时互不干互不干扰扰 即可 即可输输 出数据的出数据的 同同时时移入数据 移入数据 而具体而具体编编程方法程方法为为 如 如 R0 中存放中存放 3F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论