任务2.2 基于74HC595的流水灯控制
任务目标
任务是利用两片74HC595芯片级联扩展16位输出口,驱动按照圆形放置的16个发光二极管,使发光二极管按顺时针方向实现流水灯的花样显示。仿真硬件电路如图2-17所示。
[任务重点]
● 串入并出的移位寄存器74HC595的工作原理
● 两片74HC595级联的硬件电路设计
● 结构流程图绘制
● 编译并运行、观察仿真结果
图2-17 仿真硬件电路
任务实施
2.2.1 硬件绘制
(1)74HC595元器件选择
在“选取元器件”对话框的“分类”列表框中选择“TTL 74HC series”选项,在“显示本地结果”列表框中双击“74HC595”选项,完成74HC595元器件选择,如图2-18所示。
图2-18 74HC595元器件选择
(2)排阻元器件选择
在“选取元器件”对话框的“分类”列表框中选择“Resistors”选项,在“子类”列表框中选择“Resistor Packs”选项,在“显示本地结果”列表框中双击“RX8”选项,完成排阻元器件的选择,如图2-19所示。
图2-19 排阻元器件选取
(3)放置元器件和端口
按照图2-17所示电路放置元器件和端口,调整元器件相对位置,连线、编辑元器件属性,完成电路绘制。
2.2.2 SETUP结构流程图绘制
SETUP结构流程图完成IO5~IO7引脚输出模式的设置,SETUP结构流程图如图2-20所示。
图2-20 SETUP结构流程图
2.2.3 zh结构流程图绘制
zh结构流程图将要发送的数据(a变量的值)的各二进制位求出并分别放到布尔变量a7~a0中,其中,a7为最高位,a0为最低位,求取过程中利用了除法和求余运算。zh结构流程图最终效果如图2-21所示。
(1)放置“事件块”图框
拖动“事件块”图框放置到编辑区的空白区,放置“事件块”创建结构流程图,如图2-22所示。
(2)编辑事件块
1)双击结构图中的“事件块”图框,弹出“编辑事件块”对话框,如图2-23所示。
2)在“名称”文本框中输入“zh”,单击“确定”按钮,创建的初始zh结构流程图如图2-24所示。
图2-21 zh结构流程图最终效果
图2-22 放置“事件块”创建的结构流程图
图2-23 “编辑事件块”对话框
图2-24 初始zh结构流程图
(3)新建布尔变量a7~a0
可以在任何结构流程图的“分配块”“决策块”“I/O操作”图框等的编辑窗口中新建变量。
1)双击图2-20中的任何一个I/O操作框,弹出“编辑I/O块”对话框,如图2-25所示。
图2-25 “编辑I/O块”对话框
2)单击“新建”按钮,弹出“新建变量”对话框,如图2-26所示。在“命名”文本框中输入“a0”,在“类型”下拉列表框中选择“BOOLEAN”选项。
图2-26 “新建变量”对话框
3)单击“确定”按钮,在“编辑I/O块”对话框中完成布尔变量a0的定义,如图2-27所示,在“变量”列表框中列出了定义好的变量a0。
图2-27 布尔变量a0定义
4)和变量a0的新建方法相同,完成变量a1~a7的新建,所有变量新建结束后,图2-27中的“变量”列表中会全部列出。
(4)结构流程图的分裂
结构流程图比较复杂,编辑区的纵向或横向放不下时,可以将结构流程图分裂。
1)将光标移动到要分裂的连接线位置,分裂位置示意如图2-28所示。
2)右击弹出“删除/分裂”快捷菜单,如图2-29所示,选择“分裂”选项,完成结构流程图的分裂,自动添加成对的“互联”图框,“互联”图框编号按顺序随机产生,编号相同的地方就是连接在一起的,分裂后的结构流程图如图2-30所示。
图2-28 分裂位置示意图
图2-29 “删除/分裂”快捷菜单
图2-30 分裂后的结构流程图
(5)完成其他流程图
继续完成zh结构流程图的绘制,最终效果如图2-21所示。
2.2.4 fa结构流程图和SH结构流程图绘制
SH结构流程图实现IO6引脚为低-高-低的电平。fa结构流程图实现将变量a7~a0的值依次发送到74HC595保存起来,按照74HC595工作原理,IO5每输出一个二进制位,IO6引脚必须输出一个上升沿脉冲(即低-高-低的电平),单片机才能将一位二进制数输出锁存到74HC595。fa结构流程图和SH结构流程图如图2-31所示。
图2-31 fa结构流程图和SH结构流程图
a)fa结构流程图 b)SH结构流程图
1)拖动“子程序调用”图框到fa结构流程图中,“子程序调用”图框放置如图2-32所示。
2)双击图2-32中的“子程序调用”图框,弹出“编辑子程序调用”对话框,如图2-33所示。其中,在“图纸”下拉列表中选择“(全部)”选项,在“方式”下拉列表中选择“SH”选项,单击“确定”按钮。
3)进一步完善,完成图2-31的绘制。
图2-32 “子程序调用”图框放置
图2-33 “编辑子程序调用”对话框
2.2.5 st结构流程图绘制
按照74HC595工作原理,在两片级联的芯片串行接收完16位二进制数后,单片机使IO7输出一个上升沿脉冲,启动两片74HC595同时输出接收到的数据,驱动发光二极管。st结构流程图如图2-34所示。
图2-34 st结构流程图
2.2.6 LOOP结构流程图绘制
按照显示流水灯花样的特点,要求单片机通过两片74HC595输出16个16位的二进制数,每一个16位二进制数中只有一个0,其他位为1,数据输出保持500ms不变。在低8位数中0所在位变的过程中,高8位数恒为1(高8位二进制数对应的十进制数为255);在高8位数中0所在位变的过程中,低8位数恒为1(低8位二进制数对应的十进制数为255)。根据这一规律,LOOP结构流程图主要分为两个循环结构,分别循环8次,在第一个循环中,每一次完成高8位为全1输出,低8位输出数据使0分别从低位到高位变化;在第二个循环中,每一次高8位输出数据使0分别从低位到高位变化,低8位输出数据为全1。LOOP结构流程图如图2-35所示。
图2-35 LOOP结构流程图
1)利用“循环构建”图框绘制流程图,“循环构建”图框如图2-36所示。
图2-36 “循环构建”图框
2)将“循环构建”图框拖动到LOOP结构流程图中,双击弹出“编辑循环”对话框。在“下一个循环”选项卡进行设置,具体如图2-37所示。其中,在“循环变量”下拉列表中选择循环变量“i”(用i变量控制循环次数),设置“开始值”为0,“停止值”为7,“单步值”为1。
图2-37 “编辑循环”对话框
3)单击“确定”按钮,进一步完善LOOP结构流程图。
2.2.7 仿真运行
单击“仿真运行”按钮,观察仿真结果。
相关知识
2.2.8 74HC595功能介绍
74HC595是一个8位串行输入、并行输出的移位寄存器,并行输出为三态输出。74HC595芯片引脚如图2-38所示。在SH_CP的上升沿,串行数据由DS输入到内部的8位移位寄存器,并由Q7'输出,多片级联时后面的74HC595数据输入端接前面一片的Q7',而并行输出则是在ST_CP的上升沿将在8位移位寄存器的数据存入到8位并行输出缓存器,OE的控制信号为低电平时,并行输出引脚(Q0~Q7)的输出值等于并行输出缓存器所存储的值。而当OE为高电平时,也就是输出关闭时,并行输出引脚会保持在高阻抗状态。
2.2 仿真动画
图2-38 74HC595芯片引脚
74HC595芯片各引脚功能如表2-1所示。
表2-1 74HC595芯片引脚功能
2.2.9 两片74HC595级联的使用方法和步骤
两片74HC595级联的硬件电路连接按照图2-17所示。单片机对74HC595的操作步骤如下。
1)单片机将要输出的1位数据输出到74HC595的数据输入端DS上,先送高位后送低位或先送低位再送高位。
2)单片机在SH_CP引脚产生上升沿。
3)重复1)和2),将16位数据依次按顺序输出锁存到两片74HC595芯片上。
4)单片机在ST_CP产生上升沿,使两片74HC595同时并行输出数据,即数据并出。
2.2.10 “分裂”图框使用
在流程图绘制中,如果要转列、转行或换页继续绘制结构流程图,就要用到“互联”图框。
在分裂处右击,在弹出的快捷菜单中选择“分裂”选项,流程图断开,自动添加节点号。也可手动添加“互联”图框,拖动“分裂”图框到编辑区,双击编辑节点号,如图2-39所示。
图2-39 手动放置“分裂”节点并编辑
2.2.11 循环结构
任务LOOP结构流程图中包含循环结构,循环结构用“循环构建”图框完成,以LOOP结构流程图中的循环结构介绍其构成和执行过程。截取LOOP部分流程图如图2-40所示。
图2-40 LOOP部分流程图
循环结构由循环控制条件和循环体组成。循环结构执行时首先执行“循环构建”开始图框,变量i获得初始值为0,然后判断循环条件是否成立,如果循环条件成立(这里是i的值小于或等于7),顺序执行循环体内的图框,循环体执行一遍后自动回去再判断循环条件,如果循环条件成立再执行循环体,直到循环条件不成立才结束循环。
小提示:由于这里设置的步长为1,所以循环体每执行一遍,i的值自动增加1,所以总有结束循环的时候,否则死循环。
2.2.12 LOOP结构流程图功能说明
由于LOOP结构流程图太复杂,分两部分介绍。
1)完成前8个16位二进制数的输出,先发高8位,再发低8位,8个16位二进制数如表2-2所示。通过对数据进行分析,发现规律:高8位二进制数均为1,8个低8位二进制数中的0依次从低到高移动或者分别等于255-x(x=2n,n=0,1,2,…,7)。
表2-2 8个16位二进制数
实现这些数据输出的部分LOOP结构流程图如图2-41所示,在图中对图框功能加以介绍。
图2-41 部分LOOP结构流程图
2)完成后8个16位二进制数的输出,先发高8位,再发低8位,8个16位二进制数如表2-3所示。通过对数据进行分析,发现规律:低8位二进制数均为1,8个高8位二进制数中的0依次从低到高移动或者分别等于255-x(x=2n,n=0,1,2,…,7)。
表2-3 8个16位二进制数
实现这些数据输出的部分LOOP结构流程图如图2-42所示,在图中对图框功能加以说明。
图2-42 实现后8个16位二进制数的输出的部分LOOP结构流程图
任务拓展
任务2.2中是顺时针实现流水灯花样显示,硬件电路不变,编写流程图实现逆时针流水灯花样显示。