《单片机应用技术》模拟试卷(A卷)答案 下载本文

一、单项选择题:(共20题,每题1分,共20分)

1、单片机8031的/EA引脚(C )。

A. 可悬空 B. 必须接+5V电源

C. 必须接地 D. 以上三种情况视需要而定

2、MCS-51单片机的4个并行I/O端口作为通用I/O端口使用,在输出数据时,必须外接上拉电阻的是(A )。

A. P0口 B. P1口 C. P2口 D. P3口

3、当MCS-51单片机应用系统需要扩展外部存储器或其它接口芯片时,(A )可作为低8位地址总线使用。

A. P0口 B. P1口 C. P2口 D. P0口和P2口

4、系统复位后,堆栈指针SP的内容是(B )。

A. 08H B. 07H C. 30H D. 50H

5、MCS-51单片机的位寻址区位于内部RAM的( D )单元。

A. 00H~7FH B. 20H~7FH C. 00H~1FH D. 20H~2FH

6、PSW中的RS1和RS0用来(A )。

A. 选择工作寄存器组 B. 指示复位 C. 选择定时器 D. 选择工作方式 7、MCS-51单片机规定一个机器周期共有(A )个节拍。

A. 12 B. 6 C. 8 D. 16

8、下面叙述不正确的是( C )。

A. 一个C源程序可以由一个或多个函数组成 B. 一个C源程序必须包含一个函数main() C. 在C51中,注释说明只能使用/*……*/注释 D. C程序的基本组成单位是函数

9、在C51程序中常常把( D )作为循环体,用于消耗CPU时间,产生延时效果。

A. 赋值语句 B. 表达式语句 C. 循环语句 D. 空语句

10、在单片机应用系统中,LED数码管显示电路通常有(C )显示方式。

A. 静态 B. 动态 C. 静态和动态 D. 查询

11、共阳极LED数码管加反向器驱动时显示字符“6”的段码是( B )。

A. 06H B. 7DH C. 82H D. FAH

12、LED数码管若采用动态显示方式,下列说法错误的是( C )。

A. 将各位数码管的段选线并联

B. 将段选线用一个8位I/O端口控制

C. 将各位数码管的公共端直接连接在+5V或者GND上 D. 将各位数码管的位选线用各自独立的I/O端口控制

13、按键开关的结构通常是机械弹性元件,在按键按下和断开时,触点在闭合和断开瞬间会产生接触不稳定,为消除抖动引起的不良后果,常采用的方法有(C )。

A. 硬件去抖动 B. 软件去抖动 C. 硬、软件两种方法 D. 单稳态电路去抖方法

14、行列式(矩阵式)键盘的工作方式主要有( A )。

A. 编程扫描方式和中断扫描方式 B. 独立查询方式和中断扫描方式 C. 中断扫描方式和直接访问方式 D. 直接输入方式和直接访问方式

15、MCS-51系列单片机的定时器T1用做定时方式时,采用工作方式1,则工作方式控制字为(C )。

A. 01H B. 05H C. 10H D. 50H

16、MCS-51系列单片机的定时器T0用做定时方式时,采用工作方式1,则初始化编程为(A )。

A. TMOD=0x01 B. TMOD=0x50 C. TMOD=0x10 D. TCON=0x02

17、启动T0开始计数是使TCON的( B )。

A. TF0位置1 B. TR0位置1 C. TR0位置0 D. TR1位置0

18、MCS-51系列单片机串行口发送/接收中断源的工作过程是:当串行口接收或发送完一帧数据时,将SCON中的(A ),向CPU申请中断。

A. RI或TI置1 B. RI或TI置0 C. RI置1或TI置0 D. RI置0或TI置1

19、MCS-51系列单片机在同一级别里除串行口外,级别最低的中断源是( C )。

A. 外部中断1 B. 定时器T0 C. 定时器T1 D. 串行口

20、当外部中断0发出中断请求后,中断响应的条件是(D )。

