北京吉利学院2017 —2018 学年第 二 学期期末考试试卷
学院 专业 班级
成绩
姓名 学号 考场
《单片机原理及接口技术》B卷
(满分:100分,考试时间:120 分钟)
题号 |
一 |
二 |
三 |
四 |
总分 |
分数 |
|
|
|
|
|
本题得分 |
|
一、选择题(本大题共20小题,每小题1.5分,共 30分)
1、MCS-51系列的单片机中片内RAM的字节大小可能的是( B )
A、128M B、128K C、128 D、64
2、C51语言提供的合法的数据类型关键字是( A )。
A、sfr B、BIT C、Char D、integer r
3、片内RAM的位寻址区,位于地址( B )处。
A、00H~1FH B、20H~2FH C、30H~7FH D 、80H~FFH
4、间接寻址片内数据存储区(256字节),所用的存储类型是( C )
A、data B、bdata C、idata D、xdata
5、MCS-51单片机上电复位的信号是( D )
A、下降沿 B、上升沿 C、低电平 D、高电平
6、可以将P1口的低4位全部置高电平的表达式是( B )
A、P1&=0x0f B、P1|=0x0f C、P1^=0x0f D、P1=~P1
7、一般单片机C51程序中,为了使程序执行的效率最高,函数参数传递时,函数参数的个数不能够超过( C )
A、1 B、2 C、3 D、4
8、需要扩展一片外部RAM,大小32K字节,需要的地址线是( A )
A、15 B、14 C、13 D、12
9、如果将中断优先级寄存器IP中,将IP设置为0x0A,则优先级最高的是( D )
A、外部中断1 B、外部中断0
C、定时/计数器1 D、定时/计数器0
10、单片机C51中用关键字( C )来改变寄存器组
A、interrupt B、unsigned C、using D、reentrant
11、红外线遥控码由发射电路经( A )Hz的载频调制后发射。
A、38K B、 12M C、6M D、 32。768K
12、红外线遥控码的逻辑“0”与逻辑“1”是以脉冲的( B )决定的。
A、电平 B、宽度 C、频率 D、形状
13、DS1302内的时钟寄存器是以( C )的数据格式定义的。
A、十进制 B、十六进制 C、BCD码 D、压缩BCD码
14、设MCS-51单片机晶振频率为12MHz,定时器作计数器使用时,其最高的输入计数频率应为( B )
A、2MHz B、1MHz C、500kHz D、250kHz
15、使用_nop_()函数时,必须包含的库文件是( C )
A、reg52.h B、absacc.h C、intrins.h D、stdio.h
16、ADC0809的启动转换的信号是( D )
A、ALE B、EOC C、CLOCK D、START
17、线反转法识别有效按键时,如果读入的列线值不全为1,则说明( A )
A、有键被按下 B、一定只有一个键被按下
C、一定有多个键被按下 D、没有键被按下
18、在单片机应用系统中,LED数码管显示电路通常有( C )显示方式。
A、静态 B、动态 C、静态和动态 D、查询
19、共阳极LED数码管加反相器驱动时显示字符“6”的段码是(B )
A、0x06 B、0x7D C、0x82 D、0xFA
20、串行口每一次传送( A )字符。
A、1个 B、1串 C、 1波特 D、1帧
本题得分 |
|
二、填空题(共11小题,每空1分,共20 分)
1、单片机中,常用作串入并出的芯片是 ,常用作232串口电平转换芯片是_________。
2、在单片机硬件设计时,31脚一般要接 EA非 , 晶振在PCB设计中应尽量__靠近单片机。
3、单片机程序的入口地址是_____0000H_________,外部中断0的入口地址是___0003H_____。
4、非编码式键盘识别有效键盘的方法通常有两种:一种是___逐列扫描法__另一种是 行列反转法
5、若采用12MHz的晶体振荡器,则MCS-51单片机的振荡周期为_______1/12us______,机器周期为 1us 。
6、LCD1602常用的写子函数有 ______________和 两种。
7、KeiL C51软件中,工程文件的扩展名是 .UV2 ,编译连接后生成可烧写的文件扩展名是 .hex 。
8、字符型LCD标准西文字库采用是 ASCii 编码方式。
9、若只需要开串行口中断,则IE的值应设置为 90H ,若需要将外部中断0设置为下降沿触发,则执行的语句为___IT0=1____。
10、一个函数由两部分组成,即____函数头__和__函数体___。
11、DS1302是双电源工作方式,第二电源的作用是____________________________。
本题得分 |
|
三、程序分析与填空题(每空3分,共15分)
1、下面的while循环执行了 无限 次空语句。
i = 3;
while(i! = 0);
2、//该程序功能为点亮第一个发光二极管
#include <reg51.h> //51系列单片机头文件
sbit led1=P1^0; //声明单片机P1口的第一位为led1
void main() //主函数
{
led1=0; /*点亮第一个发光二极管*/
}
3、将下面的程序补充完整:
#include<reg51.h>
_void delay(unsigned int i)_________;
void main()
{
while(1)
{
P1 = 0xFF;
________delay__(1200);
P1 = 0x00;
______delay____(1200);
}
}
//函数名:delay
//函数功能:实现软件延时
//形式参数:整型变量i,控制循环次数
//返回值:无
void delay(unsigned int i)
{
unsigned int k;
for(k = 0;k < i;k ++);
}
四.简答题(前两题各8分,第3小题9分,第4小题10分,共35分)
- 中断响应过程中,为什么通常要保护现场?需要保护哪些内容?如何保护?
因为一般主程序和中断服务程序都可能会用到累加器,PSW寄存器及其他一些寄存器。CPU在进入中断服务程序后,用到上述寄存器时,就会破坏它原来存在寄存器中的内容;一旦中断返回,将会造成主程序的混乱。因而在进入中断服务程序后,一般要先保护现场,然后再执行中断处理程序,在返回主程序以前再恢复现场。
保护方法一般是把累加器、PSW寄存器及其他一些与主程序有关的寄存器压入堆栈。在保护现场和恢复现场时,为了不使现场受到破坏或者造成混乱,一般规定此时CPU不响应新的中断请求。这就要求在编写中断服务程序时,注意在保护现场之前要关中断,在恢复现场之后开中断。如果在中断处理时允许有更高级的中断打断它,则在保护现场之后再开中断,恢复现场之前关中断。
- 51单片机外扩的程序存储器和数据存储器地址空间相同,但不会发生数据冲突,为什么?
51的指令系统设计了不同的数据传送指令以区别这4个不同的逻辑空间:CPU访问内、片外ROM指令用MOVC,访问片外RAM指令用MOVX,访问片内RAM指令用MOV。 程序存储器用于存放编好的程序和表格常数。程序通过16位程序计数器寻址,寻址能力为64KB。这使得指令能在64KB的地址空间内任意跳转,但不能使程序从程序存储器空间转移到数据存储器空间。 实际上,当引脚EA接高电平时,8051的程序计数器PC执行片内ROM中的程序,当指令地址超过片内ROM地址时,就自动转向片外ROM中去取指令。当引脚EA接低电平(接地)时,8051片内ROM不起作用,CPU只能从片外ROM中取指令,地址可以从0000H开始编址。8051从片内程序存储器和片外程序存储器取指时的执行速度相同。 用P0口作地址/数据复用总线,用P2口的口线作高位地址线,最多可以扩展64KB的存储器。控制信号线包括:使用ALE作为地址锁存的选通信号,以实现低8位地址的锁存;以PSEN信号作为扩展程序存储器的读选通信号;以EA信号作为内、外程序存储器的选择信号;以EA和作为扩展数据存储器和I/O端口的读、写选通信号。执行MOVX指令时,RD和WR信号分别自动有效。片外数据存储器RAM的读和写由8051的RD (P3.7)和WR(P3.6)信号控制,而片外程序存储器的输出允许(OE)由读选通PSEN信号控制。尽管片外数据存储器和片外程序存储器共处同一地址空间,但由于控制信号及使用的数据传送指令不同,故不会发生总线冲突。
- 在有串行通信时,定时器/计数器1的作用是什么,怎样确定串行口的波特率?
用来实现控制串行通信速率的,也就是方式1,方式3时的波特率是由T1的溢出率来实现控制的。
4.已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤)
(1)T0:定时方式,工作在方式 1。方式字 TMOD=01H
(2) fosc=6MHz,16 位计数器,10ms 定时,设计数初值为 a,(5 t=12/ fosc*(216 - a) , 10*103=12/6 *(216 - a) ,a=60536=EC78H , 即 TH0=ECH TL0=78H 所以:TMOD=01H TH0=ECH TL0=78H
一、选择题(本大题共20小题,每小题1.5分,共 30分)
- 51单片机的CPU主要由( A )组成。
A、运算器、控制器 B、加法器、寄存器
C、运算器、加法器 D、运算器、译码器
- 程序是以(C )形式存放在程序存储器中。
A、C语言源程序 B、汇编程序
C、二进制编码 D、BCD码
- 单片机8031的EA(——)引脚( A )。
A、必须接地 B、必须接+5V电源
C、可悬空 D、以上三种视需要而定
- 单片机上电复位后,PC的内容为(A )。
A、0x0000 B、0x0003 C、0x000B D、0x0800
- 外部扩展存储器时,分时复用做数据线和低8位地址线的是( A )
A、P0口 B、P1口 C、P2口 D、P3口
- 单片机的ALE引脚是以晶振振荡频率的(C )固定频率输出正脉冲,因此它可作为外部时钟或外部定时脉冲使用。
A、1/2 B、1/4 C、1/6 D、1/12
- 下面叙述不正确的是( C )。
A、一个C源程序可以由一个或多个函数组成。
B、一个C源程序必须包含一个主函数main( )。
C、在C程序中,注释说明只能位于一条语句的后面。
D、C程序的基本组成部分单位是函数。
8、在C语言中,当do-while语句中的条件为( A)时,循环结束。
A、0 B、false C、true D、非0
9、下面的while循环执行了(A )次空语句。
While(i=3);
A、无限次 B、0次 C、1次 D、2次
10、C程序总是从(A )开始执行的。
A、主函数 B、主程序 C、子程序 D、主过程
11、在C51程序中常常把( D)作为循环体,用于消耗CPU运行时间,产生延时效果。
A、赋值语句 B、表达式语句 C、循环语句 D、空语句
12、在单片机应用系统中,LED数码管显示电路通常有(C )显示方式。
A、静态 B、动态 C、静态和动态 D、查询
13、共阳极LED数码管加反相器驱动时显示字符“6”的段码是( B )
A、0x06 B、0x7D C、0x82 D、0xFA
14、51单片机的定时器T1用做定时方式时,采用工作方式1,则工作方式控制字为( A )
A、0x01 B、0x05 C、0x10 D、0x50
15、启动T0开始计数是使TCON的(B )。
A、TF0位置1 B、TR0位置1 C、TR0位清0 D、TR1位清0
16、在定时/计数器的计数初值计算中,若设最大计数值为M,对于工作方式1下的M值为(D)。
A、M=213 = 8192 B、M=28 = 256
C、M=24 = 16 D、M=216 = 65536
17、51单片机的串行口是( B )。
A、单工 B、全双工 C、半双工 D、并行口
18、表示串行数据传输速率的指标为( D )。
A、USART B、UART C、字符帧 D、波特率
19、单片机输出信号为( B )电平。
A、RS-232C B、TTL C、RS-449 D、RS-232
20、串行口的发送数据和接收数据端为( A )。
A、TXD和RXD B、TI和RI C、TB8和RB8 D、REN
二、填空题(共7小题,每空1 分,共20 分)
1、除了单片机和电源外,单片机最小系统包括_时钟_电路和__复位 _电路。
2、MCS-51系列单片机的存储器主要有4个物理存储空间,即____片内数据存储器_____、____片外数据存储器_____、______片内程序存储_____、片外程序存储器。
3、当振荡脉冲频率为12MHz时,一个机器周期为______1微秒______;当振荡脉冲频率为6MHz时,一个机器周期为_____2微秒____。
4、while语句和do-while语句的区别在于:__do-while__语句是先执行、后判断;而__while____语句是先判断、后执行。
5、结构化程序设计的三种基本结构是____顺序__、___选择___、______循环____。
6、51单片机的定时器的内部结构由以下四部分组成:______TMON___、____TCON___、_____T1_______和____T0_____。
7、A/D转换器的作用是将__模拟__量转为__数字_量;D/A转换器的作用是将___数字___量转为___模拟____量。
三、简答题(本大题共4小题,第1、2小题各8分,第3小题9分,第4小题10分,共 35分)
1、在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?
在书上
2、在有串行通信时,定时器/计数器1的作用是什么,怎样确定串行口的波特率?
3、如何消除键盘的抖动?
4、8051引脚有多少I/O线?他们和单片机对外的地址总线和数据总线有什么关系?地址总线和数据总线各是几位?
#include "reg52.h" #include<intrins.h> void delay(int i) { while(i--); } void main() { char i; P2=0xfe; delay(50000); while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1); delay(50000); } for(i=0;i<7;i++) { P2=_cror_(P2,1); delay(50000); } } }
#include "reg52.h" sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; int code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值 void delay(int i) { while(i--); } void DigDisplay() { char i; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;//显示第5位 case(6): LSA=0;LSB=1;LSC=1; break;//显示第6位 case(7): LSA=1;LSB=1;LSC=1; break;//显示第7位 } P0=smgduan[i];//发送段码 delay(100); //间隔一段时间扫描 P0=0x00;//消隐 } } void main() { while(1) { DigDisplay(); //数码管显示函数 } }