内容正文:
《单片机技术及应用》(电工版第4版)
项目四 数码显示电子表 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共15小题,每题2分,共30分)
1.在51单片机中,数码管动态显示的主要优点是 ( )
A.显示亮度高 B.编程简单 C.节省I/O口资源 D.无需扫描
2.共阳数码管的公共端应接什么电平才能点亮段码 ( )
A.高电平 B.低电平 C.悬空 D.脉冲信号
3.使用定时器实现数码管动态扫描时,通常将定时器中断时间设置为 ( ):
A.1ms B.10ms C.100ms D.1s
4.在数码管显示程序中,定时器中断服务函数的主要功能是 ( )
A.更新显示数据
B.扫描数码管位选
C.计算按键值
D.读取AD转换结果
5.要实现4位数码管显示,定时器中断频率通常设置为 ( )
A.50Hz B.100Hz C.200Hz D.1kHz
6.数码管动态扫描时,决定每个数码管的显示时间的是 ( )
A.定时器初值 B.主循环执行时间
C.延时函数参数 D.中断服务程序执行时间
7.使用定时器1实现数码管扫描时,应设置的工作模式是 ( )
A.模式0(13位)
B.模式1(16位)
C.模式2(8位自动重装)
D.模式3(两个8位)
8.51单片机控制数码管时,段码数据通常存放在 ( )
A.程序存储器(ROM) B.数据存储器(RAM)
C.特殊功能寄存器(SFR) D.外部EEPROM
9.一个4位数码管动态扫描时,每位显示时间通常设置为多少 ( )
A.1秒 B.10毫秒 C.1微秒 D.100纳秒
10.共阳数码管的段码“0x3F”对应的显示数字是 ( )
A.0 B.1 C.2 D.3
11.动态扫描数码管时,若某一位不亮,可能的原因是 ( )
A.段码数据错误 B.位选信号未切换
C.扫描频率过高 D.供电电压过低
12.51单片机控制数码管时,通常使用的定时器工作模式是 ( )
A.模式0(13位定时器) B.模式1(16位定时器)
C.模式2(8位自动重装) D.模式3(双8位定时器)
13.若数码管显示数字“8”时,缺少某一段,可能的原因是 ( )
A.该段对应的LED损坏 B.驱动电流不足
C.扫描频率过低 D.位选信号错误
14.在动态扫描数码管时,若所有位显示相同内容,可能的原因是 ( )
A.位选信号未切换 B.段码数据错误 C.扫描频率过高 D.驱动芯片故障
15.共阴数码管的段码“0x06”对应的显示数字是 ( )
A.0 B.1 C.2 D.3
二、判断题(本题共10小题,每题2分,共20分)
1.共阳数码管的公共端接高电平时,对应的段码输入低电平才能点亮该段。 ( )
2.动态扫描数码管时,扫描频率越高,显示效果越稳定,通常设置在1kHz以上。 ( )
3.使用74HC595芯片驱动数码管可以节省51单片机的I/O口资源。 ( )
4.数码管显示数字“7”的共阴段码是0x07。 ( )
5.在动态扫描数码管时,必须使用定时器中断来切换位选信号。 ( )
6.共阴数码管的段码和共阳数码管的段码是互补关系(取反即可)。 ( )
7.数码管显示出现“鬼影”是因为扫描频率过高导致的。 ( )
8.静态显示方式下,每个数码管需要独立的驱动电路,占用I/O口较多。 ( )
9.数码管的位选信号通常由单片机的P0口直接驱动,无需外加驱动电路。 ( )
10.在动态扫描数码管时,所有数码管的段码信号线可以并联在一起。 ( )
三、填空题(本题共5小题,每题2分,共10分)
1.在51单片机驱动共阳数码管时,段选信号需要输出______电平才能点亮对应的段。
2.动态扫描数码管时,若显示4位数,通常每位显示时间约为______ms,以保证无闪烁。
3.使用74HC595芯片驱动数码管时,数据通过______(串行/并行)方式输入,可节省单片机I/O口。
4.数码管显示数字“2”的共阴段码(a~dp顺序)是______(十六进制表示)。
5.动态扫描数码管时,若某一位显示异常但其他位正常,可能的原因是______信号故障。
四、简答题。(本题共3小题,每小题5分,共15分)
1.简述动态扫描数码管显示的工作原理及其优缺点。
2.在51单片机数码管电路中,为什么要加驱动电路?列举两种常用驱动方式。
3.如何解决数码管动态扫描时的"鬼影"问题?说明具体措施。
5、 作图题(本题共4分)
1.绘制共阳极数码管的硬件电路图,数码管接到P2口。
六、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共21分)
1.制作一个电子秒表,用6位数码管显示时分秒,每秒变化一次。请填空。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint t_50ms=0;
uchar hour=0;
uchar min=0;
uchar sec=0;
uchar buf[6]=[0,0,0,0,0,0};
uchar code SEG[10]={0x3f,0x06,0x5b,0x4f,【1】,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code POS[6]={0x01,0x02,0x04,0x08,0x10,0x20};
void disp(void);
void disp_min(void);
void disp_sec(void);
void disp_hour(void);
void delay(【2】)
{ uint i,j;
for(i=0;i<k;i++)
for(j=0;j<125;j++);}
void init_timerO(void)
{ TMOD=0x01;
TL0=【3】;
TH0=-(50000/256);
TR0=1;
ET0=1; }
void int_timer0( )interrupt 1 using 0
{ TH0=-(50000%256);
TL0=-(50000%256);
t_50ms++
if(【4】)
{ t_50ms=0;
sec++;
if(sec>=60)
{ sec=0;
【5】;
if(min>=60)
{ min=0;
hour++
if(hour>=24)
hour=0;
void disp(void)
{ uchar i,j:
for(i=0;i<=5;i++)
{ P2=WEI[i];
j=buf[i];
PO=【6】;
delay(10); } }
void main(void)
{ init_timer0();
EA=1;
while(1)
{ buf[0]=sec%10;
buf[1]=sec/10;
buf[2]=min%10;
buf[3]=min/10;
buf[4]=【7】;
buf[5]=hour/10;
disp( );}}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
《单片机技术及应用》(电工版第4版)
项目四 数码显示电子表 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共15小题,每题2分,共30分)
1.在51单片机中,数码管动态显示的主要优点是 ( )
A.显示亮度高 B.编程简单 C.节省I/O口资源 D.无需扫描
【答案】C
2.共阳数码管的公共端应接什么电平才能点亮段码 ( )
A.高电平 B.低电平 C.悬空 D.脉冲信号
【答案】A
3.使用定时器实现数码管动态扫描时,通常将定时器中断时间设置为 ( ):
A.1ms B.10ms C.100ms D.1s
【答案】A
4.在数码管显示程序中,定时器中断服务函数的主要功能是 ( )
A.更新显示数据
B.扫描数码管位选
C.计算按键值
D.读取AD转换结果
【答案】B
5.要实现4位数码管显示,定时器中断频率通常设置为 ( )
A.50Hz B.100Hz C.200Hz D.1kHz
【答案】C
6.数码管动态扫描时,决定每个数码管的显示时间的是 ( )
A.定时器初值
B.主循环执行时间
C.延时函数参数
D.中断服务程序执行时间
【答案】A
7.使用定时器1实现数码管扫描时,应设置的工作模式是 ( )
A.模式0(13位)
B.模式1(16位)
C.模式2(8位自动重装)
D.模式3(两个8位)
【答案】C
8.51单片机控制数码管时,段码数据通常存放在 ( )
A.程序存储器(ROM) B.数据存储器(RAM)
C.特殊功能寄存器(SFR) D.外部EEPROM
【答案】A.
9.一个4位数码管动态扫描时,每位显示时间通常设置为多少 ( )
A.1秒 B.10毫秒 C.1微秒 D.100纳秒
【答案】B.
10.共阳数码管的段码“0x3F”对应的显示数字是 ( )
A.0 B.1 C.2 D.3
【答案】A.
11.动态扫描数码管时,若某一位不亮,可能的原因是 ( )
A.段码数据错误 B.位选信号未切换
C.扫描频率过高 D.供电电压过低
【答案】B.
12.51单片机控制数码管时,通常使用的定时器工作模式是 ( )
A.模式0(13位定时器) B.模式1(16位定时器)
C.模式2(8位自动重装) D.模式3(双8位定时器)
【答案】C.
13.若数码管显示数字“8”时,缺少某一段,可能的原因是 ( )
A.该段对应的LED损坏 B.驱动电流不足
C.扫描频率过低 D.位选信号错误
【答案】A.
14.在动态扫描数码管时,若所有位显示相同内容,可能的原因是 ( )
A.位选信号未切换 B.段码数据错误 C.扫描频率过高 D.驱动芯片故障
【答案】A.
15.共阴数码管的段码“0x06”对应的显示数字是 ( )
A.0 B.1 C.2 D.3
【答案】B.
二、判断题(本题共10小题,每题2分,共20分)
1.共阳数码管的公共端接高电平时,对应的段码输入低电平才能点亮该段。 ( )
【答案】正确
2.动态扫描数码管时,扫描频率越高,显示效果越稳定,通常设置在1kHz以上。 ( )
【答案】错误
3.使用74HC595芯片驱动数码管可以节省51单片机的I/O口资源。 ( )
【答案】正确
4.数码管显示数字“7”的共阴段码是0x07。 ( )
【答案】正确
5.在动态扫描数码管时,必须使用定时器中断来切换位选信号。 ( )
【答案】错误
6.共阴数码管的段码和共阳数码管的段码是互补关系(取反即可)。 ( )
【答案】正确
7.数码管显示出现“鬼影”是因为扫描频率过高导致的。 ( )
【答案】错误
8.静态显示方式下,每个数码管需要独立的驱动电路,占用I/O口较多。 ( )
【答案】正确
9.数码管的位选信号通常由单片机的P0口直接驱动,无需外加驱动电路。 ( )
【答案】错误
10.在动态扫描数码管时,所有数码管的段码信号线可以并联在一起。 ( )
【答案】正确
三、填空题(本题共5小题,每题2分,共10分)
1.在51单片机驱动共阳数码管时,段选信号需要输出______电平才能点亮对应的段。
【答案】低
2.动态扫描数码管时,若显示4位数,通常每位显示时间约为______ms,以保证无闪烁。
【答案】1~5
3.使用74HC595芯片驱动数码管时,数据通过______(串行/并行)方式输入,可节省单片机I/O口。
【答案】串行
4.数码管显示数字“2”的共阴段码(a~dp顺序)是______(十六进制表示)。
【答案】0x5B
5.动态扫描数码管时,若某一位显示异常但其他位正常,可能的原因是______信号故障。
【答案】位选
四、简答题。(本题共3小题,每小题5分,共15分)
1.简述动态扫描数码管显示的工作原理及其优缺点。
【答案】
动态扫描是通过分时轮流点亮多个数码管,利用人眼视觉暂留效应实现稳定显示。
工作原理:
每次只点亮1位数码管,快速切换位选信号,段码数据同步更新为当前位的显示内容,扫描频率通常50~200Hz。
优点:节省I/O口,降低功耗
缺点:编程较复杂,亮度低于静态显示
【解析】
见答案
2.在51单片机数码管电路中,为什么要加驱动电路?列举两种常用驱动方式。
【答案】
原因:
单片机I/O口驱动能力有限(尤其是P0口),数码管需要较大工作电流(5-20mA/段)。
常用驱动方式:三极管驱动和专用驱动芯片。
【解析】
见答案
3.如何解决数码管动态扫描时的"鬼影"问题?说明具体措施。
【答案】
解决方法:
加入消隐时间:在切换位选信号前,先关闭所有段码
硬件消隐:使用带锁存功能的驱动芯片(如74HC595)
优化扫描时序:确保位选切换时有足够建立/保持时间
并联消隐电容:在数码管段选线上并联小电容(10-100pF)吸收残余电流
【解析】
见答案
5、 作图题(本题共4分)
1.绘制共阳极数码管的硬件电路图,数码管接到P2口。
【答案】
六、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共21分)
1.制作一个电子秒表,用6位数码管显示时分秒,每秒变化一次。请填空。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint t_50ms=0;
uchar hour=0;
uchar min=0;
uchar sec=0;
uchar buf[6]=[0,0,0,0,0,0};
uchar code SEG[10]={0x3f,0x06,0x5b,0x4f,【1】,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code POS[6]={0x01,0x02,0x04,0x08,0x10,0x20};
void disp(void);
void disp_min(void);
void disp_sec(void);
void disp_hour(void);
void delay(【2】)
{ uint i,j;
for(i=0;i<k;i++)
for(j=0;j<125;j++);}
void init_timerO(void)
{ TMOD=0x01;
TL0=【3】;
TH0=-(50000/256);
TR0=1;
ET0=1; }
void int_timer0( )interrupt 1 using 0
{ TH0=-(50000%256);
TL0=-(50000%256);
t_50ms++
if(【4】)
{ t_50ms=0;
sec++;
if(sec>=60)
{ sec=0;
【5】;
if(min>=60)
{ min=0;
hour++
if(hour>=24)
hour=0;
void disp(void)
{ uchar i,j:
for(i=0;i<=5;i++)
{ P2=WEI[i];
j=buf[i];
PO=【6】;
delay(10); } }
void main(void)
{ init_timer0();
EA=1;
while(1)
{ buf[0]=sec%10;
buf[1]=sec/10;
buf[2]=min%10;
buf[3]=min/10;
buf[4]=【7】;
buf[5]=hour/10;
disp( );}}
【答案】
【1】0x66
【2】uint k
【3】-(50000%256)
【4】t_50ms>=20
【5】min++
【6】SEG[j]
【7】hour%10
【解析】
【1】0x66,这是数码管显示数字"4"的段码值(共阳极数码管)。
【2】uint k,delay函数需要传入一个无符号整型参数作为延时循环次数。
【3】-(50000%256),定时器初值的低8位,50000微秒(50ms)的取模运算结果。
【4】t_50ms >= 20,判断是否达到20次50ms中断(即1秒)。
【5】min++,秒数满60后分钟数加1。
【6】SEG[j],根据当前数字j取出对应的段码值送到P0口。
【7】hour%10,获取小时数的个位数字。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$