单片机.docx
《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(17页珍藏版)》请在冰豆网上搜索。
![单片机.docx](https://file1.bdocx.com/fileroot1/2023-1/2/8bbc0220-fcf8-4f35-a698-04977be1c8d9/8bbc0220-fcf8-4f35-a698-04977be1c8d91.gif)
单片机
第一章单片微型计算机概述
中央处理器(centralprocessingunit),简称CPU
如果中央处理器的电路集成在一片或少数几片大规模集成电路芯片上,即成为维处理器(MPU)
微型计算机系统
微型计算机是指由微处理器加上采用大规模集成电路制成的程序存储器和数据存储器,以及与输入/输出设备相连接的I/O接口电路,微型计算机简称MC。
以微型计算机为基础,加上外围设备,电源,系统软件等就构成微型计算机系统。
微机系统
微型计算机硬件基本组成:
运算器,控制器,存储器,输入/输出设备及接口。
微型计算机的分类:
1.单板机:
CPU,存储器,I/O接口电路以及简单的输入/输出设备组装在一块印制电路板上。
2.单片机:
CPU,存储器,I/O接口电路和相应实时控制器件集成在一块芯片上。
3.微型计算机:
CPU,存储器,I/O接口电路由总线有机地连接在一起的整体。
4.微型计算机系统:
微型计算机与外围设备,电源,系统软件一起构成的系统。
单片机主要面向控制,控制中的数据类型及数据处理相对简单,所以单片机的数据处理功能比通用微机相对要弱一些,计算速度和精度也相对要低一些。
微机计算机的三总线结构
总线是微机系统中各部件和模块之间用于传送信息的一组公用导线,一般包括数据总线,地址总线,控制总线。
微处理器数据总线的条数决定CPU和存储器或I/O设备一次能交换数据的位数,是区分微处理器是多少位的关键。
微处理器是微型计算机的核心,内部采用单总线结构。
存储器结构有两种:
哈佛结构和普林斯顿结构。
哈佛结构是一种将程序指令存储和数据分开的存储器结构。
中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址再到相应的数据存储器中读取数据,并进行下一步的操作。
普林斯顿结构,也称冯.诺伊曼结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。
RAM存储器包括存储体,地址译码器和控制电路。
注意:
1.对于8位地址,可表示256个单元;
2.每个单元可存放8位二进制数;
3.注意单元内容与地址的区别。
存储器工作过程:
CPU→地址→地址译码器→选中单元→由CPU发出的读或写命令
D-BUS是一个提供简单的应用程序互相通讯的途径的自由软件项目。
输入/输出设备及其接口
1.I/O设备:
简称外设,功能是为微机提供具体的输入/输出手段。
标准的I/O设备是指键盘和显示器。
2.I/O接口:
由于各种外设的工作速度,驱动方式差别很大,无法与CPU直接匹配,而需要一个接口电路来充当它们与CPU间的桥梁,起转换和协调作用。
计算机中数和编码
数制又称计数法,是人们用一组规定的符号和规则来表示数的方法。
在一个数制中,表示每个数位上可用字符的个数称为该数制的基数。
一个数值中的每一位都有一个表示该位在数值中位置的值与之相对应,这个值称为权。
二进制与其他数制相比,有一下特点:
1.数制简单,容易表示。
2.运算规则简单。
3.节省设备。
4.可以使用逻辑代数这一数学工具对计算机逻辑线路进行分析和综合,便于机器结构的简化。
在计算机中通常采用电平的“高”“低”或脉冲的“有”“无”来分别表示“1”和“0”。
数制之间的转换
十进制转换成二进制:
整数用“除2取余”,小数用“乘2取整”。
十六进制转换为二进制:
不论是十六进制的整数或小数,只要把每一位十六进制数用4位二进制代替即可。
二进制转换为十六进制:
整数部分由小数点向左每4位一组,小数部分由小数点向右每一组,不足4位补的0,然后用4位二进制的相应的十六进制代替即可。
为了便于区别不同数制表示的数,规定在数字后面用一个H表示十六进制数,用Q表示8进制数,用B表示二进制数,用D表示十进制数。
规定当十六进制数以字母开头时,为了避免与其他字符想混,在书写时前面加一个数0,如十六进制数B9H,应该写成0B9H。
计算机中的编码
由于计算机中的基本电子器件仅具有两种状态,所以,各种文字和符号只能采用二进制代码的组合来表示,称为二进制编码。
一个十进制的数用4位二进制编码表示,这就是二进制编码的十进制数,简称BCD码。
BCD码的优点是与十进制数转换方便,容易阅读;缺点是用BCD码表示的十进制的数位要较纯二进制表示的十进制数位更长,使电路复杂性增加,运算速度减慢。
十进制调整:
1.若两个BCD数码相加,结果大于1001,亦即大于十进制数9,则应作加0110调整。
2.若两个BCD数码相加,结果在本位上并不大于1001,但却产生了进位,相当于十进制运算大于等于16,则也要作加0110调整。
在计算机中,除数字外,还需处理各种字符,如字母、运算符号、标点符号等。
这些字符都要用代码来表示。
最常用的代码是ASCII码。
它用7位二进制码对字符进行编码。
数的符号表示法:
用数码“0”表示整数的符号“+”;用数码“1”表示整数的符号“-”。
这种连正负号也数字化的数,称为机器数,是计算机所能识别的数;而把这个数本身,即用“+”“-”号表示的数称为真值。
机器数有3种不同的编码形式:
原码、反码、补码。
反码:
正数不变,负数取反
补码:
正数不变,负数取反加1
在微机中,凡是带符号的数一律用补码表示,而且,运算结果自然也是补码。
补码加减法运算是带符号数加法运算的一种。
其运算特点是:
符号位与数值部分一起参与运算,并且自动获得结果。
为了确定小数点的位置,在计算机中,数的表示有两种方法:
定点表示法和浮点表示法。
定点和浮点是指一个数的小数点位置是固定的还是浮动的。
为了使小数点可以自由浮动,浮点数由两部分组成,即尾数部分与阶数部分。
尾数部分表示浮点数的全部有效数字,它是一个有符号位的纯小数;阶数部分指明了浮点数实际小数点的位置和尾数约定的小数点位置之间的位移量P。
该位移量是一个有符号位的纯小数。
当阶数为+P时,则表示小数点向右移动P位;当阶数为-P时,则表示小数点向左移动P位。
微型计算机系统的工作过程
计算机采取“存储程序与程序控制”的工作方式,即事先把程序加载到计算机的存储器中,当启动运行后,计算机便会自动按照程序的要求进行工作。
在启动工作计算机之前做好如下几项工作:
1.首先用助记符号指令编写源程序;
2.由于机器不能识别助记符号,需要翻译成机器语言指令;
3.将数据和程序通过输入设备送至存储器存放,整个程序一共3条指令,5个字节,假设它们存放在存储器从00H单元开始的相继5个存储单元中。
1条指令的执行过程包括取指和执指两个阶段。
执行指令前,首先要把这条指令的地址送到程序计数器PC中,然后开始执行指令。
具体过程如下:
首先,CPU进入取指令阶段,从存储器中取出指令码送到指令寄存器中寄存,然后对该指令译码后,再转入执行指令阶段,在这期间,CPU执行指令指定的操作。
开始执行程序时,必须先给程序计数器PC赋以第一条指令的首地址00H,然后就进入第一条指令的取指令阶段。
单片微型计算机简称单片机,它是在一片硅片上集成了中央处理器存储器和各种输入/输出接口(I/O,定时器/计数器,串行接口,A/D转换器,D/A转换器等),这样一块芯片具有一台计算机的功能,因此称作单片微型计算机。
由于单片机主要用于实时控制,常作为其他系统的组成部分使用,所以又称作嵌入式控制器。
单片机可分为单机应用和多机应用。
在一个应用系统中,只使用一片单片机,这是目前应用最多的当时,单机应用的主要领域有:
测控系统、智能仪表、机电一体化产品、智能接口。
单片机的多机应用系统可分为功能集散系统,并行多机处理及局部网络系统。
第二章单片机组成与工作原理
MCS-51单片机系列有51、52两个子系列,51系列有8031、8051、8751三种。
8031内部无ROM,8051内部有4KBROM,8751内部有4KBEPROM三种。
52系列有8032、8052、8752三种机型。
52系列有3个16位定时/计数器,6个中断源,片内有256BRAM。
8032内部无RAM,8052内部有8KBROM,8752内部有8KBEPROM。
单片机基本结构
MCS-51单片机基本结构依旧是CPU加上外围芯片的传统结构模式。
但CPU对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。
内部结构:
CPU、数据存储器RAM、程序存储器ROM/EPROM、中断系统、定时器/计数器、串行接口、P1口P2口P3口P0口、特殊功能寄存器。
外部引脚:
1.电源引脚Vcc和Vss
2.时钟电路引脚
3.控制线引脚
4.I/O引脚
CPU是单片机内部的核心部件。
MCS-51单片机的CPU由运算器、控制器以及位处理器(布尔处理器)组成。
运算器主要用来对操作数进行算术、逻辑运算和位操作的。
主要包括算术逻辑运算单元ALU、累加器A、位处理器、程序状态字寄存器PSW以及BCD码修正电路等。
1.算术逻辑运算单元ALU
ALU的功能十分强,不仅可对8位变量进行逻辑“与”、“或”、“异或”、循环、求补和清零等基本操作,还可以进行加减乘除等基本算术运算。
MCS-51的ALU还具有位处理操作功能,它可对位变量进行位处理,如置位、清零、求补、测试转移及逻辑与或等操作。
2.累加器A
累加器是CPU中使用最频繁的一个寄存器。
它的作用是:
累加器A是ALU单元的输入之一,因而是数据处理源之一,但它又是ALU运算结果的存放单元;CPU中的数据传送大多都通过累加器A,故累加器A又相当于数据的中转站。
3.布尔处理机
累加器A的进位标志Cy是特殊的,因为它同时又是位处理机的累加器。
进位位Cy,被称为“位累加器”,可在任何可寻址的位与Cy间进行逻辑运算操作。
4.程序状态字寄存器PSW
MCS-51的程序状态字寄存器,是一个8位可读写的寄存器,位于单片机片内的特殊功能寄存区,字节地址为D0H。
5.DAA:
BCD码十进制修正,由专用电路实现。
与通用CPU相比,增加了暂存寄存器和B寄存器。
PSW中的各个位的功能如下:
1.Cy(PSW.7)进位标志位
Cy也写作C。
在执行算术和逻辑指令时,Cy可以被硬件或软件置位或清除,在位处理器中,它是位累加器。
2.Ac(PSW.6)辅助进位标志位
当进行BCD码加法或减法操作产生的由低4位向高4位进位或错位时,Ac将被硬件置1,否则被清0。
3.F0(PSW.5)
它是由用户使用的一个状态标志位,可用软件来使它置1或清0,也可由指令来测试标志位F0,用以控制程序的流向。
4.PS1、PS0(PSW.4、PSW.3)4组工作寄存器区选择控制位1和位0
5.OV(PSW.2)溢出标志位
当执行算术指令时,由硬件置1或清0,以指示运算是否产生溢出。
6.PSW.1位
保留位
7.P(PSW.0)奇偶标志位
该标志位用来表示累加器A中为1的位数的奇偶数。
控制器
控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。
控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转换逻辑电路和时序控制逻辑电路等。
时钟电路
1.震荡源
MCS-51的HMOS芯片内部时钟电路的振荡源有两种方式提供,内部自激振荡方式和外部振荡脉冲源方式。
2.CPU时序
时钟周期:
振荡器输出的时钟脉冲频率的倒数。
为单片机中最小、最基本的时间单位。
状态周期:
振荡信号经2分频后获得的信号周期,称S,显然,S为时钟周期的2倍。
机器周期:
12个时钟周期为一个机器周期,对应计算机执行一个基本操作所需的时间。
指令周期:
执行一条指令所需的时间,至少包含一个机器周期。
ALE时序:
地址锁存信号,每个机器周期2次有效,分别在S1、S2
状态。
每次出现,CPU进行一次取指操作。
单片机的存储器组织
MCS-51存储器可分为5类:
程序存储器、内部数据存储器、特殊功能存储器、位寻址区、外部扩展的数据存储器和扩展I/O口。
数据存储器
内部RAM中低128B,字节地址:
00~7FH;有128个8位单元字节。
按功能划分为三个部分:
1.工作寄存器区:
00~1FH
2.位置寻址位寻址区:
20H~2FH,共16个字节,128个位,位地址:
00~7FH
3.数据缓冲区:
30H~7FH
作为通用的按字节操作的数据缓冲区;常开辟为堆栈区。
堆栈主要为子程序和中断操作而设立,是一种数据结构,它只允许在其一端进行数据的插入和操作,又称为入栈和出栈,MCS-51的堆栈是向上生长型的。
堆栈的特点:
堆栈是一个符合“先进后出、后进先出”的RAM区域;
SP总是指向堆栈的顶部;
堆栈可以设在内部RAM中的任意区域,一般开辟在30~7FH中。
堆栈的功能:
保护断电—保护从主程序转向子程序、中断时的断点,发生转移时自动完成;
保护现场—对子程序、中断程序中要用到的、现场的某些寄存器的内容进行保护,以保证返回时正确恢复。
软件指令方式实现;
数据的临时存放。
特殊功能寄存器区,即SFR,包括I/O锁存器、定时器、串行接口、中断、状态、控制寄存器等共21个。
离散分布在80~FFH中(不包括PC),如下所示:
算术运算寄存器:
A、B、PSW(特殊状态字寄存器);
指针寄存器:
SP、DPTR(DPH、DPL);
并行接口:
P0、P1、P2、P3;
串行接口:
SCON、SBUF、PCON;
中断系统:
IP、IE;
定时/计数器:
TMOD、TCON、TH0、TL0、TH1、TL1。
外部扩展数据存储器:
最大可扩展到64KB,由P3口的第二功能控制其读、写,并通过MOVX指令访问。
扩展I/O口:
MCS-51单片机将其看作外RAM的一个单元,与外RAM统一编址,提供16位寻址能力,寻址范围也是64KB,但需要注意的是,为区别于外RAM地址,扩展I/O口一般用高端地址。
定时器/计数器T0、T1由加法计数器、TMOD、TCON寄存器等组成。
定时器/计数器的核心是16位加法计数器,定时器/计数器T0的加法计数器用特殊功能寄存器TH0、TLO表示,TH0表示加法计数器的高8位,TLO表示加法计数器的低8位。
TH1、TL1则表示定时器/计数器T1的加法计数器的高8位和低8位。
这些寄存器可根据需要由程序读写。
16位加法计数器编程选择对内部时钟脉冲进行计数或对外部输入脉冲计数,对内部脉冲计数时称定时方式,对外部脉冲计数时称计数方式。
定时器/计数器的方式控制字
1.工作方式寄存器TMOD
2.控制寄存器TCON
TCON的高4位用于控制定时器的启动、停止以及标明定时器的溢出和中断情况,TCON的低4位用于两个外部中断源控制。
定时器/计数器的四种工作方式
1.工作方式0—13位计数器
2.工作方式1—16位计数器
3.工作方式2—8位自动重装初值计数器
4.工作方式3—2个独立8位计数器
并行输入/输出口
MCS-51单片机有4个8位并行I/O口,P0~P3,共32根口线。
并行I/O端口一次可传送一个字节的数据。
每个端口都包括锁存器(即SFR:
P0~P3)、输出驱动器、2个三态缓冲器以及控制电路。
它们都是双向通道,每一条I/O线都能独立地用作输入或输出,作输出时数据可以锁存,作输入时数据可以缓存。
访问并行I/O端口除了可以用字节地址访问外,还可以进行按位寻址。
4个接口工作在一般I/O方式时,具有一下基本相同的特性:
1.作为输出口用时,内部带锁存器,故可以直接和外设相连,不必加锁存器。
2.作为输入口用时,有两种读方式,与此相对应有两种读操作指令,即读锁存器和读引脚。
3.执行读引脚指令读入I/O引脚状态,当端口作输入口使用时,要先将端口锁存器置1。
串行输入/输出接口
微机与外部信息交换称为通信。
基本通信方法有并行通信和串行通信两种。
并行通信:
一个信息的各位数据被同时传送的通信方法称为并行通信。
并行通信依靠并行I/O接口实现。
串行通信:
一条信息的各位数据被逐次顺序传送的通信方式称为串行通信。
串行通信借助于串行I/O接口实现,只要一条传输线。
串行通信分为两种基本方式:
异步通信和同步通信。
波特率:
串行通信的数据是按位进行的,每秒传送的位数称为波特率,以此来衡量传送的速度。
传送的速度:
1波特=1b/s
数据传送的方向:
单工、半双工、全双工。
通常用半双工。
数据校验方法:
奇偶校验法。
串行接口主要由发送数据缓冲器、发送控制器、输出控制门、接收数据缓冲器、接收控制器、输入移位寄存器等组成。
发送数据缓冲器只能写入,不能读出,接收数据缓冲器只能读出,不能写入,故两个缓冲器共用一个符号——特殊功能寄存器SBUF。
SCON、PCON用于串行接口的初始化编程,分别用来控制串行接口的工作方式和波特率。
波特率发生器可以用定时器/计数器1或定时器/计数器2构成。
多机通信
串行接口用于多机通信时必须使用方式2或方式3。
为了区分是数据信息还是地址信息,主机用第9位数据TB作为地址/数据的识别位,地址帧的TB=1,数据帧的TB=0。
各从机的SM2必须置1。
中断系统
中断系统在计算机应用系统中起着十分重要的作用,良好的中断系统能提高计算机对外界异步事件的处理能力和响应速度,从而扩大计算机的应用范围。
特殊工作方式
MCS-51单片机的复位信号,高电平有效。
复位(RST)引脚上只要出现10ms以上的高电平,单片机就实现复位。
RST/VPD引脚至少保持2个机器周期的高电平,才能复位。
第三章单片机的指令系统
一台计算机所能执行的全部指令的合集称为该计算机的指令系统。
指令系统包括指令格式、寻址方式、指令种类和指令功能等内容。
机器语言指令的一般格式如下:
操作码操作数
操作码字段用来规定该指令要执行的操作,如加减法运算或数据传送操作等。
这是指令中唯一不可缺少的核心字段。
寻址方式码字段表示该指令的操作数,应按哪一种寻址方式来寻找。
有时,寻址方式字段也可隐含在操作码中。
形式地址码字段,表示操作数所在的单元的形式地址。
用助记符形式来表示的机器指令称为汇编语言指令。
MCS-51汇编语言的语句格式表示如下:
[<标号>]:
<操作码>[<操作数>];[<注释>]
1条汇编语句是由标号、操作码、操作数和注释4个部分所组成,其中方括号括起来的是可选择部分,可有可无,视需要而定。
操作码:
是由助记符表示的字符串,操作码其实就是表明这条指令具有什么样的功能,加、减、传送还是控制。
操作数:
是指参加操作的数据或者是数据地址。
注释:
为了便于阅读程序,通常在指令的后面都会加上注释。
标号:
用来表示子程序名称或程序执行条件跳转时的程序跳转地址,实际是表示一个地址值。
操作码与操作数之间必须用空格分开,操作数之间必须用逗号。
带方括号的项可有可无,称为可选项。
MCS-51系列单片机的汇编语言指令系统有111条指令,按照它们的操作性质可划分成数据传送、算术操作、逻辑操作、程序转移、位操作等。
寻址方式
立即寻址:
操作数就跟在操作码后面,可以立即参与指令所规定的操作,不需另去寄存器或存储器等处寻找或取数。
该操作数称为立即数。
寄存器寻址:
寻找某工作寄存器,自该寄存器获取或存放操作数,以完成指令规定的操作称为寄存器直接寻址或寄存器寻址。
寄存器间接寻址:
如果某工作寄存器中的内容是地址而不是操作数,寻到该工作寄存器后,再以该内容为地址,去寻找所指的RAM单元以读取或存放操作数。
直接寻址:
直接给出操作数所在的存储器地址,以供寻址取数或存放的寻址方式。
基址寄存器加变址寄存器间接寻址:
以程序计数器PC或数据指针DPTR作为基本地址寄存器,以累加器A作为变址寄存器,把它们内容的和作为程序存储器的地址,再寻址该地址单元,读取数据。
这种寻址方式也用于访问程序存储器。
当然只用于读取,不能存放,它主要应用于查表性质的访问。
相对寻址:
凡写有rel的指令都属于相对寻址方式。
这些指令如满足程序转移条件,PC中地址值将更换为当前地址与相对地址rel的代数和,于是机器将自转移过相对地址值的单元中取数并执行。
数据传送类指令
数据传送类指令有29条,可细分为:
以累加器A为一方的传送指令(6条),不以累加器A为一方的传送指令(5条),用立即数置数的指令(5条),访问片外RAM的传送指令(4条),基址寄存器加变址寄存器间址指令(2条)、交换指令(5条)、进栈出栈指令(2条)等7个小类。
第五章单片机系统的扩展
最小系统,是指一个真正可用的单片机最小配置系统。
对于片内带有程序存储器的单片机,只要在芯片上外接时钟电路和复位电路就能达到真正可用,这就是一个最小系统。
为了使单片机能方便地与各种扩展芯片连接,常将单片机芯片的外部引线变为一般微型计算机的三总线形式。
三总线的引线组成如下:
地址总线:
由P0口分时复用为地址/数据线,因而为保持地址信息在访问存储器期间一直有效,需外加地址锁存低8位地址,用ALE正脉冲信号的下降沿进行锁存。
由P2口提供高8位地址线。
数据总线:
由P0口提供,此口是准双向、输入三态控制的8位数据输入/输出口。
控制总线:
PSEN用于片外程序存储器取指控制信号;RD、WR用于片机数据存储器读、写控制信号。
系统扩展一般有以下几方面的内容:
外部程序存储器的扩展;外部数据存储器的扩展;
输入/输出接口的扩展;管理功能器件的扩展(如定时器、键盘、显示器、中断优先级编码器等)。
系统扩展的基本方法:
一般来讲,所有与计算机扩展连接的芯片的外部引线脚都可以归为三总线结构。
扩展连接的一般方法实际上是三总线对接,要保证单片机的扩展芯片协调一致地工作,即要共同满足其工作时序。
常用扩展器件简介
单片机系统扩展中常用的芯片:
I/O扩展、存储器+I/O扩展、标准EPROM、标准RAM、标准I/O口、标准外围芯片、通用外围芯片。
8D锁存器74LS373
74LS373是一种带输出三态门的8D锁存器。
总线驱动器74LS244、74LS245
74LS244和74LS245常作单片机系统的总线驱动器,也作三态数据缓冲器。
74LS244是单向驱动器,74LS245是双向驱动器。
3—8译码器74LS138
3—8译码器74LS138为一种常用的地址译码器芯片。
存储器的扩展
片选信号线与单片机系统的译码输出相接后,就决定了存储器芯片的地址范围。
因此,单片机剩余高位地址线的译码及译码输出与存储器芯片的片选信号线的连接,是存储器扩展连接的关键问题。
存储器芯片的选择有两种方法:
线选法和译码法。
线选法:
就是直接以系统的地址线作为存储芯片的片选信号,为此只需把用到的地址线与存储器芯片的片选端直接相连即可。
特点:
线选法编址的优点是简单明了,不需要另外增加译码电路,成本低,但缺点是存储器芯片之间的地址可能不连续,且浪费了大量的存储空间。
因此只适用于存储容量不需要很大的小规模单片机系统。
译码法:
译码器就是使用地址译码器对系统的片外地址进行译码,以其译码输出作为存储器芯片的片选信号。
特点:
这是一种最常见的存储器编址方法,能有效地利用存储空间,适用于大容量多芯片存储器的扩展。
译码法又分为完全译码和部分译码两种。
完全译码:
就是存储器芯片的地址线与单片机系统的地址线顺次连接后,剩余的高位地址线全部译码。
这种译码方法中,存储器芯片的地址空间是唯一确定的,但译码电路相对复杂。
部分译码:
就是存储器芯片的地址线与单片机系统的地址线顺次连接后,剩余的高位地址线仅用一部分参与译码。
。
参与译码的地址线对于选中某一存储器芯片有一