内容正文:
《单片机技术及应用(第4版)》
(高等教育出版社)教案
课 题
单片机控制LED个性化流水彩灯
课 型
理论
课 时
2
授课班级
授课时间
授课教师
教材分析
本节为 “LED 流水彩灯” 项目的高阶实践章节,聚焦 “数组驱动个性化流水控制” 核心目标,系统讲解数组(一维 / 二维 / 字符型)的定义、引用及在单片机编程中的应用(如code table[]存储 LED 花样数据)。教材采用 “知识准备(数组概念)→实践流程(流程图绘制→编程→仿真→验证)” 递进结构,通过table数组实例(含正向流水、反向流水、闪烁等状态),将抽象的数组操作与 “按指定花样显示” 需求深度融合。作为衔接 “基础流水灯” 与 “复杂多模式控制” 的关键环节,本节通过数据结构化编程(用数组管理状态)培养学生模块化设计能力,为后续学习音乐流水灯、传感器联动等复杂任务奠定数据存储与调用的技术基础,是提升单片机程序设计灵活性与扩展性的核心章节。
学情分析
学生已掌握单片机控制基础流水灯的编程(如位运算、循环延时)及 C 语言基础语法(变量、循环结构),但对数组(尤其是 ROM 数组)的定义、存储与调用(如table[]数组存储 LED 花样数据)理解较浅;部分学生能完成单状态控制,却难以将 “数组索引递增”(i++)与 “LED 花样顺序切换” 关联,对 “数据驱动” 编程思路(通过数组存储状态实现个性化控制)认知模糊。软件操作中,虽熟悉 Keil 与 Proteus 基础,但面对多状态数组(如table含 20 + 个状态值)时,易因数组越界(i未重置)或数据类型错误(未用code修饰 ROM 数组)导致仿真异常。需通过数组定义示例(一维 / 二维)、流程图及 “数组设计 - 代码编写 - 效果验证” 实践,强化结构化数据存储与调用能力,突破个性化流水灯程序设计的逻辑瓶颈。
学习目标
知识目标:
1. 理解数组(一维、二维)的定义、引用及相关注意事项。
2. 掌握使用数组实现 LED 个性化流水彩灯的编程思路。
3. 学会绘制个性化流水灯的程序流程图。
技能目标:
1. 能够编写、编译控制 LED 个性化流水的程序代码。
2. 完成仿真调试和程序下载验证功能。
情感目标:
增强技术应用与实操能力,在专业领域实践中熟练掌握核心技能与操作流程。
学习重难点
重点:
1. 数组的定义、引用和赋值方法。
2. 利用数组实现 LED 个性化流水的编程思路。
3. 程序流程图的绘制、代码编写、仿真调试和程序下载。
难点:
1. 理解数组在存储和控制流水花样数据中的应用。
2. 根据编程思路准确编写程序代码。
教学方法
案例分析、讲授法、小组讨论法
课前准备
1.查找相应网站资料,课堂演示使用。
2.学生课前预习。
教学媒体
电子课件、多媒体视频
教学过程
教学环节
教师活动设计
学生活动设计
设计意图
活动一:
创设情境
生成问题
【课程导入】
在之前的学习中,我们掌握了单片机控制 LED 单向流水彩灯的方法。现在,我们要制作一个更具特色的个性化流水彩灯,它能按照我们在单片机程序中指定的流水花样顺序显示。
【新知识传授】
· 知识准备
(1) 数组概述
所谓数组,就是指具有相同数据类型的变量集,并拥有共同的名字。数组中的每个特定元素都使用下标来访问。数组由一段连续的存储地址构成,最低的地址对应第一个数组元素,最高的地址对应最后一个数组元素。
数组按照维数可分为一维、二维、三维和多维数组,常用的是一维和二维数组;
· 标识符:数组的名称
· 数组元素:数组中存放的数据
· 元素下标:对数组元素进行编号,数组下标从0开始,数组中的每个元素都可以通过下标来访问
· 元素类型:数组元素的数据类型
(2) 一维数组
表达形式如下: 数据类型 数组名[常量表达式];
方括号中的常量表达式称为数组的下标。C 语言中,下标是从 0 开始的。例如:
unsigned int a[3];
这里定义了一个无符号的整型数组 a,它有 a [0] ~ a [2] 共 3 个数组元素,每个元素均为无符号整型变量。
· 注意事项
① 数组名与变量名一样,必须遵循标识符命名规则,数组名不能与其他变量名相同。
② 数据类型是指数组元素的数据类型,所有元素的数据类型都是相同的。
③ 常量表达式必须用方括号括起来,指的是数组的元素个数(又称数组长度),它是一个整型值,其中可以包含常数和符号常量,但不能包含变量。
2.引导学生带着问题去课本寻找答案,明确本节课的学习内容。
3.展示本讲学习目标。
1. 接收并查看本节课堂任务书。
2. 了解学习目标,带着目标进行学习。
3. 观察生活中常见的多媒体信息形式,思考其背后的技术支撑。
4. 针对教师给出的问题,初步发表个人见解。
5. 目标明确:跟随教师引导,明确本节课学习目标。
1.以提问的方式导入课程,让学生带着问题有针对性的进行学习。
2.通过任务实施,调动学生积极性。
活动二:
调动思维
探究新知
【新知识传授】
· 知识准备
(1) 二维数组
表达形式如下: 数据类型 数组名[常量表达式1][常量表达式2];
unsigned int a[2][3];
该数组中第一下标表示行,第二下标表示列,因此它是一个 2 行 3 列的数组,各数组元素的排列如下:
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
· 二维数组(赋值方法)
① 按存储顺序整体赋值
例如:
unsigned int a[2][3] = {0, 1, 2, 3, 4, 5};
② 按行分段赋值,这种方法更加直观
例如:
unsigned int a[2][3] = {{0, 1, 2}, {3, 4, 5}};
(2) 字符型数组
用来存放字符的数组,每一个数组元素就是一个字符。与整型数组一样,字符型数组也可以在定义时进行初始化赋值。例如:
char c[5] = {'H', 'e', 'l', 'l', 'o'};
该语句定义了一个字符型数组,它共有 5 个元素,每个元素均为字符型变量。当对全体数组元素赋值时,也可以省略数组长度说明,例如:
char c[] = {'H', 'e', 'l', 'l', 'o'};
这时数组长度将自动定义为 5。
若要在数组中存放一个字符串,可采用如下两种方法:char c[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
或者写成更简洁的形式:char c[] = "Hello";
2. 教师操作演示
3. 引导学生带着问题去课本寻找答案,明确本节课的学习内容。
1. 阅读探究:阅读课本相关内容,探究多媒体技术的产生背景。
2. 概念理解:理解多媒体、多媒体技术和多媒体系统的定义,并尝试用自己的话复述。
3. 要点记录:记录多媒体技术强调的要点,加深理解。
1. 了解学生现有知识储备。
2. 巩固练习。
活动三:
调动思维
探究新知
【新知识传授】
· 绘制程序流程图
(1) 编程思路
创建一个 ROM 数组,将要显示的流水闪烁的花样数据存储在该数组中,使用时从该数组中将数据依次取出,由 P1 口输出控制 8 个发光二极管 LED1 ~ LED8 按照某一规律闪烁,直到数组中的数据全部取出,然后再重复上述过程使 LED 灯继续流水闪烁。用延时函数控制流水灯的流水速度。
(2) 启动与设置
①启动流程图绘图软件 Diagram Designer,设置图纸大小为 A4。
(3) 拖取与调整
②从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
(4) 输入文本
③ 在流程图符号框中输入内容,添加说明文字,
④ 使用工具栏中的指向线连接各框图符号。
(5) 连接与保存
⑤ 保存该程序流程图(文件名为 “个性化流水灯.DDD”)。
· 编程(创建工程与源文件)
① 启动 Keil uVision2,新建一个工程文件 “个性化流水灯.uV2”。
② 新建一个 C51 源程序文件“个性化流水灯.C”,编写如下的 C 源程序代码。
//个性化流水灯,文件名:个性化流水灯.c
#include <reg51.H>
#define uchar unsigned char
uchar code table[] = {
0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f,
0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f,
0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe,
0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe,
0x00, 0xff, 0x00, 0xff,0x01};
uchar i;
void delay(uchar ms);
void delay(uchar ms) {
uchar i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 125; j++);}
void main(void) {
while (1) {
if (table[i] != 0x01) {
P1 = table[i];
i++;
delay(200);
} else {
i = 0;
}
}}
2. 教师操作演示
3. 引导学生带着问题去课本寻找答案,明确本节课的学习内容。
1. 应用列举
2. 影响分析
3. 创新思考
1. 引导学生主动思考,发散思维,参与课堂。
2. 培养学生发现问题,解决问题的能力。
3. 了解相关知识。
4. 辩论形式让学生参与并归纳总结。
活动四:
巩固练习
素质提升
【随堂检测】
1 请简述数组的定义和特点。
2 一维数组定义时,常量表达式有什么要求?
3 二维数组赋值有哪两种方法?
4 在绘制个性化流水灯程序流程图时,第一步是什么?
5 说明一维数组和二维数组的区别。
【分组讨论】
分组讨论,讨论如何设计更多独特的流水花样数据存入数组。分析数组在存储大量流水花样数据时可能遇到的问题及解决办法。
1. 答案交流
2. 话题讨论
3. 效率分析
4. 挑战探讨
5. 总结汇报
知识检测与巩固
课堂小结
作业布置
课堂小结
作业布置
复习本节课内容,预习下节课内容。
板书设计
1. 知识准备
2. 工具与材料准备
3. 绘制程序流程图
教学反思
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$