单片机的硬件结构第五章文档.docx
《单片机的硬件结构第五章文档.docx》由会员分享,可在线阅读,更多相关《单片机的硬件结构第五章文档.docx(21页珍藏版)》请在冰点文库上搜索。
单片机的硬件结构第五章文档
第五章 MCS-51单片机系统扩展技术
5.1外部存储器的扩展
5.1.1外部程序存储器的扩展
外部程序存储器的扩展原理及时序
2.EPROM扩展电路
2716有五种工作方式
2716与8031的连接图
由图可确定2716芯片的地址范围。
方法是A10~A0从全0开始,然后从最低位开始依次加1,最后变为全1,相当于211=2048个单元地址依次选通,称为字选。
即
E2PROM 2864A的扩展
(1) 维持和读出方式:
2864A的维持和读出方式与普通EPROM完全相同。
(2)写入方式:
2864A提供了两种数据写入操作方式,字节写入和页面写入。
(3)数据查询方式:
2864A与8031的接口电路
6264的8KB地址范围不唯一(因为A14A13可为任意值),6000H~7FFFH是一种地址范围。
当向该片6000H单元写一个数据DATA时,可用如下指令:
MOV A, #DATA
MOV DPTA,#6000H
MOVX @DPTR,A
从7FFFH单元读一个数据时,可用如下指令:
MOV DPTR,#7FFFH
MOVX A,@DPTR
5.3输入/输出接口的扩展
5.3.18255A可编程并行I/O接口
8255A具有3个8位并行I/O口,称为PA口、PB口和PC口。
其中PC口又分为高4位和低4位,通过控制字设定可以选择三种工作方式:
①基本输入/输出;②选通输入/输出;③PA口为双向总线。
1.8255A的内部结构和引脚
8255A内部结构包括三个并行数据输入/输出端口,两个工作方式控制电路,一个读/写控制电路和8位总线缓冲器。
8255A内部结构和引脚
(1)端口A、B、C。
A口:
是一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。
B口:
是一个8位数据输出锁存器/缓冲器和一个8位数据输入缓冲器。
C口:
是一个8位数据输出锁存器/缓冲器和一个8位数据输入缓冲器。
通常,A口#,B口作为数据输入/输出端口,C口作为控制/状态信息端口。
C口内部又分为两个4位端口,每个端口有一个4位锁存器,分别与A口和B口配合使用,作为控制信号输出或状态信息输入端口。
(2)工作方式控制。
工作方式控制电路有两个,一个是A组控制电路,另一个是B组控制电路。
这两组控制电路共有一个控制命令寄存器,用来接收中央处理器发来的控制字。
A组控制电路用来控制A口和C口的上半部分(PC7~PC4)。
B组控制电路用来控制B口和C口的下半部分(PC3~PC0)。
(3)总线数据缓冲器。
总线数据缓冲器是一个三态双向8位缓冲器,作为8255与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。
(4)读/写控制逻辑电路。
读/写控制逻辑电路接收CPU发来的控制信号RD、WR、RESET、地址信号A1、A0 等,然后根据控制信号的要求,将端口数据读出,送往CPU或将CPU送来的数据写入端口。
8255A接口工作状态选择表
2.工作方式选择
(1)方式0:
基本输入/输出方式。
这种方式不需选通信号。
PA,PB和PC中任一端口都可以通过方式控制字设定为输入或输出。
(2)方式1:
选通输入/输出方式。
共有3个口,被分为两组。
A组包括A口和PC7~PC4,A口可由编程设定为输入或输出,PC7~PC4 作为输入/输出操作的选通信号和应答信号。
B组包括B口和PC3~PC0,这时C口作为8255A和外设或CPU之间传送某些状态信息及中断请求信号。
(3)方式2:
双向传送方式。
只有A口有方式2,此时,A口为8位双向传送数据口,C口的高5位PC7~PC3用来作为指定A口输入/输出的控制联络线。
3.8255A的控制字
(1) 方式控制字
(2)
(2)端口C置位/复位控制字
4.8255A和8031单片机的硬件接口
设8255A的A、B、C口和控制寄存器地址依次为00H、01H、02H和03H。
如果用户需要将C口的PC3 置1,PC5 置0,可编程如下:
MOV R0,#03H ;8255A控制口地址
MOV A,#07H;将PC3置1控制字
MOVX @R0,A;置PC3=1
MOV A,#0AH ;将PC5置0控制字
MOVX @R0, A;置PC5=0
5.3.28155可编程并行I/O接口
1.8155的结构与引脚
2.8155的RAM和I/O口的编址
3.8155I/O的工作方式
8155I/O的工作方式有两种:
基本I/O和选通I/O。
1)基本I/O
基本I/O为无条件传送,不需任何联络信号,8155的A口、B口、C口都可以工作于该方式。
2)选通I/O
选通I/O为条件传送,传送的方式可用查询方式,也可用中断方式。
8155的A口、B口均可工作于此方式,这时需由C口提供联络控制信号线。
这些联络控制信号线有:
(1)BF:
I/O缓冲器满标志,输出,高电平有效。
(2)STB:
选通信号,输入,低电平有效。
(3)INTR:
中断请求信号,输入,低电平有效。
以上信号线对A口和B口均适用,分别称为ABF,ASTB,AINTR和BBF、BSTB、BINTR。
它们都由C口提供,
1. 8155的命令/状态字
8155有一个命令/状态字寄存器,实际上这是两个不同的寄存器,分别存放命令字和状态字。
由于对命令寄存器只能进行写操作,对状态寄存器只能进行读操作,因此把它们统一编址,合称命令/状态寄存器。
命令字
命令字共8位,用于定义I/O口及定时器的工作方式。
对C口工作方式的说明:
D3D2=00(ALT1):
A口、B口为基本I/O,C口为输入。
D3D2=11(ALT2):
A口、B口为基本I/O,C口为输出。
D3D2=01(ALT3):
A口为选通I/O,B口为基本I/O,C口低3位为联络信号,高3位输出。
D3D2=10(ALT4):
A口、B口均为选通I/O,C口低3位作A口联络信号,高3位作B口联络信号。
对定时器运行控制位(TM2,TM1)的说明:
当TM2TM1=11时,其操作为:
当计数器未计数时,装入计数长度后,立即开始计数;当计数器正在计数时,待计数器溢出后以新装入的计数长度和方式进行计数。
5.8155的定时器/计数器
8155的定时器/计数器是一个14位的减法计数器,由两个8位寄存器构成,其格式如下:
6.8155的接口电路及应用
5.3.3键盘显示器接口8279
1.8279的组成及引脚
8279芯片有40条引脚,由单一+5V电源供电。
它主要由以下几部分组成:
(1)I/O控制和数据缓冲器;
(2)控制和定时寄存器及定时控制部分;
(3)扫描计数器;
(4)回送缓冲器与键盘去抖动控制电路;
(5)FIFO(先进后出)寄存器和状态电路;
(6)显示器地址寄存器及显示RAM。
2.8279的接口电路与应用
更新显示器和用查询方法读出16个键输入数的程序如下:
STRT1:
MOV OPTR,#7FFFH ;7FFFH为8279状态地址
MOV A,#0D1H ;清除命令
MOVX DPTR,A ;命令字输入
WAITD:
MOVX A,@DPTR;读入状态
JB ACC.7,WAITD;清除等待
MOV A,#2AH ;对时钟编程,设ALE为1MHz,
, ;10分频为100kHz
MOVX@DPTR,A;命令送入
MOV A,#08H ;显示器左边输入外部译码,双键
;互锁方式
MOVX @DPTR,A
MOV R0,#30H ;设30H~3FH存放显示字形的段数据
MOV R7,#10H ;显示16位数
MOV A,#90H ;输出写显示数据命令
MOVX @DPTR,A
MOV DPTR,#7EFFH ;7EFFH是8279数据地址
LOOP1:
MOV A,@R0
MOVX @DPTR,A ;段选码送8279显示RAM
INC R0 ;指向下一个段选码
DJN2 R7,LOOP1 ;16个段选码送完?
MOV R0,#40H ;40H为键值存放单元首址
MOV R7,#10H ;有16个键值
LOOP2:
MOVDPTR,#7FFFH ;读8279状态
LOOP3:
MOVX A,@DPTR
ANL A,#0FH ;取状态字低4位
JZ LOOP3 ;FIFO中无键值时等待输入
MOV A,#40H ;输出读FIFO的RAM命令
MOVX @DPTR,A;命令送入
MOV DPTR,7EFFH ;读键输入数据
MOVX A,@DPTR ;读入键值
MOV @R0,A ;键值存入内存40H~4FH
INC R0 ;指向下一个键值存放单元
DJNZ R7,LOOP2 ;读完10H个键入数据?
HERE:
AJMP HERE ;键值读完等待
5.4.1LED显示器接口
1.LED显示器结构与原理
2.LED显示器接口电路
程序清单如下:
DIR:
MOV R0,#79H ;显示缓冲区首址送R0
MOV R3,#01H ;使显示器最右边位亮
MOV A,R3
LD0:
MOV DPTR,#0101H ;扫描值送PA口
MOVX @DPTR,A
INC DPTR ;指向PB口
MOV A,@R0 ;取显示数据
ADD A,#12H ;加上偏移量
MOVX A,@A+PC ;取出字形
MOVX @DPTR,A ;送出显示
ACALL DL1 ;延时
INC R0 ;缓冲区地址加1
MOV A,R3;
JB ACC.5,LD1 ;扫到第6个显示位了吗?
RL A ;没有,R3左环移一位,扫描下一个显示位
MOV R3,A
AJMPLD0
LD1:
RET
DSEG:
DB 3FH,06H,5BH,4FH,66H,6DH ;显示段码表
DSEG1:
DB 7DH,07H,7FH,6FH,77H,7CH
DSEG2:
DB 39H,5EH,79H,71H,73H,3EH
DSEG3:
DB 31H,61H,1CH,23H,40H,03H
DSEG4:
DB 18H,00H,00H,00H
DL1:
MOV R7,#02H[DW];延时子程序
DL:
MOV R6,#0FFH
DL6:
DJNZ R6,DL6
DJNZ R7,DL
RET
5.4.2键盘接口
键盘实际上是由排列成矩阵形式的一系列按键开关组成,用户通过键盘可以向CPU,输入数据、地址和命令。
键盘按其结构形式可分为:
编码式键盘和非编码式键盘两类。
单片机系统中普遍使用非编码式键盘,这类键盘主要解决以下几个问题:
①键的识别;
②如何消除键的抖动;
③键的保护。
1.非编码式键盘工作原理
非编码式键盘识别按键的方法有两种:
一是行扫描法,二是线反转法。
1)行扫描法
通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所接的端口得到的是全“1”信号,如果有键按下的话,则得到非全“1”信号。
为了防止双键或多键同时按下,往往从第0行一直扫描到最后1行,若只发现1个闭合键,则为有效键,否则全部作废。
找到闭合键后,读入相应的键值,再转至相应的键处理程序。
2)线反转法
线反转法也是识别闭合键的一种常用方法,该法比行扫描速度快,但在硬件上要求行线与列线外接上拉电阻。
先将行线作为输出线,列线作为输入线,行线输出全“0”信号,读入列线的值,然后将行线和列线的输入输出关系互换,并且将刚才读到的列线值从列线所接的端口输出,再读取行线的输入值。
那么在闭合键所在的行线上值必为0。
这样,当一个键被按下时,必定可读到一对唯一的行列值。
2.键盘接口电路
下面的程序是用行扫描法进行键扫描的程序,其中KS1为判键闭合的子程序。
有键闭合时(A)=0。
DIR为数码显示器扫描显示子程序,执行一遍的时间约6ms。
程序执行后,若键闭合,键值存入A中,键值的计算公式是:
键值=行号×4+列号;若无键闭合,则A中存入标志FFH。
KEY1:
LCALL KS1 ;检查有无闭合键?
JNZ LK1 ;(A)=0,有键闭合则转
LJMP LK8 ;无闭合键则返回
LK1:
LCALL DIR ;延时12ms
LCALL DIR ;清抖
LCALL LS1 ;再检查有键闭合否?
JNZ LK2 ;有键闭合则转
LJMP LK8 ;无键闭合则返回
LK2:
MOV R3,#00H ;行号初值送R3
MOV R2,#FEH ;行扫描初值送R2
LK3:
MOV DPTR,#0101H ;指向8155口A
MOV A,R2 ;行扫描值送A
MOVX @DOTR,A ;扫描1行
INC DPTR
INC DPTR ;指向8155口C
MOVX A,@DPTR ;读入列值
ANL A,#0FH ;保留低4位
MOV R4,A ;暂存列值
CJNZ A,#0FH,LK4 ;列值非全“1”则转
MOV A,R2 ;行扫描值送A
JNB ACC.7,LK8 ;扫至最后一行则转
RL A ;未扫完,则移至下一行
MOV R2,A ;行值存入R2中
INC R3 ;行号加1
SJMP LK3 ;转至扫描下一行
LK4:
MOV A,R3 ;行号送入A
ADD A,R3 ;行号×2
MOV R5,A
ADD A,R5 ;行号×4
MOV R5,A ;存入R5中
MOV A,R4 ;列值送A
LK5:
RRC A ;右移一位
JNC LK6 ;该位为0则转
INC R5 ;列号加1
SJMP LK5 ;列号未判完则继续
LK6:
MOV 20H, R5;存键值
LK7:
LCALL DIR ;扫描一遍显示器
LCALL KS1 ;发扫描信号
JNZ LK7 ;键未释放等待
LCALL DIR ;键已释放
LCALL DIR ;延时12ms,清抖
MOV A,20H ;键值存入A中
KND:
RET
LK8:
MOV A,#FFH ;无键标志FFH存入A中
RET
KS1:
MOV DPTR,#0101H ;判键子程序
MOV A,#00H ;全扫描信号
MOVX @DPTR,A ;发全扫描信号
INC DPTR
INC DPTR ;指向8155口C
MOVX A,@DPTR;读入列值
ANL A,#0FH ;保留低4位
ORL A,#F0H ;高4位取“1”
CPL A ;取反,无键按下则全“0”
RET
/D和D/A接口功能的扩展
5.5.1A/D转换器接口
1.概述
A/D转换器用以实现模拟量向数字量的转换。
按转换原理可分为4种:
计数式、双积分式、逐次逼近式以及并行式A/D转换器。
逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几微秒到几百微秒之间。
常用的这种芯片有:
(1)ADC0801~ADC0805型8位MOS型A/D转换器;
(2)ADC0808/0809型8位MOS型A/D转换器;
(3)ADC0816/0817型8位MOS型A/D转换器;
量化间隔和量化误差是A/D转换器的主要技术指标之一。
量化间隔由下式计算:
2.典型A/D转换器芯片ADC0809简介
下面的程序是采用查询方法,分别对8路模拟信号轮流采样一次,并依次把结果转存到数据存储区的采样转换程序。
MOV R1,#data ;置数据区首址
MOV DPTR,#7FF8H ;P2.7=0,指向通道0
MOV R7,#08H ;置通道数
LP1:
MOVX @DPTR,A ;启动A/D转换
MOV R6,#0AH ;软件延时
DALY:
NOP
NOP
NOP
NOP
NOP
DJNZ R6,DALY
MOVX A,@DPTR ;读取转换结果
MOV @R1,A ;存储数据
INC DPTR ; 指向下一个通道
INC R1 ; 修改数据区指针
DJNZ R