单片机复习题目.docx
《单片机复习题目.docx》由会员分享,可在线阅读,更多相关《单片机复习题目.docx(11页珍藏版)》请在冰豆网上搜索。
单片机复习题目
单片机复习题目
1、什么叫单片机?
什么是单片机最小系统?
单片机就是单片微型计算机的简称。
它是将计算机的微处理器,存储器,定时计数器,中断,串行口和I/O接口等电路集成在一块电路芯片上,形成了芯片级的计算机。
单片机的最小系统就是让单片机能正常工作并发挥其功能时所必须的最少的组成部分,最小系统一般应该包括:
单片机、时钟电路(晶振电路)、复位电路、输入/ 输出设备等。
2、单片机的主流产品
Intel的MCS-51系列:
8051
ATMEL的系列:
AT89C51,AT89S51
8051与AT89S51的主要区别:
AT89S51的程序存储器采用4KBFlashROM,支持在线编程。
8051的程序存储器采用4KBEPROM,不支持在线编程。
3、引脚的功能
电源引脚
Vcc(40脚):
电源端,为5V
Vss(20脚):
接地端,GND
时钟电路引脚(外接晶振引脚)
XTAL1:
外接晶振的一个引脚,采用外部时钟信号,此脚接地
XTAL2:
外接晶振的一个引脚,采用外部时钟信号,此脚接入
控制信号引脚
ALE(30脚):
地址锁存信号端,用于控制把P0口输出的低8位地址送入锁存器锁存起来,实现低位地址和数据的输送
PSEN(29脚):
外部程序存储器的读选通信号端,实现外部ROM单元的读操作,每个机器周期两次有效
EA(31脚):
访问程序存储器控制信号,EA=1,访问内部程序存储器,当PC值超过范围,访问外部程序存储器,EA=0,访问外部程序存储器。
RST(9脚):
复位信号输入端,高电平有效,完成单片机复位
输入输出端口
P0:
双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载
P1:
8位准双向I/O口,可驱动4个LS型TTL负载
P2:
8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载
P3:
8位准双向I/O口,双功能复用口,可驱动4个LS型TTL负载
内部振荡和外部振荡的区别
内部振荡:
引脚XTAL1和XTAL2都直接接入单片机内,成为放大器的输入和输出端
外部振荡:
引脚XTAL1端直接引入单片机内,XTAL2端悬空不用
4、时钟电路
内部振荡电路的组成:
两个电容(30PF)和一个晶振(1.2MHz~12MHz)。
时钟周期、机器周期的计算。
机器周期=1微秒
机器周期TM=12个时钟周期=12/fosc(晶振频率)
时钟周期=TM/12
若要求定时器T0工作于方式1,定时时间为1ms,当晶振为6MHz时,求送入TH0和TL0的计数初值各为多少?
应怎样送入TH0和TL0?
由于晶振为6MHz,所以机器周期Tcy为2µS,因此:
N=t/Tcy=1×10^-3/2×10^-6=500
X=2^吧16-N=65536-500=65036=FE0CH
用传送指令分别将FEH送入TH0中,0CH送入TL0中即可。
也可以利用以下2条指令完成:
MOVTL0,#(65536-500)MOD256;余数为计数初值的低字节
MOVTH0,#(65536-500)/256;商为计数初值的高字节
5、复位:
使单片机或系统中的某些部件处于某种确定的初始状态
复位原理:
当RST引脚出现两个机器周期以上的高电平时,单片机复位
复位方式:
自动复位,手动复位
6存储器结构:
程序存储器(ROM只读存储器),数据存储器(RAM随机存储器)
数据存储器RAM的分区
数据存储器(256字节):
00H—7FH,RAM的区;80H—FFH,特殊寄存器
工作寄存器区:
00H—1FH,分为4个组,每个组由R7-R0组成,共占32个单元
位寻址区:
20H—2FH ,每个单元8位,共128位
用户区:
30H—7FH
7、特殊功能寄存器(21个,26个)
Acc:
累加器
PSW:
程序状态字
SP:
堆栈指针
DPTR:
数据指针
2、单片机键盘及显示器接口技术
1、键盘
(1)功能:
输入设备
(2)分类:
编码键盘和非编码键盘。
编码键盘是由硬件完成键盘按键的识别。
非编码键盘是由软件完成键盘按键的识别。
(3)非编码键盘的两种基本结构:
独立式和矩阵式
(4)键盘的去抖动方法:
硬件抖动,软件抖动
(5)按键的识别方式:
中断方式、查询方式
2、显示器:
LED数码管显示器
(1)两种类型:
共阳极和共阴极
(2)段选码
共阳极数组0~9:
display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90} 共阳极数组A~F:
display[]={0x88,0x83,0xA6,0xC1,0x86,0x8E}
共阴极数组0~9:
display[]={0x3F,0x06,0x5B,0x4F,0x6E,0x6D,0x7D,0x07,0x7F,0x6F}, 共阴极数组A~F:
display[]={0x77,0x7C,0x59,0x3E,0x79,0x71}
(3)两种显示方式(静态显示和动态显示)及特点
1.静态显示LED接口
(1)连接方法各数码管的公共极固定接有效电平,各数码管的字形控制端分别由各自的控制信号控制。
(2)优点LED显示亮度温度,容易调节,编程容易,工作时占用CPU时间短。
(3)缺点若直接用单片机输出各位数码管的字形信号时,占用单片机的I/O口线较多。
一般仅适用于显示位数较少的应用场合。
2.动态显示LED接口
(1)连接方法各位数码管的字形控制端对应地并在一起,由一组I/O端口进行控制,各位的公共极相互独立,分别由不同的I/O控制信号控制。
(2)优点节省I/O端口线
(3)缺点显示亮度不够稳定,影响因素较多;编程较复杂,占用CPU时间较多。
三、单片机中断技术与定时计数器
中断系统的初始化编程
中断服务程序(入口地址、中断号)
应用举例
可编程器件在使用前需要进行初始化:
①确定TMOD控制字:
编程时将控制字送TMOD;
②计算计数器的计数初值:
编程时将计数初值送THi、TLi;
③开中断(如果使用中断方式):
编程实置位EA、ETi
④TRi位置位控制定时器的启动和停止。
【例6-9】系统时钟为12MHz,编程实现从P1.0引脚上输出一个周期为2ms的方波
基本思想:
要在P1.0上产生周期为2ms的方波,定时器应产生1ms的周期性的定时,定时对P1.0求反。
选择定时器T0,方式1定时,采用中断方式,GATE不起作用。
计算T0的初值计算:
TM=12时钟周期=12/fosc=1usN=t/T=1ms/1us=1000
T1T0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
0
0
0
0
0
0
0
1
TMOD=00000001==Ox01
TH0=(65536 −1000) /256=0xfc,商为计数初值的高字节
TL0=(65536 −1000)%256=0x18。
余数为计数初值的低字节
中断方式
#include
SbitP1.0=P1^0
voidmain()
{TMOD=Ox01置T0为工作方式1
TH0=(65536-1000)/256//设置定时器初值
TL0=(65536-1000)%256
P1--0=0选择P1.0引脚
EA=1总的允许中断
ETO=1串行口允许中断
TRO=1启动计数
While
(1)
}
VoidTOint(void)interrupt1
{
TH0=(65536-5000)/256
TL0=(65536-5000)%256
P1--0=!
P1--0求反
查询方式
#include
SbitP1.0=p1^0
{TMOD=ox01
TR0=1
While
(1)
{TH0=(65536-1000)/256
TL0=(65536-1000)%256
While(!
TF0)
P1.0=!
P1.0
TF0=0
}
}
例:
单片机应用系统中,系统频率为12MHz,拟用T0方式1来实现5ms的定时,T1方式2来实现50次的计数,编写定时计数器的初始化程序。
机器周期为:
1usN=5ms/1us=5000N=t/T
T1控制T0控制
GATE
C/T
M1
M0
GATE
C/T
M1
M0
0
1计数
1
0
0
0定时
0
1
方式2方式1
TMOD=01100001B=0x61
TH0=(65536-5000)/256商为计数初值的高字节
TL0=(65536-5000)%256余数为计数初值的低字节
TH1=256-50TH1=28--N
TL1=256-50TH1=28--N
例题1:
设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500μs的方波脉冲,并由P1.0输出。
试以中断方式实现
GATE
C/T
M1
M0
GATE
C/T
M1
M0
0
0
0
1
X
X
X
X
②计算计数器的计数初值;
要产生500μs的方波脉冲,只需在P1.0端以250μs为间隔,交替输出高低电平即可实现。
为此,定时间应为250μs。
使用6MHz晶振,则一个机器周期为2μs,设待求计数初值为X,则:
(2^16–X)×2×10^-6=250×10^-6
即216–X=125
X=216-125=10000H-7DH
=0FF83HX=216-N=65536-N计数范围:
1~65536计数初值要分成2个字节分别送入TH0、TL0
所以,初值为:
TH1=0FFH,
TL1=83H
③采用中断方式:
编程时打开全局和局部中断
④由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。
TR1=1,启动;
TR1=0,停止。
【例5-7】编写程序,实现用定时/计数器T0定时,使P1.7引脚输出周期为2s的方波。
设系统的晶振频率为12MHz。
采用定时20ms,然后再计数50次的方法实现
确定方式字:
T0在定时的方式1时:
M1M0=01,GATE=0,C/T=0
方式控制字为01H
求计数初值X:
Tcy为1µS
N=20ms/1µS=20000
X=65536-20000=4E20H
应将4E送TH0,20H送TL0
2.AT89S51采用6MHz的晶振,定时2ms,如用定时器方式1时的初值(16进制数)应为多少?
(写出计算过程)(6分)
答:
机器周期6×106=2×10-6s=2uS
又方式1为16进制定时器.故
(216—X)×2×10-6=2×10-3=>216-X=1000
=>X=65536-1000=64536即初值=FC18H
2、定时计数器
(1)定时计数器的组成
16位的定时/计数器分别由两个8位专用寄存器组成
(2)两种模式:
定时和计数
(3)4种工作方式:
方式0,方式1,方式2,方式,3
(4)定时、计数的编程(查询方式、中断方式)
(5)定时计数器初始化编程定时器初始化
四、单片机串行通信技术
1、图中各组成部件的功能
SBUF:
串行接收/发送数据缓冲器
T1:
定时器
TI:
发送中断标志
RI:
接收中断标志
TXD:
产生同步移位脉冲
RXD:
接收发送数据
2、相关概念的解释
并行通信:
数据的各位同时发送或接收,特点是传送速度快,效率