内容正文:
《单片机技术及应用》(电工版第4版)
项目二 LED流水彩灯 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共15小题,每题2分,共30分)
1.在C51编程中,char类型的数据占用的存储空间的字节数量为 ( )
A. 1字节 B. 2字节 C. 4字节 D. 由编译器决定
2.在C51中,下列是合法的标识符的是 ( )
A. 3variable B. _temp C. int D. #value
3.51单片机控制LED流水灯时,通常需要配合哪种功能实现延时?
A. 串口通信 B. 定时器/计数器 C. ADC转换 D. 外部中断
4.若P2口接8个LED,初始值A=0xFE,执行一次“RL A”后,A的值是?
A. 0xFC B. 0xFD C. 0xEF D. 0x7F
5.在Keil C51编程中,以下哪个语句可以实现P0口LED左移一位?
A. P0 = P0 << 1; B. P0 = P0 >> 1;
C. P0 = crol(P0, 1); D. P0 = cror(P0, 1);
6.若LED阳极接P1口,阴极接地,P1=0x55时,LED的亮灭状态是?
A.全亮 B.全灭 C.间隔点亮 D.高4位亮,低4位灭
7.51单片机使用12MHz晶振,定时器方式1(16位)最大定时时间约为?
A.65.536ms B.32.768ms C.131.072ms D.16.384ms
8.若要实现LED流水灯加速效果,应如何调整延时时间?
A. 增加延时 B. 减少延时 C. 关闭中断 D. 改用外部晶振
9.若P0口接8个LED,执行“P0 = ~P0;”后,LED的状态是?
A. 全亮 B. 全灭 C. 取反 D. 高4位取反
10.若要实现LED流水灯循环3次后停止,应采用哪种控制结构?
A. while(1) B. for循环 C. if-else D. switch-case
11.在C51编程中,以下哪个函数可以实现500ms延时(假设已定义1ms延时函数)?
A. delay(500); B. Delay_ms(500)
C. for(i=0;i<500;i++) delay(1); D. while(500) delay(1);
12.若LED流水灯需要实现“两边向中间”点亮效果,应如何编程?
A. 同时左移和右移 B. 使用查表法 C. 交替使用RL和RR D. 随机点亮
13.51单片机控制LED时,若发现LED亮度不足,可能的原因是( )
A. 限流电阻过大 B. 单片机供电不足 C. 程序延时过长 D. 晶振频率过高
14.执行完下列操作后,date的值为( )
unsigned char i,date;
date=Oxfe;
for(i=0;i<=3;i++)
date=date<<1;
A.Oxfc B.Oxf8 C.OxfO D.Oxe0
15.下列语句定义的数组中包含的数组元素数为( )
unsigned int a[4];
A.2 B.3 C.4 D.5
二、判断题(本题共10小题,每题2分,共20分)
1.51单片机的I/O口可以直接驱动LED,无需外接限流电阻。 ( )
2.若LED阳极接VCC,阴极接P1.0,则P1.0输出低电平时LED点亮。 ( )
3.在51单片机中,P0口内部无上拉电阻,驱动LED时必须外接上拉电阻。 ( )
4.C语言中数组的下标是从0开始的。 ( )
5.51单片机的定时器中断不能用于控制LED闪烁的延时。 ( )
6.若P2口接8个LED,执行“P2 = 0x00;”后所有LED都会熄灭。 ( )
7.在C51编程中,“P1 ^= 0x01;”可以实现P1.0引脚的电平翻转。 ( )
8.51单片机的I/O口输出电流能力较强,可直接驱动多个并联的LED。 ( )
9.若LED闪烁频率超过100Hz,人眼会看到LED常亮而非闪烁。 ( )
10.C语言语句必须以“;”作为结束符。 ( )
三、填空题(本题共5小题,每题2分,共10分)
1.在51单片机中,若LED阳极接P2口,阴极接地,要使P2.0对应的LED点亮,应向P2写入______。
2.已知x=1;y=2;z=x&y;则z= 。
3.在C51中,若要实现P1口LED循环左移,应调用的库函数是______。
4.若LED共阳极接VCC,阴极接P0口,要使所有LED熄灭,P0口应输出______。
5.已知char b[5]={1,2,3,4,5};则b[2]=______。
四、简答题(本题共5分)
1.在51单片机中,若LED采用共阳极接法(阳极接VCC,阴极接I/O口),说明如何控制单个LED的亮灭,并解释为什么这样连接?
五、作图题(本题共5分)
1.如图所示:请绘制点亮一盏灯的硬件电路图,其中P1.0接LED1,且当P1^0=1时LED1亮。
六、程序填空题。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共30分)
1.已知51单片机P1.0接LED1,且当P1^0=1时LED1亮。编程实现LED1亮1000ms,灭1000ms,循环。请填空。
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
【1】;
【2】;
void main(void)
{ LED1=1;
while(1)
{ 【3】
delay(1000);}}
void delay(uintms)
{ uchar i;
uint `j;
for(j=0;j<ms;j++)
for(i=0;i<125;i++);}
2.在C51中,若P1口的值为 0x0F,则执行语句 P2 = 0xAA,否则执行 P2 = 0x55请填空
if(【1】 == 0x0F)
{ P2 = 0xAA; }
else
{ 【2】; }
3.当变量count大于100时,将P3口置高电平,否则置低电平,请填空。
if (【1】)
{ P3 = 0xFF; }
【2】
{ P3 = 0x00; }
3.循环执行10次,每次让P2口的值加1
unsigned char i = 0;
while(【1】 < 10)
{ 【2】;
【3】; }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
《单片机技术及应用》(电工版第4版)
项目二 LED流水彩灯 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共15小题,每题2分,共30分)
1.在C51编程中,char类型的数据占用的存储空间的字节数量为 ( )
A. 1字节 B. 2字节 C. 4字节 D. 由编译器决定
【答案】A
2.在C51中,下列是合法的标识符的是 ( )
A. 3variable B. _temp C. int D. #value
【答案】B
3.51单片机控制LED流水灯时,通常需要配合哪种功能实现延时?
A. 串口通信 B. 定时器/计数器 C. ADC转换 D. 外部中断
【答案】B
4.若P2口接8个LED,初始值A=0xFE,执行一次“RL A”后,A的值是?
A. 0xFC B. 0xFD C. 0xEF D. 0x7F
【答案】B
5.在Keil C51编程中,以下哪个语句可以实现P0口LED左移一位?
A. P0 = P0 << 1; B. P0 = P0 >> 1;
C. P0 = crol(P0, 1); D. P0 = cror(P0, 1);
【答案】C
6.若LED阳极接P1口,阴极接地,P1=0x55时,LED的亮灭状态是?
A.全亮 B.全灭 C.间隔点亮 D.高4位亮,低4位灭
【答案】C
7.51单片机使用12MHz晶振,定时器方式1(16位)最大定时时间约为?
A.65.536ms B.32.768ms C.131.072ms D.16.384ms
【答案】A
8.若要实现LED流水灯加速效果,应如何调整延时时间?
A. 增加延时 B. 减少延时 C. 关闭中断 D. 改用外部晶振
【答案】B
9.若P0口接8个LED,执行“P0 = ~P0;”后,LED的状态是?
A. 全亮 B. 全灭 C. 取反 D. 高4位取反
【答案】C
10.若要实现LED流水灯循环3次后停止,应采用哪种控制结构?
A. while(1) B. for循环 C. if-else D. switch-case
【答案】B
11.在C51编程中,以下哪个函数可以实现500ms延时(假设已定义1ms延时函数)?
A. delay(500); B. Delay_ms(500)
C. for(i=0;i<500;i++) delay(1); D. while(500) delay(1);
【答案】C
12.若LED流水灯需要实现“两边向中间”点亮效果,应如何编程?
A. 同时左移和右移 B. 使用查表法 C. 交替使用RL和RR D. 随机点亮
【答案】B
13.51单片机控制LED时,若发现LED亮度不足,可能的原因是( )
A. 限流电阻过大 B. 单片机供电不足 C. 程序延时过长 D. 晶振频率过高
【答案】A
14.执行完下列操作后,date的值为( )
unsigned char i,date;
date=Oxfe;
for(i=0;i<=3;i++)
date=date<<1;
A.Oxfc B.Oxf8 C.OxfO D.Oxe0
【答案】D
15.下列语句定义的数组中包含的数组元素数为( )
unsigned int a[4];
A.2 B.3 C.4 D.5
【答案】C
二、判断题(本题共10小题,每题2分,共20分)
1.51单片机的I/O口可以直接驱动LED,无需外接限流电阻。 ( )
【答案】错误
2.若LED阳极接VCC,阴极接P1.0,则P1.0输出低电平时LED点亮。 ( )
【答案】正确
3.在51单片机中,P0口内部无上拉电阻,驱动LED时必须外接上拉电阻。 ( )
【答案】正确
4.C语言中数组的下标是从0开始的。 ( )
【答案】正确
5.51单片机的定时器中断不能用于控制LED闪烁的延时。 ( )
【答案】错误
6.若P2口接8个LED,执行“P2 = 0x00;”后所有LED都会熄灭。 ( )
【答案】错误
7.在C51编程中,“P1 ^= 0x01;”可以实现P1.0引脚的电平翻转。 ( )
【答案】正确
8.51单片机的I/O口输出电流能力较强,可直接驱动多个并联的LED。 ( )
【答案】错误
9.若LED闪烁频率超过100Hz,人眼会看到LED常亮而非闪烁。 ( )
【答案】正确
10.C语言语句必须以“;”作为结束符。 ( )
【答案】正确
三、填空题(本题共5小题,每题2分,共10分)
1.在51单片机中,若LED阳极接P2口,阴极接地,要使P2.0对应的LED点亮,应向P2写入______。
【答案】0x01
2.已知x=1;y=2;z=x&y;则z= 。
【答案】1
3.在C51中,若要实现P1口LED循环左移,应调用的库函数是______。
【答案】crol
4.若LED共阳极接VCC,阴极接P0口,要使所有LED熄灭,P0口应输出______。
【答案】0xFF
5.已知char b[5]={1,2,3,4,5};则b[2]=______。
【答案】3
四、简答题(本题共5分)
1.在51单片机中,若LED采用共阳极接法(阳极接VCC,阴极接I/O口),说明如何控制单个LED的亮灭,并解释为什么这样连接?
【答案】
控制方法:
I/O输出低电平(0)时LED点亮
I/O输出高电平(1)时LED熄灭
原因:
共阳极接法下,I/O口需要提供低电平才能形成电流回路
51单片机的I/O口拉电流能力较弱(约几十μA),而灌电流能力较强(约几mA),因此这种接法能提供更稳定的驱动电流
五、作图题(本题共5分)
1.如图所示:请绘制点亮一盏灯的硬件电路图,其中P1.0接LED1,且当P1^0=1时LED1亮。
【答案】
【解析】
因为当P1^0=1时LED1亮,所以LED1的阳极接P1^0,阴极接地。因为51单片机本身的电流不大,所以当由单片机为LED1提供高电平时,不需要限流电阻。
六、程序填空题。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共30分)
1.已知51单片机P1.0接LED1,且当P1^0=1时LED1亮。编程实现LED1亮1000ms,灭1000ms,循环。请填空。
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
【1】;
【2】;
void main(void)
{ LED1=1;
while(1)
{ 【3】
delay(1000);}}
void delay(uintms)
{ uchar i;
uint `j;
for(j=0;j<ms;j++)
for(i=0;i<125;i++);}
【答案】
【1】sbit LED1=P1^0
【2】void delay(uintms)
【3】LED1=~LED1
【解析】
【1】定义P1^0
【2】声明主程序后面的子程序。
【3】LED1闪烁。
2.在C51中,若P1口的值为 0x0F,则执行语句 P2 = 0xAA,否则执行 P2 = 0x55请填空
if(【1】 == 0x0F)
{ P2 = 0xAA; }
else
{ 【2】; }
【答案】
【1】P1
【2】P2 = 0x55
【解析】
【1】若P1口的值为 0x0F,所以为P1
【2】否则执行 P2 = 0x55,所以为P2 = 0x55
3.当变量count大于100时,将P3口置高电平,否则置低电平,请填空。
if (【1】)
{ P3 = 0xFF; }
【2】
{ P3 = 0x00; }
【答案】
【1】count>100
【2】else
【解析】
【1】当变量count大于100时,所以为count>100
【2】否则置低电平,所以为else
3.循环执行10次,每次让P2口的值加1
unsigned char i = 0;
while(【1】 < 10)
{ 【2】;
【3】; }
【答案】
【1】i
【2】P2++
【3】i++
【解析】
【1】循环执行10次,i为次数,所以为i<10。
【2】P2++,每次让P2口的值加1。
【3】i++,循环10次,一次加1。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$