微机原理与单片机接口技术习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参考答案
习题一
一、选择题 1 (A ) 2(C ) 3( C ) 4( B ) 5(C) 6( B) 7(D)
二、简答题
1.什么是微处理器?微处理器由几部分组成?微处理器的工作过程是什么?答:微处理器最初定义是将CPU(Central Processing Unit,中央处理单元)是指由一片或几片大规模集成电路组成的具有运算器和控制器功能的中央处理机部件,它是计算机系统的核心或“大脑”,支配整个计算机系统工作。
微处理器主要由运算器、控制器、寄存器组及内部总线。
微处理器的工作过程就是执行程序的过程,而执行程序就是逐步执行一条条指令的过微处理器仅能识别机器指令,需使用各种编译器将由高级程序设计语言编制的程序转机器指令构成的程序。
2.简述Intel公司生产的几种不同微处理器的功能特性?
答:Intel公司在不同时间推出的不同处理器之间的差异见表1-1。
3.什么是单片机?它由哪几部分组成?什么是单片机应用系统?
答:将中央处理器(CPU)、存储器(Memory)及输入/输出单元(I/O)集成在一小块硅片上,如图1-2所示,这样一块芯片就具有了计算机的功能属性,因而被称为微型单片计算机,简称单片机。
4.简述单片机设计开发的常用工具。
答:根据单片机系统的组成是由单片机系统程序设计和单片机系统硬件组成,所以常用工具分为软件开发工具和硬件开发工具,其常用软件开发工具有Kei开发软件、WAVE开发软件、字库设计软件和Proteus仿真软件;常用的硬件工具有编程器、仿真器、逻辑分析仪等。
5.简述51单片机与52单片机的主要区别。
答:51单片机和52单片机的主要区别见表1-2.
习题二
1.8086 CPU由哪两部分组成?它们的主要功能是什么?两者如何配合工作的?
参考答案:8086 CPU由总线接口部件BIU和执行部件EU组成。
BIU负责完成微处理器与存储器、I/O设备之间的信息传送,具体包括读取指令、读取操作数和存储结果。
EU负责指令的执行。
EU和BIU两者并行工作。
EU从BIU的指令队列头部读入待执行的指令,译码后提供操作数地址给BIU请求操作数,EU执行指令后将处理结果回送给BIU,同时根据运算结果更新标志寄存器FLAGS中的状态标志位。
在EU执行指令的同时,BIU可以预读取后续指令,EU和BIU流水线工作。
2. 8086 CPU在最大模式和最小模式下有什么相同点和不同点?
参考答案:
8086不同的工作模式对系统的硬件组成有不同的要求,其中共同之处有:(1)时钟发生器8284 (1片,提供时钟)
(2)地址锁存器8282 (3片,锁存地址信息)
(3)数据收发器8286 (2片,增加数据总线的驱动能力)
不同点:
(1)总线控制信号产生者不同。
最大模式下,总线控制信号有8288芯片根
据8086状态信号产生;最小模式下,总线控制信号由8086产生。
(2)在最小模式下,只有8086一个处理器;在最大模式下,除主处理器8086外,还有协处理器。
(3)应用场景不同,最小模式适合小规模应用,最大模式适合中、大规模应用。
3.简述8086系统的存储器分段技术,举例说明物理地址和逻辑地址的关系。
8086有20根地址线,可以直接寻址1MB (2^20)内存,但其用于存储地址的寄存器都是16位,只能间接寻址64K (2^16)空间。
为此,引入存储器分段技术,即从逻辑上将物理内存分段,每段大小不超过64KB ,使用逻辑地址进行寻址。
逻辑地址由段地址和偏移地址组成,记为段地址:偏移地址。
段地址和偏移地址都是16位。
物理地址和段地址的关系:
物理地址 = 段地址×10H + 偏移地址。
物理地址是唯一的,一个存储单元可以包括在多个逻辑段内,即一个物理地址可以多个逻辑地址对应。
4. 简述8086的时钟周期、总线周期和指令周期三者的关系。
参考答案:时钟周期是系统主时钟CLK 频率的倒数,是CPU 的基本(最小)时间单位。
8086CPU 的时钟周期又称为时钟状态,即T1状态、T2状态、T3状态、T4状态。
每个时钟周期完成一些基本操作。
总线周期是CPU 执行一个总线(读/写)操作所需要的时间。
8086/8088CPU 的一个基本的总线周期由4个时钟周期(T1、T2、T3、T4)组成,每个时钟周期完成一些基本操作。
指令周期是CPU 执行一条指令所需要的时间。
每条指令的指令周期不同。
一条指令周期包含一个或若干个总线周期。
5. 简述8086的最小模式下存储器读操作时序。
8086的最小模式下存储器读总线周期时序如下所示:
CLK T 4
T 1
T 2
T 3
1:读存储器 0:读I/O A 19/S 6~A 16/S 3
状态(S 6~S 3)
AD 15~AD 0
地址(A 15~A 0)
输入数据
ALE M/IO
RD
DT/R
DEN
7
S BHE /BHE A 19~A 16
时序简述如下:
(1)在总线周期的T1状态,8086通过地址线输出访问地址;同时使ALE 信号有效,控制地址锁存器锁存地址。
(2)在T2状态,使读控制信号有效。
(3)在T3状态,8086读存储器输出的有效数据。
习题三
一、选择题
1(C) 2(C) 3(A) 4 (A) 5(D) 6 (C) 7(B) 8 (A) 9(C) 10(D) 11(B) 12(A)
13(A) 14(A) 15(C) 16(B) 17(D) 18(C) 19(A) 20(C) 21(A) 22(C) 23(B)
二、填空题
1.51单片机存储器分为数据存储器和程序存储器两种。
2.51单片机内部RAM的低128单元,按其用途,划分为:工作寄存器区、位寻址区和用户RAM区这3个区域。
3.单片机的外接晶振频率为12MHz时,一个机器周期为1uS ;当外接晶振频率为6MHz时,一个机器周期为2uS 。
4.单片机的复位电路有两种,即上电复位和手动上电复位。
5.51单片机的复位信号需持续2个机器周期以上的高电平时,用于完成51单片机的复位初始化操作。
三、简答题
1.51单片机内部包含哪些主要逻辑功能部件?各个功能部件的最主要的功能是什么?
参考答案:略
2.什么是时钟周期、机器周期、指令周期?当主频为24MHz时,一个机器周期时间是多少?
参考答案:时钟周期也称为晶体的振荡周期,定义为时钟频率(
f)的倒数,
osc
是单片机中最基本、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。
单片机CPU完成一个基本操作所需的时间称为机器周期。
51系列单片机中规定,一个机器周期由6个状态周期(S1~S6)组成,而一个状态周期由两个时钟周期组成,则一个机器周期由12个时钟周期组成。
指令周期是CPU执行一条指令所需的时间。
单片机的指令分为单字节、双字节和三字节指令,所需的指令周期也不同,一般为1~4个指令周期。
当主频为24MHz,一个机器周期=12/(24MHz)=0.5us
3.简述单片机系统复位的作用。
系统复位后,特殊功能寄存器P0~P3、PC、DPTR、SP、ACC、PSW等的初始值是什么?复位是否能改变内部RAM单元的内容?
参考答案:略。
4.堆栈有何作用?是如何进行操作的?
参考答案:堆栈用于保存临时变量,保护断点和现场。
堆栈按照先进后出,后进先出的原则,分压栈和出栈操作。
压栈首先将堆栈指针SP加一,在写入数据;
出栈先读出数据,再将堆栈指针SP 减一。
5.单片机的存储器从物理结构上可划分为几个空间?画出51单片机的存储器结构图? 参考答案:单片机的存储器从物理结构上划分为片内数据存储器、片外数据存储器、片内程序存储器和片外程序存储器。
00H
80H
FFFFH
0000H
0FFFH
6.单片机的片内RAM 的低128单元划分为哪三个主要部分?简述各部分的功能和特点。
参考答案:低128B 片内RAM 依据功能划分为三个区:
(1)工作寄存器区(字节地址:00F ~1FH ):32个8位通用寄存器,分成4组,每组8个,共32B 。
(2)位寻址区(字节地址:20H ~2FH ):128个可按位寻址的单元,共16B ,位地址为00H ~7FH 。
(3)用户RAM 区(字节地址:30F ~7FH ):用户RAM 区,共80个单元,作为堆栈、数据缓冲区。
7.简述程序状态寄存器PSW 的作用,写出PSW 中各位的定义。
参考答案:略
9.51单片机程序存储器的0000H 、0003H 、000BH 、0013H 、001BH 、0023H 这六个地址单元的有何特殊用途?
参考答案:程序存储器的0000H 、0003H 、000BH 、0013H 、001BH 、0023H 这六
10.单片机的P0~P3四个I/O端口在结构上有何异同?作为普通I/O口使用时应注意什么?
参考答案:略。
11.什么是最小单片机系统,说明其主要由哪几部分组成,并试画出8051单片机的最小系统。
参考答案:能使单片机正常工作的最小硬件单元电路,叫单片机最小系统。
对51系列单片机来说,最小系统至少包括单片机、晶振电路、复位电路和电源等。
51最小单片机系统如下图所示。
复位
按键
单片机最小系统
习题五
一、选择题
1(C)2(A) 3(A) 4(D) 5(D) 6(A) 7(B) 8(C) 9(A)
二、填空题
1. main;
2. FLAG=P3^1;
3. Sfr和sfr16;
4. 顺序、选择、循环;
5. 表达式、分号;
6. if、switch;
7. d0…while、while;
8. \0;
9. 主函数; 10. 一个主; 11. 0; 12. 1;
13. (1)实现y从0-10的相加; (2)实现0-100相加;(3)实现0-10相加。
14. x=6;y=7;z=6;m=1;n=1
习题六
一、选择题1(C) 2(A) 3(B) 4(B) 5(A) 6(D) 7(C) 8(C) 9(A) 10(B) 11(B) 12(C) 13(D) 14(B) 15(C)
二、简答题
1.由于轻触按键内部为弹簧接触式结构,因此按键在闭合和断开时,触点会存在抖动现象。
消抖的方法可采用硬件消抖和软件消抖的方法。
常用的硬件消抖方法是使用一个切换开关及互锁电路组成RS触发器,这个电路可以降低抖动所产生的噪声,但所需要的元件较多,增加了产品的成本与电路的复杂度,一般不使用。
软件消抖是单片机设计中常用方法,其过程是:当检测到按键端口为低电平时,不立即确认按键按下,延时10ms后再次进行判断,如果仍为电平即可确认确实是按键按下,这实际上是避开了按键按下时的抖动时间。
2.静态显示是指使用数码管显示字符时,数码管的公共端恒定接地(共阴极)或+5 V电源(共阳极)。
将每个数码管的8个段控制引脚分别与单片机的一个8位I/O端口相连。
只要I/O端口有显示字型码输出,数码管就显示给定字符,并保持不变,直到I/O端口输出新的段码。
数码管动态显示电路通常是将所有数码管的8个显示段分别并联起来,仅用一个并行I/O端口控制,称为“段选端”。
各位数码管的公共端,称为“位选端”,由另一个I/O端口控制。
3.
#include<reg52.h>
sbit LED=P1^0;
void delayms(uint ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void main()
{
while(1)
{
delayms(1000);
LED=~P1^0;
}
}
4.在单片机应用系统中,如果系统需要按键数量较少,一般采用独立式按键接口,每个按键单独占用一根I/O端口线,按键的工作不会影响其他I/O端口线的状态,独立式按键的电路配置灵活,软件结构简单,但每个按键必须占用一根I/O端口线,因此,在按键较多时,I/O端口线浪费较大,不宜采用。
为了节约单片机硬件接口资源,当系统需要按键数量较多时,一般采用矩阵键盘接口方式。
由4根行线和4根列线组成,例如:P0.0~P0.3控制行线,P2.0~P2.3控制列线,按键位于行、列线的交叉点上,且行线通过上拉电阻接到+5V电源上,构成了一个4×4(16个按键)的矩阵式键盘。
三、程序设计题
1、
#include<reg52.h>
#define uchar unsigned char
sbit S1=P3^0;
bit flag=0;
bit kp=0;
void delayms(uchar ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void key(void)
{
if(S1==0)
{
delayms(10);
if((S1==0)&&(kp==0))
{
kp=1;
flag=~flag;
}
}
else kp=0;
}
void main(void)
{
P1=0XFE;
while(1)
{
key();
delayms(100);
if(flag==0)
P1=(P1<<1)|(P1>>7);
else
P1=(P1<<7)|(P1>>1);
}
}
2.
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; uchar dis[8];
void delayms(uint ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void display(void)
{
uchar i;
for(i=0;i<8;i++)//调用一次显示函数约为8毫秒125次为一秒{
P0=seg[dis[i]];
P2=i;
delayms(1);
}
}
void main()
{
uchar i,num;
while(1)
{
for(i=0;i<8;i++)dis[i]=num;
for(i=0;i<125;i++)
{
display();
}
if(++num==10)num=0;
}
}
3.
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P1^2;
sbit S1=P1^3;
bit kp=0;
uchar num=0;
void delayms(uint ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void w_com(uchar com)
RS=0;
RW=0;
E=1;
P0=com;
E=0;
delayms(5);
}
void w_dat(uchar dat) {
RS=1;
RW=0;
E=1;
P0=dat;
E=0;
delayms(5);
}
void lcd_ini(void) {
delayms(10);
w_com(0x38);
delayms(10);
w_com(0x0c);
delayms(10);
w_com(0x06);
delayms(10);
w_com(0x01);
delayms(10);
w_com(0x38);
delayms(10);
}
void fun()
if(++num==10)
num=0;
}
void keyscan(void)
{
if((P3&0x01)!=0x01)
{
delayms(10);
if(((P3&0x01)!=0x01)&&(kp==0))
{
kp=1;
if((P3&0x01)==0x00) fun();
}
}
else kp=0;
}
void main(void)
{
lcd_ini();
while(1)
{
w_com(0x87);
w_dat(num+0x30);
keyscan();
}
}
4.
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit S1=P1^0;
sbit BEEP=P2^0;
bit kp=0;
void delayms(uint ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void key(void)
{
if(S1==0)
{
delayms(10);
if((S1==0)&&(kp==0))
{
kp=1;
BEEP=0; //发声10毫秒
delayms(10);
BEEP=1;
}
}
else kp=0;
}
void main()
{
while(1)
{
key();
}
}
习题七
一、选择题1(D) 2(B) (B) 3(A) 4(C) 5(D) 6(B) 7(B) 8(C) 9(A) 10(c) 11(A) 12(A) 13(A) 14(B) 15(A) 16(A) 17(C) 18(A) 19(C) 20(B)21(A) 22(A) 23(C) 24(C) 25(C)
习题八
一、选择题1(B) 2(A) 3(B) (C) 4(A) 5(B) 6(A) 7(D) 8(C) 9(B) 10(B) 11(C) 12(C) 13(C) 14(A) 15(C) 16(D) 17(A)
习题九
一、选择题1(A)2(A) 3 (C) 4(A)
二、填空题
1.模拟数字;数字模拟
2.分辨率、建立时间
三、简答题
1.51单片机内部资源有一定容量的RAM和ROM,但在构成实际的硬件系统时,如果单片机的自身资源不能满足要求,就要进行存储器的扩展。
扩展的方法有并行和串行方式两种,并行方式使用51单片机的系统总线进行扩展,串行方式则使用51单片机的I/O口进行扩展。
2.不会发生冲突,原因是:从硬件连线上,访问外部程序存储器(读取)是控制线EA、PSEN有效,访问外部数据存储器是RD(读)、WR(写有效;从指令系统来说,如果是程序主动访问,采用不同的指令来访问,一般MOVC访问程序存储器,MOVX访问外部数据存储器。
3.如图所示:
4.I2C总线接口的单片机可直接与具有I2C总线接口的各种扩展器件(如存储器、I/O芯片、A/D、D/A、键盘、显示器、日历/时钟)连接。
I2C总线规定,在起始信号后传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),用“1”表示主机接收数据(R)。
每次数据传送总是由主机产生的终止信号结束。
但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。
51单片机与I2C总线通信时,51单片机应用系统中需要通过软件模拟PC总线的工作时序来控制I2C总线接口器件。
在程序设计时就需要编写出I2C的总线初始化、启动信号、应答信号、停止信号、读/写字节的函数,完成对I2C的时序控制的模拟。
5.SPI通常有四根线:CS/SCK/SDI/SDO。
作用分别是片选(使能)、时钟、输入、输出。
6.主机启动发送过程,送出时钟脉冲信号——>主移位寄存器的数据通过SDO移
入到从移位寄存器,同时从移位寄存器中的数据通过SDI移入到主移位寄存器中——>8(16)个时钟脉冲过后,时钟停顿,主移位寄存器中的8(16)位数据全部移入到从移位寄存器中,随即又被自动装入从接收缓冲器中,从机接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”。
同理,从移位寄存器中的8位数据全部移入到主寄存器中,随即又被自动装入到主接收缓冲器中.主接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”——>主CPU检测到主接收缓冲器的满标志位或者中断标志位置1后,就可以读取接收缓冲器中的数据。
同样,从CPU检测到从接收缓冲器满标志位或中断标志位置1后,就可以读取接收缓冲器中的数据,这样就完成了一次相互通信过程。
7.特点:(1)系统连接简单:I2C总线系统直接与具有I2C总线接口的各种扩展器件(如存储器、I/O芯片、A/D、D/A、键盘、显示器、日历/时钟)连接。
I2C总线对各器件寻址采用纯软件的寻址方法,无需片选线的连接,这样就大大简化了总线数量,系统各部件之间的连接只需两条线。
(2)数据传输速率较高:在标准I2C普通模式下,数据的传输速率为100kbit/s,高速模式下可达400kbit/s。
I2C总线的起始信号和终止信号都由主机发出,在起始信号产生后,总线就处于占用状态;在终止信号产生后,I2C总线就处于空闲状态。
由图见起始信号和终止信号的规定。
起始信号(S):在SCL 线为高电平期间,SDA线由高电平向低电平的变化表示起始信号,只有在起始信号以后,其他命令才有效。
终止信号(P):在SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
随着终止信号的出现,所有外部操作都结束。
无论I2C 总线上的数据传输方向由寻址字节中的数据传输方向位规定:
R/W=1,表示主机接收(读)。
R/W=0,表示主机发送(写)。