任务二 单片机控制LED 单向流水彩灯 (3)(课件)-《单片机技术及应用(第4版)》(高等教育出版社) 同步精品课堂
2025-08-19
|
25页
|
86人阅读
|
0人下载
精品
内容正文:
任务二 单片机控制LED 单向流水彩灯 (3)
单片机技术及应用
同步精品课堂
高等教育出版社第 4 版
1
掌握改变彩灯流水速度和方向的方法
学会使用不同方法优化控制 LED 单向流水的程序
理解循环移位函数、循环程序结构和位操作与选择程序结构在流水灯程序中的应用
三种优化程序方法的编程思路
绘制优化程序对应的流程图
灵活运用不同方法优化程序以实现特定功能
理解位操作和选择程序结构实现流水效果的原理
在之前我们已经学会了单片机控制 LED 单向流水彩灯的基本实现方法,现在我们来进一步探讨如何改变彩灯的流水速度和方向,以及思考程序是否可以优化。
通过学习不同的优化方法,能让我们的程序更加简洁高效,下面就让我们一起开始学习吧。
方法 1 —— 用头文件中的循环移位函数优化程序
C51 内置头文件 INTRINS.H 中的函数_crol_可以完成循环左移操作(向左移动 1 位,最高位数据移至最低位处),因此可以更简洁地完成流水显示操作。如图所示。
编程思路
方法 1 —— 用头文件中的循环移位函数优化程序
① 启动流程图绘图软件 Diagram Designer,设置图纸大小为 A4。
② 从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
(1)绘制流程图
方法 1 —— 用头文件中的循环移位函数优化程序
③ 在框图中输入文本。
④ 用指向线连接框图符号。
⑤ 保存该程序流程图(文件名为 “循环左移函数实现的流水灯.DDD”)。
(1)绘制流程图
方法 2 —— 用 for 循环程序结构优化程序
用位操作和循环程序结构实现流水显示效果。用 for 语句控制移位的次数,移完 8 次后重新赋值。
编程思路
在硬件层面(如 LED 灯组、数码管等),通常用一个字节(8 位)的二进制数据表示 8 个显示单元的状态,每位对应一个单元的亮灭(1 为亮,0 为灭)。流水效果本质是让这个 "亮位" 按固定方向依次移动,形成动态流动的视觉体验。
方法 2 —— 用 for 循环程序结构优化程序
for 语句可以使程序按指定的次数重复执行一个语句组。
for 语句
for 语句的其格式如下
for (初始化表达式; 条件表达式; 更新表达式) { 循环体代码;
}
C/C++:
# 遍历序列(列表、字符串等)
for 变量 in 序列:
循环体代码(缩进表示)
Python:
方法 2 —— 用 for 循环程序结构优化程序
for 语句
首先在初始化表达式中设置循环变量的初始值,然后求解条件表达式的值,如果其值为 “真”,则执行 for 后面的语句;如果为 “假”,则跳过 for 循环语句;如果条件表达式为 “真”,则在执行完指定的语句组之后,执行增量表达式。
for 语句的执行过程如图所示:
方法 2 —— 用 for 循环程序结构优化程序
while 语句
while 语句的格式如下:
while (条件表达式) {
循环体代码;
[可选:修改条件的语句;]
}
C/C++:
while 条件表达式:
循环体代码(需缩进)
[可选:修改条件的语句]
Python:
方法 2 —— 用 for 循环程序结构优化程序
while 语句
首先判断条件表达式是否为 “真”,若为 “真”,则执行循环体中的语句组;否则,跳出循环体,执行后面的操作。
while 语句的执行过程如图所示:
方法 2 —— 用 for 循环程序结构优化程序
① 启动流程图绘图软件 Diagram Designer,设置图纸大小为 A4。
② 从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
(1)绘制流程图
方法 2 —— 用 for 循环程序结构优化程序
③ 在框图中输入文本。
④ 用指向线连接框图符号。
⑤ 保存该程序流程图(文件名为 “循环左移函数实现的流水灯.DDD”)。
(1)绘制流程图
方法 3—— 位操作和选择程序结构实现
编程思路
① P1 口输出一个 8 位二进制数 11111110,将 LED1 点亮。
② 延时一段时间,使用位操作中的左移命令左移 1 位(高位溢出,低位补 0)
方法 3—— 位操作和选择程序结构实现
编程思路
③ 使用或运算将最低位置 1,然后继续进行延时和位运算操作,如图所示。
④ 延时结束后,使用 if 语句判断 P1 口数据是否为 01111111(即最高位是否为低电平),如果为 01111111 说明已经完成了 7 次移位操作,此时将 P1 口数据重置为 11111110(最低位为低电平)。
方法 3—— 位操作和选择程序结构实现
① 启动流程图绘图软件 Diagram Designer,设置图纸大小为 A4。
② 从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
(1)绘制流程图
方法 3—— 位操作和选择程序结构实现
③ 在框图中输入文本。
④ 用指向线连接框图符号。
(1)绘制流程图
随堂检测1
C51 内置头文件 INTRINS.H 中的_crol_函数有什么作用?
答案:可以完成循环左移操作,向左移动 1 位,最高位数据移至最低位处,可用于更简洁地完成流水显示操作。
for 语句的执行过程是怎样的?
答案:首先在初始化表达式中设置循环变量的初始值,然后求解条件表达式的值,如果其值为 “真”,则执行 for 后面的语句;如果为 “假”,则跳过 for 循环语句;如果条件表达式为 “真”,则在执行完指定的语句组之后,执行增量表达式。
随堂检测2
在方法 3 中,使用位操作左移后为什么要进行或运算?
答案:使用或运算将最低位置 1,以便继续进行后续的延时和位运算操作,实现流水显示效果。
while 语句的执行过程是怎样的?
答案:首先判断条件表达式是否为 “真”,若为 “真”,则执行循环体中的语句组;否则,跳出循环体,执行后面的操作。
随堂检测3
阐述使用位操作和选择程序结构实现流水显示的具体操作流程。
答案:
① P1 口输出一个 8 位二进制数 11111110,将 LED1 点亮。
② 延时一段时间,使用位操作中的左移命令左移 1 位(高位溢出,低位补 0)。
③ 使用或运算将最低位置 1,然后继续进行延时和位运算操作。
④ 延时结束后,使用 if 语句判断 P1 口数据是否为 01111111(即最高位是否为低电平),如果为 01111111 说明已经完成了 7 次移位操作,此时将 P1 口数据重置为 11111110(最低位为低电平)。
⑤ 循环执行上述操作。
随堂检测3
说明 for 语句的执行过程。
答案:for 语句的执行过程如下:首先在初始化表达式中设置循环变量的初始值,然后求解条件表达式的值,如果其值为 “真”,则执行 for 后面的语句;如果为 “假”,则跳过 for 循环语句;如果条件表达式为 “真”,则在执行完指定的语句组之后,执行增量表达式。
1
分组讨论,讨论三种优化方法各自的优缺点和适用场景。思考如何进一步优化程序以实现更多样化的流水效果。
1. 方法 1—— 用头文件中的循环移位函数优化程序
任务二 单片机控制LED 单向流水彩灯 (3)
2. 方法 2—— 用 for 循环程序结构优化程序
编程思路
绘制流程图
3. 方法 3—— 位操作和选择程序结构实现
编程思路
知识准备——for 语句
绘制流程图
编程思路
绘制流程图
感谢观看
25
$$
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。