第六章 并行接口与定时/计数器第一节 8051单片机的片内并行接口第二节 并行接口扩展与 8255A并行接口芯片第三节 LED显示器接口和键盘接口第四节 8051单片机的定时 /计数器本章要点
并行接口是单片机与外围设备进行信息交换的一种重要通道,本章主要介绍
8051单片机片内并行接口的结构,以及片外扩展并行接口的方法。
在控制系统中,按时间原则进行控制是一种重要的也是基本的工作方式,本章介绍时间原则控制部件定时器的结构及使用方法 。
第一节 8051单片机的片内并行接口一、片内并行接口的结构
1.P0口
P0口是一组 8位的三态双向口,可以作为通用的 I/ 0口使用,扩充片外器件时,也可以作为地址/数据总线复用口 。
写入 P0口数据的锁存器选择 I/ 0口或地址/数据总线的多路开关 输出驱动管可控的门电路
2.P1口
P1口一组准双向口,与 P0不同的是场效应晶体管 V1改用上拉电阻 R,因此作为输出口使用不须外接上拉电阻,写人 1,输出驱动场效应晶体管 V2截止,引脚由内部上拉电阻拉成高电平,写人 0,驱动场效应管 V2导通,输出低电平 。
3.P2口
P2口也是准双向口,与 P1不同的是其内部有一个多路开关 MUX,当它指向锁存器 Q端时作通用 I/ 0口使用 。 作为输出口,写入,1”,V2截止,上拉电阻使引脚输出高电平 。 写入,0”,V2导通输出低电平 。 作为输入口,应先向锁存器写,l”。 MUX指向地址总线时,作为高 8位地址的输出口 。 从 PCH,DPH或 P2本身输出高 8位地址 。
4.P3口
P3口也是准双向口,有两个功能,第一功能作为通用 I
/ 0口,第二功能分别作为串口,外部中断输入口,计数信号输入口和 WR,RD读写控制信号输出口使用 。
返回本章首页第二节 并行接口扩展与 8255A并行接口芯片一、扩展并行 I/O口
8051单片机将片内并行 I/ O 口视同片内
RAM,传送数据时可使用片内寄存器传送指令。若在片外扩展并行 I/O口,也可以视同片外扩展存储器,连接方法及地址空间安排也与片外存储器一样,而且要与片外存储器统一考虑,以免重叠。
1.使用三态门电路 74LS244扩展输入口图为利用 8位三态门电路 74LS244扩展输入口。单片机高位地址线选出一根与 RD相与后接 74LS244的
G引脚,作选通信号。若选用 P2.5则接口地址为
0DFFFH,若选用 P2.6,则接口地址为 0BFFFH。 注意不要与片外存储器冲突。如果要将 A的内容传送给 74LS244,可使用以下程序。
MOV DPTR,#0DFFFH
MOVX A,@DPTR

MOV DPTR,#0BFFFH
MOVX A,@DPTR
扩展输入口 扩展输入口
2.使用 D触发器电路 74LS373扩展输出口如图所示,传送数据时可使用以下程序
MOV DPTR,#0DFFFH
MOVX @DPTR,A

