![基于Proteus的Arduino可视化编程应用技术](https://wfqqreader-1252317822.image.myqcloud.com/cover/35/41865035/b_41865035.jpg)
任务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=1738845187-JKEiuKCfFbs93njdJnI5ZJ0x5dI1llgY-0-7ba2e803419fc8288aa31647f147a3be)
图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=1738845187-BTDfi2lYgd3ClzKoJVmxhiKhafRSckZc-0-2582c4bfaec334ef0adcc6637652b958)
图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=1738845187-aW7uo6uYsiGAQ0SBqaYdm4ArN1MeQixI-0-7d6f7d4c6bfedfa68251c9c40583f0a1)
图2-3 流程图框工具条中的“分配块”和“决策块”图
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_48_02.jpg?sign=1738845187-P1o5E20uyTtpRkzCZ6nmI8X1AuHUBeOf-0-02a3b221e08d7c8cb67321de305f5fc2)
图2-4 SETUP结构流程图
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_48_03.jpg?sign=1738845187-tgb1p1NDiomKC15jH9og1aujRcj48n52-0-6d4ef7ecdee84b7d445facd7c82aa331)
图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=1738845187-3UY6zHU9tRCiEynSISjpZGf3ve4Mqquv-0-6d5cf28e070fcccb08ae674c0be15f88)
图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=1738845187-HvQuJIPsKms1iNpY1D9Rox553kJo3zoK-0-89b7d54d383d305d8d07eb0a7231d7a8)
图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=1738845187-O24cmCUvg8txgx9mPLAUZfjuaTgrRq7N-0-a9786350512e941374946f8ddb915941)
图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=1738845187-xEkCAwkxi1ntYFHcwh9XNyVRd02yWQff-0-b15516064c6707dffe952c9843d856fd)
图2-9 放置“决策块”图框设置
(3)完成“决策块”另一出口连线
具体连线操作示意图如图2-11所示。
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_51_01.jpg?sign=1738845187-q63nPf0SZLhVqnuxULaOzqiL6qurfv1S-0-582fce37a64fc91e9203392d6bbeee16)
图2-10 SETUP结构流程图(添加决策块)
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_51_02.jpg?sign=1738845187-Rk8SzapWpvnuTDloo61hblhCwBgjPaG7-0-c3687c91b11ba556f3dbfec129b513e3)
图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=1738845187-rWF9Rv0QQkl1QoIVZIj2sI8LnmMT0NXs-0-137f07605a3df83a9e5745d9125ae380)
图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=1738845187-N3wibLxcx69ZCtp3BQOyf8LpVfdBZv8W-0-1761dd7cf9c54809b8f7541266892708)
图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=1738845187-MMTz8B0GBQHlyT9QV6OkaX2xb90gzxcE-0-f51ae5d02e9f25c39eed30b6dee431f1)
2.1 仿真动画
![](https://epubservercos.yuewen.com/5072CD/21889221001187006/epubprivate/OEBPS/Images/978-7-111-66651-6_53_01.jpg?sign=1738845187-PmBD4IN68azRpFCCiTyHI1N8VkVbgXnR-0-0c6bd56195cdad31cfa4dd7478cfadc3)
图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=1738845187-19NWjGC8biqig0DtfgzW9fGlb4gE9uVL-0-2e60c894945cbfa82208ed11f67279fa)
图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=1738845187-ri4vjnsqSoJTxVtIfpFVs3vS6AAVCz7J-0-7e15eaa4bdc9f011015e270c945a8d2b)
图2-16 LOOP结构流程图功能说明
任务拓展
1)硬件电路不变,实现从右往左的跑马灯效果。
2)修改硬件,用IO1、IO2、IO4、IO6、IO7、IO8、IO9、IO10数字引脚控制发光二极管,设计硬件电路和绘制结构流程图,实现跑马灯的效果。