内容正文:
任务二 制作行列矩阵式键盘电子密码锁 (2)
单片机技术及应用
同步精品课堂
高等教育出版社第 4 版
1
了解行列矩阵式键盘模块电路原理图的绘制法
掌握行列矩阵式键盘模块的焊接与电路搭接
学会绘制行列矩阵式键盘电子密码锁的程序流程图
完成行列矩阵式键盘电子密码锁的仿真调试和程序下载验证功能
行列矩阵式键盘模块电路原理图的绘制
行列矩阵式键盘模块的焊接工艺和电路搭接
理解行列矩阵式键盘扫描函数的原理和实现
根据流程图准确编写 C51 源程序,确保密码锁功能正常
在之前的学习中,我们对电子密码锁有了一定的了解。这次我们将制作一个行列矩阵式键盘电子密码锁,它可以输入更多位数的密码,提高密码的安全性。
让我们一起动手实践,深入学习电子密码锁的制作吧。
任务二 制作行列矩阵式键盘电子密码锁——任务实施
① 启动 Protel DXP 2004,新建一个电路原理图文件,其文件名为 “行列矩阵式键盘模块电路原理图”。
绘制行列矩阵式键盘模块电路原理图
任务二 制作行列矩阵式键盘电子密码锁——任务实施
② 从元件库 “Miscellaneous Connectors.IntLib” 中查找 “Header 8”(1 个 I/O 口插座) 和 “Header 2”(1 个电源插座),拖入工作窗口。
③ 从元件库 “Miscellaneous Devices.IntLib” 中查找 “RES”(4 个 10kΩ 电阻) 和 “SW - PB”(16 个按键) 拖入工作窗口。
绘制行列矩阵式键盘模块电路原理图
任务二 制作行列矩阵式键盘电子密码锁——任务实施
④ 绘制如图所示的电路,修改标号和标称值。
⑤ 保存该文件。
绘制独立式键盘模块电路原理图(绘制电路)
任务二 制作行列矩阵式键盘电子密码锁——任务实施
① 根据行列矩阵式键盘模块电路元件清单,选取元件,用万用表检测元件的好坏。
焊接独立式键盘模块(元件布局与插装)
名称 标号 规格 数量
按键 S1~S16 6mm×6mm 16
I/O 口插座 P1 8 针 1
电源插座 POWER1 2 针 1
电阻 R1~R4 10kΩ 4
任务二 制作行列矩阵式键盘电子密码锁——任务实施
② 绘制元件布局图,在万能电路板上按布局图依次进行元件的排列、插装。
焊接独立式键盘模块(元件布局与插装)
任务二 制作行列矩阵式键盘电子密码锁——任务实施
③ 按工艺要求焊接元件,背面用直径为 0.5 - 1mm 的导线连接,直到所有的元件连接并焊完为止。焊接顺序为按键 →I/O 口插座 → 电阻 → 电源插座 → 连接导线。
焊接独立式键盘模块(焊接元件)
任务二 制作行列矩阵式键盘电子密码锁——任务实施
根据电路原理图 (如图所示) 用杜邦线搭接电路,行列矩阵式键盘的 I/O 口与最小系统板的 P1 口相连,LED 灯控电路的 I/O 口与最小系统板的 P2 口相连,连接电源和地端,安装电池盒。
搭接电路
行列矩阵式键盘电子密码锁原理图
任务二 制作行列矩阵式键盘电子密码锁——任务实施
① 启动流程图绘图软件 Diagram Designer,新建一个文件,文件名为 “行列矩阵式键盘电子密码锁主程序流程图.DDD”,设置图纸大小为 A4。
② 从右侧的标准框图符号库中拖取所需的框图符号,调整其大小和位置。
③ 在框图中输入文本。
④ 用指向线连接框图符号
⑤ 保存该文件。
绘制程序流程图
任务二 制作行列矩阵式键盘电子密码锁——任务实施
绘制程序流程图
任务二 制作行列矩阵式键盘电子密码锁——任务实施
绘制程序流程图
任务二 制作行列矩阵式键盘电子密码锁——任务实施
编程(新建工程与源文件)
① 启动 Keil uVision2,新建一个工程文件 “行列矩阵式键盘电子密码锁.uV2”。
② 新建一个 C51 源程序文件 “行列矩阵式键盘电子密码锁.C”,根据程序流程图,编写如下 C51 源程序代码。
编程实现 - 延时函数
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;
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);
}
}
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
任务二 制作行列矩阵式键盘电子密码锁——任务实施
编程实现 - 主函数
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();
}
}}
③ 编译生成 HEX 文件 “行列矩阵式键盘电子密码锁.HEX”。
任务二 制作行列矩阵式键盘电子密码锁——任务实施
编程实现 - 编程(代码解释)
延时函数delay:通过循环实现指定毫秒数的延时,用于按键消抖等操作。
键盘扫描函数KeyV:先检查是否有键按下,若有则进行消抖处理,然后通过循环右移和判断行线电平确定按下的键,最后根据键值返回对应的数字或确认键(1 - 16)。
主函数main:不断调用键盘扫描函数,依次等待输入与预设密码对应的键值。
任务二 制作行列矩阵式键盘电子密码锁——任务实施
仿真调试程序
启动仿真软件Proteus 7.4,新建一个仿真文件(四按键电子密码锁.DSN)。
根据电路原理图绘制仿真电路图(省略复位和时钟电路),添加电源(VCC) 和地端,修改元件标号和标称值。
任务二 制作行列矩阵式键盘电子密码锁——任务实施
下载程序,验证功能
① 启动编程软件EasyPRO Programmer。
② 加载HEX 文件(行列矩阵式键盘电子密码锁.HEX)。
③ 单击“操作一键通”按钮,完成程序的下载。
④ 将单片机插到最小系统板的ZIF 插座上。
⑤ 加电,观察其功能。
随堂检测1
绘制行列矩阵式键盘模块电路原理图时,从哪个元件库中查找 I/O 口插座和电源插座?
答案:从元件库 “Miscellaneous Connectors.IntLib” 中查找。
焊接行列矩阵式键盘模块时,焊接顺序是什么?
答案:焊接顺序为按键 →I/O 口插座 → 电阻 → 电源插座 → 连接导线。
随堂检测2
在行列矩阵式键盘电子密码锁程序中,键盘扫描函数返回值的范围是多少?
答案:返回值范围是 1 - 16,前 10 个键分别代表 1234567890,第 16 个键表示 OK。
绘制行列矩阵式键盘电子密码锁程序流程图时,第2步是什么?
答案:从元件库 “Miscellaneous Connectors.IntLib” 中查找 “Header 8”(1 个 I/O 口插座) 和 “Header 2”(1 个电源插座),拖入工作窗口。
1
分组讨论,讨论如何优化行列矩阵式键盘电子密码锁的电路设计,提高其稳定性。分析在编程过程中,键盘扫描函数可能出现的问题及解决办法。
1. 绘制行列矩阵式键盘模块电路原理图
任务二 制作行列矩阵式键盘电子密码锁 (2)
2. 焊接行列矩阵式键盘模块
元件选取与检测
元件布局与插装
焊接元件
启动与新建文件
查找与拖入元件
绘制电路
保存文件
3. 搭接电路
4. 绘制程序流程图
启动与设置文件
拖取与调整框图
输入文本
连接框图与保存
5. 编程
感谢观看
25
$$