单片机应用技术课后习题和练习题型参考答案.docx
《单片机应用技术课后习题和练习题型参考答案.docx》由会员分享,可在线阅读,更多相关《单片机应用技术课后习题和练习题型参考答案.docx(49页珍藏版)》请在冰豆网上搜索。
单片机应用技术课后习题和练习题型参考答案
课后习题参考答案
习题1答案
1.1单项选择题
(1)A
(2)C(3)A(4)A(5)A
(6)A(7)C(8)C(9)D(10)C
1.2填空题
(1)硬件系统、软件系统
(2)时钟、复位
(3)XTAL1、XTAL2、RST、
(4)片内数据存储器、片内程序存储器、片外数据存储器、片外程序存储器
(5)时钟电路
(6)程序存储器
(7)工作寄存器组、位寻址区、用户RAM区
(8)1us、2us
(9)上电复位电路、按键复位电路
(10)2、高
1.3
答:
单片微型计算机是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(CentralProcessingUnit)、随机存取存储器RAM(RandomAccessMemory)、只读存储器ROM(Read-onlyMemory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时器/计数器等都制作在一块集成芯片上,构成一个完整的微型计算机,可以实现微型计算机的基本功能。
单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围电路和软件,能实现一种或多种功能的实用系统。
单片机应用系统是由硬件和软件组成的,硬件是应用系统的基础,软件则是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可。
1.4
答:
P3口各引脚与第二功能表
引脚
第二功能
信号名称
P3.0
RXD
串行数据接收
P3.1
TXD
串行数据发送
P3.2
外部中断0申请
P3.3
外部中断1申请
P3.4
T0
定时/计数器0的外部输入
P3.5
T1
定时/计数器1的外部输入
P3.6
外部RAM写选通
P3.7
外部RAM读选通
1.5
答:
片内RAM低128单元的配置如下:
地址
功能
30H~7FH
数据缓冲区
20H~2FH
位寻址区(00H~7FH)
18H~1FH
第3组工作寄存器(R7~R0)
10H~17H
第2组工作寄存器(R7~R0)
08H~0FH
第1组工作寄存器(R7~R0)
00H~07H
第0组工作寄存器(R7~R0)
寄存器常用于存放操作数及中间结果等;内部RAM的20H~2FH单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作;在内部RAM低128单元中,通用寄存器占去了32个单元,位寻址区占去了16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H~7FH。
片内RAM高128单元安排有21个特殊功能寄存器,其他空闲单元用户不能使用。
1.6
答:
有21个可寻址的特殊功能寄存器,它们不连续地分布在片内RAM的高128单元中,尽管其中还有许多空闲地址,但用户不能使用。
另外还有一个不可寻址的特殊功能寄存器,即程序计数器PC,它不占据RAM单元,在物理上是独立的。
在可寻址的21个特殊功能寄存器中,有11个寄存器不仅可以字节寻址,也可以进行位寻址。
1.7
答:
程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。
其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则由软件方法设定。
PSW的位状态可以用专门指令进行测试,也可以用指令读出。
PSW的各位定义下表所示。
PSW位定义
位地址
D7H
D6H
D5H
D4H
D3H
D2H
D1H
D0H
位名称
CY
AC
F0
RS1
RS0
OV
F1
P
·CY(PSW.7):
进位标志位。
CY是PWS中最常用的标志位,其功能有两个:
一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果最高位有进位或借位,则CY由硬件置“1”,否则被清“0”;二是在位操作中,作累加位使用。
位传送、位与位或等位操作,操作位之一固定是进位标志位。
·AC(PSW.6):
辅助进位标志位。
在进行加或减运算中,若低4位向高4位进位或借位,AC由硬件置“1”,否则被清“0”。
在BCD码调整中也要用到AC位状态。
·F0(PSW.5):
用户标志位。
这是一个供用户定义的标志位,需要利用软件方法置位或复位,用来控制程序的转向。
·RS1和RS0(PSW.4,PSW.3):
工作寄存器组选择位。
它们被用于选择CPU当前使用的通用寄存器组。
通用寄存器共有4组,其对应关系如下表所示。
工作寄存器组选择
RS1RS0
寄存器组
片内RAM地址
00
第0组
00H~07H
01
第1组
08H~0FH
10
第2组
10H~17H
11
第3组
18H~1FH
这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器组。
但当单片机上电或复位后,RS1RS0=00。
·OV(PSW.2):
溢出标志位。
在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128~+127),即产生了溢出,因此运算结果是错误的;OV=0表示运算正确,即无溢出产生。
在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;否则,OV=0,表示乘积只在A中。
在除法运算中,OV=1表示除数为0,除法不能进行;否则,OV=0,除数不为0,除法可正常进行。
·F1(PSW.1):
保留未使用。
·P(PSW.0):
奇偶标志位。
P标志位表明累加器A中内容的奇偶性,如果A中有奇数个“1”,则P置“1”,否则置“0”。
凡是改变累加器A中内容的指令均会影响P标志位。
此标志位对串行通信中的数据传输有重要的意义。
在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。
1.8
答:
0003H~002AH这40个单元被均匀地分为5段,作为5个中断源的中断地址区。
其中:
0003H~000AH外部中断0中断地址区
000BH~0012H定时器/计数器0中断地址区
0013H~001AH外部中断1中断地址区
001BH~0022H定时器/计数器1中断地址区
0023H~002AH串行中断地址区
中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。
因此在中断地址区中理应存放中断服务程序。
但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址。
1.9
答:
当需要扩展存储器时,低8位地址A7~A0和8位数据D7~D0由P0口分时传送,高8位地址A15~A8由P2口传送。
因此,只有在没有扩展片外存储器的系统中,P0口和P2口的每一位才可作为双向I/O端口使用。
1.10
答:
单片机晶振电路
一般地,电容C1和C2取30pF左右,晶体的振荡频率范围是1.2MHz~12MHz。
如果晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就越快。
MCS-51在通常应用情况下,使用振荡频率为的6MHz或12MHz的晶振,如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.059MHz的晶振。
1.11
答:
规定一个机器周期的宽度为12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。
当振荡脉冲频率为12MHz时,一个机器周期为1µs;当振荡脉冲频率为6MHz时,一个机器周期为2µs。
1.12
答:
(a)上电复位电路(b)按键复位电路
单片机常见的复位电路
图(a)为上电复位电路,它是利用电容充电来实现的。
在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。
只要保证RST为高电平的时间大于两个机器周期,便能正常复位。
图(b)为按键复位电路。
该电路除具有上电复位功能外,若要复位,只需按图(b)中的RESET键,此时电源VCC经电阻R1、R2分压,在RST端产生一个复位高电平。
习题2答案
2.1单项选择题
(1)C
(2)A(3)B(4)A(5)D
2.2
答:
单片机开发过程所用的设备与软件称为单片机开发系统或开发工具。
单片机开发系统包括计算机、单片机在线仿真器、开发工具软件、编程器等。
连接方法如下图所示。
单片机开发系统连接方法示意图
2.3
答:
单片机应用系统的开发过程如下:
设计电路图→制作电路板→程序设计→硬软件联调→程序下载→产品测试
2.4
答:
1.在线仿真功能
在线仿真器(InCircuitEmulator,简称ICE)是由一系列硬件构成的设备,它能仿真用户系统中的单片机,并能模拟用户系统的ROM、RAM和I/O口。
因此,在线仿真状态下,用户系统的运行环境和脱机运行的环境完全“逼真”。
2.调试功能
1)运行控制功能
开发系统应能使用户有效地控制目标程序的运行,以便检查程序运行的结果,对存在的硬件故障和软件错误进行定位。
2)单片机状态查看修改功能
当CPU停止执行程序运行后,开发系统允许用户方便地读出或修改目标系统资源的状态,以便检查程序运行的结果、设置断点条件以及设置程序的初始参数。
任务2中图2.13给出了在Medwin调试环境下查看单片机内部资源的菜单。
3.程序编译功能
1)程序设计语言
单片机程序设计语言包括机器语言、汇编语言和高级语言。
机器语言是单片机唯一能够识别的语言。
汇编语言具有使用灵活、实时性好的特点。
目前,在实际项目开发中较少使用汇编语言。
高级语言通用性好,且具有较好的可读性和可移植性,是目前单片机编程语言的主流。
2)程序编译
单片机开发系统能够提供源程序的编辑、编译和下载功能以及工程管理功能。
4.程序固化功能
编程器是完成这种任务的专用设备,它也是单片机开发系统的重要组成部分。
习题3答案
3.1单项选择题
(1)A
(2)A(3)C(4)C(5)A
(6)B(7)D(8)D(9)A(10)A
(11)B(12)C(13)D(14)D(15)C
3.2填空题
(1)P3口
(2)字节,位
(3)主函数main()
(4)sbitFLAG=P3^1;
(5)sfr
(6)顺序结构、选择结构和循环结构
(7)表达式加上分号“;”
(8)if,switch
(9)do-while,while
(10)无限次
(11)10000
(12)unsignedchar
(13)变量在MCS-51硬件系统中所使用的存储区域
(14)'\0'
(15)程序存储器ROM中
3.3上机操作题
(1)
//xiti3_3_1.c——第三章习题3.3上机操作题
(1)
#include
voiddelay(unsignedchari);//延时函数声明
voidmain()//主函数
{
while
(1){
P1=0x55;//按状态1的方式点亮8个LED
delay(200);//延时
P1=0xaa;//按状态2的方式点亮8个LED
delay(200);//延时
}
}
voiddelay(unsignedchari)//延时函数参见任务1程序ex1_1.c
(2)
//xiti3_3_2.c——第三章习题3.3上机操作题
(2)
#include//包含头文件REG51.H
voiddelay(unsignedchari);//延时函数声明
voidmain()//主函数
{
unsignedchari,l,r;
while
(1){
l=0x10;//高4位灯的位置初值为00010000B
r=0x08;//低4位灯的位置初值为00001000B
for(i=0;i<4;i++){
P1=~(l|r);//循环点亮灯
l<<=1;//高4位灯的位置移动
r>>=1;//低4位灯的位置移动
delay(200);//延时
}
}
}
voiddelay(unsignedchari)//延时函数参见任务1程序ex1_1.c
(3)
//xiti3_3_3.c——第三章习题3.3上机操作题(3)
#include//包含头文件REG51.H
voiddelay(unsignedchari);//延时函数声明
voidmain()//主函数
{
unsignedchari;
unsignedchardisplay[]={0x89,0xff,0x86,0xff,0xc7,0xff,0xc7,0xff,0xc0,0xff};
while
(1){
for(i=0;i<10;i++){
P1=display[i];//显示字送P1口
delay(200);//延时
}
}
}
voiddelay(unsignedchari)//延时函数参见任务1程序ex1_1.c
习题4答案
4.1单项选择题
(1)B
(2)A(3)C(4)A(5)A
(6)B(7)A(8)A(9)D(10)A
(11)C(12)C(13)A(14)D
4.2填空题
(1)①定时器T0②定时器T1③定时器方式寄存器TMOD④定时器控制寄存器TCON
(2)GATE=0
(3)TMOD=0x05
(4)选择定时器T0/T1的工作方式
(5)控制定时器的启动、停止,标志定时器的溢出和中断情况。
(6)定时控制寄存器TCON、串行口控制寄存器SCON、中断允许寄存器IE、中断优先权寄存器IP
(7)外部中断0、定时器0、外部中断1、定时器1、串行口
(8)电平触发方式
(9)硬件自动清除、软件清除、硬件配合软件共同清除
(10)0
4.3
答:
当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器增1,直至计满溢出。
定时器的定时时间与系统的振荡频率紧密相关,如果单片机系统采用12M晶振,则计数周期为:
,这是最短的定时周期,适当选择定时器的初值可获取各种定时时间。
当定时/计数器设置为计数工作方式时,计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外部信号计数,外部脉冲的下降沿将触发计数,检测一个由1到0的负跳变需要两个机器周期,所以,最高检测频率为振荡频率的1/24。
计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。
当需要准确计算时间时往往采用定时器的定时方式,而当要对一些外部事件计数时则采用定时器的计数方式。
4.4
答:
软件定时是通过编写一段延时程序来实现定时,这段延时程序不完成任何操作,只是通过一些空操作浪费掉一段时间。
这样的软件定时往往浪费CPU的工作效率,并且定时不够准确,前面三章的各个任务中均采用了这种方法。
硬件定时是通过单片机的定时器来实现时间的计算,用户只需要对定时器的工作方式、初始值赋予合适的数值,启动定时器后,定时器将自动按照机器周期定时。
这种由定时器实现的定时方式,定时时间准确、CPU的工作效率高。
4.5
答:
MCS-51系列单片机的定时/计数器是增1计数器。
对于增1计数器,计数初值应等于最大计数值减去所需要的计数值。
而减1计数器,计数初值就等于所需要的计数值。
例如:
假设需要计数50000次。
对于增1计数器的单片机,若采用方式1的定时器,最大计数值为65536,则初值应为:
65536-50000=15536。
而对于减1计数器,则计数初值将为50000。
4.6
答:
在定时/计数器工作于方式1下,最大计数值为65536。
若晶振频率为6MHz,则一个机器周期为2μS,所以最短定时时间为2μS(计数初值为65535),最长定时时间为2μS×65536=131072μS(计数初值为0)
4.7
答:
定时/计数器的4种工作方式由方式寄存器TMOD中的M1、M0来进行选择,具体如下:
M1M0
工作方式
功能说明
00
方式0
13位计数器
01
方式1
16位计数器
10
方式2
自动再装入8位计数器
11
方式3
定时器0:
分成两个8位计数器
定时器1:
停止计数
4.8
答:
中断是通过硬件来改变CPU的运行方向。
计算机在执行程序的过程中,当出现CPU以外的某种情况,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。
这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。
调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的;而何时调用中断服务程序事先却无法确定,因为“中断”的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。
中断的特点:
分时操作、实时处理、故障处理
4.9
答:
MCS-51系列单片机有5个中断源,分别是外部中断0、定时器0、外部中断1、定时器1、串行口。
它们的优先级别通过寄存器IP实现。
4.10
答:
外部中断有低电平触发和下降沿触发两种方式。
通过定时器控制寄存器TCON中的IT0、IT1来选择和设定。
IT1为
中断触发方式控制位,当IT1=0,外部中断1控制为电平触发方式。
当IT1=1,外部中断1控制为下降沿触发方式。
4.11
答:
常用的中断函数定义语法如下:
void函数名()interruptn
其中n为中断类型号,C51编译器允许0~31个中断,n取值范围0~31。
习题5答案
5.1单项选择题
(1)C
(2)A(3)C(4)B(5)B
(6)D(7)B(8)C(9)A
5.2
(1)led[k]
(2)delay()
5.3
答:
不能,因为共阴极和共阳极数码管com段接的电平不一样,点亮段码所需的电平也不同。
应该将共阴极数码管的com端接至GND上,P1口和8个段之间接上非门。
5.4
答:
LED静态显示时各位数码管相对独立,公共端恒定接地(共阴极)或正电源(共阳极),每个数码管的8个字段分别与一个8位I/O口地址相连,适合于2个及其以下的数码管显示。
动态显示时各位数码管的段选线相应并联在一起,由一个8位的I/O口控制,各位的段选线由另外的I/O口控制。
5.5
答:
每次只能点亮一行。
其采用的为动态显示,具体原理为:
从第一行开始点亮,每行点亮之间延时1ms,第八行结束后再从第一行开始循环显示。
利用人体的视觉驻留现象,所以看到的是一个稳定的图形,好像8行同时点亮。
5.6
答:
可以采用硬件和软件两种方式,硬件上可在键输出端加RS触发器或单稳态触发器构成去抖电路,软件上可以在检测到有按键按下时,执行一个10ms左右的延时程序,然后确认该键是否仍保持闭合状态的电平。
5.7
答:
独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,适合于八键以下使用;矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口,适合于八个键以上使用。
习题6答案
6.1单项选择题
(1)D
(2)C(3)A(4)A(5)B(6)D
6.2填空题
(1)分辨率和建立时间
(2)ILE、
、
、
、
(3)模拟,数字;数字,模拟
6.3
答:
DAC0832与8051单片机接口时,主要有如下控制信号:
ILE、/CS、/WR1、/WR2、/XFER,作用分别是:
(1)
:
转入寄存器片选信号,低电平有效。
(2)ILE:
输入寄存器的数据锁存允许信号,高电平有效。
(3)
:
输入寄存器的数据写信号,低电平有效。
(4)
:
DAC寄存器写信号,并启动转换。
低电平有效。
(5)
:
数据向DAC寄存器传送控制信号,传送后即启动转换,低电平有效。
ADC0809与8051单片机接口时,控制信号主要有:
ALE、START、EOC、OE。
作用分别是:
(1)ALE:
地址锁存允许信号在ALE上升沿,ADDA、ADDB、ADDC地址状态被送入地址锁存器中。
(2)START:
转换启动信号。
START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。
(3)OE:
输出允许信号。
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高电阻;OE=1,输出转换得到的数据。
(4)EOC——转换结束状态信号。
启动转换后,系统自动设置EOC=0,转换完成后,EOC=1。
该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。
6.4
答:
所谓单缓冲方式就是使0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者两个输入寄存器同时受相同的信号控制的方式。
在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求同步输出的情况,就可采用单缓冲方式。
所谓双缓冲方式,就是把DAC0832的两个锁存器都接成受控锁存方式。
6.5
答:
判断A/D转换是否结束一般可采用3种方式,即EOC信号和单片机相连可有3种方式:
1延时方式:
EOC悬空,启动转换后,延时100μs后读入转换结果。
2查询方式:
EOC接单片机端口线,查得EOC变高,读入转换结果,作为查询信号。
3中断方式:
ROC经非门接单片机的中断请求端,转换结束作为中断请求信号向单片机提出中断申请,在中断服务中读入转换结果。
其中延时方式和查询方式均占用单片机CPU,即在这段时间,CPU只能做延时或查询的工作,而采用中断方式时,CPU可先执行主程序,一旦产生中断,才去处理数据接收的工作,使得CPU利用率较前面两种要高。
6.6
答:
(1)周期为25ms的锯齿波发生器C语言源程序如下:
#include
#include
#defineDA0832XBYTE[0x7fff]
#defineucharunsignedchar
#defineuintunsignedint
uchari;
voiddelay_100us()
{TH1=0xff;//置定时器初值0xff9c,即65436,定时0.1ms
TL1=0x9c;
TR1=1;//启动定时器1
while(!
TF1);//查询计数是否溢出,即定时0.1ms时间到,TF1=1
TF1=0;//0.1ms时间到,将定时器溢出标志位TF清零
}
voidmain(void)
{TMOD=