770 likes | 980 Views
第 7 章 80C51 的系统扩展. 7.1 存储器的扩展. 7.2 并行接口的扩展. 7.3 显示器及键盘接口. 本章学习目标. 1 、了解存储器的扩展原理与方法 2 、掌握常用并行接口芯片 8155 性能特点及使用方法。 3 、掌握键盘与显示器的扩展原理及方法. 7.1 存储器的扩展. 扩展功能分类图. D0 ~ D6. 数据输入. E. 输出允许. Q0 ~ Q7. G. 数据输出. +5V. GND. . 扩展时所用芯片 2. 373 引脚功能. D7 D6 D5 D4 D3 D2 D1 D0
E N D
第7章 80C51的系统扩展 7.1 存储器的扩展 7.2 并行接口的扩展 7.3 显示器及键盘接口
本章学习目标 1、了解存储器的扩展原理与方法 2、掌握常用并行接口芯片8155性能特点及使用方法。 3、掌握键盘与显示器的扩展原理及方法
7.1存储器的扩展 扩展功能分类图
D0~D6 数据输入 E 输出允许 Q0~Q7 G 数据输出 +5V GND .扩展时所用芯片2 373引脚功能 D7 D6 D5 D4 D3 D2 D1 D0 G Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 74LS373 使能端 当E=0,G=1时, 输出Q=输入D(透明); 当E=0,G=0时, 输出Q端不变(锁存) 当E=1,输出高阻态 E
7.1.1 程序存储器的扩展 .程序存储器的作用----存放程序代码或常数表格 .扩展时所用芯片----一般用只读型存储器芯片(可以是EPROM、E2PROM、 FLASH芯片等)。 .扩展电路连接---- 用EPROM 2764扩展程序存储器。 .存储器地址分析----究竟单片机输出什么地址值时,可以指向存储器中的某一单元。
7.1 存储器的扩展 7.1.1.1 EPROM扩展 P144 • 扩展总线 • 数据总线:8位--P0口 • 地址总线:低8位--P0口(分时复用) 高8位--P2口 • 控制总线: PSEN ALE
A0~A12 地址线 CE 选片 Vpp PGM OE 读 D0~D7 数据线 编程脉冲输入 编程电源 2764----8K EPROM .扩展时所用芯片1 VPP A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND Vcc PGM N.C A8 A9 A11 OE A10 CE D7 D6 D5 D4 D3 2764引脚功能 2764
8031 2764 • 数据总线的连接: • P0.0-P0.7(数据总线)------------------------------O0-O7 • 地址总线的连接: • P0.0-P0.7(地址总线低8位)-------------------- A0-A7 • P2.0-P2.4(地址总线高8位中的5位)----------- A8-A12 • 控制总线的连接: • PSEN(程序存储器允许,即读指令) ------------- OE • ALE(地址锁存允许)-------------------接373的使能端G
.存储器地址分析----究竟单片机输出什么地址值时,可以指向存储器中的某一单元。.存储器地址分析----究竟单片机输出什么地址值时,可以指向存储器中的某一单元。 P2.7p2.6p2.5P2.4 ………… P2.0 P0.7…………………P0.0 000A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0) 0 0 0 0 0 0 0 0 0 0 0 0 0( 0000H)0 0 0 0 0 0 0 0 0 0 0 0 0 1(0001H)1 0 0 0 0 0 0 0 0 0 0 0 1 0(0002H)2 0 0 0 0 0 0 0 0 0 0 0 1 1(0003H)3 0 0 0 0 0 0 0 0 0 0 1 0 0(0004H)4 . . . 1 1 1 1 1 1 1 1 1 1 1 1 1(1FFFH) 8K-1 可见,当单片机输出地址E000H~FFFFH时,选中2764的0~8K-1号单元,即按照上面电路扩展存储器的地址范围是0000H~1FFFH(共8K字节)。
.程序存储器的作用 .扩展时所用芯片 程序存储器的扩展 .扩展电路连接 .存储器地址分析 请思考:请同学们图中373 的作用,并说明没有它行不行?为什么?
A0~A12 地址线 CE 选片 OE WE 读 D0~D7 数据线 写 7.1.1.2 E2PROM的扩展 2864----8K E2PROM .扩展时所用芯片 N.C A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND Vcc WE N.C A8 A9 A11 OE A10 CE D7 D6 D5 D4 D3 2864引脚功能 2864
PSEN OE RD WE WR P2.7 CE P2.4 A12 A8 P2.0 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2864 单片机 8031 74LS 373 G P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 D0 D1 D2 D3 D4 D5 D6 D7 ALE 2864 ROM扩展电路图
用译码法扩展多片E2PROM E2PROM程序存储器扩展电路连接图
7.1.2数据存储器扩展电路 • P2口提供高8位地址,P0口分时作为低8位地址和8位双向数据总线 • 读信号RD有效时,片外RAM内容出现在P0口上,由CPU读入A • 写信号WR有效时,P0口变为数据输出方式 • 读写指令有: MOVX A,@Ri MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A
.存储器地址分析----究竟单片机输出什么地址值时,可以指向存储器中的某一单元。.存储器地址分析----究竟单片机输出什么地址值时,可以指向存储器中的某一单元。 P2.7..P2.4 ………… P2.0 P0.7…………………P0.0选中单元 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0) 0 0 0 0 0 0 0 0 0 0 0 0 0(0000H)0 0 0 0 0 0 0 0 0 0 0 0 0 1(0001H)1 0 0 0 0 0 0 0 0 0 0 0 1 0(0002H)2 0 0 0 0 0 0 0 0 0 0 0 1 1(0003H)3 0 0 0 0 0 0 0 0 0 0 1 0 0(0004H)4 . . . 1 1 1 1 1 1 1 1 1 1 1 1 1(1FFFH) 8K-1 可见,当单片机输出地址0000H~1FFFH时,选中6264的0~8K-1号单元,即按照上面电路扩展存储器的地址范围是0000H~1FFFH(共8K字节)。
6116 RAM扩展 思考题:上图中6116的地址为多少?
PSEN OE RD WE WR P2.7 CE P2.4 A12 A8 P2.0 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2864 单片机 8031 74LS 373 G P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 D0 D1 D2 D3 D4 D5 D6 D7 ALE 2864ram扩展电路图
综合扩展实例 扩展16KB RAM和16KB EPROM
§7.2 并行口的扩展 并行口扩展的分类 利用锁存器、缓冲器进行并行口简单扩展 用可编程并行接口芯片进行扩展 7.2.1 并行口的简单扩展 输出口----利用锁存器扩展 输入口----利用缓冲器扩展
PA口,8位 PB口,8位 PC口,6位 7.2.2 可编程并行接口芯片8155的扩展 一、8155的结构及引脚 8155的结构 256字节RAM 8155 三个可编程并行口 14位二进制减法计数器
8155芯片的内部结构 P153 IO/ M 口A 256B 静态 RAM A 接外设 PA0~PA7 AD0~AD7 接单片机 接外设 CE ALE RD WR RESET B 口B PB0~PB7 口C 接外设 C 定时器 定时器输入 PC0~PC5 定时器输出
PB0-PB7 PA0-PA7 PC0-PC5 AD0-AD7 C口端口线 B口端口线 A口端口线 三态地址/数据线 IO/ M 端口/存储器选择 WR TIMER IN CE RD TIMER OUT 读 ALE 定时器输入 定时器输出 地址锁存允许 写 选片 8155 8155引脚功能 P153 PC3 PC4 PC5 IO/ M CE RD WR ALE AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Vss Vcc PC2 PC1 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 TIMER IN RESET TIMER OUT
PA0-PA7 端口A的I/O线(8位,接外设) PB0-PB7 端口B的I/O线(8位,接外设) PC0-PC5 端口C的I/O线(6位,接外设) AD0-AD7 三态地址/数据复用线(8位,一般接单片机P0口,CPU与8155之间的地址、数据、命令、状态等信号都通过它来传送) 端口/存储器 选择控制 “0”选择片内RAM “1”选择片内I/O口 TIMER IN 8155片内定时器/计数器的计数脉冲输入引脚 TIMER OUT 8155片内定时器/计数器的计满回零输出引脚 分别是对8155片内的RAM或I/O口的的读、写控制信号 ALE CE 地址锁存引脚 选片 RESET 复位引脚 IO/ M RD、WR CE CE
二、8155的工作原理 1. 8155的RAM和I/O口地址 RAM地址----当IO/ M 加低电平时 此时AD0-AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是 0000 0000--1111 1111 分别指向8155 RAM 的256个存储单元。 I/O口地址----当IO/ M 加高电平时 此时AD0-AD7 (仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具体端口地址分配是: CE
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 I/O端口 ╳ ╳ ╳ ╳ ╳ 0 0 0 命令/状态口 ╳ ╳ ╳ ╳ ╳ 0 0 1 A口 ╳ ╳ ╳ ╳ ╳ 0 1 0 B口 ╳ ╳ ╳ ╳ ╳ 0 1 1 C口 ╳ ╳ ╳ ╳ ╳ 1 0 0 计数器低8位 ╳ ╳ ╳ ╳ ╳ 1 0 1 计数器高6位 8155的RAM和I/O口地址分配
2. 8155的使用(分二种情况:片内RAM的使用 各端口的使用) 8155内RAM的使用: 与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/ M 为低电平。 8155各端口(包括定时器)的使用: A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。
0—输入 PB、PA—A口、B口数据传送方向 1—输出 0—禁止 IEA、IEB— A、B口中断允许控制 1—允许 8155命令字含义 P154 TM2 TM1 IEB IEA PC2 PC1 PB PA PC2、PC1—C口数据传送方向及AB口工作方式 00—C口输入,A、B口基本I/O方式 11—C口输出,A、B口基本I/O方式 01—PC3-PC5输出,A口选通方式,B口基本I/O方式 10—A、B口选通方式 TM1、TM2—定时器/计数器控制 10 记满回零停止计数 11 启动 00 空操作 01 停止定时器
000H • 状态字格式 P154 TIMER INTEB BFB INTRB INTEA BFA INTRA • INTRX:中断请求标志。INTRX =1,表示A或B口有中断请求;INTRX=0,表示A或B口无中断请求。 • BFX:口缓冲器空/满标志。BFX=1,表示口缓冲器已装满数据,可由外设或单片机取走;BFX=0,表示口缓冲器为空,可以接受外设或单片机发送数据。 • INTEX:口中断允许/禁止标志。INTEX=1,表示允许口中断;INTEX=0,表示禁止口中断。 • TIMER:计数器计满标志。 TIMER=1, 表示计数器的原计数初值已计满回零; TIMER=0, 表示计数器尚未计满。
8155定时器/计数器P154 8155内部有一个14位减法计数器,计数脉冲来自其引脚“TIMER IN”,使用定时器前要先装入“时间常数”----14位二进制数。其格式为: 高6位计数值 低8位计数值 定时器方式 • 00 单方波 • 01 连续方波 • 单脉冲 • 连续脉冲 M2 M1
三.扩展电路的连接举例----见图7-12,接口电路非常简单,基本上是相同信号对接。 8031 8155 RESET RD WR ALE IO/M 口A RESET RD WR ALE P2.0 P2.7 PA0~PA7 CE 口B P0.0 P0.1 P0.2 P.03 P0.4 P0.5 P0.6 P0.7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 PB0~PB7 口C PC0~PC5
★请思考:对图2764的扩展,为什么扩展8155时,单片机P0口输出的地址信号没有经过373锁存而是直接接到8155的地址/数据复用线上了?★请思考:对图2764的扩展,为什么扩展8155时,单片机P0口输出的地址信号没有经过373锁存而是直接接到8155的地址/数据复用线上了?
程序: • ORG 0000H • AJMP MAIN • ORG 0030H • MAIN:MOV DPTR,#7F00H ;指向命令字端口 • MOV A,#02H ;A口为输入,B口、C口为输出 • MOVX @DPTR,A ;送命令字 • MOV DPTR,#7F01H ;指向A口地址 • MOVX A,@DPTR ;读入A口的数据 • INC DPTR ;指向B口 • MOVX @DPTR,A ;数据送入B口 • AJMP MAIN • END
P157例题 A、 B口基本输入方式,计数器方波发生器,对80C31输入脉冲进行24分频(但需要注意8155的计数最高频率约为4MHZ),初始化程序: START:MOV DPTR,#7F04H ;计数寄存器低8位 MOV A,#18H ;计数器初值#18H(24D) MOVX @DPTR,A ;计数器寄存器低8位赋值 INC DPTR ;指向计数器寄存器高6位及方式位 MOV A,#40H ;计数器为连续方波方式 MOVX @DPTR,A ;计数寄存器高6位赋值 MOV DPTR,#7F00H ;命令寄存器 MOV A,#0C2H ;设命令字 MOVX @DPTR,A ;送命令字
综合例题——多芯片扩展(使用多个芯片来进行综合功能扩展。)综合例题——多芯片扩展(使用多个芯片来进行综合功能扩展。) P2.2--P2.0 8031 PSEN A0~A7 A8~A10 A0~A7 A8~A10 373 G 2716 OE 6116(2) 6116(1) WE WE P0 CS OE OE ALE D7~D0 D7~D0 CE D7~D0 CE WR RD 8155 ALE PA A B C G2A G2B G1 AD0~AD7 P2.3 P2.4 P2.5 P2.6 P2.7 Y2 RD PB WE Y1 CE PC Y0 +5V P1.0 IO/ M
需要弄清以下几个问题: ⅰ.选片问题---- 选片信号的功能是:当某个芯片的选片信号接低电平时,意味着该芯片被选中,而当其接高电平时,意味着该芯片没有被选中,此时就好象该芯片没有连接到电路中(实际上是其各引脚处于高阻态)。在这部分以前所有扩展电路中所用的芯片的选片信号引脚CE,都是直接接地或者接某一P2口线的。 ⅱ. 译码器问题---- 芯片138是3:8译码器,它在这里的作用是输出选片信号:其输出端Y0、Y1、Y2分别用来选择8155、6116(1)、6116(2)。138的引脚及功能见下表:
138 功能表 输 出 引 脚 控 制 引 脚 输 入 引 脚 C B A G1 G2A G2B Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1
★请思考: a.为什么图中的8155的各端口地址分别是 0000H、0001H、……、0005H, 而其内部RAM地址范围是 0000H--00FFH? b.为什么图中 6116(1)的地址范围是 0800H-0FFFH?而 6116(2)的地址范围是 1000H-17FFH?
a.由图可知 图中8155的CE接138的Y0, 138的G2B、G2A和CBA分别接到8031的P2.7-P2.3,所以要选中8155,即要CE=0,则必有Y0=0, 由Y0=0得到必有G1=1,且G2A=G2B=0,CBA=000, 即8031的P2.7-P2.3=00000时,选中8155, 在此前提下,当8031的P0口输出地址是 00000000-11111111,且IO/ M=0时,选中8155的RAM单元,所以其内部RAM地址范围是 0000H--00FFH 。 当8031的P0口输出地址是 XXXXX000-XXXXX101,且IO/ M=1时,选中8155的各端口,即
P2.7 …………… P2.0 P0.7 …………… P0.0 端口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0000H) 命令口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 (0001H) PA口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 (0002H) PB口 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 (0003H) PC口 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 (0004H)计数器低 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 (0005H)计数器高 所以8155的各端口地址分别是 0000H、0001H、……、0005H。
ⅰ.图中6116(1)的CE接138的Y1,所以要选中6116(1),ⅰ.图中6116(1)的CE接138的Y1,所以要选中6116(1), 则必有Y1=0,由Y1=0得 必有 G1=1,且G2A=G2B=0,CBA=001, 即8031的P2.7-P2.3=00001时,选中6116(1), 在此前提下,当8031的P2.2-P2.0,P0.7-P0.0输出地址 000 0000 0000 -111 1111 1111时,选中6116(1)中的某一个单元,也即6116(1)的地址范围是: 0000 1000 0000 0000-0000 1111 1111 1111 即 0800H-0FFFH(共2K)。 b.同理可得6116(1)和6116(2)的地址范围分别是0800H-0FFFH和1000H-17FFH: ⅱ同样分析可知6116(2)的地址范围是1000H-17FFH
7.3 键盘及显示接口 7.3.1 显示器及接口 P163 一、 LED结构与原理 D7 D6 D5 D4 D3 D2 D1 D0 如共阳极时,输出1 1 1 1 1 0 0 0即 F8H时,显示“7”。字型表见P167。
二、LED接口(分静态、动态) ⅰ.静态LED----亮度大,硬件、软件相对简单,可以 用并行或串行方式。 共阴静态显示
a 8031 WR P2.7 P2.6 P0 373 Dp ≥1 1 a 373 Dp ≥1 1 并行输出的静态显示电路