单片机总复习.docx
《单片机总复习.docx》由会员分享,可在线阅读,更多相关《单片机总复习.docx(23页珍藏版)》请在冰豆网上搜索。
单片机总复习
一、填空题(每题1分,共20分)
1、除了单片机和电源外,单片机最小系统包括_____时钟____和___复位_______。
2、MCS-51系列单片机的应用程序一般存放在______ROM______中。
3、C51单片机采用定时器实现定时功能,可采用___中断______和__查询____两种方式。
4、一个完整的单片机应用系统由___硬件__和______软件______两大部分组成。
5、C51的中断源有5个,分别是____INT0_____、__T0_____、_INT1________、_____T1_____和串行中断。
6、DAC0832是__8_____位数模转换器,与单片机的接口可分为__直通___________、________单缓冲______两种方式。
7、欲使P1口的低4位输出1,高4位输出0,C51写为__P1=0X0F____。
8、机械式按键在按下和释放时,通常伴有一定时间的___抖动________事件;单片机经常通过___延时__方式来消除此事件对键盘的识别。
9、MCS-51单片机的T1用作计数方式,工作方式1时,则工作方式控制字为_____TMOD=0X50___。
10、8051内部有__4_个并行口,__P0__口直接作输出口时,必须外接上拉电阻。
二、选择题(每小题2分,共26分)
1.80C51单片机的(D)口的引脚,还具有外中断、串行通信等第二功能。
A、P0B、P1C、P2D、P3
2.单片机应用程序一般存放在(B)。
A、RAMB、ROMC、寄存器D、CPU
3.若单片机的振荡频率为12MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为(C)。
A、500B、1000C、64536D、60536
4.MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应(A)。
A、外部中断0B、外部中断1C、定时器0中断D、定时器1中断
5.C51源程序总是从(A)开始执行。
A.主程序B.主函数C.子函数D.中断服务函数
6.在单片机应用系统中,LED数码管显示电路通常有(C)显示方式。
A.静态B.动态C.静态和动态D.查询
7.ADC0809芯片是m路模拟输入的n位A/D转换器,m、n分别是(A)。
A.8、8B.8、9C.8、16D.1、8
8.单片机的定时器/计数器工作方式0是(C)。
A.8位计数器结构B.2个8位计数器结构
C.13位计数结构D.16位计数结构
9.串行口工作在方式1时,其波特率取决于(D)。
A.定时器1的溢出率B.PCON中的SMOD位
C.时钟频率D.PCON中的SMOD位和T1溢出率
10.某一应用系统需要扩展10个功能键,通常采用(B)方式更好。
A.独立式按键B.矩阵式键盘C.动态键盘D.静态键盘
11.共阳极LED数码管显示“H”的段码是(B)。
A.06H B.89H C.82H D.FAH
12.可以位访问的特殊功能寄存器有(B)。
A.SBUF B.TCON C.TMOD D.TH1
13.在进行串行通信时,若两机的发送与接收可以同时进行,则称为(D)。
A.半双工传送B.单工传送C.双工传送D.全双工传送
三、简答题(每题8分,共16分)
1、51系列单片机定时/计数器初始化的四个步骤。
2、A/D转换器接口程序设计的四个步骤。
四、编程操作题(共38分)
1、利用80C51单片机定时器查询法,对P1口的8个共阴极LED灯循环点亮(流水灯),时间间隔1s。
(10分)
2、设计一个2位LED数码管(7段位式)显示电路,编程显示数字“12”。
要求:
画出设计框图,采用动态扫描法。
(15分)
3、编写单片机串行发送数据程序,采用串行方式1,波特率为9600b/s,发送的内容为字母“a”,单片机晶振为11.0592Mhz。
(13分)
一、填空题
1、MCS-51单片机扩展程序存储器所用的控制信号为PSEN,扩展数据存储器所用的控制信号为( EA)和( )。
2、一个完整的微机系统由( 硬件)和( 软件)两大部分组成。
3、程序状态寄存器的作用是用来保存程序运行过程中的各种状态信息。
若累加器A中的数据为01110010B,则PSW中的P=( )。
4、若MCS-51 单片机采用12MHz 的晶振,它的机器周期(1us ),ALE 引脚输出正脉冲频率为( 2MHZ )。
5、要使MCS-51 单片机从片内的地址0000H 开始执行程序,那么EA应 (=1)
6、在片外扩展一片2764程序存储器芯片要(13 )地址线。
7、8051 的引脚RST是(IN )(IN脚还是OUT脚),当其端出现( 高 )电平时,8051进入复位状态。
8051一直维持这个值,直到RST脚收到低电平,8051才脱离复位状态,进入程序运行状态。
8、8051有两个16位可编程定时/计数器,T0和T1。
它们的定时的时间或计数的次数与( TH)、( TL )两个寄存器的初值有关。
9、半导体存储器分成两大类(ROM )和( RAM ),其中RAM具有易失性,常用于存储临时性数据。
10、8051内部有(4)个并行口,P0口直接作输出口时,必须外接上拉电阻。
11、MCS-51系列单片机字长是(8 )位,有( 40)根引脚,
12、ALE信号的作用是( 低8位)地址锁存。
13、MCS-52单片机片内共有( )字节单元的RAM。
14、微处理器包括两个主要部分即(运算器和控制器 )。
15、8051内部有( 4)个并行口,P0口直接作输出口时,必须外接上拉电阻。
二、选择题
1.8031单片机的( D )口的引脚,还具有外中断、串行通信等第二功能。
A、P0 B、P1 C、P2 D、P3
2.单片机应用程序一般存放在(B )
A、 RAM B、ROM C、寄存器 D、CPU
3.已知某数的BCD码为0111 0101 0100 0010 则其表示的十进制数值为(B )
A、 7542H B、 7542 C、 75.42H D、75.42
4.若单片机的振荡频率为12MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为( D )。
A、500 B、1000 C、216-500 D、216-1000
5.CPU主要的组成部部分为( A)
A、运算器、控制器 B、加法器、寄存器
C、运算器、寄存器 D、运算器、指令译码器
6.INTEL生产的8051系列CPU是(C )位的单片机
A、 16 B、4 C、8 D、准16
7.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到( B )引脚。
A、P3.2 B、P3.5 C、P3.4 D、P3.3
8.当外部中断请求的信号方式为脉冲方式时,要求中断请求信号的高电平状态和低电平状态都应至少维持( C )。
A、2个机器周期 B、1个机器周期
C、4个机器周期 D、10个晶振周期
9.8051单片机中既可位寻址又可字节寻址的单元是(A )
A、20H B、30H C、00H D、70H
10.MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应( A )。
A、外部中断0 B、外部中断1
C、定时器0中断 D、定时器1中断
11.MCS—51单片机的复位信号是( A )有效。
A、高电平 B、低电平 C、 脉冲 D、下降沿
12.若MCS-51单片机使用晶振频率为6MHz时,其复位持续时间应该超过( B )
A、2μs B、4μs C、8μs D、1ms
13.MCS-51单片机定时器工作方式0是指的(C )工作方式。
A、8位 B、8位自动重装 C、13位 D、16位
14.在进行串行通信时,若两机的发送与接收可以同时进行,则称为(D )
A、半双工传送 B、单工传送 C、双工传送 D、全双工传送
三、判断题
1. 8051单片机的P0口既可以做数据口线又可以做为地址口线 。
(√ )
2. CPU和外设之间的数据传送方式主要有查询方式和中断方式,两者相比后者的效率更高。
( √)
3. 8051内部有4K的程序存储器。
(√ )
4. CS-51单片机共有两个时钟XTAL1 和XTAL2。
( ×)
5. 五个中断源中优先级是高的是外部中断0,优先级是低的是串行口中断。
( √)
6. 工作寄存器工作在0区,则R2 所对应的内部数据存储器的地址是03H 。
( )
7. 8051单片机的P2口只能用作通用I/O 口。
( ×)
8. 程序存储器和数据存储器的作用不同,程序存储器一般用存放数据表格和程序,而数据存储器一般用来存放数据。
(√ )
9. 要进行多机通信,MCS-51串行接口的工作方式应为方式1。
( ×)
10.MCS-51外扩I/O口与外RAM是统一编址的。
( √)
11. 中断服务程序的最后一条指令是RET。
( × )
12. 定时器与计数器的工作原理均是对输入脉冲进行计数。
( ×)
13. ADC0809是8位逐次逼近式模/数转换接口。
( √)
四、简答与分析题
1. MCS-51系列单片机的内部资源有哪些?
2. MCS-51内部有几个通用定时器?
有几种工作方式?
4. 简述MCS-51单片机内部主要有那几个功能单元组成?
单片机内部有几种存储器,它们的作用分别是什么?
5. 使用C语言for循环编写一个单片机延时函数,要求延时1S左右。
1、在一片集成电路芯片上集成CPU、储存器、定时/计数器,IO口从而构成了单芯片微型计算机,即单片机。
2、四个8位的并行口,即P0~P3。
它们均为双向口,既可作为输入,又可作为输出。
每个口各有8条I/O线。
有一个全双工的串行口(利用P3口的两个引脚P3.0和P3.1);有2个16位的定时/计数器;
3、内部有21个特殊功能寄存器单元,它们同内部RAM的128个字节统一编址,地址范围是80H~FFH。
这些SFR只用到了80H~FFH中的21个字节单元,且这些单元是离散分布的。
4、一个机器周期包含12个晶荡周期或6个时钟周期
5、复位目的是使单片机或系统中的其它部件处于某种确定的初始状态。
6、当系统不进行片外的ROM扩展,也不进行片外RAM扩展时,P0用作通用I/O口。
另外,与门输出的“0”使输出驱动器的上拉场效应管T1处于截止状态。
因此,输出驱动级工作在需外接上拉电阻的漏极开路方式。
7、P1口是通用的准双向I/O口。
输出高电平时,能向外提供拉电流负载,不必再接上拉电阻。
当口用作输入时,须向口锁存器写入1。
8、引起CPU中断的根源,称为中断源。
中断源向CPU提出的中断请求。
CPU暂时中断原来的事务A,转去处理事件B。
对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。
实现上述中断功能的部件称为中断系统
9、80C51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套。
10、CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
11、80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。
每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的。
12、同一优先级中的中断申请不止一个时,则有中断优先权排队问题。
同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列是INT0,T0,INT1,T1,串行口。
13定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
14、工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
15、方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。
TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
16、方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。
17、方式2为自动重装初值的8位计数方式。
18、定时器初始化程序应完成如下工作:
1)对TMOD赋值,以确定T0和T1的工作方式。
2)计算初值,并将其写入TH0、TL0或TH1、TL1。
3)中断方式时,则对IE赋值,开放中断。
4)使TR0或TR1置位,启动定时/计数器定时或计数。
19、比特率是每秒钟传输二进制代码的位数,单位是:
位/秒(bps)。
波特率表示每秒钟调制信号变化的次数,单位是:
波特(Baud)。
20、RS-232C接口规定使用25针连接器。
21、MC51单片机有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H;接收器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。
22、SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:
23、PCON中只有一位SMOD与串行口工作有关,SMOD(PCON.7)波特率倍增位。
在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。
复位时,SMOD=0。
24、方式0时,串行口为同步移位寄存器的输入输出方式。
主要用于扩展并行输入或输出口。
波特率固定为fosc/12。
25、单片机应用系统,通常由多块LED显示器构成一个N位的LED显示器;N位LED显示器有N根位选线和8×N根段选线;位选线用于选中一个LED显示器,段选线控制显示的字形。
26、静态显示是指LED显示器显示某一字符时,相应的发光二极管恒定导通或恒定截止。
27、动态显示是一位一位地轮流循环点亮各位显示器。
每位延时点亮的时间为1~5ms。
利用人眼的视觉暂留效应,就可以给人同时显示的感觉。
28、行列式键盘又称矩阵式键盘。
它是将I/O线的一部分作为行线,另一部分作为列线,按键设置在行线和列线的交叉处。
29、判别是否有键按下,识别按键位置(行扫描法),键值的计算
30、字符型char。
signedchar:
用于定义带符号字节数据,其字节的最高位为符号位,“0”表示正数,“1”表示负数,补码表示,所能表示的数值范围是-128~+127;unsignedchar:
用于定义无符号字节数据或字符,可以存放一个字节的无符号数,也可以存放西文字符,取值范围为0~255。
31、头文件reg51.h:
包含了所有特殊功能寄存器和对其相应位的定义,通过在程序开头用#includereg51.h语句包含头文件可以很容易地进行新的扩展。
32、定义变量类型时,还必须定义它的存储类型,变量的存储类型是用于指明变量所处的单片机的存储器区域情况。
C51编译器能识别的存储类型有以下几种,
Data
8
00~FFH
直接寻址的片内RAM低128B,访问速度快
Bdata
字节访问:
8
位访问:
1
20~2FH
00~7FH
片内RAM的20H~2FH单元,允许字节和位混合访问
Idata
8
00~FFH
间接寻址访问的片内RAM,允许访问全部片内RAM
Pdata
8
00~FFH
用Ri间接访问的片外RAM的低256B
Xdata
16
0000~
FFFFH
用DPTR间接访问的64k片外RAM
Code
16
0000~
FFFFH
程序存储器ROM64k空间
带存储类型的变量的定义的一般格式为:
数据类型存储类型变量名例如:
unsignedcharcodetable[]={0};
访问内部数据存储器(idata)比访问外部数据存储器(xdata)相对要快一些。
因此,可将经常使用的变量置于内部数据存储器中,而将较大及很少使用的数据变量置于外部数据存储器中。
33、中断服务程序定义为函数,函数的完整定义如下。
返回值函数名([参数])interruptm[usingn]
0——外部中断0
1——定时/计数器T0
2——外部中断1
3——定时/计数器T1
4——串行口中断
5——定时/计数器T2
usingn用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。
34、设单片机的晶体振荡频率fosc=6MHz,要求在P1.7脚上输出周期为4ms的方波,编写相应的控制程序。
分析:
周期为4ms的方波要求定时时间隔2ms,每次时间到P1.7取反。
机器周期=12/fosc=2μs
需计数次数=2000/(12/fosc)=2000/2=1000
由于计数器是加1计数,为得到1000个计数之后的定时器溢出,必须给定时器置初值为-1000(即1000的补数)。
方法一:
采用查询式控制方式,选用定时器0,工作于方式1,编程如下:
方法二:
采用中断控制方式,仍选用用定时器0,工作于方式1。
程序如下:
35、ADC0809是一个8位8通道的逐次逼近式AD转换器。
地址码
选择的通道
CBA
000
001
010
011
100
101
110
111
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
转换步骤
1)ALE信号上升沿有效,锁存地址并选中相应通道。
2)ST信号有效,开始转换。
A/D转换期间ST为低电平。
3)EOC信号输出高电平,表示转换结束。
4)OE信号有效,允许输出转换结果。
36、DAC0832是8位DAC的接口,通常有三种连接方式:
直接方式、单缓冲方式和双缓冲方式。
ILE接+5v、、、接地,DAC0832就可以在直接方式下工作。
直接方式下工作的DAC0832常用于不带微型计算机的控制系统。
单缓冲方式:
指DAC0832内部的两个数据缓冲器一个处于直通方式,另一个受单片机控制。
37、D/A转换(波形发生器)
硬件设计:
P0口作为数据输出
软件设计:
分别产生方波,阶梯波,锯齿波,三角波,梯形波
2、设计一个二进制计数功能的程序。
即按一次按键D1亮表示00000001。
再按一次D2亮表示00000010即2,再按一次D2和D1亮表示00000011即3。
以此类推。
#include
unsignedcharcount;
voiddelay10ms(void)
{
unsignedchari,j;
for(i=20;i>0;__i--___)
for(j=248;j>0;j--);
}
voidmain(void)
{
while
(1)
{
if(__P0_0==0_)//检测按键
{
delay10ms();
if(P0_0==0)
{
________count++_________;
___p1____=~count;
while(_P0_0==0_);//等待松开按键
}
}
}
}
1、利用外中断方式,将一个按键接到外中断0的口线上,按下后将引起8051外中断,中断服务程序中CPU将点亮LED一会儿,然后关闭,等待下一次的中断。
请编写程序实现。
#include______“reg51.h”______
sbit___P1_3____=P1^3;
voiddelay(void)
{
unsignedchari,j,k;
for(i=0;i<200;i++)
for(j=0;j<200;j++)
for(k=0;k<10;k++);
}
ext0_init()
{
EX0=1;
IT0=1;
__EA__=1;
}
main()
{
ext0_init();
_____while
(1)__________;
}
ext0_int_srv()interrupt0
{
__P1_3=0___;
delay();
P1_3=1;
delay();
}
1、利用定时器T1方式1通过中断在LED上输出10HZ方波,系统晶体频率12MHz。
#include__”reg51.h”________
sbit__P1_3_=P1^3;
main()
{TMOD=__0X10___;
TH0=___0X3C_______;
ET0=1;
TL0=B0;
EA=1;
TR0=1;
while
(1);
}
voidTMR1(void)interrupt3
{TH0=0x3c;
TL0=0XB0
LED=__~LED_;
}
2、编写程序控制发光二极管的点亮顺序,使8个发光二极管从D1开始,点亮约0.5秒后熄灭,接着D2点亮0.5秒,这样从右向左运行依次循环至D8,同样的方式从左向右运行,即D8到D1依次点亮。
如此循环往复,形成流水灯。
流水灯的运行与否由开关来控制,即开关按下后,流水灯开始运行。
#include
sbitSWITCH=__________;
voidmain(void)
{
inti,j=0;
unsignedchara=0xfe,b,c;
P1=0xff;//P1口初始化
SWITCH=1;
while
(1)
{
if(___________)//判断按键是否按下
for(i=0;i<=1000;i++);//按下延时
if(!
SWITCH)break;
}
while
(1)//流水灯运行
{
P1=a;
if(!
j)//向左运行
{
if(a==________)
j=1;//转换方向
b=________;
c=a>>7;
a=b|c;
}
else//向右运行