- 基于Proteus的Arduino可视化编程应用技术
- 石从刚 宋剑英 陈萌编著
- 1945字
- 2021-12-17 16:08:28
任务2.1 LED二极管跑马灯控制
任务目标
使用Arduino的数字IO0~IO7引脚分别控制LED发光二极管,实现8个LED发光二极管按照跑马灯花样显示,仿真硬件电路如图2-1所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_46_01.jpg?sign=1739619822-l5236vTHVYdVtasGXKvnlQTDG8FsxvbR-0-a4d295ad5bdebec8255487cec10b6116)
图2-1 8个发光二极管显示电路
[任务重点]
● 用“决策块”图框编写分支结构
● 跑马灯花样显示特点
● 所有LED发光二极管亮或暗的结构流程图绘制
● 判断LED发光二极管从左到右显示了一遍
● 编译并运行、观察仿真结果
任务实施
2.1.1 硬件电路绘制
1)绘制好一个电阻和一个二极管的连接电路,方法如任务1.1所述,电路如图2-2所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_47_01.jpg?sign=1739619822-Qd1KkgPn7yniNRLCI0Ntu1hoPUTwbl9D-0-02e69d76977fb6158c825f10fbefce2a)
图2-2 电路块的选择
2)采用块复制的方法可以快速完成其他电阻和二极管连接电路的绘制。选择要复制的电路块,在电路的左上角按住左键拖动到电路的右下角再松开左键,如图2-2所示。被选中的电路四周有黑色的虚线框,元器件呈红色。
3)单击“块复制”按钮,能复制出其他电阻和二极管连接电路,如图2-2所示。
4)完善其余连线。
5)放置I/O端口并双击编辑端口号。
6)放置电源地并连接到电路,完成图2-1电路绘制。
2.1.2 SETUP结构流程图绘制
SETUP结构流程图的绘制需要用到流程图框工具条中的“分配块”和“决策块”,如图2-3所示。
(1)放置“分配块”图框
1)拖动“分配块”到SETUP结构流程图中,如图2-4所示。
2)双击“分配块”,弹出“编辑分配块”对话框,如图2-5所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_48_01.jpg?sign=1739619822-ogJQC42OTV5g6qB0CJ54TMM4glDJkk17-0-d3d9db8832162209756e983fb79ba23a)
图2-3 流程图框工具条中的“分配块”和“决策块”图
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_48_02.jpg?sign=1739619822-Xnjz4HEhB2oJqHUchguourTpETcfL4ny-0-e45e0606c3f038250ee6a1ed26ac75b1)
图2-4 SETUP结构流程图
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_48_03.jpg?sign=1739619822-t4MTZs415bQ3EhWBG417mo5ZcUsN5Ixa-0-5a0154f47c798d78f9de6e41e45cc536)
图2-5 “编辑分配块”对话框
3)单击左下角“新建”按钮,弹出“新建变量”对话框,如图2-6所示。在“命名”文本框中输入j(变量名可以任意),在“类型”下拉列表中选择“INTEGER(整型)”选项。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_49_01.jpg?sign=1739619822-B4x37taT35h6ARjDg3fyU2vJ06YYsqQO-0-3f9801fc1b45f82b264ed6be20587877)
图2-6 “新建变量”对话框
4)单击“确定”按钮,回到“编辑分配块”对话框,整型变量j定义成功,如图2-7a所示。
5)在“分配”下拉列表框选择“j”,在右边文本框中输入0,具体如图2-7b所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_49_02.jpg?sign=1739619822-2X9uX5sZ9DXfgngwGM9H56ESFnSQIj6e-0-43c648b8c4ac782684d5b87a3dce5363)
图2-7 设置整型变量j
a)定义整型变量j b)设置“分配”属性
6)单击“确定”按钮,绘制的SETUP结构流程图如图2-8所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_50_01.jpg?sign=1739619822-nYexiYAlBKGG5TX5YSJuzYONC3Tk28uS-0-8174d60f89fcaabcfb304ed7e69d8f19)
图2-8 SETUP结构流程图(添加分配块)
(2)放置“决策块”
拖动“决策块”图框到SETUP结构流程图,双击“决策块”,弹出“编辑条件块”对话框,如图2-9所示。在“条件”文本框中输入“j>7”,单击“确定”按钮,完成的SETUP结构流程图如图2-10所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_50_02.jpg?sign=1739619822-28R9k4jZ66xK1zqSg0acZPKNmJ9F5YWF-0-28400f121b1a09f962f332d1a73bd383)
图2-9 放置“决策块”图框设置
(3)完成“决策块”另一出口连线
具体连线操作示意图如图2-11所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_51_01.jpg?sign=1739619822-nYv7Qm0rXqdSunzNEzazNlJXZJBxt1qB-0-1137b92f845d2ba045fca369fb8fcad7)
图2-10 SETUP结构流程图(添加决策块)
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_51_02.jpg?sign=1739619822-gF8QcBaZV9T1Fx8Wv46udXOCwWLJpRRW-0-3a6a1989ee34d77dfe375fb31d816840)
图2-11 连线操作示意图
(4)继续完善SETUP结构流程图
如图2-12所示,继续完善SETUP结构流程图。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_51_03.jpg?sign=1739619822-vmU96EhNqLPFC0jHZdmpYYmdBL4lKm0r-0-6a0f840ca7ceeb2b29e5ebbc11792da7)
图2-12 完善SETUP流程图
2.1.3 LOOP结构流程图绘制
由于LOOP结构流程图中所有图框已经用过,具体绘制过程不再说明,按照图2-13所示绘制LOOP结构流程图。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_52_01.jpg?sign=1739619822-4XMuBEL1mP4SnuSW061RntAX2jUqjuPI-0-7d1cb1dc6bf60256981914041704bdd7)
图2-13 LOOP流程图
2.1.4 仿真运行
单击“仿真运行”按钮,观察仿真结果。
相关知识
2.1.5 “分配块”图框里变量的算术运算
可视化结构流程图绘制时,通过“分配块”实现对变量的算术运算,具体的运算符含加“+”、减“-”、乘“*”、除“/”、求余“%”等运算,比如j=j+1、j=j-1、j=j*10、j=j/10、j=j%10、j=i+10等都是合法的运算。
也可通过系统自带的函数对变量进行相应的计算,自带的函数列表如图2-14所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_52_02.jpg?sign=1739619822-Ddc8ueV5Cbs41PCPwovLZkIf4eAB5dEq-0-e95b0707afdecd820f60dd1ae1575f50)
2.1 仿真动画
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_53_01.jpg?sign=1739619822-ZYcwcXbjlCc88SsNgqosKI3Y8yyA2VXJ-0-c3370db387e91c9da65c9660f9475b2f)
图2-14 自带的函数列表
2.1.6 “决策块”里的条件设置
“决策块”用来设定结构流程图的条件,根据条件满足和不满足时分别执行相应的分支流程(YES或NO分支),从而实现两分支和多分支程序设计,“决策块”里能设置的条件有大于“>”、小于“<”、大于或等于“>=”、小于或等于“<=”、等于“=”、不等于“!=”,比如j>7,j<3,j>=5,j<=10,j=3,j!=6等都是合法的分支条件。
2.1.7 结构流程图结构分类
结构流程图从结构上分为顺序结构、分支结构、循环结构3类。这里只介绍顺序结构和分支结构。
(1)顺序结构
顺序结构实现流程图中的图框按从上到下依次执行。任务1.3中的SETUP和LOOP结构流程图均为顺序结构流程图。
(2)分支结构
分支结构流程图中用到了“决策块”图框,“决策块”图框执行后下一步执行“YES”分支还是“NO”分支要根据“决策块”图框里条件是否满足。
任何结构流程图从总体上说都是顺序结构,因为流程图的执行总体上是按顺序从上往下依次执行,如果遇到“决策块”图框,可以选择不同路径继续执行,到最后都要结束流程图的执行(LOOP结构流程图总体上也是顺序结构,但不结束执行)。
2.1.8 SETUP结构流程图功能说明
SETUP结构流程图通过一个分支结构对IO0~IO7引脚的模式进行定义,均定义为输出模式,SETUP结构流程图功能说明如图2-15所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_54_01.jpg?sign=1739619822-cncFf1Akd7YaqS62r8rR3wkt6tjPOesR-0-374e104f10b6c89cb15a52649ce38804)
图2-15 SETUP结构流程图功能说明
2.1.9 LOOP结构流程图功能说明
LOOP结构流程图的上半部分,通过j变量控制引脚号,使IO0~IO7引脚分别输出高电平,并延时500ms,看到跑马灯的效果;LOOP结构流程图的下半部分,通过j变量控制引脚号,使IO0~IO7引脚分别输出为低电平,所有灯熄灭,并延时500ms,为下一次跑马灯的效果做准备。LOOP结构流程图功能说明如图2-16所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_54_02.jpg?sign=1739619822-l53GXSW1i5rHaMx9G0JS05UBYk7fRiTV-0-a43ffc72ed6599bac4b4ab82bbd120ec)
图2-16 LOOP结构流程图功能说明
任务拓展
1)硬件电路不变,实现从右往左的跑马灯效果。
2)修改硬件,用IO1、IO2、IO4、IO6、IO7、IO8、IO9、IO10数字引脚控制发光二极管,设计硬件电路和绘制结构流程图,实现跑马灯的效果。