内容正文:
任务二 单片机控制LED单向流水彩灯 (1)
单片机技术及应用
同步精品课堂
高等教育出版社第 4 版
1
掌握 C51 各类运算符的含义及使用方法
理解 C 语言单条件选择程序结构
能够编写单片机控制 LED 单向流水彩灯的程序代码
根据程序流程图编写正确的程序代码
C 语言单条件选择程序结构
位运算符的运算规则和实际应用
C51 运算符(算术、关系、逻辑、位、复合赋值)的含义和应用
在电子制作中,LED 流水彩灯是一个非常有趣且基础的项目。通过单片机控制 LED 实现单向流水效果,能让我们深入了解单片机的编程和控制原理。
今天,我们就来学习如何用单片机控制 8 个 LED 彩灯实现单向流水效果。
任务二 单片机控制LED单向流水彩灯
工具及材料准备:
工作准备:
用单片机控制8个LED彩灯,实现单向流水效果
任务需求
① 软件:Protel DXP 2004、Proteus 7.4、Keil uVision2、EasyPRO Programmer、流程图绘制软件。
② 硬件:编程器 1 台、计算机 1 台、最小系统电路板 1 块、LED 灯控电路板 1 块、杜邦线 1 条、电池盒 1 个。
穿好工作服,戴好防静电手环,穿绝缘胶鞋。
清洁工作台面,清理工作区域,工具、仪器仪表摆放整齐有序。
任务二 知识准备 - 算术运算符
加 1 和减 1 运算符示例:
算术运算符
x = x + 1 可写成 x++ 或 ++x。
x = x - 1 可写成 x-- 或 --x。
y = x++ :先 y = x,然后 x = x + 1。
y = ++x :先 x = x + 1,然后 y = x。
算术运算符 含义 算术运算符 含义
+ 加法 / 除法
- 减法 % 求余运算
* 乘法 ++ 加 1
-- 减 1
C51共有7类运算符,算数运算符的含义如下表
任务二 知识准备 - 关系运算符
关系运算符
关系运算符 含义 关系运算符 含义
< 小于 >= 大于等于
> 大于 == 等于
<= 小于等于 != 不等于
C51共有7类运算符,关系运算符的含义如下表
任务二 知识准备 - 逻辑运算符
逻辑运算符
逻辑运算符 含义 逻辑运算符 含义
&& 与 ! 非
|| 或
C51共有7类运算符,逻辑运算符的含义如下表
任务二 知识准备 - 位运算符
位运算符
C51共有7类运算符,位运算符的含义如下表
位运算符 含义 位运算符 含义
& 与 ^ 异或
| 或 << 左移
~ 取反 >> 右移
(1)按位与运算符 “&”
“&” 的功能是对两个二进制数按位进行与运算。根据与运算规则 “有 0 出 0, 全 1 出 1”。
X 0001 1001
& Y 0100 1101
0000 1001
任务二 知识准备 - 位运算符
位运算符
(2)按位或运算符 “|”
“|” 的功能是对两个二进制数按位进行或运算。根据或运算规则 “有 1 出 1, 全 0 出 0”。
X 0001 1001
| Y 0100 1101
0101 1101
(3)按位异或运算符 “^”
“^” 的功能是对两个二进制数按位进行异或运算。根据异或运算规则 “相同为 0, 相异为 1”。
X 0001 1001
^ Y 0100 1101
0101 0100
任务二 知识准备 - 位运算符
位运算符
(4)按位取反运算符 “~”
“~” 的功能是对二进制数按位进行取反运算。根据取反运算规则 “有 0 出 1, 有 1 出 0”。
(5)左移运算符 “<<”
“<<” 运算符的功能是将一个二进制数的各位全部左移若干位,移位过程中,高位丢弃,低位补 0。
(6)右移运算符 “>>”
“>>” 运算符的功能是将一个二进制数的各位全部右移若干位,最高位为 0 的数移位过程中,低位丢弃,高位补 0;最高位为 1 的数移位过程中,低位丢弃,对于无符号数,高位补 0,对于有符号数,高位以符号位填补。
任务二 知识准备 - 复合赋值运算符
复合赋值运算符
C51共有7类运算符,复合赋值运算符的含义如下表
运算符 含义 运算符 含义
+= 加法赋值 >>= 右移位赋值
-= 减法赋值 &= 逻辑与赋值
*= 乘法赋值 |= 逻辑或赋值
/= 除法赋值 ^= 逻辑异或赋值
%= 取模赋值 ~= 逻辑非赋值
<<= 左移位赋值
任务二 知识准备 - 复合赋值运算符
复合运算的一般形式为
变量 复合赋值运算符 表达式。
a += 56 等价于 a = a + 56。
y /= x + 9 等价于 y = y / (x + 9)。
变量与表达式先进行运算符所要求的运算,再把运算结果赋值给参与运算的变量
复合运算的示例如下:
知识准备 - C 语言单条件选择程序结构(基本 if 语句)
基本 if 语句格式
首先判断条件表达式是否为真,若为真则执行某语句组,若不为真,则跳过该语句组,继续往下执行其他语句。
基本if语句执行过程
if(表达式)
{
语句组;
}
知识准备 - C 语言单条件选择程序结构(基本 if 语句)
if…else… 语句格式
首先判断条件表达式是否为真,若为真则执行语句组 1,若不为真,则执行语句组 2。
基本if语句执行过程
if(表达式)
{
语句组 1;
}
else
{
语句组 2;
}
任务二 绘制程序流程图
① 启动流程图绘图软件 Diagram Designer,新建一个文件,设置图纸大小为 A4。
② 从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
③ 在框图中输入文本。
④ 用指向线连接框图符号。
⑤ 保存该程序流程图(文件名为 “选择结构流水灯.DDD”)。
绘制程序流程图步骤:
任务二 绘制程序流程图
绘制程序流程图步骤
选择结构流水灯流程图如图所示:
任务二 编写程序代码
P1=Oxfe;
根据程序流程图,将下列程序代码补充完整。
//使用位操作运算和选择程序结构实现流水效果(延时函数同上,省略)
#include "reg51.h"
#define uchar unsigned char
void delay(uint ms);
void main(void){
P1 = 0xfe; //11111110
while(1)
{
delay(500);
if(P1 == 0x7) //01111111
{
④ ; //11111110
delay(500);
}
⑤ ;
}}
P1=(P1<<1)|XOX1
任务二 拓展内容
多模式流水灯实现
可以通过增加条件判断和循环结构,实现多种模式的流水灯效果,如双向流水、闪烁流水等,尝试修改程序实现这些效果。
硬件电路优化
在硬件方面,可以考虑增加驱动芯片来增强电流驱动能力,提高 LED 的亮度和稳定性,同时优化电路布局,减少干扰。
随堂检测1
在 C51 中,y = x++ 和 y = ++x 有什么区别?
答案:y = x++ 表示将 x 的值赋给 y 后,x 加 1;y = ++x 表示
x 先加 1 后,再将新值赋给 y。
C51 的位运算符中,“&” 和 “|” 的运算规则分别是什么?
答案:“&” 是按位与运算,规则是 “有 0 出 0,全 1 出 1”;“|” 是按位或运算,规则是 “有 1 出 1,全 0 出 0”。
随堂检测2
基本 if 语句的执行过程是怎样的?
答案:首先判断条件表达式是否为真,若为真则执行某语句组,若不为真,则跳过该语句组,继续往下执行其他语句。
绘制程序流程图的步骤有哪些?
答案:①启动流程图绘图软件 Diagram Designer,新建一个文件,设置图纸大小为 A4;②从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置;③在框图中输入文本;④用指向线连接框图符号;⑤保存该程序流程图。
随堂检测3
说明复合赋值运算符的作用和一般形式。
答案:复合赋值运算符的作用是简化程序表达,是 C 语言中简化程序的一种方法,凡是二目运算都可以用复合赋值运算符去简化表达。虽然会降低程序的可读性,但能使程序代码简单化,并提高编译的效率。其一般形式为:变量复合赋值运算符表达式,含义是变量与表达式先进行运算符所要求的运算,再把运算结果赋值给参与运算的变量。例如:a += 56 等价于 a = a + 56,y /= x + 9 等价于 y = y / (x + 9)。
1
分组讨论,讨论如何优化流水灯程序,使其流水效果更加多样化。分析不同运算符在流水灯程序中的应用场景。
1. 运算符
任务二 单片机控制LED 单向流水彩灯 (1)
2. C 语言单条件选择程序结构
启动软件与设置
拖取符号与调整
输入文本
连接符号与保存
算术运算符
关系运算符
逻辑运算符
位运算符
复合赋值运算符
3. 绘制程序流程图
基本 if 语句
if…else… 语句
感谢观看
25
$$