1、第 1 章、绪论单片机定义:把 CPU、寄存器、 RAM/ROM、I/O 接口等电路集成在一块集成电路芯片上,构成一个完整的微型计算机。单片机特点:体积小、功耗低、性价比高;数据大都在片内传送,抗干扰能力强,可靠性高;结构灵活,应用广泛。单片机发展趋势:数据位长 1481632 位;CPU 处理能力和速度不断提高;增大片内RAM 和 ROM 容量 ;增加片内 I/O 口和功能模块种类和数量;扩大对外部 RAM/IO 口和程序存储器寻址能力;缩小体积,降低功耗。单片机应用:控制应用:应用范围广泛,从实时性角度可分为离线应用和在线应用。软硬件结合:软硬件统筹考虑,不仅要会编程,还要有硬件的理论和实
2、践知识。应用现场环境恶劣:电磁干扰、电源波动、冲击震动、高低温等环境因素的影响。要考虑芯片等级选择、接地技术、屏蔽技术、隔离技术、滤波技术、抑制反电势干扰技术等。应用空间大:工业自动化、仪器仪表、家用电器、信息和通信产品、军事装备、物联网等领域。第三章:MCS-51 单片机结构与原理3.1 MCS-51 单片机的物理结构及逻辑结构51 单片机的引脚定义:P0、P1、P2、P3(输入输出口) ;RST (复位)/ VPD(后备电源引入端) ;EA (读内/外 ROM 控制)/Vpp(编程电压) ;ALE (地址低 8 位锁存)/ PROG(编程脉冲) ;PSEN (外部 ROM 读选通信号) ;
3、XTAL1 、XTAL2 (外接晶振端)Vcc ( +5v 电源) ;Vss (地)逻辑结构-51 单片机的系统结构图(教材 P26)51 单片机基本组成:一个 8 位微处理器 CPU;数据存储器 RAM 和特殊功能寄存器 SFR;内部程序存储器 ROM;两个定时/ 计数器,用以对外部事件进行计数,也可用作定时器;四个 8 位可编程的 I/O(输入/输出)并行端口;一个串行端口,用于数据的串行通信;中断控制系统;内部时钟电路。MCS-51 单片机的 CPU:运算器:由 8 位算术逻辑运算单元 ALU(Arithmetic Logic Unit) 、8 位累加器ACC(Accumulator)
4、、8 位寄存器 B、程序状态字寄存器 PSW(Program Status Word) 、8 位暂存寄存器 TMP1 和 TMP2 等组成。控制器:主要由程序计数器 PC、指令寄存器 IR、指令译码器 ID、堆栈指针 SP、数据指针DPTR、时钟发生器及定时控制逻辑等组成。MCS-51 单片机的输入/输出(I/O)端口结构:MCS-51 单片机有 4 个双向并行的 8 位 I/O口 P0 P3,P0 口为三态双向口,可驱动 8 个 TTL 电路,P1、P2、P3 口为准双向口(作为输入时,口线被拉成高电平,故称为准双向口) ,其负载能力为 4 个 TTL 电路。端口逻辑结构的总结:P0、P2
5、口具有两个功能: I/O 口和总线扩展口;P1 口只作 I/O 口使用;P3 口有两个功能:I/O 口和第二功能;P0 口需要外接上拉电阻;作为准双向口,P1、P2 、P3 口输入时,应先使场效应管截止,就要求对锁存器进行预置1;4 个端口除可按字节寻址外,还可按位寻址。3.2 MCS-51 单片机的片外总线结构三总线结构:地址总线(AB):宽度为 16 位,由 P0 口经地址锁存器提供低 8 位地址(A0-A7 ) ,P2 口直接提供高 8 位地址(A8A15) ,是单向的。数据总线(DB):宽度为 8 位,由 P0 口提供,是双向的;控制总线(CB):接收各种部件状态,发出控制命令。3.3
6、 MCS-51 单片机的存储器配置1、存储器空间分配物理上有四个存储空间: 程序存储器 片内、片外 ;数据存储器 片内、片外逻辑上有三个存储空间: 片内外统一的 64KB 程序存储地址空间;256B 内部数据存储空间;64KB 外部数据存储空间使用上有五个存储空间:直接寻址的内部数据存储空间(00H-0FFH) ;间接寻址的内部数据存储空间(00H-0FFH) ;外部数据存储空间(0000H-0FFFFH) ;程序存储空间(0000H-0FFFFH) ;位存储空间(字节地址 20H-2FH,位地址 00H-0FFH) ;特点:数据、程序存储器空间分开;物理存储器有片内外之分;有只能读不能写的存
7、储器;有既能读又能写的存储器;有读写更快的存储器。2、片内数据存储器片内数据存储器低 128 单元,00H7FH。(1 )寄存器区:32 个 8 位寄存器,00H1FH 分为 4 组。每组 8 个寄存器,分别为 R0R7,4 个组的选择由状态字中的 RS1、RS0 的值确定。(2 ) 位存储区:20H 2FH,共 16 个字节单元,128 个位单元。(3 ) 用户 RAM 区:30H 7FH,通常堆栈放在此区。片内数据存储器高 128 单元,80H0FFH。 (1 )特殊功能寄存器 SFR:22 个,21 个可寻址,PC 不可寻址。A、程序计数器 PC(16 位):用于存放将要执行的指令地址(
8、程序存储器地址) ,并具有自动加 1 的功能。B、累加器 A( 8 位):存放运算中的操作数据及运算后的结果。 C、 B 寄存器(8 位):乘除法中的第二个操作数和运算后的结果。D、程序状态字 PSW(8 位):寄存程序运行中的状态信息。E、栈指针寄存器 SP(8 位):指向栈顶,PUSH 时先加 1,后存数。F、其它:数据指针寄存器 DPTR(16 位) 、端口寄存器 P0/P1/P2/P3(8 位) 、串行数据缓冲器 SBUF(8 位) 、定时/计数器 T0/T1(16 位) 、控制寄存器IP/IE/TMOD/TCON/SCON/PCON(8 位) 。(2 )特殊功能寄存器的字节寻址:只能
9、使用直接寻址方式,在指令中既可以使用寄存器符号表示,也可以使用寄存器地址表示。(3 )特殊功能寄存器的位寻址:21 个 SFR 中的 11 个可以位寻址。(4 ) 80H0FFH 的间接寻址可作用户的 RAM 区使用。DATA:直接寻址的内部数据存储空间(00-0FFH) (片内 RAM)IDATA:间接寻址的内部数据存储空间(00H-0FFH) (片内 RAM)注意:DATA 的 00H-7FH 区间与 IDATA 的 00H-7FH 区间重叠,即这个区域既可使用直接寻址,也可使用间接寻址。若选择了 8051AH 则 80H 以上的存储器不能用。若选择了 8052AH 则 80H 以上的存储
10、器可用。3、片外数据存储器外部数据存储器又称外部 RAM,当片内 RAM 不能满足数量上的要求时,可通过总线端口和其他 I/O 口扩展外部数据 RAM,其最大容量可达 64K 字节。在片外数据存储器中,数据区和扩展的 I/O 口是统一编址的,使用的指令也完全相同,因此,在应用系统设计时,必须合理地进行外部 RAM 和 I/O 端口的地址分配,并保证译码的唯一性。XDATA:外部数据存储空间(0000H-0FFFFH) 4、程序存储器程序存储器的包括片内和片外程序存储器两个部分。其主要用来存放编好的用户程序和表格常数,它以 16 位的程序计数器 PC 作为地址指针,故寻址空间为 64KB。805
11、1 片内有 4kB(0000H 0FFFH) ,其中特殊保留单元:0000H0002H 无条件转移指令(系统复位后 PC=0000H)0003H000AH INT0 中断地址区000BH0012H T0 中断地址区0013H001AH INT1 中断地址区001BH0022H T1 中断地址区0023H002AH 串行中断地址区CODE:程序地址空间(0000H-0FFFFH)3.4 CPU 的时序及辅助电路1.单片机的时钟电路 两种形式:内部振荡方式:MCS-51 片内有一个构成振荡器的高增益反相放大器,XTAL1 和 XTAL2 分别是放大器的输入端和输出端。放大器与外接晶振连接构成了内部
12、自激振荡器并产生振荡时钟脉冲。外部振荡方式:把外部已有的时钟信号引入单片机内。 内部: 外部:2、 振荡周期、时钟周期、机器周期和指令周期振荡周期:为单片机提供时钟信号的振荡源的周期。时钟周期:是振荡源信号经二分频后形成的时钟脉冲信号。 机器周期:通常将完成一个基本操作所需的时间称为机器周期。指令周期:是指 CPU 执行一条指令所需要的时间。一个指令周期通常含有 14 个机器周期。 若晶振为 12MHz 时,则:振荡周期1/12MHz 1/12s0.0833 s时钟周期1/6s0.167 s机器周期1s指令周期14s4、复位电路及复位状态复位电路:单片机复位电路包括片内、片外两部分。外部复位电
13、路就是为内部复位电路提供两个机器周期以上的高电平而设计的。MCS-51 单片机通常采用上电自动复位和按键手动复位两种方式。复位后,P0 P3 口输出高电平,初值 07H 写入栈指针 SP,清“0”其余的特殊功能寄存器和程序计数器 PC。只要 RESET 保持高电平,单片机循环复位,RESET 由高变低后,单片机从 0 地址开始执行程序。单片机复位不影响内部 RAM 的状态,包括工作寄存器 R0R7。第四章:单片机编程语言基础按照语言的结构及其功能可以分为三种: 机器语言:机器语言是用二进制代码 0 和 1 表示指令和数据的、最原始的程序设计语言。 汇编语言:汇编语言是用助记符代替机器码表示指令
14、和数据的、便于记忆和使用的、面向机器的专用语言。 高级语言:高级语言是接近于人的自然语言,面向应用、独立于机器的通用语言。 第五章 定时器与计数器5.1 定时 /计数器的结构及工作方式1、定时/计数器结构 结构:由计数器、计数信号源和计数控制三部分组成。图中,TH 和 TL 是计数器,数字信号的下降沿使其加 1;两种计数信号源:系统时钟和引脚T 输入的外部信号;其余为计数控制与状态。2、定时/计数器工作方式有 4 种工作方式,方式 0、1、2 ,T0、T1 的工作原理基本相同,方式 3,两个定时器的工作原理不同。方式 0:13 位计数器(结构图和上图一样,有 13 位计数器即 TL+TH 位数
15、)方式 1:16 位计数器方式 2:可自动赋初值的 8 位计数器方式 3:两个独立的 8 位计数器5.2 定时 /计数器的特殊功能寄存器1、方式控制寄存器TMOD(89H)2、定时器控制寄存器TCON(88H)5.3 定时 /计数器的编程实例1、定时/计数器常数的计算(1 )计数器初值的计算把计数器计满为零所需要的计数值设定为 C,计数初值设定为 TC,由此可得到公式:TC=M-C式中,M 为计数器模值,该值和计数器工作方式有关。在方式 0 时 M 为 213;在方式1 时 M 为 216;在方式 2 和方式 3 时 M 为 28。(2 )定时器初值的计算在定时器模式下,计数器由单片机主时钟脉
16、冲经 12 分频后计数。因此,定时器定时时间 T 的公式:T=(M-TC )T 计数上式也可写成:TC=M-T/ T 计数式中,M 为模值,和定时器的工作方式有关; T 计数 是单片机振荡周期 TCLK 的 12 倍;TC 为定时器的定时初值。 2、定时/计数器应用实例【应用实例 1】设单片机的晶振频率为 12MHz,利用 T0 方式 0 产生 1ms 的定时,在 P1.0引脚上输出周期为 2ms 的方波。方式字:TMOD=00H定时初值: TC=M-T/ T 计数 T = 1*10-3 ,T 计数 = 12/(12x106) = 1*10-6 /周期TC = 213 1*10-3/1*10-
17、6 = 213 1000 = 7192 = 1C18HTH0 = 1CH , TL0 =18H程序设计:【应用实例 2】设单片机的晶振频率为 12MHz,利用 T0 方式 2 进行计数,T0 引脚(P3.4)的 3 个下降沿使得 P1.0 引脚上电平翻转一次。方式字:TMOD=06H计数初值: TC=M-CTC = 28 3 = 253 = 0FDHTH0 = TL0 =0FDH程序设计第六章:中断系统结构6.1 中断的概念1. 异常和中断异常(exception) :打破 CPU 正常的执行顺序,并强迫 CPU 执行一个特殊指令段的事件。异常分为两类:(1 )同步异常(synchronous
18、 exceptions):由内部事件( CPU 指令运行产生的事件)引起的异常。例如:被零除运算产生的异常;断点产生的异常。(2 )异步异常(asynchronous exceptions):由外部事件(与 CPU 指令执行无关的事件)引起的异常。一般外部事件来源于外部硬件装置。例如:复位按键产生的系统复位异常;通信设备引发的接收数据异常。51 单片机中的中断是指由 CPU 外部硬件装置产生的事件引起的异步异常。可以认为中断是硬件与系统中运行的应用程序之间进行通信的一种方法。异常有三方面的用途:1、内部错误处理和特殊条件的管理;如被零除、溢出、断点处理、特权指令等。2、硬件并发处理:多个与 C
19、PU 并行的外部设备同时申请 CPU 干预。3、服务请求管理:各个外部装置向 CPU 请求服务,如定时间隔到、收到数据包等。6.2 中断的系统结构1. 中断的逻辑结构外部中断源:NT0(P3.2 ) INT1(P3.3 ) 低电平或下降沿有效内部中断源T0:定时/计数器 0 中断,由 T0 回零溢出引起。T1:定时/计数器 1 中断,由 T1 回零溢出引起。TI/RI:串行 I/O 中断,完成一帧字符发送/接收引起。中断服务程序的入口地址:0000H0002H 无条件转移指令(系统复位后 PC=0000H)0003H000AH INT0 中断地址区000BH0012H T0 中断地址区0013
20、H001AH INT1 中断地址区001BH0022H T1 中断地址区0023H002AH 串行中断地址区2. 中断的响应过程在每个机器周期的 S5P2 期间,顺序采样每个中断源,CPU 在下一个机器周期 S6 期间按优先级顺序查询中断标志,如查询到某个中断标志为 1,将在再下一个机器周期 S1 期间按优先级进行中断处理。中断得到响应后自动清除中断标志,由硬件将程序计数器 PC 内容压入堆栈保护,然后将对应的中断矢量装入程序计数器 PC,使程序转向中断矢量地址单元中去执行相应的中断服务程序。中断申请将被封锁情况:(1 ) CPU 正在执行一个同级或高一级的中断服务程序。(2 )当前正在执行的
21、那条指令还未执行完。(3 )当前正在执行的指令是 RETI 或对 IE,IP 寄存器进行读/写指令,执行这些指令后至少再执行一条指令才会响应中断。6.3 中断系统的特殊功能寄存器1、中断允许寄存器 IE(A8H)2、中断条件和状态寄存器3、中断优先寄存器 IP(B8H)中断优先顺序不同级:先高后低;同级:按如下顺序由高到低,INT0、T0、INT1、T1 、TI/RI。6.4 中断系统的应用实例【应用实例】利用定时器和中断技术,设计以秒、分、时为单位的时钟程序。 (晶振12MHz)1、任务分析、确定算法、分配存储单元(1 )确定最小计时单位:定时器计时为 50ms X 20 = 1s(2 )
22、T0 工作方式 1,计算计数初值:TC=M-T/ T 计数=216-50ms/1s=3CB0H(3 )中断服务程序:累计 20 次得到秒,实现秒到分和分到时的计数。(4 )时、分、秒各占两位,分别放在 30H、31H、32H。第七章 单片机人机交互7.2 数码管接口技术数码管 (又称 LED,即发光二极管显示器, light emitting diode),是单片机系统中最常用的显示器件。通常数码管是由 8 个发光二级管组合而成,当发光二级管的阳极为高电平,阴极为低电平时,发光二级管可以导通发光。控制 LED 中各二极管亮灭,可以显示不同的字形数码管分为共阴极和共阳极两种结构形式,如图所示。共
23、阴极指所有发光二级管的阳极相互独立,而把所有的阴极连接起来形成公共端,公共端通常需要接地。共阳极指所有发光二极管的阴极相互独立,而把所有的阳极连接起来形成公共端,公共端通常需要接电源。为了能够在数码管上显示某一个字符,需要在它的段选控制端输入不同的电平组合,该电平组合为 8 位数据,通常称为字型码或者段选码,格式如表 7-1 所示。字符的字型码都不同,即使是同一个字符,对于共阴极结构和共阳极结构的 LED,字型码也不同数码管的显示方式有静态显示方式和动态显示方式两种。(1 )静态显示硬件连线上,每个数码管的公共端都直接接地(共阴极数码管)或接电源(共阳极数码管),各个段选端分别与一个 8 位的
24、并行 I/O 端口连接。显示字符时,将各个字符的字型码分别送入相应的 I/O 端口,使各数码管同时显示不同的字符。参见教材 P87,图 7-6。(2 )动态显示只利用一个用于段选的单片机 8 位 I/O 端口循环点亮各数码管,当间隔时间较短时,由于人眼的视觉暂留现象,效果与各数码管静态显示相同。在硬件连线上,将所有的数码管的段选端并联,与一个 8 位的并行 I/O 端口连接,每个数码管的位选端分别与另一个 I/O 端口中的某位连接,轮流输出高电平使各数码管循环点亮。参见教材 P89,图 7-7。第八章 单片机资源扩展(存储器扩展)存储器芯片的扩展 存储器芯片的位扩展适用场合:芯片容量满足要求,
25、但字长小于存储器系统的要求。例 1:用 1K4 的 2114 芯片构成 lK8 的存储器系统。根据硬件连线图,可以进一步分析出该存储器的地址分配范围如下:(假设只考虑 16 位地址)地 址 码 芯 片 的 地 址 范 围A15 . A12 A11 A10 A9 . A0 0 0 0 . 0 0 0 0 0 H : : 0 0 1 . 1 0 3 F F H 例 2: 用 2K8 的 2716存储器芯片组成 8K8 的存储器系统。地 址 码 地址范围 芯片编号 A15 . A13 A12 A11 A10 A9 . A0 0 0 0 0 . 0 0 0 0 0 H: : 2716-1 0 0 1
26、1 . 1 0 7 F F H 0 1 0 0 . 0 0 8 0 0 H: : 2716-2 0 1 1 1 . 1 0 F F F H 1 0 0 0 . 0 1 0 0 0 H: : 2716-3 1 0 1 1 . 1 1 7 F F H 1 1 0 0 . 0 1 8 0 0 H: : 2716-4 1 1 1 1 . 1 1 F F F H 例 3: 用 1K4 的 2114 芯片组成 2K8 的存储器系统。地 址 码 地址范围 芯片组编号A15 . A13 A12 A11 A10 A9 . A0 0 0 0 0 0 0 0 0 H: : 2114-1 0 0 1 1 0 3 F
27、F H 0 1 0 0 0 4 0 0 H: : 2114-2 0 1 1 1 0 7 F F H例 4: 一个存储器系统包括 2K RAM 和 8K ROM,分别用 1K4 的 2114 芯片和 2K8 的 2716芯片组成。要求 ROM 地址从 1000H 开始,RAM 的地址从 3000H 开始,完成硬件连线及相应的地址分配表地 址 码 地址范围 芯片编号A15 A14 A13 A12 A11 A10 A9 . A0 0 0 0 1 0 0 0 0 100 0 H: : 2716-1 0 0 0 1 0 1 1 1 1 7 F F H0 0 0 1 1 0 0 0 1 8 0 0 H:
28、: 2716-20 0 0 1 1 1 1 1 1 F F F H0 0 1 0 0 0 0 0 2 0 0 0 H: : 2716-30 0 1 0 0 1 1 1 2 7 F F H0 0 1 0 1 0 0 0 2 8 0 0 H: : 2716-4 0 0 1 0 1 1 1 1 2 F F F H0 0 1 1 0 0 0 0 3 0 0 0 H: : 2114-10 0 1 1 0 0 1 1 3 3 F F H0 0 1 1 1 0 0 0 3 8 0 0 H : : 2114-20 0 1 1 1 0 1 1 3 B F F H 第九章:串行通信技术9.1 串行通信的基本概念1
29、、串行通信与并行通信串行通信:按照一定的先后顺序、逐位地进行数据传送 。并行通信:采用同时多位的数据传输。 串行传输方式:单工、半双工、全双工。2、串行通信方式按照对数据流的分界、定时和同步的不同,可分为异步串行和同步串行。异步串行:以一个字符作为一帧,随机地出现在信道中。一帧中双方是同步的,帧与帧之间双方是异步的,每一个帧都要重建同步关系。同步串行:以数据块作为一帧,每帧中包含多个字符。多个字符的传输仅建立一次同步关系。一帧中,不仅每一位要同步,而且字符之间也要同步。异步串行用在数据传送时间不确定,发送数据不连续,数据量较少和数据传输率较低的场合。同步串行通信则用于高传输率、连续、量大的数据
30、传输场合。 异步通信帧格式 同步通信帧格式同步通信协议可分为面向字符、面向比特和面向字节计数等。以面向字符例:数据传输速率:有多种表示方法,如波特率、比特率。波特率:数据信号对载波的调制速率,用单位时间内载波状态改变次数表示,单位为波特(Baud ) 。比特率:信道中数字信号的传输速率,它用单位时间内传输二进制代码的有效位(bit)数表示,单位为每秒比特数(bit/s 或 bps) 。 两者关系为:比特率 = 波特率 X 单个调制状态对应的二进制位数两相调制:单个调制状态对应 1 个二进制位,比特率等于波特率。四相调制:单个调制状态对应 2 个二进制位,比特率为波特率的两倍八相调制:单个调制状
31、态对应 3 个二进制位,比特率为波特率的三倍3、串行通信接口接口的功能(1 )串行数据格式化:异步方式,负责生成起止式的帧格式。面向字符的同步方式,要在发送的数据块前面加上同步控制字符。(2 )串并转换:并行数据转换为串行数据再向外发送;串行数据转换为并行数据再送往CPU。(3 )数据传输速率的控制:对波特率进行选择和控制。 (4 )错误检测:对传输的数据自动生成校验码。(5 )电平转换:计算机是 TTL 电平及正逻辑,而传输电路采用的是其他电平和逻辑,如:EIA 电平和负逻辑,需要进行电平和逻辑的转换。(6 )提供符合国际接口标准所要求的控制信号线:在 RS-232 接口标准中,对通信设备与
32、数据终端间的控制信号进行了明确的规定。串行通信接口电路的组成:可编程的接口电路、波特率发送器、电平转换器以及地址译码电路。9.2 MCS-51 单片机串行接口2、串口工作方式及波特率设置工作方式:4 种 (1 )方式 0:串行移位输入/ 输出方式输入时,RXD 作为数据的输入端,TXD 提供移位时钟脉冲,接收器以 fosc/12 的波特率从 RXD 输入。移入第 8 位数据时,中断标志 RI 置 1。输出时,8 位数据写入 SBUF,在移位时钟脉冲(TXD)的控制下,数据以 fosc/12 的波特率从 RXD 移出。8 位数据移出后,中断标志 TI 置 1。传输中只有数据位,没有附加位(起始位、校验位和停止位) ,移位顺序是先低后高。第 9 位数据,SCON 中的 TB8(发送)或 RB8(接收)位,使用如下指令对该位进行设置:SETBTB8 ;TB8 位置 1CLR TB8 ;TB8 位置 0(4 ) 方式 3:与方式 2 的帧格式、工作过程完全相同,区别在于波特率,方式 2 波特率是固定的,方式 3 的波特率是可变的。