内容正文:
《单片机技术及应用》(电工版第4版)
项目三 电子密码锁 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共10小题,每题2分,共20分)
1.在4按键键盘程序中,检测按键按下的正确方法是 ( )
A.if(KEY==1)
B.if(KEY==0)
C.while(KEY)
D.switch(KEY)
【答案】B
2.矩阵键盘扫描的正确顺序是 ( )
A.逐列输出低电平
B.逐行输出高电平
C.逐行输出低电平
D.所有行同时输出低电平
【答案】C
3.在C51中定义P2.3为按键的正确语法是 ( )
A.#define KEY P2.3 B.sbit KEY = P2^3
C.bit KEY = P2_3 D.char KEY = P2.3
【答案】B
4.矩阵键盘键值通常存储在 ( )
A.int B.float C.unsigned char D.long
【答案】C
5.按键键盘的扫描程序通常放在 ( )
A.中断服务函数中 B.main函数的while(1)循环中
C.初始化函数中 D.定时器回调函数中
【答案】B
6.矩阵键盘扫描时,未按下按键对应的I/O口为 ( )
A.低电平 B.高电平 C.悬空状态 D.脉冲信号
【答案】B
7.处理多个按键值最适合使用的语句是 ( )
A.if-else B.while C.switch-case D.for
【答案】C
8.按键消抖的目的是消除 ( )
A.电源干扰 B.电磁干扰 C.机械抖动 D.信号衰减
【答案】C
9.4按键键盘的典型连接方式是 ( )
A.共阳极 B.共阴极 C.独立连接 D.串联连接
【答案】B
10.矩阵键盘扫描函数通常返回 ( )
A.电压值 B.电流值 C.键值 D.频率值
【答案】C
二、判断题(本题共20小题,每题2分,共40分)
1.使用sbit KEY1 = P1^0; 可以定义 P1.0 引脚为按键输入。( )
【答案】正确
2.在 4 按键控制彩灯的程序中,必须使用外部中断检测按键。( )
【答案】错误
3.if (KEY1 == 0) 可以判断按键 KEY1 是否被按下。( )
【答案】正确
4.函数名中有void,说明该函数无参数传递。( )
【答案】正确
5.使用P2 = 0x0F; 可以同时点亮P2口的低4位LED。( )
【答案】错误
6.while (KEY1 == 0); 可以实现按键松手检测。( )
【答案】正确
7.4个按键可以分别控制4个LED的亮灭。( )
【答案】正确
8.在C51中,bit类型变量可以用于存储按键状态。( )
【答案】正确
9.P2=~P2;可以让P2口的所有LED状态翻转。( )
【答案】正确
10.按键扫描程序必须放在main函数的 while(1) 循环中。( )
【答案】正确
11.使用 switch-case 语句可以实现不同按键对应不同 LED 效果。( )
【答案】正确
12.P2 = 0x01 << i; 可以实现 LED 流水灯效果。( )
【答案】正确
13.在 C51 中,#define LED P2 可以定义LED连接到P2口。( )
【答案】正确
14.按键按下时,对应的I/O口会输出低电平。( )
【答案】错误
15.P2 = 0xAA;可以让P2口的LED交替点亮。( )
【答案】正确
16.矩阵键盘的行线应设置为输出模式,列线应设置为输入模式。( )
【答案】正确
17.扫描矩阵键盘时,需要逐行输出低电平并检测列线状态。( )
【答案】正确
18.4×4矩阵键盘需要占用8051单片机的8个I/O口。( )
【答案】正确
19.矩阵键盘的消抖处理可以通过软件延时实现。( )
【答案】正确
20.在矩阵键盘扫描程序中,必须使用外部中断来检测按键。( )
【答案】错误
三、填空题(本题共10小题,每题2分,共20分)
1.按照构造可分为 和无触点开关按键两类。
【答案】有触点
2.矩阵键盘扫描时,通常将行线设置为______模式,列线设置为输入模式。
【答案】输出
3.矩阵键盘的行扫描值通常用______进制数表示。
【答案】十六
4.按键消抖常用的延时时间是______ms左右。
【答案】10
5.矩阵键盘扫描时,需要逐行输出______电平来检测按键。
【答案】低
6.读取矩阵键盘按键值时,需要将行号和______号组合计算。
【答案】列
7.矩阵键盘的键值通常存储在______类型变量中。
【答案】unsigned char
8.按键用KEY表示,检测按键释放的常用语句是while(______);。
【答案】KEY==0
9.按键键盘的按键状态检测通常放在______循环中。
【答案】while(1)
10.矩阵键盘扫描时,未按下的按键对应的I/O口为______电平。
【答案】高
四、简答题。(本题共5分)
1.在电子密码锁设计中,为何需要按键消抖?列举两种实现方法并说明优缺点。
【答案】
原因:机械按键存在触点抖动(约5-10ms),可能导致单片机误判多次触发。
方法:
软件消抖:检测到按键后延时10-20ms再次检测,确认状态。
优点:无需硬件改动;缺点:占用CPU时间。
硬件消抖:通过RC滤波电路或施密特触发器消除抖动信号。
优点:响应快;缺点:增加电路复杂度。
五、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共15分)
1.电路连接如图所示,依次判断S1~S4各按键是否被按下,若S1、S3和S4被按下,LED1亮,表示锁闭;若S2被按下,则LED2亮表示锁被打开。请填空。
#include "reg51.h'
#define uint unsigned int
【1】
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit S1=P1^0;
【2】;
sbit S3=P1^2;
sbit S4=P1^3;
void delay(MS);
void lock_on(void);
void lock_off(void);
void main(void)
{ 【3】
{ if(S1==0)
{ delay(10);
if(S1==0)
{ lock_off();}}
if(S2==0)
{ delay(10);
if(S2==0)
【4】}}
if(S3==0)
{ delay(10);
if(S3==0)
{ lock_off();}}
if(S4==0)
{ delay(10);
{ if(S4==0)
lock_off();}}
void lock_on(void)
{ 【5】;
LED2=0; }
void lock_off(void)
{ LED1=0;
LED2=1; }
void delay(uint MS)
{ uint i,j;
for(i=0;i<MS;i++)
for(j=0;j<125;j++);}
【答案】
【1】#define uchar unsigned char
【2】sbit S2=P1^1
【3】while(1)
【4】lock_on()
【5】LED1=1
【解析】
【1】处需要定义一个常用的无符号字符类型,通常会用#define uchar unsigned char。
【2】处需要定义S2的引脚,根据上下文应为P1^1。
【3】处main函数需要一个无限循环,使用while(1)。
【4】处当S2被按下时应调用lock_on()函数。
【5】处lock_on()函数需要先关闭LED1(置1),再开启LED2(置0)。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
《单片机技术及应用》(电工版第4版)
项目三 电子密码锁 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共10小题,每题2分,共20分)
1.在4按键键盘程序中,检测按键按下的正确方法是 ( )
A.if(KEY==1)
B.if(KEY==0)
C.while(KEY)
D.switch(KEY)
2.矩阵键盘扫描的正确顺序是 ( )
A.逐列输出低电平
B.逐行输出高电平
C.逐行输出低电平
D.所有行同时输出低电平
3.在C51中定义P2.3为按键的正确语法是 ( )
A.#define KEY P2.3 B.sbit KEY = P2^3
C.bit KEY = P2_3 D.char KEY = P2.3
4.矩阵键盘键值通常存储在 ( )
A.int B.float C.unsigned char D.long
5.按键键盘的扫描程序通常放在 ( )
A.中断服务函数中 B.main函数的while(1)循环中
C.初始化函数中 D.定时器回调函数中
6.矩阵键盘扫描时,未按下按键对应的I/O口为 ( )
A.低电平 B.高电平 C.悬空状态 D.脉冲信号
7.处理多个按键值最适合使用的语句是 ( )
A.if-else B.while C.switch-case D.for
8.按键消抖的目的是消除 ( )
A.电源干扰 B.电磁干扰 C.机械抖动 D.信号衰减
9.4按键键盘的典型连接方式是 ( )
A.共阳极 B.共阴极 C.独立连接 D.串联连接
10.矩阵键盘扫描函数通常返回 ( )
A.电压值 B.电流值 C.键值 D.频率值
二、判断题(本题共20小题,每题2分,共40分)
1.使用sbit KEY1 = P1^0; 可以定义 P1.0 引脚为按键输入。( )
2.在 4 按键控制彩灯的程序中,必须使用外部中断检测按键。( )
3.if (KEY1 == 0) 可以判断按键 KEY1 是否被按下。( )
4.函数名中有void,说明该函数无参数传递。( )
5.使用P2 = 0x0F; 可以同时点亮P2口的低4位LED。( )
6.while (KEY1 == 0); 可以实现按键松手检测。( )
7.4个按键可以分别控制4个LED的亮灭。( )
8.在C51中,bit类型变量可以用于存储按键状态。( )
9.P2=~P2;可以让P2口的所有LED状态翻转。( )
10.按键扫描程序必须放在main函数的 while(1) 循环中。( )
11.使用 switch-case 语句可以实现不同按键对应不同 LED 效果。( )
12.P2 = 0x01 << i; 可以实现 LED 流水灯效果。( )
13.在 C51 中,#define LED P2 可以定义LED连接到P2口。( )
14.按键按下时,对应的I/O口会输出低电平。( )
15.P2 = 0xAA;可以让P2口的LED交替点亮。( )
16.矩阵键盘的行线应设置为输出模式,列线应设置为输入模式。( )
17.扫描矩阵键盘时,需要逐行输出低电平并检测列线状态。( )
18.4×4矩阵键盘需要占用8051单片机的8个I/O口。( )
19.矩阵键盘的消抖处理可以通过软件延时实现。( )
20.在矩阵键盘扫描程序中,必须使用外部中断来检测按键。( )
三、填空题(本题共10小题,每题2分,共20分)
1.按照构造可分为 和无触点开关按键两类。
2.矩阵键盘扫描时,通常将行线设置为______模式,列线设置为输入模式。
3.矩阵键盘的行扫描值通常用______进制数表示。
4.按键消抖常用的延时时间是______ms左右。
5.矩阵键盘扫描时,需要逐行输出______电平来检测按键。
6.读取矩阵键盘按键值时,需要将行号和______号组合计算。
7.矩阵键盘的键值通常存储在______类型变量中。
8.按键用KEY表示,检测按键释放的常用语句是while(______);。
9.按键键盘的按键状态检测通常放在______循环中。
10.矩阵键盘扫描时,未按下的按键对应的I/O口为______电平。
四、简答题。(本题共5分)
1.在电子密码锁设计中,为何需要按键消抖?列举两种实现方法并说明优缺点。
五、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共15分)
1.电路连接如图所示,依次判断S1~S4各按键是否被按下,若S1、S3和S4被按下,LED1亮,表示锁闭;若S2被按下,则LED2亮表示锁被打开。请填空。
#include <reg51.h>
#define uint unsigned int
【1】
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit S1=P1^0;
【2】;
sbit S3=P1^2;
sbit S4=P1^3;
void delay(MS);
void lock_on(void);
void lock_off(void);
void main(void)
{ 【3】
{ if(S1==0)
{ delay(10);
if(S1==0)
{ lock_off();}}
if(S2==0)
{ delay(10);
if(S2==0)
【4】}}
if(S3==0)
{ delay(10);
if(S3==0)
{ lock_off();}}
if(S4==0)
{ delay(10);
{ if(S4==0)
lock_off();}}
void lock_on(void)
{ 【5】;
LED2=0; }
void lock_off(void)
{ LED1=0;
LED2=1; }
void delay(uint MS)
{ uint i,j;
for(i=0;i<MS;i++)
for(j=0;j<125;j++);}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$