一篇文章带你走进:单片机的原理及应用(上)
一、概述
1、冯诺伊曼体系
1、采用二进制表示数据和指令
2、采用存储程序的工作方式,即编写程序-存储程序-自动连续地执行程序
3、计算机硬件系统的组成:运算器、存储器、控制器、输入设备和输出设备
2、计算机数值表示
2进制(B),16进制(H),10进制(D)
带符号数的表示(原码、反码、补码)
原码 正数 原码 正数
反码 补码
原码取反 负数 反码+1 负数
即已知微型计算机存储的数为负数,则补码减1再取反
八位二进制数、无符号数表示范围是0—255,有符号数原码表示范围是-127—+127,反码表示范围是-127—+127,补码表示范围是-128—+127
带符号数溢出:带符号数的补码加、减运算的结果超出了补码表示的范围。
判断溢出:两个同符号数相加或者两个异符号数相减时,1)次高位向最高位有进位(借位),而最高位向前无进位(借位);2) 次高位向最高位无进位(借位),而最高位向前有进位(借位)
压缩BCD码:4位二进制数
BCD码
非压缩BCD码:8位二进制数,高四位总为0000
3、串行通信,并行通信的定义
串行通信:数据按位顺序进行传送 低速、远距、便宜、可靠性高、抗干扰性强
并行通信:数据的各位同时进行传送 高速、短距、昂贵、可靠性低
二、MCS-51单片机硬件基础
1、硬件结构 了解
1、微处理器(CPU)
2、存储器
3、I/O口
4、外部可拓展16条地址总线,8条数据总线及需要的控制总线
2、引脚功能 熟悉,掌握在外部功能扩展中的应用
1、电源引脚VCC(+5V)、VSS(接地)
2、时钟引脚XTAL1、XTAL2(多采用内部时钟方式)
3、控制引脚RST(高电平有效)
4、输入输出引脚P0—P3(具有基本的输入/输出功能):
P0、P2、P3具有第二功能:
P0作为低8位地址总线及8位数据总线
P2作为高8位地址总线
5、PSEN(片外程序存储器读选通信号输出端),低电平有效
EA(片外程序存储器选用端),高电平选择片内ROM,低电平选择片外ROM
3、中央处理器 熟悉各个寄存器的基本功能
掌握振荡周期、机器周期及指令周期的概念
时钟,复位的定义
振荡周期:为单片机提供定时信号的信号源的周期
状态周期:两个振荡周期
机器周期:6个状态周期
指令周期:执行一条指令所占用的全部时间(乘除为4机器周期,其余为单机器周期和双机器周期)
复位:CPU从初始状态开始工作
4、存储器结构
(1)四个物理空间:内、外程序存储器,内、外数据存储器
三个逻辑空间:程序存储器(ROM),内、外数据存储器(RAM)
(2)程序存储器地址空间(EA引脚选择)
重点掌握:低地址段的保留单元
复位 | 0000H | 外部中断1 | 0013H |
---|---|---|---|
外部中断0 | 0003H | 定时器/计数器1溢出中断 | 001BH |
定时器/计数器0溢出中断 | 000BH | 串行口中断 | 0023H |
(3)数据存储器地址空间
重点掌握:内部数据存储器,地址范围,特点,SFR
外部数据存储器,寻址范围及寻址方式
片内RAM:00H-7FH
片内数据存储器
特殊功能寄存器SFR:80H-0FFH
片外数据存储器:0000H-0FFFFH
工作寄存器区:临时寄存 8 位信息
位寻址区:可用于各种程序状态标志、位控制变量的存入
数据缓冲区:用户 RAM
(4)位处理器
熟悉位处理器组成及位存储器地址范围
PSW:
PSW.7 | PSW.6 | PSW.5 | PSW.4 | PSW.3 | PSW.2 | PSW.1 | PSW.0 |
---|---|---|---|---|---|---|---|
C | AC | F0 | RS1 | RS0 | OV | – | P |
1、进位标志C:最高位是否向前一位进位或借位,是则1,否则0
2、辅助进位AC:两个8位数运算,低四位有无进位,有则1,无则0
3、用户自定义标志位
4、工作寄存器区选择位RS1、RS0
RS1 | RS0 | 工作寄存器区 |
---|---|---|
0 | 0 | 00H-07H |
0 | 1 | 08H-0FH |
1 | 0 | 10H-17H |
1 | 1 | 18H-1FH |
5、溢出标志位0V
加减法:有溢出为1,无溢出为0
乘法:积>255为1
除法:除数为0时为1
6、奇偶标志位P:仅对累加器A操作的指令有影响
累加器A中1的个数为奇数时为1,否则为0
堆栈指针SP:8位的专用寄存器,用于存放栈顶的位置
数据指针DPTR:16位的专用地址指针寄存器,用于存放16位地址,相当于间接寄存器
三、指令系统
1、指令的寻址方式(掌握)
7种寻址方式,名称、格式、寻址范围
1、立即寻址
MOV A,#70H
2、寄存器寻址
MOV A,R0
3、直接寻址
MOV A,70H
4、寄存器间接寻址(只有R0,R1和DPTR)不能访问SFR,DPTR访问片外RAM的64KB范围
MOV A,@R0
5、基寄存器加变址寄存器间接寻址 常用于访问程序存储器中的常数表
MOVC A.@A+DPTR 基寄存器:A 变址寄存器:PC,DPTR
6、相对寻址当前程序计数器PC值加上指令中所给出的偏移量rel
JZ rel
7、位寻址
2、指令系统(五大类)
要求:指令的格式,寻址方式,执行操作,对标志位影响,程序段编写。
1、数据传送类:MOV、MOVC、MOVX、XCH、XCHD、SWAP、PUSH、POP
2、算数运算类:ADD、ADDC、INC、DA A、SUBB、DEC、MUL、DIV
3、逻辑运算类:NAL、ORL、XRL、CLR A、CPL A、RL A、RLC A、RR A、RRC A
4、控制转移类:LJMP、SJMP、JZ/JNZ、CJNE、DJNZ、LCALL、RET、RETI、NOP
5、位操作类:MOV、CLR、CPL、SETB、ANL、ORL、JC/JNC、JB/JNB、JBC
6、伪指令:ORG、DB、DW、EQU、DS、BIT、END
五、P0-P3口的应用基础 课件
1、P0-P3口的特点及功能
1、P0:P0口无上拉电阻接电源,为双向口,执行输出功能时,外部必须接上拉电阻;作为地址线使用时要增加一个锁存器,为低8位,
2、P1:只能作为一般的I/O接口使用
3、P2:高8位地址总线
4、P3:除基本输入输出功能,还有第二功能
2、掌握读引脚方式
使用读引脚指令前,必须先用输出指令置Q=1,使VIT1截止,否则引脚将始终处于低电平上,不可能输入高电平
3、P0-P3口的基本输出以及LED显示(静态显示)的工作原理
查表:
MOV A,#data
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
4、P0-P3口的基本输入
必须先输出高电平,才能读取该引脚所连接的外部设备数据
六、中断系统 中断
1、中断的概念
CPU 暂时停下现行程序的执行,转向为临时发生的事件进行处理,处理完后,再返回执行原程序
2、与中断有关的寄存器
3、中断源:外部及内部中断源,中断触发方式,如何设置
外部中断:
外部中断0(INT0)
外部中断1(INT1)
电平触发(低电平有效)或沿触发(负跳变有效)
中断请求信号高低电平的状态都应至少维持一个机器周期,以确保电平变化被单片机检测到
内部中断:
1、定时器/计数器
定时器/计数器0(TF0)
定时器/计数器1(TF1)
2、串行口中断
RI
TI
4、MCS-51中断优先级的处理原则,同级中断申请的查询次序
5、中断处理过程(了解),各个中断源对应中断矢量(掌握),中断响应条件(掌握)。
6、中断程序编写的步骤
(1)TCON寄存器中的IT0、IT1位
IT=1为脉冲触发方式,IT=0为电平触发方式
(2)IP寄存器中的PX0、PX1位
(3)IE寄存器中的EA、EX0、EX1位(复位后,均清0)
EA为中断允许总控制位,高电平有效
ES为串行口中断
七、定时/ 计数器 定时计数器
1、初始化程序,中断或非中断情况下的应用编程
2、定时计数器特点:16位加1计数器,计数初值为计数长度的补码;可程控为4种不同工作方式。
3、初始化程序:(1)计数常数的计算
(2)置工作方式字
(3)置THX,TLX
(4)置TRX启动计数
(5)置EA、ETX开中断
4、定时计数器的工作模式及应用编程
输出波形(占空比)
九、并行扩展接口技术
1、给出接口芯片,画接口电路图,计算芯片地址
并行总线的连接:
1、数据总线、控制总线的连接:
1)数据总线:
CPU:8条 P0口
拓展的芯片:一般也是8条,一一对应连接
2)控制总线:
CPU:读WR、写RD
可编程芯片:读、写信号一一对应连接,例如8255A的WR、RD
不可编程芯片:地址译码和读、写控制信号一起,例如74LS273的CLK,74LS244的2G
2、系统扩展的寻址方法-译码:
地址线的连接是为扩展的芯片确定一个唯一的地址,即存储器的地址空间范围和I/O接口的端口地址
要扩展的芯片的地址线数目总是少于单片机地址总线的数目,这样就将51单片机的地址总线分为两部分:用到的地址线、没有用到的地址线
用到的地址线分为:高位地址线、低位地址线
1)线译码(未用的线设置位1)
线译码是利用单片机的一根空闲高位地址线(通常采用P2的某根口线)选中一个外部扩展I/O端口芯片
Eg:以8255A为例:
CS设置为低电平,译码器的A0、A1口为输入端口
2)译码器译码
CPU的“低位地址线”用做I/O接口芯片的片内译码,“高位地址线”通过译码器芯片进行译码形成I/O接口芯片的片选
Eg:以74LS138为例,3-8译码器
2、逐次比较式AD转换的原理
3、利用DAC0832实现单缓冲和双缓冲的D/A转换输出
数模转换器:我们在设计时将D/A转换器设计成CPU的一个输出口,操作时向该口地址写入相应的数字量就可以了
分辨率:对模拟输出的最小分辨能力。设DAC位宽为n,则:
分辨率Δ=满量程电压/2n =Vref/2n
通常分辨率也用输入数字量的位数来表示。例如8位DA转换器,其分辨率为8位,12位DA转换器,其分辨率为12位1)单缓冲:输入寄存器或DAC寄存器中的任意一个工作在直通状态,而另一个工作在受控锁存状态。在只有单路模拟输出或虽有多路模拟输出但不要求同时刷新模拟输出时,可采用这种方式
2)双缓冲:CPU对0832进行两步写操作:先将数据写入输入寄存器再将输入寄存器的内容写入DAC寄存器
4、利用ADC0809实现1路和多路的A/D转换输出
模数转换器:
51单片机读取ADC0809的转换数据可采用:
无条件方式(延时)、查询方式、中断方式
1路:P2.7,即A15,则0809口地址为78FFH(IN0作为外部输入时)
作者:坑货罗