630 likes | 871 Views
P0 、 P2 口作为单片机的地址总线和数据总线 地址锁存原理 看扩展图 P143 页图 6-1 ,时序图 P144 页图 6-4 注意三个控制引脚的电平变化: ALE 、 PSEN 、 WR/RD. 6.1.1 并行扩展总线. 6.1.2 地址译码方法 为了实现单片机与外部存储器的连接,把单片机的地址线分为片内地址线和片选地址线两部分。 片内地址线通常直接或通过地址锁存器与相应存储器地址线相连。 片选地址线通常直接或通过地址译码器和存储器芯片的 CE 相连,也可以悬空不用。. 线选法. —— 用某一位地址线直接连到所扩展的芯片的片选端 。. A15.
E N D
P0、P2口作为单片机的地址总线和数据总线 • 地址锁存原理 • 看扩展图P143页图6-1,时序图P144页图6-4 • 注意三个控制引脚的电平变化:ALE、PSEN、WR/RD 6.1.1 并行扩展总线
6.1.2 地址译码方法 • 为了实现单片机与外部存储器的连接,把单片机的地址线分为片内地址线和片选地址线两部分。 • 片内地址线通常直接或通过地址锁存器与相应存储器地址线相连。 • 片选地址线通常直接或通过地址译码器和存储器芯片的CE相连,也可以悬空不用。
线选法 —— 用某一位地址线直接连到所扩展的芯片的片选端 。
A15 A14 A13 A12 … A3 A2 A1 A0 0 1 1 X … X 0 0 0 0#单元 0 1 1 X … X 0 0 1 1#单元 0 1 1 X … X 0 1 0 2#单元 0 1 1 X … X 0 1 1 3#单元 0 1 1 X … X 0 0 0 4#单元 0 1 1 X … X 1 0 1 5#单元 0 1 1 X … X 1 1 0 6#单元 0 1 1 X … X 1 1 1 7#单元 关于地址重叠:有一个以上CPU地址与存储单元对应。 X为无关项,即无论X取0,或取1,都不会影响对单元的确定 0#芯片中每个单元都有210个重叠地址 当X由全“0”,变全“1”时,0#芯片的地址范围即为6000H7FFFH 基本地址范围:6000H6007H。 0#芯片
全地址译码法 —— 片选地址线全部参加译码 • 单元地址唯一、地址空间能充分利用,不存在地址重叠。 • 常用地址译码器: 2-4译码器:74LS139 3-8译码器:74LS138 4-16译码器:74LS154
部分地址译码法 —— 片选线中只有一部分参与译码,其余部分是悬空,具有重叠地址
6.2 程序存储器的扩展 • 一、MCS-51用于扩展存储器的外部总线信号: • P0.0~0.7:8位数据和低8位地址信号,复用总线AD0~7。 • P2.0~2.7:高8位地址信号AB8~15 • ALE: 地址锁存允许控制信号 • PSEN: 片外程序存储器读控制信号 • RD: 片外数据存储器读控制信号 • WR: 片外数据存储器写控制信号 • EA: 程序存储器选择
二、扩展程序存储器电路: 常用EPROM芯片:Intel 2716(2K×8位)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。 8031扩展 32KB EPROM Intel 27256
6.3 数据存储器RAM的扩展 6.3.1 常用RAM芯片: Intel 6116(2KB)、6264(8KB)、62256(32KB)。 8031扩展 8KB RAM Intel 6264
6.3.2 数据存储器扩展电路 • 单片机连接 8KB EPROM 2764 和 8KB RAM 6264 各一片
6.4 并行接口的扩展 • 单片机往往通过P0和P2口构成扩展总线,扩展EPROM、RAM或其它功能芯片, • MCS-51单片机可提供给用户使用的I/O口只有P1口和部分P3口。因此,在大部分的MCS-51单片机应用系统设计中都需要进行I/O口的扩展。
引脚定义 • 数据线 D0~7:传送计算机与8255之间的数据、控制字和状态字。 PA0~7 PB 0~7 PC0~7:传送8255与外设之间的数据和联络信息,PC0~7可用作数据线或联络线。 • 地址线 CS:片选线 A1,A0:口选线,寻址 PA,PB,PC数据口和控制口。
P0 P2.7 8051 A0 A1 CS 8255 373 • 读写控制线 RD,WR控制计算机与8255之间的信息传送和流向 • 复位线 RESET高电平复位,使内部寄存器全部清零。 例 求8255口地址: • 解: A口 (7F00H), • B口(7F01H), • C口 (7F02H), • 控制口 (7F03H)
1.8255A的结构 • 数据总线驱动器。 • 并行I/O端口,A口、B口和C口。 • A口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入锁存器。可编程为8位输入输出或双向寄存器。 • B口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。可编程作为8位输入或输出寄存器,但不能双向输入输出。
C口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。可分为两个4位口使用。C口除作输入、输出口使用外,还可以作为A口、B口选通方式操作时的状态控制信号。C口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。可分为两个4位口使用。C口除作输入、输出口使用外,还可以作为A口、B口选通方式操作时的状态控制信号。
读/写控制逻辑 • CS:8255A的片选引脚端; • RD:读控制端,当RD=0时,允许单片机从8255A • 读取数据或状态字; • WR:写控制端,当WR=0时,允许单片机将数据或控制字写入8255A; • A0、A1:口地址选择。通过A0、A1可选中8255A的四个寄存器。
口地址选择如下: • A1、A0 寄存器 • 0 0 寄存器A(A口) • 0 1 寄存器B(B口) • 1 0 寄存器C(C口) • 1 1 控制寄存器(控制口) • RESET:复位控制端。当RESET=1时,8255复位。复位状态是:控制寄存器被清除,所有接口(A、B、C)被置入输入方式。
A组B组控制块 • 每个控制块接收来自读/写控制逻辑的命令和内部数据总线的控制字,并向对应口发出适当的命令。 • A组控制块控制A口及C口的高4位。 • B组控制块控制B口及C口的低4位。
2.8255A的控制字 8255A有两种控制字,即方式控制字和PC口位置位/复位控制字。
3.8255A操作方式 • 方式0(基本I/O方式) • PA、PB、PC可分别被定义为方式0输入或方式0输出。 • 输出具有锁存功能,输入没有锁存。 • 适用于无条件传输数据的设备,如读一组开关状态、控制一组指示灯,不使用应答信号,CPU可以随时读出开关状态,随时把一组数据送指示灯显示。
方式1(应答I/O方式) • 有选通输入和选通输出两种工作方式。 • A口和B口皆可独立地设置成这种工作方式,在方式1下,A口和B口通常用于传送和它们相连外设的I/O数据,C口用作A口和B口的握手联络线,以实现中断方式传送I/O数据。
方式1输入 • :设备的选通信号输入线,低电平有效,通常是外设给8255A的信号,表示外设给8255的数据已准备好。 • IBF:端口锁存器满标志输出线,高电平有效。IBF和设备相连。 • INTR:中断请求信号线,高电平有效。
当 、IBF、INTE都有效时,INTR就置“1” 。 • INTE:8255A端口内部的中断允许触发器。 • “1”表示中断允许(手动设置)。
方式1输出 • : 输出锁存器满状态标志输出线。 表示CPU已将数据输出到此端口。 • :设备响应信号输入线。表示外设已取走数据。 • INTR:中断请求信号输出线,高电平有效。当 、 和INTE都为“1”时,INTR被置“1”,发出中断请求 。
方式2仅对PA口有意义。 • 方式2使PA口成为8位双向三态数据总线口,既可发送数据又可接收数据。PA口方式2工作时,PB口仍可作方式0和方式1 I/O口,PC口高5位作状态控制线。 • 8255编程规定8255初始化编程:往控制口写入控制字,确定8255工作方式。 • 方式2(双向选通I/O式) 方式选择控制字:D7=1,0为输出,1为输入 C口置位/复位控制字:D7=0
例:8255PA口方式0输出单片机片内RAM数据,PB口方式1输入…。例:8255PA口方式0输出单片机片内RAM数据,PB口方式1输入…。 PIOS:MOV DPTR,#7F03H;控制口地址 MOV A,#86H ;写控制字 MOVX @DPTR,A ;设工作方式 MOV DPTR,#7F00H;PA数据口地址 MOV A,@R0 ;取RAM的数据 MOVX @DPTR,A ;由PA口输出 …
例6-4 打印程序 8255A可采用方式1工作,CPU可采用中断方式控制打印机打印。把MCS-51内部RAM中30H开始的32个单元的字符输出打印。 • 主程序: • MAIN:MOV 8,#30H;RAM首址→ 1区R0 • MOV 0FH,#20H;长度→1区R7 • SETB EA;开中断 • SETB EX1;允许外中断,电平触发方式 • MOV DPTR,#7FFFH;将8255A的PC2(即INTEB)置“1” • MOV A,#05H • MOVX @DPTR,A;允许B口中断
MOV A,#0BCH ;写方式控制字(PB口方式1输出) • MOVX @DPTR,A • MOV DPTR,#7FFDH ;从PB口输出第一个数据打印 • MOV A,30H • MOVX @DPTR,A • INC 8 ;RAM指针加1 • DEC 0FH ;长度减1 • …… ;执行其它任务
外中断1服务程序: • PINT1: PUSH ACC ;现场保护(A,DPTR 等进堆栈) • PUSH DPH • PUSH DPL • PUSH PSW • MOV PSW,#8 ;当前工作寄存器区切换到1区 • MOV A,@R0 ;从PB口输出下一个数据打印 • MOV DPTR,#7FFDH
MOVX @DPTR,A • INC R0 ;修改指针、长度 • DJNZ R7,BACK • CLR EX1 ;长度为0,关中断返回 • SETB F0 ;置打印结束标志位F0 • BACK: POP PSW ;现场恢复(A,DPTR等退栈) • POP DPL • POP DPH • POP ACC • RETI
6.5 D/A转换器接口 实现数模转换的功能部件称为D/A转换器,衡量D/A转换器性能的主要参数有: • 分辨率,即输出的模拟量的最小变化量,n位的D/A转换器分辨率为2-n。 • 满刻度误差,即输入为全1时输出电压与理想值之间的误差,一般为2-(n+1) • 输出范围; • 转换时间,指从转换器的输入改变到输出稳定的时间间隔; • 是否容易和CPU接口。
梯形电阻式D/A转换原理: • “按权展开,然后相加” • I2=Vref/2R • I1=I2/2 • I0=I1/2
根据以上的分析计算,可推理得到n位二进制数的转换表达式:根据以上的分析计算,可推理得到n位二进制数的转换表达式: • 其中D为n位二进制数的和 ,因此, 电流和二进制数成线性关系。 • 运算放大器的输出电压为: • 6.5.2 DAC 0832 • DAC0832是美国数据公司的8位D/A,片内带数据锁存器,电流输出,输出电流稳定时间为1 us。+5V ~ +15V单电源供电,功耗为20mW。
1. DAC0832芯片及其结构 0832引脚功能 0832----8位D/A IOUT1 电流输出1 Vcc ILE WR2 XFER DI4 DI5 DI6 DI7 IOUT2 IOUT1 CS WR1 AGND DI3 DI2 DI1 DI0 VREF RFR DGND IOUT2 电流输出2 CS 选片 输入写 WR1 DAC 0832 WR2 DAC写 ILE 数据锁存 XFER 数据传送 DI0~DI7 数据线 图 6-30(a) DAC0832的引脚分布图
RFR 输入 寄存器 DAC 寄存器 D/A 转换器 IOUT1 DI7~DI0 IOUT2 VREF ILE CS WR1 WR2 XFER 图6-30(b) DAC0832的逻辑结构
控制线(5条) ILE: 数据锁存允许控制信号输入线,高电平有效; CS:片选片信号输入线,低电平有效; WR1:数据锁存器写选通输入线,负脉冲有效 ; WR2:DAC寄存器写选通输入线,负脉冲有效; XFER:数据传输控制信号输入线,低电平有效; 输出线(3条) ·IOUT1: 电流输出线,当DAC寄存器为全1时IOUT1最大; ·IOUT2:电流输出线,其值和IOUT1值之和为一常数; · Rfb: 反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
RVER 输入 寄存器 DAC 寄存器 8位 DAC D0~7 IOUT1 - + VO IOUT2 PA0 AGND PA1 2. DAC 0832工作方式
直通方式:适宜连续反馈控制线路中; 使所有控制信号均有效(CS、WR1、WR2、ILE、XFER) • 单缓冲器方式:适宜一路模拟量输出,几路模拟量非同步输出,控制使两个寄存器同时有效。 • 双缓冲器方式:适宜多个DAC0832同时输出; 输入寄存器和DAC寄存器分配有各自的地址,可分别选通用同时输出多路模拟信号。 • 3. 电流输出转换成电压输出 • 使用运算放大器,可以将DAC0832的电流输出线性地转换成电压输出。根据运放和DAC0832的连接方法,运放的输出可以分为单极型和双极型两种。
DAC作为单极性电压输出 • Vout=-B×Vref/256 • B=b7*2^7+b6*2^6 +…+b0*2^0
DAC作为双极性电压输出 • 列方程: • I1+I2+I3=0 • I1=Va/R,I2=Vout/2R,I3=Vref/2R • Va=-B×Vref/256 • 解得: Vout=(B-128)*Vref/128
4. DAC0832与MCS-51的接口方法 • 一路模拟量输出,单缓冲方式
100ms • 例6-5:D/A转换程序,用DAC 0832输出0~5V锯齿波,电路为直通方式。设VREF= - 5V,DAC 0832地址为7FFFH,脉冲周期要求为100ms。 +5V 0V DACS:MOV DPTR,#7FFFH;0832 I/O地址 MOV A,#0 ;开始输出0V DACL:MOVX @DPTR,A ;输出模拟量 INC A ;升压
ACALL DELAY ;延时100ms/256 • AJMP DACL ;连续输出 • DELAY:… ;延时子程序 • 例:D/A转换程序,用DAC 0832输出-1~-5V方波,电路为直通方式。设VREF= 5V,DAC 0832地址为7FFFH。 • 解: ORG 1000H • START: MOV DPTR,#7FFFH • LOOP: MOV A, #33H -1V -5V
MOVX @ DPTR,A ;置上限电平 ACALL DELAY ;形成方波顶宽 MOV A,#0FFH MOVX @ DPTR, A ;置下限电平 ACALL DELAY ;形成方波底宽 SJMP LOOP ;循环 DELAY: …
6.6 A/D转换器及接口扩展 • A/D转换器是将模拟量转换成数字量的器件。模拟量可是电压、电流等电信号,也可是声、光、压力和温度等随时间连续变化的非电物理量。 • 非电物理量可通过合适的传感器等转换成电信号,模拟量只有转换成数字量才能被计算机采集、分析和计算处理。
A/D转换方法: • 电压频率式:精度高 价格低,但转换速度不高 • 积分式:抗干扰能力好,转换速度低 • 逐次逼近式:转换速度较快 • 并行转换: • 串行转换: