用移位寄存器来扩展 8位移位寄存器( 三 )


我们使用for-next循环从0计数到255,增量为1 。在每次递增时 , 我们将计数器值写入移位寄存器 。latch引脚用于在我们准备好之前保存数据,以便载入移位寄存器时显示器不会闪烁 。
半秒钟的延迟后,下一个数字被加载 。
结果是LED显示从0到255的二进制数 。
您可以试验代码,操作一些值,并观察对LED的影响 。尝试将shiftOut语句中的MSBFIRST参数更改为LSBFIRST,看看会发生什么 。
这是理解基本移位寄存器操作的简单方法 。
驱动7段显示器74HC575的另一个用途是驱动7段LED显示屏 。你可以用它来显示连接到一台显示器上的数字,也可以级联多台74HC595来驱动多台显示器 。
7段LED显示屏典型的7段LED显示屏布局如下:
请注意,在“7段”显示中实际上有八个LED元件,第八个LED用作小数点 。在某些显示中 , 这可以用冒号代替 。
LED显示屏有两种配置:
公共阳极–所有led使用公共阳极(正极)连接 。
公共阴极-所有发光二极管都与一个公共阴极(负电极)相连 。
两种显示器类型使用相同的引脚排列,因此了解您的类型非常重要 。一个很好的判断方法(除了参考监视器零件号)是在“二极管测试”功能上使用万用表 。当与正确的极性连接时 , 它可以用来点亮LED元件 。
普通阴极显示器比较常见,是我们会用来做实验的类型 。
74HC595 7段监视器连接由于共阴极7段LED显示器实际上只将八个LED连接到一个共阴极(负极)端子 , 因此它与我们在第一个实验中使用的八个LED没有什么不同 。所以我们可以使用完全相同的电路来布线 。
使用连接图中的图表将显示引脚连接到降压电阻 。COM引脚(共阴极)连接到Arduino的地 。请注意,显示器将有两个COM引脚,您只需要连接一个 。
完成所有连接后,您可以通过运行前面的代码来测试它,该代码应该测试所有LED段,包括小数点 。
但是要真正展示一些连贯的东西 , 我们需要不同的代码 。
74HC595 7段显示代码这是我们将用来测试我们的7段显示器的代码 。
/* 74hc 595 shift register with 7-segmentled display 74hc 595-7 seg display . inocountinhexfrom 0-fand display on 7-segmentcommoncathodeleddisplaydronebotworkshop 2020 http s://dronebotworkshop . com *///define connections to 74hc 595//ST _ CP pin 12 constintlatchpin = 10;//SH _ CP pin 11 constintclockpin = 11;//ds pin 14 constintdatapin = 12;//Patternsforcharacters0,1,2,3,4 , 5,6,7 , 8,9,A,b,C,d,E,FintdatArray[16]= { b 11111100000,B11011010,B11110010 , b 11100110,b 11100110 , B10110110,b 1011110 , B10111110,b 1111000000000,b 111110,b 11110000000 , b 111111111void setup(){//setuppinsautputspinmode(latch pin , OUTPUT);pinMode(clockPin,输出);pinMode(数据引脚 , 输出);} void loop(){//count from 0 to 15 for(int num = 0;这个num代码与前面的代码有许多相似之处 , 当你认为它很好地完成了同样的事情时,这并不奇怪 。
我们从定义与74HC595的联系开始 。
然后我们创建一个16个元素的数组,每个元素代表要在7段LED上显示的字符模式 。
这些元素以二进制形式编写,因此很容易理解它们是如何工作的 。在二进制字节中,每一位代表一个LED段 。从MSB到LSB(从左到右),它们代表显示器中的以下部分:
a–b–c–d–e–f–g–DP
当该位设为“1”时 , 每段LED点亮,“0”表示熄灭 。
数组是有序的,所以元素0是“0”的字符 。元素1是诸如“1”的字符 。它是十六进制的,所以元素15是“F” 。
看看数组元素,你会看到排列 。
在再次设置时 , 我们将连接设置为输出,然后进入循环 。
我们再次使用计数器,只是这次在0和15之间 。我们将在LED显示屏上以十六进制格式显示这些值 。
我们一次遍历一个元素,并使用shiftOut将数组中的数据发送到移位寄存器 。
加载代码并观察显示 。如果一切都连接正确,你会看到它从0数到f,然后重复 。
74HC165的附加输入端口现在我们知道了如何使用移位寄存器添加输出端口,是时候反过来添加一些输入端口了 。对于这项工作,我们将使用74HC165 。
我们将使用74HC165移位寄存器和八个触摸按钮开关 。移位寄存器将从开关获得8个输入,并将它们作为串行数据发送到Arduino 。
函数的作用是Arduino再次拥有了接收串行数据的专用功能 。
函数中的一个字节一次移动串行数据 。可以设置为先取MSB或LSB 。它通常与74HC165或CD4021BE等移位寄存器一起使用 。

推荐阅读