A. ET0=1 B. EX0=1 C. IE=0x61 D. IE=0x81

二、填空题:(共20空,每空2分,共40分)

得分 评卷人 21、除了单片机和电源外,单片机最小系统包括___时钟_____电路和___复位

_____电路。

22、当系统的振荡频率为12MHz时,一个机器周期为_____1___μs。

23、MCS-51单片机的存储器主要有4个物理存储空间,既__片内数据存储器______、___片内程序存储器_____、___片外数据存储器_____、__片外程序存储器______。

24、片内RAM低128单元,按其用途划分为__工作寄存器组______、___位寻址区_____和__用户RAM区______3个区域。

25、使MCS-51系列单片机的定时器T0停止计数的语句是 TR0=0; 。 26、MCS-51系列单片机CPU关中断语句是 EA=0; 。

27、MCS-51系列单片机的中断系统由定时控制寄存器TCON、串行口控制寄存器SCON、中断允许寄存器IE、中断优先权寄存器IP等寄存器组成。

28、当CPU响应定时器T1的中断请求后,程序计数器PC的内容是 001BH 。

29、A/D转换结束通常采用__中断______、__查询______和__延时等待______方式编程。

得分 评卷人 三、问答题:(共4题,每题5分,共20分)

30、画出MCS-51单片机时钟电路,并指出石英晶体和电容的取值范围。

答:

单片机晶振电路

一般地,电容C1和C2取30pF左右,晶体的振荡频率范围是1.2MHz~12 MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就越快。MCS-51在通常应用情况下,使用振荡频率为的6MHz或12MHz的晶振,如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.059MHz的晶振。

31、MCS-51单片机常用的复位方法有几种?画电路图并说明其工作原理。

答:

(a) 上电复位电路 (b) 按键复位电路

单片机常见的复位电路

图(a)为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平的时间大于两个机器周期,便能正常复位。

图(b)为按键复位电路。该电路除具有上电复位功能外,若要复位,只需按图(b)中的RESET键,此时电源VCC经电阻R1、R2分压,在RST端产生一个复位高电平。

32、MCS-51单片机有哪几个中断源? 答:

MCS-51系列单片机有5个中断源,分别是外部中断0、定时器0、外部中断1、定时器1、串行口。

33、使用ADC0809进行转换的主要步骤有哪些? 答:

主要有以下四个步骤:

(1)启动A/D转换,START引脚上跳沿时,所有内部寄存器清0,START下跳沿时,开始进行A/D转换;

(2)查询EOC引脚状态,启动转换后,系统自动设置EOC=0,转换完成后,EOC=1; (3)允许读数,将OE引脚设置为1状态; (4)读取A/D转换结果。

得分 评卷人 四、单片机应用设计:(共2题,每题10分,共20分)

34、现要求LED的阳极接在P1.0引脚上,请完成LED点亮电路和C语言程序设计。 答:

(1)LED点亮电路设计 C130pFU1X119XTAL1CRYSTAL18XTAL2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617R110kC230pF9RSTC310uF293031PSENALEEAR2220D1LED-RED12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7AT89S52 (2)LED点亮程序设计 #include sbit LED=P1^0; void main (void) {

LED=1; while(1);

}

35、利用AT89S52单片机、一个共阴极LED数码管和数据总线驱动芯片74LS245,请完成数码管循环显示0~9电路和C语言程序设计。 答:

(1)LED点亮电路设计

C130pFU1X119XTAL1CRYSTAL18XTAL2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789191R110kC230pF9RSTU2A0A1A2A3A4A5A6A7CEAB/BA74LS245B0B1B2B3B4B5B6B71817161514131211C310uF293031PSENALEEA12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7AT89S52 (2)LED点亮程序设计 #include unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void Delay() { unsigned char i, j; for (i=0;i<255;i++) for (j=0;j<255;j++);

}

void main() {

unsigned char k; while(1) { for(k=0;k<10;k++) {

P2 = tab[k];

Delay(); //延时 } }

}