内容正文:
《单片机技术及应用》(高教版第四版) 教案
课 题
制作行列矩阵式键盘电子密码锁 (2)
课 型
理论
课 时
2
授课班级
授课时间
授课教师
教材分析
任务二为 “电子密码锁” 项目的进阶实践章节,聚焦 “行列矩阵式键盘密码锁全流程制作” 核心目标,系统讲解矩阵键盘原理、硬件制作、程序设计及仿真验证的技术要点。教材采用 “知识准备(矩阵键盘→扫描方法)→实践流程(电路设计→焊接→编程→仿真)” 递进结构,通过元件清单、电路原理图及扫描函数代码(KeyV ()),将抽象的多按键检测与 “6 位密码输入验证” 需求深度融合。作为衔接独立式键盘(任务一)与复杂输入系统的关键环节,本节通过矩阵扫描(行线列线协同)和函数模块化设计(扫描函数、延时函数)培养学生工程实践能力,为后续学习触摸键盘、智能密码算法等任务奠定技术基础,是提升单片机系统开发综合能力的核心章节。
学情分析
学生已完成独立式键盘密码锁(任务一)的制作,掌握 I/O 口控制、按键消抖等基础,但对行列矩阵式键盘的行线列线扫描逻辑(逐列送低电平→逐行读取)理解较浅;部分学生能完成单按键检测,却难以将 “行列短接信号→键值计算” 关联,对 16 键协同(4×4 矩阵)的扫描算法易混淆。硬件操作中,焊接 16 个按键与布局因元件密集易出错;软件编程中,键盘扫描函数(KeyV ())的位操作(_cror_循环右移)与密码比对逻辑(主函数逐位验证)常因逻辑遗漏导致仿真异常。需通过电路原理图、流程图及 “设计 - 焊接 - 编程 - 仿真” 实践,强化复杂输入系统的开发能力,突破矩阵键盘密码锁的技术瓶颈。
学习目标
知识目标:
1. 了解行列矩阵式键盘模块电路原理图的绘制方法。
2. 掌握行列矩阵式键盘模块的焊接与电路搭接。
3. 学会绘制行列矩阵式键盘电子密码锁的程序流程图。
技能目标:
1. 能够编写、编译行列矩阵式键盘电子密码锁的 C51 源程序。
2. 完成行列矩阵式键盘电子密码锁的仿真调试和程序下载验证功能。
情感目标:
明确职业定位与发展方向,结合产业趋势制定科学的职业规划与成长路径。
学习重难点
重点:
1. 行列矩阵式键盘模块电路原理图的绘制。
2. 行列矩阵式键盘模块的焊接工艺和电路搭接。
3. 行列矩阵式键盘电子密码锁程序流程图的绘制和 C51 源程序的编写。
难点:
1. 理解行列矩阵式键盘扫描函数的原理和实现。
2. 根据流程图准确编写 C51 源程序,确保密码锁功能正常。
教学方法
案例分析、讲授法、小组讨论法
课前准备
1.查找相应网站资料,课堂演示使用。
2.学生课前预习。
教学媒体
电子课件、多媒体视频
教学过程
教学环节
教师活动设计
学生活动设计
设计意图
活动一:
创设情境
生成问题
【课程导入】
在之前的学习中,我们对电子密码锁有了一定的了解。这次我们将制作一个行列矩阵式键盘电子密码锁,它可以输入更多位数的密码,提高密码的安全性。
【新知识传授】
· 绘制行列矩阵式键盘模块电路原理图
(1) 启动与新建文件
① 启动 Protel DXP 2004,新建一个电路原理图文件,其文件名为 “行列矩阵式键盘模块电路原理图”。
(2) 查找与拖入元件
② 从元件库 “Miscellaneous Connectors.IntLib” 中查找 “Header 8”(1 个 I/O 口插座) 和 “Header 2”(1 个电源插座),拖入工作窗口。
③ 从元件库 “Miscellaneous Devices.IntLib” 中查找 “RES”(4 个 10kΩ 电阻) 和 “SW - PB”(16 个按键) 拖入工作窗口。
(3) 绘制电路
④ 绘制如图所示的电路,修改标号和标称值。
(4) 保存文件
2.引导学生带着问题去课本寻找答案,明确本节课的学习内容。
3.展示本讲学习目标。
1. 接收并查看本节课堂任务书。
2. 了解学习目标,带着目标进行学习。
3. 观察生活中常见的多媒体信息形式,思考其背后的技术支撑。
4. 针对教师给出的问题,初步发表个人见解。
5. 目标明确:跟随教师引导,明确本节课学习目标。
1.以提问的方式导入课程,让学生带着问题有针对性的进行学习。
2.通过任务实施,调动学生积极性。
活动二:
调动思维
探究新知
【新知识传授】
· 焊接行列矩阵式键盘模块
(1) 元件选取与检测
① 根据行列矩阵式键盘模块电路元件清单,选取元件,用万用表检测元件的好坏。
(2) 元件布局与插装
② 绘制元件布局图,在万能电路板上按布局图依次进行元件的排列、插装。
(3) 焊接元件
③ 按工艺要求焊接元件,背面用直径为 0.5 - 1mm 的导线连接,直到所有的元件连接并焊完为止。焊接顺序为按键 →I/O 口插座 → 电阻 → 电源插座 → 连接导线。
· 搭接电路
根据电路原理图 (如图所示) 用杜邦线搭接电路,行列矩阵式键盘的 I/O 口与最小系统板的 P1 口相连,LED 灯控电路的 I/O 口与最小系统板的 P2 口相连,连接电源和地端,安装电池盒。
2. 教师操作演示
3. 引导学生带着问题去课本寻找答案,明确本节课的学习内容。
1. 阅读探究:阅读课本相关内容,探究多媒体技术的产生背景。
2. 概念理解:理解多媒体、多媒体技术和多媒体系统的定义,并尝试用自己的话复述。
3. 要点记录:记录多媒体技术强调的要点,加深理解。
1. 了解学生现有知识储备。
2. 巩固练习。
活动三:
调动思维
探究新知
【新知识传授】
· 绘制程序流程图
① 启动流程图绘图软件 Diagram Designer,新建一个文件,文件名为 “行列矩阵式键盘电子密码锁主程序流程图.DDD”,设置图纸大小为 A4。
② 从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
③ 在框图中输入文本。
④ 用指向线连接框图符号
⑤ 保存该文件。
(1) 启动与设置文件
(2) 拖取与调整框图
(3) 输入文本
(4) 连接框图与保存
· 编程
1) 新建工程与源文件
启动 Keil uVision2,新建工程文件 “行列矩阵式键盘电子密码锁.uV2”;新建 C51 源程序文件 “行列矩阵式键盘电子密码锁.C”,编写包含延时函数、键盘扫描函数、主函数等的代码。
· 编程实现 - 延时函数
void delay(uint ms){
uchar i;
while(ms--)
{
for(i = 0; i < 125; i++);
}}
· 编程实现 - 键盘扫描函数
uchar KeyV()
{
uchar key, key_value, a;
P1 = 0x0f;
if(P1 == 0x0f)
return(0); // 无键按下,返回0值
else
{
delay(10);
if(P1 == 0x0f)
return(0);
for(a = 0; a < 4; a++)
{
P1 = _cror_(0x7f, a);
if(P1_0 == 0) break;
if(P1_1 == 0) break;
if(P1_2 == 0) break;
if(P1_3 == 0) break;
}
key = P1;
for(; P1 != 0x0f; P1 = 0x0f) {;} // 等待松开按键
switch(key)
{
case 0xee: key_value = 1; break; // 1
case 0xed: key_value = 2; break; // 2
case 0xeb: key_value = 3; break; // 3
case 0xe7: key_value = 4; break; // 4
case 0xde: key_value = 5; break; // 5
case 0xdd: key_value = 6; break; // 6
case 0xdb: key_value = 7; break; // 7
case 0xd7: key_value = 8; break; // 8
case 0xbe: key_value = 9; break; // 9
case 0xbd: key_value = 10; break; // 10
case 0xbb: key_value = 11; break; // 11
case 0xb7: key_value = 12; break; // 12
case 0x7e: key_value = 13; break; // 13
case 0x7d: key_value = 14; break; // 14
case 0x7b: key_value = 15; break; // 15
case 0x77: key_value = 16; break; // OK
default: break;
}
return(key_value);
}
}
· 编程实现 - 主函数
uchar key_value = 0xff;
while(1)
{
while(key_value != D[0])
{
key_value = KeyV();
}
while(key_value != D[1])
{
key_value = KeyV();
}
while(key_value != D[2]) //与数组中预置的密码逐位比对
{
key_value = KeyV(); //键盘扫描,并取键值
}
while(key_value != D[3])
{
key_value = KeyV();
}
while(key_value != D[4])
{
key_value = KeyV();
}
while(key_value != D[5])
{
key_value = KeyV();
}
}}
· 编程实现 - 编程(代码解释)
· 延时函数delay:通过循环实现指定毫秒数的延时,用于按键消抖等操作。
· 键盘扫描函数KeyV:先检查是否有键按下,若有则进行消抖处理,然后通过循环右移和判断行线电平确定按下的键,最后根据键值返回对应的数字或确认键(1 - 16)。
· 主函数main:不断调用键盘扫描函数,依次等待输入与预设密码对应的键值。
2) 编译生成 HEX 文件
编译生成 “行列矩阵式键盘电子密码锁.HEX” 文件。
2. 教师操作演示
3. 引导学生带着问题去课本寻找答案,明确本节课的学习内容。
1. 应用列举
2. 影响分析
3. 创新思考
1. 引导学生主动思考,发散思维,参与课堂。
2. 培养学生发现问题,解决问题的能力。
3. 了解相关知识。
4. 辩论形式让学生参与并归纳总结。
活动四:
巩固练习
素质提升
【随堂检测】
1 绘制行列矩阵式键盘模块电路原理图时,从哪个元件库中查找 I/O 口插座和电源插座?
2 焊接行列矩阵式键盘模块时,焊接顺序是什么?
3 在行列矩阵式键盘电子密码锁程序中,键盘扫描函数返回值的范围是多少?
4 绘制行列矩阵式键盘电子密码锁程序流程图时,第2步是什么?
【分组讨论】
分组讨论,讨论如何优化行列矩阵式键盘电子密码锁的电路设计,提高其稳定性。分析在编程过程中,键盘扫描函数可能出现的问题及解决办法。
1. 答案交流
2. 话题讨论
3. 效率分析
4. 挑战探讨
5. 总结汇报
知识检测与巩固
课堂小结
作业布置
课堂小结
作业布置
复习本节课内容,预习下节课内容。
板书设计
1. 绘制行列矩阵式键盘模块电路原理图
2. 焊接行列矩阵式键盘模块
3. 搭接电路
4. 绘制程序流程图
5. 编程
教学反思
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$