MOV DPTR,#0BFFFH
MOVX @DPTR,A
扩展输入口 扩展输出口二,8255A的结构与工作方式常用的扩展 I/O口芯片有 8255A,它 属于可编程的并行接口芯片,它有 A,B,C三个并行
I/O口,每个口可以通过初始化编程,使之工作在以下三种方式,它的内部结构如下图所示。
方式 0(即基本的输入输出方式 ),此方式不提供选通和应答信号,称为基本或简单的 I/O方式,可通过编程将
A,B两通道指定为 8位输人或输出口,C通道可指定为两个 4位口,输出时有锁存器,输入时无锁存器 。
方式 2(双向传送方式 ),双向传送方式指在传输中既可输入也可输出。只有 A通道可以工作于方式 2,若 A工作于方式 2,
C通道高 5位作为 A通道的联络应答信号,其余的低 3位,既可作为 B通道工作于方式 1时的联络与应答信号,也可在 B通道工作于方式 0时,将其余的低 3位作为基本的输入或输出口。
方式 1(选通输入输出方式 ),此方式通过应答联络信号,
选通动态数据。可以将 A,B两通道指定为选通方式的输入或输出口。 C通道分两组,分别作为 A和 B的联络应答信号口,
剩下的两位仍可作为基本输入或输出口。 I/O均可锁存 。
8255A的三种工作方式
A口 B口 C口方式 0 8位基本方式 8位基本方式 两个 4位分别的 I或 O 的 I 或 O 全为基本方式的 I或 O
方式 1 8位选通方式 8位选通方式 当 A,B为方式 1
的 I或 O 的 I 或 O 6位分别作为
A,B联络信号
2位作为 I或 O
方式 2 双向传送 不能工作于 当 A工作于方式 2
方式 2 5位作为 A联络信号当 B工作于方式 1
3位作为 A联络信号注,I为输入 O为输出
8255A工作方式列表三,8255A的引脚功能引脚中 A0,A1 用于
8255A芯片的片内寻址,
A0,A1的不同组合,指向片内不同的寄存器 。
A0 A1 选中的寄存器
0 0 A口的数据寄存器
0 1 B口的数据寄存器
1 0 C口的数据寄存器
1 1 控制字寄存器四,8255A与单片机的连接五,8255A初始化程序设计
8255A使用前必须向控制寄放器写入方式、置位控制字。
1.方式控制字,
D7 D6 D5 D4 D3 D2 D1 D0
标志位 无效位 被操作位选择字 置位 =1 复位 =0
注,1,C口置位复位控制宇 0
2.C口置位复位控制宇中的 D3,D2,D1用于指定要置数的对象 ( 见表 6-2) D0用于指定所要置的数 0或 1
D7 D6 D5 D4 D3 D2 D1 DO
A口 C口 B口 B口 C口标志位 A口方式 I/O选择 高 4位 I/O 方式 I/O选择 低 4位 I/O
注,方式字的标志位为 1
返回本章首页第三节 LED显示器接口和键盘接口一、显示器接口
1.静态显示方式静态显示方式指每一位显示器的字段控制是独立的,每一位的显示器都需要配一个 8位输出口来输出该字位的七段码。如果显示位数为
N,则需要 Nх8个输出口。一般片内 I/O口不足供应,需要在片外扩充。以三个 LED字符显示器组成的三位的静态显示的电路为例,需要在片外扩充 3х8个输出口去控制,设显示数据放在片内 RAM的 79H,7AH,7BH单元,下面是它的连接图与显示程序。
三位数码管构成的静态显示方式
3位字符显示器分别由 8255A的 A口,B口,C口驱动,A
口地址为 7F00H,B口地址为 7F01H,C口地址为 7F02H,控制口地址 7F03H。
静态显示程序
DISPLAY,MOV DPTR,#7F03H ;8255A初始化
MOV A,#80H
MOV @DPTR,A
MOV R7,#03H ;三个 LED
MOV R0,#79H,;取缓冲器首址
MOV P2,#7FH
MOV R1,#00H
LOOP,MOV DPTR,#TABLE
MOV A,@RO ;取出要显示的数
MOVC A,@A+DPTR ;取出七段码
MOVX @R1,A ;送段码至 A口
INC R1 ;调整输出口地址
INC R0 ;调整缓冲器地址
DJNZ R7,LOOP
RET
TABLE,DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H…….
2.动态显示方式动态显示又称为扫描显示方式,在某一时刻只让一个字位处于选通状态,其他字位一律断开,
同时在字段线上发出该位要显示的字段码,使某一位数码管被点亮,显示出相应的字符。然后依次扫描轮流点亮,只要扫描速度快,利用人眼的视觉残留效应和数码管的余辉,会使人感觉到几个位数码管都在稳定地显示。
例如要显示的数码为 6位,待显示的字符存于
69H-6EH,电路与程序如下,其中七段控制码的地址为 8000H,字位控制码的地址为 6000H 。
6位数码管构成的动态显示方式动态显示程序
DISPLAY,MOV R0,#69H
MOV R3,#01H ; 从右边开始
MOV A,R3
DIS1,MOV DPIR,#6000H
MOVX @DPTR,A ; 送位码
MOV A,@R0 ; 取缓冲器内容
ADD A,#19H ; 当前 PC与表头距离为 19
MOVC A,@A十 PC ; 取段码
MOV DPTR,#8000H
MOVX @DPTR,A
ACALL DELAY ; 延时
INC R0
MOV A,R3
( 接下)
( 续上)
JB ACC.5,DIS2 ; 显示到 6位否
RL A ; 未到调整显示的位
MOV R3,A
AJMP DISl
DIS2,RET
TABLE,DB 3FH,06H,5BH,4FH,66H,
6DH,……
DELAY,MOV R7,#02H
DELAY1,MOV R6,#0FFH
DELAY2,DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
二,键盘接口
1.独立式键盘 去抖动方式单稳芯片独立式键盘程序
P1.0的开关是否按下,可使用以下指令:
SETB P1.0
JNB P1.0,TOONE
也可以用以下指令
MOV P1,#OFFH
MOV A,P1
ANL A,#01H
JZ TOONE
独立式键盘防抖动程序
KEY,ORL P1,#07H
MOV A,P1
CPL A
ANL A,#07H ;屏蔽高位
JZ KEY ;无键按下再查
ACLLL MS20 ;有键按下延时
MOV A,P1 ;延时后再查通过延时再查,若发现无键按下,则表明第一次查到的有键按下并不是真正有键按下,
而是抖动引起的。若第二次查到仍有键按下,
才说明确实有键按下。
返回本章首页第四节 8051单片机的定时 /计数器一,定时 /计数器工作方式方式 0:作 13位计数器使用
( 图中只画出 TI,T0同 )
计数器为 13位
C/T=0对 定时脉冲计数作定时器。
C/T=1作为外部脉冲计数器 。
控制选通开关
TRl=1开始计数
TRl=0停止 计数方式 1,作为 16位计数器使用
(图中只画出 TI,T0同)
C/T=0对 定时脉冲计数作定时器。
C/T=1作为外部脉冲计数器 。
除计数器为 16位其他与方式 0相同方式 2,作为可重装时间常数的 8位计数器
(图中只画出 TI,T0同 )
C/T=0对 定时脉冲计数作定时器 C/T=1作为计数器计数器为 8位重装计数器为 8位控制计数开关
TRl=1
开始计数
TRl=0
停止 计数方式 3:组成两个独立 8位计数器只有 T0可工作于方式 3,当 T0工作于方式 3,T1
可工作于方式 0,1,2但无控制选通和中断功能。
THO和 TL0分开,
分别组成两个独立的 8位计数器控制选通开关二,TMOD寄存器的初始化在使用定时/计数器之前,要根据需要,
对 TMOD进行初始化 。
TMOD各位定义
D7 D6 D5 D4 D3 D2 D1 D0
GATE C/T M1 M0 GATE C/T M1 M0
T1 T0
M1 MO 工作方式 计数器位数
O 0 方式 0 计数器为 13位
O 1 方式 1 计数器为 16位
1 0 方式 2 8位计数器,初值能自动重装
1 1 方式 3 两个 8位计数器,仅限 T0使用
C/T=0选择定时方式,C/ T=1选择计数方式三,TCON寄存器的初始化
TCON,称为控制寄存器,控制启动和中断,
初始化时可以根据需要对 TCON赋值 。
TCON各位定义
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR0和 TRl分别为 T0或 T1运行控制位
TR0=1T0开始计数。 TR0=0禁止 T0计数。
TF0和 TFl分别为 T0与 T1的溢出标志位。
IE0,IE1为 T0,T1外部中断源向 CPU申请中断标志位。
IT0,ITl为 T0,T1中断触发方式控制位。
四、装载时间常数定时方式 0的时间常数计算定时方式 1的时间常数计算定时方式 2、方式 3的时间常数计算计数方式的时间常数的计算
)
12
(2 13 c
c
ftx
ft
时间常数为单片机晶振频率则为计满溢出时间设
)12(2 16 cftx时间常数
)12(2 8 cftx时间常数为输入脉冲数或方式方式方式
ssx
sxsx
2,32
2,1 2,0
8
1613


五、应用实例用 AT89C2051单片机产生方波信号,晶振频率为 6MHz,
用 T0定时,通过并行口 P1.0输出频率为 lkHz的方波的程序。
ORG 2000H
START,MOV TMOD,#01H ;T0工作于方式 1
MOV TLO,#06H ;时间常数初值低 8位
MOV THO,#0FFH ;时间常数初值高 8位
SETB TR0 ;启动 T0
LOOP,JBC TF0,DONE ;检查 T0溢出否
SJMP LOOP ;未计满再查
DONE,MOV TL0,#06H ;计满重装时间常数初值
MOV THO,#0FFH
CPL P1.0 ;将 P1.0输出电平反相 ;
SJMP LOOP
设计一程序,使 AT89C51的 P1.0和 P1.1分别能输出频率为 2kHz和 1kHz的方波,设晶振为 6MHz,
要求用 T0定时,
利用 T0定时器,使 P1.0和 P1.1的输出电平 定时反相,即可输出方波,采用中断方式,其程序如下:
ORG 0000H
LJMP START
ORG 000BH
LJMP DONEl
ORG 001BH
LJMP DONE2
(接下)
ORG 2000H
START,MOV SP,#60H
MOV TMOD,#03H ;送方式字
MOV TL0,#83H ;送时间常数
MOV THO,#06H ;送时间常数
MOV TCON,#50H ;送控制宇
MOV IE,#8AH ;送中断控制字
LOOP,AJMP LOOP ;等待中断
ORG 2100H ;中断服务子程序
DONE1,MOV TL0,#83H ;重装时间常数
CPL 90H ;控制方波倒相
RETI
DONE2,MOV TH0,#06H ;重装时间常数
CPL 91H ;控制方波倒相
RETI
(续上)
返回本章首页