第 8章 并行接口与应用
8.1 并行接口的基本概念
8.2 可编程并行接口芯片 8255A
8.3 可编程并行接口芯片 8155
8.4 单片机与键盘和数码管显示器的接口电路退出
8.1 并行接口的基本概念
MCS-51单片机有四个并行 I/O口 。 当用 MCS-51单片机组成的应用系统需外扩程序存储器和数据存储器时,真正可用的并行口,就只有一个 P1口了 。
8.2 可编程并行接口芯片
8255A
8.2.1 8255A的内部结构及引脚
2,8255A的引脚
( 1) 8255A与单片机相连的引脚
8255A采用 NMOS工艺制造,有 40个引脚,采用双列直插式封装形式 。 其引脚如图 8-2所示 。
8.2.3 MCS-51单片机与 8255A的接口
【 例 8-3】 试设计一个 8031单片机与并行接口芯片
8255A的接口电路 。 端口 A接一组指示灯,显示的内容由 A口输出至指示灯; 端口 B接一组开关,将开关的内容由 B口输入,并将此开关状态通过 A口由指示灯显示出来 。 8255A的 A口,B口,C口和控制字的地址分别为 7F00H,7F01H,7F02H和 7F03H。
8031单片机与 8255A的接口电路如图 8-13所示 。
参考程序如下:
ORG 1000H
MOV DPTR,#7F03H
MOV A,#82H
MOVX @DPTR,A
MOV DPTR,#7F01H
MOV A,@DPTR
DEC DPTR
MOV @DPTR,A
RET
8.3 可编程并行接口芯片
8155
8.3.1 8155的内部结构及引脚
1,8155的内部结构
2,8155的引脚
Intel8155为 HMOS型芯片,40个引脚采用双列直插式封装 。 其引脚如图 8-15所示 。
3,8155的寄存器
( 1) 命令寄存器
8155只有一个控制字,命令寄存器决定 A口,B口,
C口和定时器 /计数器的工作方式及功能 。 其位格式为:
PA:决定 A口的工作方式 。 PA=0,A口为输入方式; PA=1,A口为输出方式 。
PB:决定 B口的工作方式 。 PB=0,B口为输入方式; PB=1,B口为输出方式 。
PC2,PC1:决定 PC口的工作方式 。
PC2PC1 ( ALT1) =00,A口,B口为基本输入 /输出,
C口为基本输入口;
PC2PC1 ( ALT2) =01,A口,B口为基本输入 /输出,C口为基本输出口;
PC2PC1 ( ALT3) =10,A口为选通输入 /输出口,
B口为基本输入 /输出口;
PC2PC1 ( ALT4) =11,A口,B口为选通输入 /输出口 。
IEA,A口中断允许位。 IEA=1允许 A口中断,
IEA=0禁止 A口中断。
IEB,B口中断允许位。 IEB=1允许 B口中断,
IEB=0禁止 B口中断。
TM2,TM1:定时 /计数器命令。
TM2TM1=00,空操作,不影响计数器操作;
TM2TM1=01,停止计数器计数;
TM2TM1=10,定时 /计数器长度减为 0时停止计数;
TM2TM1=11,连续方式,当计数器赋予初值后,立即 启动定时 /计数器;若正在计数,则置新的方式和长度,计数结束后按新的方式和新的时间常数计数。
( 2) 状态寄存器状态寄存器由 7位寄存器组成,其中 6位用于表示 A
口和 B口的状态,1位表示定时 /计数器的状态 。 此寄存器为只读寄存器其位格式为:
INTRA,A口中断请求位 。
BFA,A口缓冲器满标志位 。
INTEA,A口中断允许位 。
INTRB,B口中断请求位 。
BFB,B口缓冲器满标志位 。
INTEB,B口中断允许位 。
TIMER:定时中断请求位 。
( 3) PA寄存器
( 4) PB寄存器
( 5) PC寄存器
PC0~ 5的工作方式及各位的作用如表 8-5所示 。
其中,T0~ T14构成 14位计数器。定时 /计数器是递减计数器,对输入脉冲计数。当计数器计到 0时,可从定时计数器的输出端输出一个脉冲或方波。 M2M1
决定定时器的输出波形。
当,M2M1=00时,定时 /计数器的输出波形为单个方波;
M2M1=01时,定时 /计数器的输出波形为连续方波;
M2M1=10时,定时 /计数器的输出波形为单个脉冲;
M2M1=00时,定时 /计数器的输出波形为连续脉冲 。
8.3.2 8155的工作方式
8155的工作方式有两种:基本输入 /输出方式和选通工作方式 。 这两种工作方式与 8255的方式 0和方式 1
具有相同的时序;不同的是,工作在选通工作方式时,
8155的输入 /输出共用一组联络信号 。
8.3.3 MCS-51单片机与 8155的接口
【 例 8-4】 试设计一个 8031单片机与并行接口芯片
8155的接口电路,并对 8155进行初始化编程:让 8155
的 PA口,PB口工作在基本输入 /输出方式,其中,A口为输出,B口为输入,对输入脉冲进行 32分频,定时器作为脉冲发生器,输出连续脉冲。
对 8155I/O口地址分配如下:
命令 /状态寄存器的地址,7F00H
PA口的地址,7F01H
PB口的地址,7F02H
PC口的地址,7F03H
定时器低 8位的地址,7F04H
定时器高 8位的地址,7F05H。
8031单片机与并行接口 8155的接口电路如图 8-17
所示。
8155初始化参考程序如下:
MOV DPTR,#7F04H
MOV A,#20H;对计数器的低 8位赋初值
MOVX @DPTR,A
INC DPTR
MOV A,#C0H ;设定定时器为连续脉冲输出
MOVX @DPTR,A;装入定时器高 8位
MOV DPTR,#7F00H
MOV A,#0C1H;设定命令控制字,并启动定时器
MOVX @DPTR,A
8.4 单片机与键盘和数码管显示器的接口电路
8.4.1 键盘接口
1,按键电路和抖动的消除键盘中的每一个按键为常开状态,如图 8-18所示 。
2,非编码键盘的结构非编码键盘分为独立式非编码键盘,和行列式非编码键盘 。 下面分别进行介绍 。
( 1) 独立式非编码键盘独立式非编码键盘,是每个按键独立地占用一条数据输入线 。 如图 8-21所示 。 当某一按键闭合时,相应的 I/O线变为低电平 。
判断是否有键按下的方法,是查询每一个连接按键的 I/O线 。 当查询到的 I/O线为低电平时,便知此键按下 。
( 2) 非编码行列式键盘非编码行列式键盘是将 I/O线的一部分作为行线,
另一部分作为列线,按键设置在行线和列线的交叉点上 。 行列式键盘的数量为:行线数 m乘以列线数 n。 图
8-22是一个 4× 4行列式键盘,按键数量为 16个 。
3,非编码键盘按键的处理过程
( 1) 键盘处理程序的功能
a 首先应判断键盘中有无键按下
b消除键的抖动
c求键号 对 I/O口中的 D3~ D0依次输出下列扫描信号,
D3 D2 D1 D0
第一次 1 1 1 0
第二次 1 1 0 1
第三次 1 0 1 1
第四次 0 1 1 1
( 2)中断扫描方式
2,数码管显示器接口
【 例 8-5】 如图 8-26,通过并行接口芯片 8155扩展 6
位动态数码管显示电路,轮流点亮各 LED数码管,每位点亮 2ms,重复此过程 。
让 8155的 PA口,PB口,工作在基本输出方式 。
PB口输出显示代码,PA口输出位选码 。 设 PA口的地址为 7F01H,PB口的地址为 7F02H,控制字寄存器的地址为 7F00H,显示缓冲区为 60H~ 65H。 其显示程序流程,如图 8-27所示 。
参考程序如下:
START,MOV A,#03H;
对 8155初始化
MOV DPTR,#7F00H
MOVX @DPTR,A
MOV R0,#60H;
置显示缓冲区首地址
MOV R2,#01H;
置位选码初值
MOV A,R2
LOOP,MOV DPTR,#7F01H
MOVX @DPTR,A
INC DPTR
MOV A,@R0
ADD A,#0DH;
形成查表的偏移地址
MOVC A,@A+PC
DIR,MOVX @DPTR,A
ACLL DELAY;延时
INC R0
MOV A,R2
JB ACC.5,LOOP1;
判断 6位是否显示完毕
RL A
MOV R2,A
AJMP LOOP
LOOP1,RET
DB 3FH,06H,5BH,
4FH,66H,6DH
DB 7DH,07H,7FH,
6FH,77H,7CH
DB 39H,5EH,79H,71H
DELAY,MOV R7,#04H
DELAY1,MOV R6,#0FFH
DELAY2,DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
通过 8155扩展 24键键盘和 6位动态数码管显示器的接口电路,如图 8-28所示,供读者参考。