第 7 章 i/o 扩展及应用

61
7-1 为为为为为 I/O 7-2 为为为为为为为 7-3 为为为为为为 8255 7-4 为为为为为为为 8155 7 7 I/O I/O 为为为为为 为为为为为 7-5 8279 为为为为为为 7-6 为为为为为为 7-7 为为为为为为为 7-8 为为为为为为为

Upload: harry

Post on 11-Jan-2016

66 views

Category:

Documents


3 download

DESCRIPTION

第 7 章 I/O 扩展及应用. 7-1 为何要扩展 I/O. 7-2 单片机并行接口. 7-3 并行接口芯片 8255. 7-4 多功能接口芯片 8155. 7-5 8279 专用接口芯片. 7-6 键盘接口技术. 7-7 显示器接口技术. 7-8 打印机接口技术. I/ O 接 口. I/ O 设 备. 微 型 机. I/ O 接 口. I/ O 设 备. 7-1 为何要扩展 I/O. 原因: 1 、单片机本身接口功能有限; 2 、控制应用中的复杂接口要求:速度差异大、设备 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章    I/O 扩展及应用

7-1 为何要扩展I/O7-2 单片机并行接口7-3 并行接口芯片82557-4 多功能接口芯片8155

第第 77 章 章 I/OI/O 扩展及应用扩展及应用

7-5 8279专用接口芯片

7-6 键盘接口技术7-7 显示器接口技术

7-8 打印机接口技术

Page 2: 第 7 章    I/O 扩展及应用

7-1 7-1 为何要扩展为何要扩展 I/OI/O原因:原因: 11 、单片机本身接口功能有限;、单片机本身接口功能有限; 22 、控制应用中的复杂接口要求:速度差异大、设备、控制应用中的复杂接口要求:速度差异大、设备 种类繁多、数据信号形式多种多样。种类繁多、数据信号形式多种多样。I/I/OO 设备必须通过设备必须通过 I/I/OO 接口与计算机连接。接口与计算机连接。

I/I/OO 接口的功能:接口的功能:(返回)(返回)11 、、速度协调:速度协调: 锁存数据、传送联络信号。锁存数据、传送联络信号。22 、、数据格式转换:数据格式转换: 并并 ---- 串转换、串转换、 A/DA/D 、、 D/AD/A 转换。转换。33 、、电平转换:电平转换: 电平幅值或正电平幅值或正 // 负逻辑转换。负逻辑转换。44 、、隔离:隔离: 多个设备信号通过接口三态门隔离干扰信号。多个设备信号通过接口三态门隔离干扰信号。55 、输入三态、输入三态缓冲:缓冲:66 、、输出锁存驱动:输出锁存驱动:驱动多个逻辑部件或大功率执行部件驱动多个逻辑部件或大功率执行部件。。

微型机

I/O接口

I/O接口

I/O设备

I/O设备

Page 3: 第 7 章    I/O 扩展及应用

7-1-1 I/7-1-1 I/OO 接口信号及编址技术接口信号及编址技术一、一、 CPUCPU 与与 I/I/OO 之间接口信号:之间接口信号:每个每个 I/I/OO 接口分配有对应的接口分配有对应的 I/I/OO 地址。地址。

11 、、数据信息:数据信息:微型机与外设交换的数据,微型机与外设交换的数据,经接口数据经接口数据缓冲器缓冲器传送。传送。22 、、状态信息:状态信息:反映外设工作状态的信号。反映外设工作状态的信号。33 、、控制信息:控制信息:设定设定 I/I/OO 电路工作方式的信号。电路工作方式的信号。

数据总线传递三种信息,用不同数据总线传递三种信息,用不同 I/I/OO 地址区别:地址区别:输入输入 // 输出数据缓冲器共用一个输出数据缓冲器共用一个 I/I/OO 地址:数据端口。地址:数据端口。状态状态 // 控制寄存器共用一个控制寄存器共用一个 I/I/OO 地址:控制地址:控制 // 状态端口。状态端口。

DB

AB

RD

WR

INT微型机

DIO D

AIO S

RDIO C

WR

INTI/O 接口

D

Ready

STB

I/O 设备

Page 4: 第 7 章    I/O 扩展及应用

二、二、 I/I/OO 编编址方式:址方式:需要编址的子系统:存储器和接口电路。需要编址的子系统:存储器和接口电路。一、存储器地址方式:一、存储器地址方式:统一编址统一编址 I/I/OO 接口共用存储器的地址空间,每个接口共用存储器的地址空间,每个 I/I/OO 端口视为一个存端口视为一个存

储单元。储单元。二、专用二、专用 I/I/OO 地址方式:地址方式:独立编址独立编址 有专用有专用 I/I/OO 控制信号和控制信号和 I/I/OO 指令。指令。 I/I/OO 接口独立编址,不接口独立编址,不

占用存储器的地址空间。如的占用存储器的地址空间。如的 Z80Z80 。。 MCS-51MCS-51 、、 9696 为为存储器地址方式存储器地址方式(统一编址)(统一编址)。。 MCS-51MCS-51 单片机有片内单片机有片内 I/I/OO 接口和扩展接口和扩展 I/I/OO 接口。接口。 片内片内 I/I/OO 接口寄存器在接口寄存器在 SFRSFR 中,使用片内数据存储器空间,中,使用片内数据存储器空间,

扩展扩展 I/I/OO 接口使用片外数据存储器地址空间:接口使用片外数据存储器地址空间: 输出指令:输出指令: 输入指令:输入指令:

片内寻址:片内寻址: MOVMOV P1 P1 ,, AA MOVMOV A A ,, P1P1片外寻址:片外寻址: MOVX @DPTRMOVX @DPTR ,, AA MOVX AMOVX A ,, @DPTR@DPTR

MOVX @R0MOVX @R0 ,, AA MOVX AMOVX A ,, @R0@R0

Page 5: 第 7 章    I/O 扩展及应用

7-1-2 I/7-1-2 I/OO 控制方式控制方式一、无条件传送(同步程序传送)方式:一、无条件传送(同步程序传送)方式:已知已知 I/I/OO 设备准备就绪,可直接进行数据传送。设备准备就绪,可直接进行数据传送。适用:适用: 11 、具有常驻的或变化缓慢的数据信号的设备。、具有常驻的或变化缓慢的数据信号的设备。 如:指示灯、数码管等;如:指示灯、数码管等; 22 、工作速度快,足以和单片机同步工作的设备。、工作速度快,足以和单片机同步工作的设备。 如:如: DACDAC 等。等。

二、查询方式: 二、查询方式: (有条件传送方式)(有条件传送方式)先查询先查询 I/I/OO 设备当前状态,设备当前状态,若准备就绪,则交换数据,若准备就绪,则交换数据,否则循环查询状态。否则循环查询状态。1.1. 硬件查询电路:硬件查询电路:设置状态锁存和数据锁存电路。设置状态锁存和数据锁存电路。

DB

AB

微型机

AB

数据端口

状态端口

外部设备

I/O 接口

D6

Page 6: 第 7 章    I/O 扩展及应用

2.2. 软件查询程序:软件查询程序:

INPUTINPUT :: MMOOV DPTRV DPTR ,, #SATUS #SATUS ;状态口地址;状态口地址 WAITWAIT :: MMOOVX AVX A ,, @DPTR@DPTR

JBJB ACC.6ACC.6 ,, WAITWAIT MMOOV DPTRV DPTR ,, #DATA #DATA ;数据口地址;数据口地址 MMOOVX AVX A ,, @DPTR@DPTR

查询状态

输入 / 输出数据

准备就绪?Y

N

查询方式只适用:查询方式只适用:单道作业、规模比较小的单片机系统。单道作业、规模比较小的单片机系统。

先输入状态,决定是否进行数据传送。先输入状态,决定是否进行数据传送。

Page 7: 第 7 章    I/O 扩展及应用

三、中断方式(程序中断方式): 大多数时间计算机与外设并行工作,计算机不必因等待而浪费资源。当外设准备就绪,向 CPU 发出中断请求信号。 CPU 暂停当前程序,执行 I/O 操作。当 I/O 操作结束, CPU 仍继续被中断的工作。

四、直接存储器访问方式:四、直接存储器访问方式:(DMA—Direct Memory Access)(DMA—Direct Memory Access) 用于计算机与高速外设进行大批量数据交换,由用于计算机与高速外设进行大批量数据交换,由

DMADMA 控制器接管总线控制权,控制器接管总线控制权, RAMRAM 与外设之间直接与外设之间直接数据传输,不需数据传输,不需 CPUCPU 的介入。的介入。

Page 8: 第 7 章    I/O 扩展及应用

7-27-2 单片机并行接口单片机并行接口

并行并行 I/I/OO 接口:接口:用于微型机与外部设备之间并行传送数据。用于微型机与外部设备之间并行传送数据。

7-2-1 MCS-517-2-1 MCS-51 的并行接口的并行接口44 个个 88位双向并行位双向并行 I/I/OO 接口:接口:PP0.00.0~ ~ PP0.70.7 、、 PP1.01.0 ~~ PP1.71.7 、、 PP2.02.0 ~~ PP2.72.7 、、 PP3.03.0~~ PP3.73.7 。。均为多功能均为多功能 I/I/OO 接口,接口, CPUCPU按当前操作自动进行功能切换。按当前操作自动进行功能切换。

片内片内接口寄存器在接口寄存器在 SFRSFR 中的映象地址:中的映象地址:11 、、 I/I/OO 数据锁存器:数据锁存器: PP00 、、 PP11 、、 PP22 、、 PP33 、、 SBUFSBUF 。。22 、、 I/I/OO 控制控制 // 状态寄存器:状态寄存器: IEIE 、、 IPIP 、、 TCONTCON 、、 TMOD TMOD 、、 SCONSCON 、、 PCONPCON 。。

Page 9: 第 7 章    I/O 扩展及应用

一、并行接口内部结构:一、并行接口内部结构:

输出锁存器、输出驱动器、输入缓冲器及多路功能切换电路。1 )输出操作:输出数据经过内部总线暂存到输出锁存器中,经 过输出驱动器送到 I/O 引脚上。输出锁存器的内容可读入修改。2 )输入操作: I/O 引脚输入数据经过输入缓冲器送到内部总线上。

Page 10: 第 7 章    I/O 扩展及应用

3.3.读读 --修改修改 --写: 修改输出锁存器的内容。锁存器中的数据通过写: 修改输出锁存器的内容。锁存器中的数据通过 上三态门进入内部总线,修改后再写入到锁存上三态门进入内部总线,修改后再写入到锁存 器中。器中。 读读 --修改修改 --写指令:并行口为目的操作数的指令:写指令:并行口为目的操作数的指令: 如:如: ANL P1ANL P1 ,, AA

1.1. 输出输出锁存锁存:输出将使数据写入:输出将使数据写入输出锁存器输出锁存器。。 输出指令:输出指令: MOVMOV P1P1 ,, AA

MOVMOV P1.0P1.0 ,, CC2.2. 输入三态:输入从输入三态:输入从 I/OI/O引脚上输入信号,读信号打开,引脚引脚上输入信号,读信号打开,引脚 信号通过下三态门进入内部总线。为保证可靠信号通过下三态门进入内部总线。为保证可靠 输入,先写入“输入,先写入“ 1”1”。。

MOVMOV P1P1 ,, #0FFH#0FFH ;使输出驱动器截止;使输出驱动器截止MOVMOV AA ,, P1P1 ;输入;输入

P0P0~~ P3P3 的复位状态均为的复位状态均为 FFHFFH,自动处于输入状态。,自动处于输入状态。

二、并行接口的三种操作:二、并行接口的三种操作:

Page 11: 第 7 章    I/O 扩展及应用

三、并行口的使用:三、并行口的使用:

2.P12.P1 口:称为用户口:称为用户 I/I/OO 接口。对片内接口。对片内 EPREPROOMM 编程时,用作编程时,用作 EPREPROOMM低低 88位地址信号线。位地址信号线。

四、四、接口负载能力:接口负载能力: P0P0 驱动驱动 88 个个 TTLTTL 电路,电路, P1P1 ,, P2P2 ,, P3P3 可驱动可驱动 44 个个 TTLTTL 电路。电路。

33. . P2P2 口:双向口:双向 I/I/OO 接口或高接口或高 88位地址总线位地址总线 ABAB88~~ 1515 。。

对读写片外存储器后,引脚仍恢复输出锁存器的内容。对读写片外存储器后,引脚仍恢复输出锁存器的内容。 可用于读写片外数据存储器:可用于读写片外数据存储器:

MOVMOV P2 P2 ,, #20H#20HMOVMOV R0 R0 ,, #00#00MOVX AMOVX A ,, @R0@R0

4. 4. P3P3 口:双向并行接口和第二功能:口:双向并行接口和第二功能:串行接口引脚:串行接口引脚: TXDTXD 、、 RXDRXD中断输入引脚:中断输入引脚: INT0INT0 、、 INT1INT1定时器输入引脚:定时器输入引脚: T0T0 、、 T1T1读写控制线:读写控制线: RDRD 、、 WRWR

1. 1. P0P0 口:并行双向接口或系统总线口:并行双向接口或系统总线 DBDB00 ~~ 77/AB/AB00 ~~

77 。。 P1P1 、、 P2P2 和和 P3P3 为准双向口。为准双向口。

Page 12: 第 7 章    I/O 扩展及应用

五、 五、 应用举例:应用举例:例:例:用用 44 个发光二极管对应显示个发光二极管对应显示 44 个开关的开合状态。个开关的开合状态。

如如 P1.0P1.0合则合则 P1.4P1.4亮,其余依此类推。亮,其余依此类推。

1.1. 无条件传送方式:无条件传送方式:(见(见 P166P166 )) 指示灯立即反映开关状态。指示灯立即反映开关状态。

ORG 0000HORG 0000H AJMP MAINAJMP MAIN ORG 0100HORG 0100H

MAINMAIN :: MOV AMOV A ,, #0FFH#0FFH

MOV P1MOV P1 ,, A A ;;熄发光二极管熄发光二极管 MOV AMOV A ,, P1 P1 ;输入开关状态;输入开关状态 SWAP ASWAP A

MOV P1MOV P1 ,, A A ;开关状态输出;开关状态输出 SJMP MAINSJMP MAIN

Page 13: 第 7 章    I/O 扩展及应用

2.2. 中断传送方式: (见中断传送方式: (见 P167P167 ))

ORG 0000HORG 0000H AJMP MAINAJMP MAIN ORG 0003HORG 0003H AJMP IOINTAJMP IOINT ORG 0100HORG 0100H

MAINMAIN : : SETB IT0 SETB IT0 ;;脉冲边沿触发脉冲边沿触发 SETB EX0 SETB EX0 ;;外部中断外部中断 00允许允许 SETB EA SETB EA ;总中断允许;总中断允许

HEREHERE :: SJMP HERE SJMP HERE ;等待中断;等待中断 ORG 0500HORG 0500H

IOINTIOINT :: MOV AMOV A ,, #0FFH #0FFH ;中断程序;中断程序 MOV P1MOV P1 ,, A A ;熄发光二极管;熄发光二极管 MOV AMOV A ,, P1 P1 ;输入开关状态;输入开关状态 SWAP ASWAP A MOV P1MOV P1 ,, A A ;开关状态输出;开关状态输出 RETI RETI ;中断返回;中断返回

+5V

P1.7

P1.6

P1.5

1.4

P1.3

P1.2

P1.1

P1.0

INT0

MCS-51

K

先设好开关状态,然后发出中断请求信号,改变指示灯亮灭状态。

Page 14: 第 7 章    I/O 扩展及应用

7-37-3 可编程通用并行接口芯片可编程通用并行接口芯片 82582555

7-3-17-3-1 结构与引脚结构与引脚

8255 用于扩展单片机并行 I/O 接口。

一、结构:一、结构:1. 31. 3 个个 88位并行位并行 I/I/OO 接口接口 PAPA 、、 PBPB 和和 PCPC :: 包含包含 I/OI/O 数据锁存器,控制寄存器和状数据锁存器,控制寄存器和状

态寄存器。态寄存器。2. 22. 2组控制: 组控制: AA组:组: PAPA 和和 PCPC00~~ 33 ;; BB组:组: PBPB 和和 PCPC44~~ 77 ::

Page 15: 第 7 章    I/O 扩展及应用

3. 33. 3 种工作方式:种工作方式:方式方式 00 (基本(基本 I/I/OO 方式)方式):: AA 口、口、 BB 口、口、 CC 口均为数据口均为数据 I/OI/O 。输出锁存,输入。输出锁存,输入

三态,不用联络信号。三态,不用联络信号。 适用于无条件或查询方式的数据传送。适用于无条件或查询方式的数据传送。方式方式 11 (选通(选通 I/I/OO 方式):方式): AA 口和口和 BB 口用于数据口用于数据 I/OI/O ,输入,输入 // 输出均锁存, 输出均锁存, CC

口用于传送联络信号,读口用于传送联络信号,读 CC 口可了解外设当前状态。口可了解外设当前状态。 适用于查询或中断方式的数据适用于查询或中断方式的数据 I/OI/O 。。方式方式 22 (双向数据传送方式):(双向数据传送方式): AA 口为数据口为数据 I/I/OO ,, BB 口只能为方式口只能为方式 00 ,, CC 口用作口用作 AA

口双向传送的联络信号线。口双向传送的联络信号线。 适用于查询或中断方式的数据适用于查询或中断方式的数据 I/OI/O 。。

Page 16: 第 7 章    I/O 扩展及应用

引脚(引脚( 4040脚):脚):1.1. 数据线:数据线:DD00~~ 77 ::传送计算机与传送计算机与 82558255 之间的数据、控制字和状态字。之间的数据、控制字和状态字。PAPA00~~ 77 PB PB 0 0~~ 77 PC PC00~~ 77 ::传送传送 82558255 与外设之间的数据和联络与外设之间的数据和联络 信息,信息, PCPC00~~ 77 可用作数据线或联络线。可用作数据线或联络线。2.2. 地址线:地址线:CSCS ::片选线片选线AA11 、、 AA00 ::口选线,寻址 口选线,寻址 PAPA 、、 PBPB 、、 PCPC 数据口和控制口。数据口和控制口。

3.3.读写控制线:读写控制线:RDRD 、、 WRWR 控制计算机与控制计算机与 82558255 之间的信息传送和流向。之间的信息传送和流向。

4.4. 复位线:复位线:RESETRESET高电平复位,使内部寄存器全部清零。高电平复位,使内部寄存器全部清零。

Page 17: 第 7 章    I/O 扩展及应用

三、例题:三、例题:例:例:求求 82558255 口地址:口地址:解:解: AA 口口 (7F00H)(7F00H);;

BB 口口 (7F01H)(7F01H);; CC 口口 (7F02H)(7F02H);; 控制口控制口 (7F03H)(7F03H)。。

P0

P2.7

80C51

A0

A1

CS8255

373Q0

Q1

ABi : 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0A 口: 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 7F00HB 口: 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 7F01HB 口: 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 7F02H控制口: 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 7F03H

Page 18: 第 7 章    I/O 扩展及应用

7-3-2 82557-3-2 8255 编程规定编程规定

方式选择控制字:方式选择控制字: DD77=1=1CC 口置位口置位 // 复位控制字:复位控制字: DD77=0=0

控制字 D7 D6 D5 D4 D3 D2 D1 D0

方式 1 A 组方式 PA PC4~7 方式 PB PC0~3

置/复位 0 位选择 1 / 0

8255 初始化编程:往控制口写入控制字,确定 8255 工作方式。 (见 P184 ,应用见 P218 )

Page 19: 第 7 章    I/O 扩展及应用

方式选择控制字方式选择控制字

8255A8255A 方式选择注意:方式选择注意:有三种基本工作方式: 有三种基本工作方式:

方式方式 0——0—— 基本的输入输出方式 基本的输入输出方式 方式方式 1——1—— 选通的输入输出方式 选通的输入输出方式 方式方式 2——2—— 双向传输方式 双向传输方式

只有端口只有端口 AA 能工作在方式能工作在方式 22 ; ; 同一组的两端口可分别工作在输入和输出方式。同一组的两端口可分别工作在输入和输出方式。

Page 20: 第 7 章    I/O 扩展及应用

例:例: 8255PA8255PA 口方式口方式 00 输出单片机片内输出单片机片内 RAMRAM 数据,数据, PBPB 口方式口方式 11 输入…。输入…。PIOSPIOS :: MMOOVV DPTR DPTR ,, #7F03H#7F03H ;控制口地;控制口地

址址 MMOOVV A A ,, #86H#86H ;写控制字;写控制字 MMOOVX @DPTRVX @DPTR ,, AA ;设工作方式;设工作方式 MMOOVV DPTR DPTR ,, #7F00H #7F00H ;; PAPA 数据口地址数据口地址 MMOOVV A A ,, @R0@R0 ;取;取 RAMRAM 的数据的数据 MMOOVX @DPTRVX @DPTR ,, AA ;由;由 PAPA 口输出口输出

……

Page 21: 第 7 章    I/O 扩展及应用

7-4 7-4 可编程多功能接口芯片可编程多功能接口芯片 81558155

7-4-1 7-4-1 结构和引脚结构和引脚

比 8255 功能更强: 3 个并行口 PA0 ~ 7 、 PB0 ~ 7 、 PC0 ~ 5 ; 256 字节 RAM ; 1 个 14 位减法减法定时器。

一、 8155 逻辑结构:

Page 22: 第 7 章    I/O 扩展及应用

二、引脚功能(二、引脚功能( 4040脚):脚):

2.2. 地址线:地址线:CECE::片选信号。片选信号。IIOO/M/M ::选择口选择口 /RAM/RAM 单元。单元。(分开编址)(分开编址)ADAD00~~ 77 :: 66 个个 I/I/OO 口和口和 256256字节字节 RAMRAM 地址。地址。

3.3. 控制线:控制线:ALEALE::地址锁存信号。地址锁存信号。RDRD 、、 WRWR ::读、写控制信号。读、写控制信号。4.4. 定时器输入定时器输入 // 输出线:输出线: TIMERINTIMERIN 、、 TIMERTIMEROOUTUT (减法记数)(减法记数)。。5.5. 复位线:复位线: RESETRESET 。。

P0.0 ~ 0.7

P2.6

P2.7

ALE

80C51

AD0 ~ 7

IO/M

CS

ALE

8155

1. 数据线:

AD0 ~ 7 :传送 8155 与计算机之间的数据、控制字和状态字。

PA0 ~ 7 、 PB0 ~ 7 、 PC0 ~ 5 :传送 8155 与外设之间的信息。

Page 23: 第 7 章    I/O 扩展及应用

7-4-2 81557-4-2 8155 的工作方式的工作方式一、一、 81558155 的工作方式:的工作方式:33 个个 I/OI/O 口:口: PAPA 、、 PBPB 、、 PCPC

PAPA 、、 PBPB :都为:都为 88 位,通用数据口,只位,通用数据口,只 I/O 2I/O 2 种工作方式;种工作方式;PCPC :: 66 位,数据口或控制口,有位,数据口或控制口,有 44 种工作方式:种工作方式: 无条件方式传送数据:无条件方式传送数据:输入方式、输出方式;输入方式、输出方式; 中断方式传送数据时:中断方式传送数据时: PAPA 口控制端口方式、口控制端口方式、 PAPA 和和 PBPB 口控制端口方式。口控制端口方式。二、 8155 与单片机的连接和编址(分开编址)(分开编址):1 、只需使用 AD2 ~ AD0 即可实现编址。 8155 共有: 256 个 RAM 单元: 00H ( 08H )~ FF

H ; 6 个可编址的端口: 命令 / 状态寄存器: 00H ; PA 口 : 01H ; PB 口 : 02H ; PC 口 : 03H ; 定时器 / 计数器低 8 位: 04H ; 定时器 / 计数器高 8 位: 05H 。

Page 24: 第 7 章    I/O 扩展及应用

PA7 0~8

PB7 0~8

PC5 0~6

ALE

RD

WR

RESET

P0 AD80C51

ALE

RD

WR

RESET

8155

IO/M

CE

8

P2.1P2.0

(( 22 )以高位地址直接作为)以高位地址直接作为 IO/MIO/M 信号:信号:

将 P2.0 接 IO/M 信号,将 P2.1 接片选信号 CE 。当 IO/M=1 时:可编程端口地址范围依次为 0100H ~ 0105

H 。当 IO/M=0 时: 对应内部 RAM 地址范围为 0000H ~ 00F

FH 。适用:有多片 I/O 扩展及存储器扩展的较大单片机系统。

Page 25: 第 7 章    I/O 扩展及应用

7-4-3 7-4-3 控制寄存器及使用控制寄存器及使用一、控制寄存器:一、控制寄存器:11 、命令字:只能写不能读;、命令字:只能写不能读;22 、状态字:只能读不能写。、状态字:只能读不能写。33 、定时器、定时器 // 计数器结构:计数器结构: 1414位位减法减法计数器(计数器( TTHH 和和 TTLL )。)。

D7 D6 D5 D2 D1 D0D4 D3

M2 M1 T13 T10 T9 T8T12 T11

6计数器高 位输出方式

THD7 D6 D5 D2 D1 D0D4 D3

T7 T6 T5 T2 T1 T0T4 T3

8计数器低 位

TL

M2M1 两位定义如下:M2M1=00 :单个方波M2M1=01 :连续方波M2M1=10 :单个脉冲M2M1=11 :连续脉冲

Page 26: 第 7 章    I/O 扩展及应用

二、使用:二、使用:11 、、 81558155 的定时器的定时器 // 计数器与计数器与 MCS-51MCS-51 单片机内部的单片机内部的 定时器定时器 // 计数器的异同点:计数器的异同点:

MCS—51MCS—51内部定时器内部定时器 //计数器计数器 81558155的定时器的定时器 //计数器计数器

不不

同同

点点

记数原则记数原则 加法记数加法记数 减法记数减法记数

工作方式工作方式 44种:方式种:方式 00~~方式方式 33 11种:种: 1414位记数(位记数( 44种输出)种输出)

信号源信号源 定时:由内部提供固定频率的脉冲定时:由内部提供固定频率的脉冲 定时和记数都由外部定时和记数都由外部 TIMER INTIMER IN提提供记数脉冲供记数脉冲

工作原理工作原理 记数溢出自动置位记数溢出自动置位 TFTF位,供用户位,供用户以查询(或中断)方式使用以查询(或中断)方式使用

记数溢出时向记数溢出时向 TIMER OUTTIMER OUT输出一输出一个脉冲(方波)信号个脉冲(方波)信号

相 同 点 相 同 点 同样具有定时和记数两种功能同样具有定时和记数两种功能

Page 27: 第 7 章    I/O 扩展及应用

22 、、 81558155初始化:初始化:例:例:要求要求 81558155 对计数脉冲进行千分频,即计数对计数脉冲进行千分频,即计数 10001000后,后, TIMER TIMER

OUTOUT 端电平状态变化,并重新置数以产生连续方波。端电平状态变化,并重新置数以产生连续方波。 PAPA 口为口为 输入方式,输入方式, PBPB 口为输出方式,口为输出方式, PCPC 口为输入方式,禁止中断。口为输入方式,禁止中断。解:解: 11 、确定计数初值:、确定计数初值:(( PP2.12.1 接片选)接片选) 1000D=03E8H1000D=03E8H ,且,且 M2M1=01M2M1=01 ,, 则则 TTLL=E8H=E8H ,其端口地址为,其端口地址为 0FD04H0FD04H ; ; TTHH=43H=43H ,其端口地址为,其端口地址为 0FD05H0FD05H 。 。 22 、确定命令字:、确定命令字:

计数器 PB 口 PA 口 PC 口 PB 口 PA 口装入后启动 不允许中断 输入 输出 输入

D7 D6 D5 D4 D3 D2 D1 D0

1 1 0 0 0 0 1 0

因此,命令字为 0C2H 。命令 / 状态寄存器地址为 0FD00H 。

Page 28: 第 7 章    I/O 扩展及应用

初始化程序:初始化程序:MOVMOV DPTRDPTR ,, #0FD00H#0FD00H ;命令;命令 // 状态寄存器状态寄存器

地址地址MOVMOV AA ,, #0C2H#0C2H ;命令字;命令字MOVXMOVX @DPTR,A@DPTR,A ;装入命令字;装入命令字MOVMOV DPTRDPTR ,, #0FD04H#0FD04H ;计数器低;计数器低 88位位MOVMOV AA ,, #0E8H#0E8H ;低;低 88位计数值位计数值MOVXMOVX @DPTR@DPTR ,, AA ;写入计数器低;写入计数器低 88位位INCINC DPTRDPTR ;计数器高;计数器高 88位地址位地址MOVMOV AA ,, #43H#43H ;高;高 88位计数值位计数值MOVXMOVX @DPTR@DPTR ,, AA ;写入计数值高;写入计数值高 88位位

Page 29: 第 7 章    I/O 扩展及应用

7-5 82797-5 8279 可编程键盘可编程键盘 // 显示器接口芯显示器接口芯片片

82798279 是专用接口芯片(是专用接口芯片( 4040 脚):脚):自动完成键盘扫描输入和自动完成键盘扫描输入和 LEDLED 动态扫描输出;动态扫描输出;有自动消抖和多个按键处理功能;有自动消抖和多个按键处理功能;有一个有一个 16×816×8 的显示用的显示用 RAMRAM 存储区。存储区。

一、信号引脚:1 、数据线( DB0 ~ DB7 ):传送数据、命令和状态;2 、片选线( CE ):低电平有效;3 、区分信息的特征位( A0 ): A0=0 : I/O 为数据; A0=1 :输入命令,输出状态;4 、读 / 写选通线( RD/WR ):读出状态 / 写入命令;5 、中断请求信号( IRQ ): 6 、键扫描返回输入线( RL0 ~ RL7 ):7 、扫描输出线( SL0 ~ SL3 ):8 、显示段数据输出线( OUTA0 ~ 3 高位、 OUTB0 ~ 3 低位): 9 、外时钟输入端( CLK ): 内时钟频率 = 外时钟频率 / 定时值(分频系数)

Page 30: 第 7 章    I/O 扩展及应用

二、二、 82798279 的寄存器:的寄存器:11 、命令寄存器:、命令寄存器: 88位,特征位为位,特征位为 D7D6D5D7D6D5 。。

特征位 D7D6D5 操 作键盘 / 显示器设置命令

内部时钟设置命令读 FIFO RAM 命令

读显示缓冲命令写显示数据命令

写入和消隐屏蔽命令清除命令

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1 结束中断 /错误方式设置命令2 、状态寄存器: 8 位3 、数据寄存器: 8 位

Page 31: 第 7 章    I/O 扩展及应用

内部时钟设置命令:内部时钟设置命令:特征位特征位 D7D6D5=001D7D6D5=001 ::0 0 1 D2 D1 D0D4 D3

分频系数

8279 需使用专用的内部时钟信号(或定时信号),其内部时钟信号是由外部输入的时钟信号经分频产生的。 80C51 的 ALE 8279 的 CLK

外部时钟从 CLK 引脚输入,而分频系数由本命令设定,具体数字在 D4 ~ D0 中: D4 ~ D0 为分频系数 2 ~ 31 。例:已知 80C51 的 fosc=12MHz ,要求 8279 的内部时钟信

号 频率为 100kHz ,求分频系数 N 。解: fosc=12MHz

fALE=1/6 fosc=2MHz = fCLK

N=2MHz/100kHz

=20D=10100B

因此,时钟编程命令送 00110100B=34H 。

Page 32: 第 7 章    I/O 扩展及应用

CSHCSH : : MOV DPTRMOV DPTR ,, #7FFFH #7FFFH ;指向命令;指向命令 // 状态口地址状态口地址

MOV AMOV A ,, #0D1H#0D1H ;清除命令(见;清除命令(见 P196P196 )) MOVX @DPTRMOVX @DPTR ,, AA ;送入命令;送入命令

WAITWAIT :: MOVX AMOVX A ,, @DPTR @DPTR ;读入(等;读入(等 82798279清除结束)清除结束) JBJB ACC.7 ACC.7 ,, WAIT WAIT ;读;读 82798279 状态,为状态,为 11 ,写入无效,写入无效 MOV AMOV A ,, #00H#00H ;键盘;键盘 // 显示器工作方式(见显示器工作方式(见 P195P195 )) MOVX @DPTRMOVX @DPTR ,, AA MOV AMOV A ,, #34H#34H ;; N=34HN=34H (见(见 P196P196 ))

MOVX @DPTRMOVX @DPTR ,, AA MOV IEMOV IE ,, #84H #84H ;开中断(允许;开中断(允许 82798279 中断)中断)

RETRET

fosc=12MHzfALE=1/6 fosc=2MHz = fCLK

N=2MHz/100kHz =20D=10100B ( =34H )

0 0 1 1 0 01 0

分频系数

82798279 初始化子程序:初始化子程序:

Page 33: 第 7 章    I/O 扩展及应用

显示器更新子程序:显示器更新子程序:DIRDIR :: MOVMOV DPTRDPTR ,, #7FFFH #7FFFH ;; P2.7=0P2.7=0 ,, A0=1A0=1

MOVMOV AA ,, #90H #90H ;; P196P196 (( 55 )写显示)写显示 RAMRAM命令,从命令,从 00 地址开地址开始始

MOVXMOVX @DPTR@DPTR ,, AA MOVMOV RR00 ,, #78H #78H ;; ((读读 )) 显示缓冲器首地址送显示缓冲器首地址送 R0R0

MOVMOV RR77 ,, #08H #08H ;; 88 个个 MOVMOV DPTRDPTR ,, #7EFFH #7EFFH ;数据口地址(;数据口地址( P2.7=0P2.7=0 ,, A0=A0=

00 ))RDRD :: MOVMOV AA ,, @R@R0 0 ;取显示数据;取显示数据

ADDADDAA ,, #05H #05H ;加偏移量;加偏移量 MOVCMOVC AA ,, @A+PC@A+PC ;查表转换为段数据送;查表转换为段数据送 82798279

MOVXMOVX @DPTR@DPTR ,, AA INCINC RR00

DJNZDJNZ RR77 ,, RDRD RETRET

SEGSEG : : DBDB 3FH3FH ,, 06H06H ,, 5BH5BH ,, 4FH4FH ,, DBDB 66H66H ,, 6DH6DH ,, 7DH7DH ,, 07H07H ,… ,… (共阴极)(共阴极) ;根据硬件线路设计字型数据;根据硬件线路设计字型数据

1B1B2B1B

“0” “1”

“4”

Page 34: 第 7 章    I/O 扩展及应用

7-6 7-6 键盘接口技术键盘接口技术一、键盘处理程序任务:一、键盘处理程序任务:1.1. 键输入:键输入: 检查键盘是否有键被按下,消检查键盘是否有键被按下,消

除按键抖动。确定被按键的键号,除按键抖动。确定被按键的键号,获取键号。获取键号。

硬件电路消除抖动或软件消除硬件电路消除抖动或软件消除抖动。抖动。

抖动时间< 10ms

开关动作时间> 100ms

“ 1 ”

“ 0 ”

< 10ms

前沿抖动 后沿抖动

& I/O接口

+5v

+5v

消除抖动电路

开关单片机

2.2.键译码:键译码: 键号为键盘位置码,根据键号键号为键盘位置码,根据键号

查表得出被按键的键值。查表得出被按键的键值。键值:数字键键值:数字键 00 ~~ 99 ;; 字符键字符键 0AH0AH ~~ 0FH0FH ;; 功能键功能键 10H10H ~ 。~ 。键码键码 == 行首键号行首键号 ++ 列号列号(键号必须依次是从左至右书写) (键号必须依次是从左至右书写)

或键码或键码 == 列首键号列首键号 ++ 行号行号(键号必须依次是从上至下书写)(键号必须依次是从上至下书写)

Page 35: 第 7 章    I/O 扩展及应用

3.3. 键处理:键处理: 根据键值转移到不同程序段。根据键值转移到不同程序段。 若键值属于数字、字符键,则调用显示数若键值属于数字、字符键,则调用显示数

字和字符的子程序。字和字符的子程序。 若键值属于功能键,则进行多分支转移,若键值属于功能键,则进行多分支转移,

执行各个功能程序段。执行各个功能程序段。

延时等待 10ms

仍有按键信号?Y

有按键信号? N

Y

N

键盘处理

按键释放? N

Y

二、键盘接口方法:二、键盘接口方法:11 、利用单片机本身的并行口;、利用单片机本身的并行口;22 、利用单片机本身的串行口;、利用单片机本身的串行口;33 、利用通用接口芯片、利用通用接口芯片 81558155 、、 82558255 等;等;44 、利用专用接口芯片、利用专用接口芯片 82798279 等。等。

三、键盘接口的控制方式:三、键盘接口的控制方式:11 、随机方式:每当、随机方式:每当 CPUCPU 空闲时执行键盘扫描程序。空闲时执行键盘扫描程序。22 、中断方式:键的按下引起中断后,单片机对键盘进行扫描。、中断方式:键的按下引起中断后,单片机对键盘进行扫描。33 、定时方式:单片机定时地对键盘进行扫描。、定时方式:单片机定时地对键盘进行扫描。

Page 36: 第 7 章    I/O 扩展及应用

(( 11 )独立式键盘电路:)独立式键盘电路: (( 22 )矩阵式键盘:)矩阵式键盘:

0 1

+5v C0

C1

R0

R1

键盘I/O 接

(( 22 )矩阵式键盘电路:)矩阵式键盘电路: 11 )扫描法:)扫描法: 列线输出,行线输入。列线输出,行线输入。 列线逐列输出列线逐列输出 00 ,某行有按键,行线输入就为,某行有按键,行线输入就为 00 ;; 若无按键,行线输入全部为若无按键,行线输入全部为 11 。。 22 )反转法:)反转法: 行列线交换输入、输出,两步获取按键键号。行列线交换输入、输出,两步获取按键键号。

(( 11 )独立式键盘电路:每个按键单独占有一根)独立式键盘电路:每个按键单独占有一根 I/OI/O 接口引线。接口引线。

四、键盘接口形式:

P1.0

P1.1

P1.7

+5v

Page 37: 第 7 章    I/O 扩展及应用

按键处理程序:按键处理程序:

延时消抖

键扫描求键号

延时等待

键译码求键值

修改显示缓冲区 跳转各功能程序

有按键输入?

确有按键?

按键释放?

是数字键?

Y

Y

Y

N

N

N

Y

N

Page 38: 第 7 章    I/O 扩展及应用

11 、使用、使用 81558155 作键盘接口:作键盘接口: P204P204图图 7.357.35五、接口应用:五、接口应用:

P2.7=0 , P2.0=1 :A 口地址为: 0101H ;C 口地址为: 0103H 。

扫描法:列线输出,行线输入。扫描法:列线输出,行线输入。列线逐列输出列线逐列输出 00 ,某行有按键,,某行有按键,

行线输入就为行线输入就为 00 ;;若无按键,行线输入全部为若无按键,行线输入全部为 11 。。

ALE

RD

WR

P0

80C51

ALE

RD

WR

RESET8155

IO/M

CE

8

P2.7P2.0

AD7~0

. . .

+5V

PA7PA6

PA0

PA1

PC0

PC1PC2PC3

0 1 6 7

8 9 14 15

键码键码 == 行首键号行首键号 ++列号列号(键号必须依次是从左至右书写) (键号必须依次是从左至右书写) 或键码或键码 ==列首键号列首键号 ++ 行号行号(键号必须依次是从上至下书写)(键号必须依次是从上至下书写)

Page 39: 第 7 章    I/O 扩展及应用

判定有无键闭合的子程序:判定有无键闭合的子程序:

MOVMOV DPTRDPTR ,, #0101H#0101HMOVMOV AA ,, #00H#00H ;; AA 口送口送 00H00HMOVXMOVX @DPTR@DPTR ,, AAINCINC DPTRDPTRINCINC DPTRDPTR ;建立;建立 CC 口地址口地址MOVXMOVX AA ,, @DPTR@DPTR ;读;读 CC 口口CPLCPL AA ;; AA取反,无键按下则全“取反,无键按下则全“ 0”0”

ANLANL AA ,, #0FH#0FH ;屏蔽;屏蔽 AA高半字节(高半字节( CC 口只口只 44位)位)

RETRET执行执行 KS1KS1 子程序的结果是:有闭合键则(子程序的结果是:有闭合键则( AA )≠ )≠ 00 ;; 无闭合键则(无闭合键则( AA )= )= 00 。。CPL ACPL A ;负逻辑不直观,常采取行列线加反相器或;负逻辑不直观,常采取行列线加反相器或 软件求反的方法把键盘改成正逻辑。软件求反的方法把键盘改成正逻辑。

KS1 :

Page 40: 第 7 章    I/O 扩展及应用

键盘扫描子程序如下:(硬件线路如图键盘扫描子程序如下:(硬件线路如图 7.357.35 ,, 81558155的的 AA 口、口、 BB 口、口、 CC 口和控制口地址分别为口和控制口地址分别为 7F00H7F00H 、、 7F017F01HH 、、 7F02H7F02H 、、 7F03H7F03H ,设,设 8155A8155A 已在主程序中初始化。已在主程序中初始化。已设定为已设定为 AA 口方式口方式 00 输出,输出, CC 口的低口的低 44位方式位方式 00 输入。)输入。)

KEY1 : ACALL KS1 ;调用判断有无键按下子程序 JNZ LK1 ;有键按下时,( A )≠ 0转消抖

延时KEY2 : ACALL TM6ms

AJMP KEY1 ;无键按下返回LK1 : ACALL TM12ms ;调 12 ms延时子程序

ACALL KS1 ;查有无键按下,若有则真有键按下 JNZ LK2 ;键 (A)≠ 0逐列扫描 AJMP KEY2 ;不是真有键按下,返回

LK2 : MOV R2 , #0FEH ;初始列扫描字( 0列)送入 R2 MOV R4 , #00H ;初始列( 0列)号送入 R4

LK4 : MOV DPTR , #7F00H ; DPTR 指向 8155PA 口 MOV A , R2 ;列扫描字送至 8155PA 口 MOVX @DPTR , A INC DPTR ; DPTR 指向 8155PC 口 INC DPTR

Page 41: 第 7 章    I/O 扩展及应用

MOVX AMOVX A ,, @DPTR @DPTR ;从;从 8155 PC8155 PC 口读入行状态口读入行状态 JB JB ACC.0ACC.0 ,, LONE LONE ;查第;查第 00 行无键按下,转查第行无键按下,转查第 11 行行 MOV AMOV A ,, #00H #00H ;第;第 00 行有键按下,行首键码行有键按下,行首键码 #00H→A#00H→A

AJMP LKP AJMP LKP ;转求键码;转求键码LONELONE : : JB ACC.1JB ACC.1 ,, LTWO LTWO ;查第;查第 11 行无键按下,转查第行无键按下,转查第 22 行行

MOV AMOV A ,, #08H #08H ;第;第 11 行有键按下,行首键码行有键按下,行首键码 #08H→A#08H→A

AJMP LKP AJMP LKP ;转求键码;转求键码LTWOLTWO :: JB ACC.2JB ACC.2 ,, LTHR LTHR ;查第;查第 22 行无键按下,转查第行无键按下,转查第 33 行行

MOV AMOV A ,, #10H #10H ;第;第 22 行有键按下,行首键码行有键按下,行首键码 #10H→A#10H→A

AJMP LKP AJMP LKP ;转求键码;转求键码LTHRLTHR :: JB ACC.3JB ACC.3 ,, NEXT NEXT ;查第;查第 33 行无键按下,转该查下一列行无键按下,转该查下一列

MOV AMOV A ,, #18H #18H ;第;第 33 行有键按下,行首键码行有键按下,行首键码 #18H→A#18H→A

LKPLKP : : ADD AADD A ,, R4 R4 ;求键码,键码;求键码,键码 == 行首键码行首键码 ++列号列号 PUSH ACC PUSH ACC ;键码进栈保护;键码进栈保护

LK3LK3 : : ACALL KS1 ACALL KS1 ;等待键释放;等待键释放JNZ LK3 JNZ LK3 ;键未释放,等待;键未释放,等待POP ACC POP ACC ;键释放,键码→;键释放,键码→ AA

RET RET ;键扫描结束,出口状态;键扫描结束,出口状态 (A)=(A)= 键码键码

Page 42: 第 7 章    I/O 扩展及应用

NEXTNEXT : : INC INC R4 R4 ;准备扫描下一列,列号加;准备扫描下一列,列号加 11

MOV MOV AA ,, R2 R2 ;取列扫描字送累加器;取列扫描字送累加器 AA

JNB JNB ACC.7ACC.7 ,, KEND KEND ;判断;判断 88列扫描否?扫描完返回列扫描否?扫描完返回 RL RL A A ;扫描字左移一位,变为下一列扫描字;扫描字左移一位,变为下一列扫描字 MOV MOV R2R2 ,, A A ;扫描字送入;扫描字送入 R2R2保存保存 AJMP LK4 AJMP LK4 ;转下一列扫描;转下一列扫描

KENDKEND :: AJMP KEY1 AJMP KEY1

KS1KS1 : : MOV MOV DPTRDPTR ,, #7F00H#7F00H ;; DPTRDPTR 指向指向 8155PA8155PA 口口 MOV MOV AA ,, #00H #00H ;全扫描字→;全扫描字→ AA

MOVX @DPTRMOVX @DPTR ,, A A ;全扫描字送往;全扫描字送往 8155PA8155PA 口口 INC INC DPTR DPTR ;; DPTRDPTR 指向指向 8155PC8155PC 口口 INC INC DPTR DPTR

MOVX AMOVX A ,, @DPTR @DPTR ;读入;读入 PCPC 口行状态口行状态 CPL CPL A A ;变正逻辑,以高电平表示有键按下;变正逻辑,以高电平表示有键按下 ANL ANL AA ,, #0FH#0FH ;屏蔽高;屏蔽高 44位,只保留低位,只保留低 44位行线值位行线值 RET RET ;出口状态:;出口状态: (A)≠0(A)≠0时有键按下时有键按下

Page 43: 第 7 章    I/O 扩展及应用

TM12msTM12ms :: MOV R7MOV R7 ,, #18H #18H ;延时;延时 12 ms12 ms 子程序子程序TMTM :: MOV R6MOV R6 ,, #0FFH#0FFHTM6TM6 : : DJNZ R6DJNZ R6 ,, TM6TM6

DJNZ R7DJNZ R7 ,, TMTM RETRET

TM6msTM6ms : : MOV R7MOV R7 ,, #0CH #0CH ;延时;延时 6 ms6 ms 子程序子程序TM2TM2 : : MOV R6MOV R6 ,, #0FFH#0FFHTM62TM62 : : DJNZ R6DJNZ R6 ,, TM6TM6

DJNZ R7DJNZ R7 ,, TMTM RETRET

Page 44: 第 7 章    I/O 扩展及应用

22 、使用、使用 82798279 作键盘接口:作键盘接口: P207P207 图图 7.7.3636

ALE

RD

WR

P0

80C51

CLK

RD

WR

8279

A0

CS

8

P2.7P2.0

. . .

SL0SL1

RL0

DB

+5V

74LS156

SL2

RL1

RL4RL5

P2.7=0 时:A0=P2.0=1 :命令口地址为: 7FFFH ;A0=P2.0=0 :数据口地址为: 7EFFH 。 (程序略)

键码键码 == 行首键号行首键号 ++列号列号(键号必须依次是从左至右书写) (键号必须依次是从左至右书写)

0 1 3 4

5 6 7 8

74LS15674LS156 为双为双 2-42-4译码器译码器 // 分配分配器器

Page 45: 第 7 章    I/O 扩展及应用

33 、使用中断方式作键盘接口:、使用中断方式作键盘接口:

当有键按下时, INT1 为低,向 CPU 发出中断申请,在中断服务

程序中除完成键识别、键功能处理外,仍须有清除键抖动等功能。

0 4 8 12

1 5 9 13

键码键码 ==列首键号列首键号 ++ 行号行号(键号必须依次是从上至下书写)(键号必须依次是从上至下书写)

Page 46: 第 7 章    I/O 扩展及应用

7-7 7-7 显示器接口技术显示器接口技术 LEDLED 显示器用于显示工业控显示器用于显示工业控

制参数、过程状态。制参数、过程状态。一一、 、 LEDLED 显示原理:显示原理:

共阴极共阴极 LEDLED 和共阳极和共阳极 LEDLED 。。 当当 LEDLED字段引线与数据线字段引线与数据线

连接,每个显示字形对应一个连接,每个显示字形对应一个字形码。字形码。

LEDLED(( LLight ight EEmiting miting DDiode)iode)

COM

P1.0 ~ 1.7

MCS-51

a

f b g e c

d h

ab

h

代码位 D7 D6 D5 D4 D3 D2 D1 D0

显示段 h g f e d c b a

a b h

COM

共阴极

Page 47: 第 7 章    I/O 扩展及应用

共阴极和共阳极的字段码互为反码 。共阴极和共阳极的字段码互为反码 。显示字符显示字符 共阴极共阴极

字段码字段码共阳极共阳极字段码字段码

显示字符显示字符 共阴极共阴极字段码字段码

共阳极共阳极字段码字段码

00 3FH3FH C0HC0H CC 39H39H C6HC6H

11 06H06H F9HF9H DD 5EH5EH A1HA1H

22 5BH5BH A4HA4H EE 79H79H 86H86H

33 4FH4FH B0HB0H FF 71H71H 8EH8EH

44 66H66H 99H99H PP 73H73H 8CH8CH

55 6DH6DH 92H92H UU 3EH3EH C1HC1H

66 7DH7DH 82H82H TT 31H31H CEHCEH

77 07H07H F8HF8H YY 6EH6EH 91H91H

88 7FH7FH 80H80H LL 38H38H C7HC7H

99 6FH6FH 90H90H 88.. FFHFFH 00H00H

AA 77H77H 88H88H ““ ”灭”灭 0000 FFHFFH

BB 7CH7CH 83H83H ………… ………… …………

Page 48: 第 7 章    I/O 扩展及应用

二、显示程序任务:二、显示程序任务:11 、、设置显示缓冲区,存放待设置显示缓冲区,存放待

显示数据和字符(位置码)。显示数据和字符(位置码)。22 、、显示译码:显示译码:程序存储器程序存储器中中

建立字形码常数表,查表得出对建立字形码常数表,查表得出对应数据和字符的字形码。应数据和字符的字形码。

33 、、输出显示:输出输出显示:输出字形码字形码到到显示端口。显示端口。

例:例: MOV DPTRMOV DPTR ,, #WTAB #WTAB ;指向字形码表首地址;指向字形码表首地址MOV AMOV A ,, @R@R00 ;取显示缓冲区中数据;取显示缓冲区中数据MOVC AMOVC A ,, @A+DPTR @A+DPTR ;查表显示译码;查表显示译码MOV PMOV P11 ,, AA ;输出显示;输出显示

……WTABWTAB :: DBDB 3FH3FH ,, 06H06H ,, 5BH5BH ;字形代码表(共阴极);字形代码表(共阴极)

……

COM

P1.0 ~ 1.7

MCS-51

a

f b g e c

d h

ab

h

Page 49: 第 7 章    I/O 扩展及应用

三、三、 LEDLED 接口电路:接口电路:显示多位数据的两种电路:显示多位数据的两种电路:静态显示和动态显示。静态显示和动态显示。

特点:显示亮度大,硬件和特点:显示亮度大,硬件和软件都较简单,应用广泛。软件都较简单,应用广泛。

11..静态显示:静态显示: 多位多位 LEDLED 共用一个共用一个 88位位

字段口(共阴极或共阳极),字段口(共阴极或共阳极), 各位 各位 LEDLED公共端用字位口控公共端用字位口控制,扫描输出显示不同字形。制,扫描输出显示不同字形。

显示缓冲区与多位显示缓冲区与多位LEDLED 对应关系:对应关系:

每个每个 LEDLED 需要一个需要一个88位并行口。位并行口。

段控和位控段控和位控

Page 50: 第 7 章    I/O 扩展及应用

例:例: 显示显示 80C5180C51 片内片内 RAMRAM 中以中以 30H30H 为首地址的为首地址的 88位位字形数的程序:字形数的程序:

Page 51: 第 7 章    I/O 扩展及应用

程序:程序:DIRDIR :: PUSHPUSH ACCACC ;保护现场;保护现场 PUSHPUSH DPHDPH PUSHPUSH DPLDPL MOVMOV R2R2 ,, #08H#08H ;显示;显示 88 个数个数 MOVMOV R0R0 ,, #30H#30H ;显示缓冲区地址送入;显示缓冲区地址送入 R0R0

DL0DL0 :: MOVMOV AA ,, @R0@R0 ;取要显示的数作查表偏移量;取要显示的数作查表偏移量 MOVMOV DPTRDPTR ,, #TAB#TAB ;指向字形码表首;指向字形码表首 MOVCMOVC AA ,, @A+DPTR@A+DPTR ;查表得字形码;查表得字形码 MOVMOV SBUFSBUF ,, AA ;发送显示;发送显示

DL1DL1 :: JNBJNB TITI ,, DL1DL1 ;等待发送完一桢数据;等待发送完一桢数据 CLRCLR TITI ;清标志,准备继续发送;清标志,准备继续发送 INCINC R0R0 ;更新显示单元;更新显示单元 DJNZDJNZ R2R2 ,, DL0DL0 ;重复显示所有数码管;重复显示所有数码管 POPPOP DPLDPL ;恢复现场;恢复现场 POPPOP DPHDPH POPPOP ACCACC RETRET

TABTAB :: DBDB 0C0H0C0H,, 0F9H0F9H,, 0A4H0A4H,, 0B0H0B0H,, 99H 99H ;; 00 ,, 11 ,, 22 ,, 33 ,, 44 DBDB 92H92H,, 82H82H,, 0F8H0F8H,, 80H80H,, 90H90H,, 88H 88H ;; 55 ,, 66 ,, 77 ,, 88 ,,

99 ,, AA DBDB 83H83H,, 0C6H0C6H,, 0A1H0A1H,, 86H86H,, 8EH 8EH ;; BB ,, CC ,, DD ,, EE,, FF

共阳极共阳极

Page 52: 第 7 章    I/O 扩展及应用

22..动态显示:动态显示:

COM

h

COM

D7…D1

D0

D0

D1

D2

h bbh

COM

a f b g e c

d h

a ab a

分时轮流选通分时轮流选通数码数码管的公共端,使得各数管的公共端,使得各数码管轮流导通,在选通码管轮流导通,在选通相应相应 LEDLED后,即在显示后,即在显示字段上得到显示字形码。字段上得到显示字形码。

特点:提高数码管特点:提高数码管的发光效率,可简化硬的发光效率,可简化硬件线路。件线路。

举例见后:举例见后:

““位控”位控”

““段控”段控”

Page 53: 第 7 章    I/O 扩展及应用

可假定地址:段控(可假定地址:段控( PAPA ):): 0101H0101H ;位控(;位控( PCPC ):): 0103H0103H 。。在内部在内部 RAMRAM 中设置显示缓冲区,其单元个数与中设置显示缓冲区,其单元个数与 LEDLED 显示位数相同。显示位数相同。设设 66 个显示器的缓冲单元是个显示器的缓冲单元是 7AH7AH~~ 7FH7FH 。。

33 、用、用 81558155 作作 LEDLED 显示器接口:显示器接口:

动态显示动态显示

“0”“1”

Page 54: 第 7 章    I/O 扩展及应用

LEDLED 显示程序:显示程序:DISDIS : : MOV RMOV R00 ,, #7AH #7AH ;指向显示缓冲区起始单元;指向显示缓冲区起始单元

MOV RMOV R33 ,, #01H #01H ;从右数第一位显示器开始;从右数第一位显示器开始 MOV AMOV A ,, RR3 3 ;取位控码初值;取位控码初值

DLPDLP : : MOV DPTRMOV DPTR ,, #0103H #0103H ;指向字位口(;指向字位口( PCPC 口)口) MOVX @DPTRMOVX @DPTR ,, A A ;输出字位码,显示其中;输出字位码,显示其中 11 位位 MOVMOV DPTRDPTR ,, #0101H #0101H ;段控码地址(;段控码地址( PAPA 口)口) MOV MOV A A ,, @R0 @R0 ;取一个显示数据;取一个显示数据 ADD ADD A A ,, #0BH#0BH ;查表偏移量;查表偏移量 MOVC AMOVC A ,, @A+PC @A+PC ;取出字形码;取出字形码 MOVX @DPTRMOVX @DPTR ,, AA ;输出字形码;输出字形码 ACALL DLY1MS ACALL DLY1MS ;延时;延时 1ms1ms INC INC R R00 ;指向显示缓冲区下一单元;指向显示缓冲区下一单元 MOV MOV A A ,, RR33 ;修改字位码;修改字位码 RL RL A A ;显示下一位;显示下一位 MOV MOV R R33 ,, AA JNB JNB ACC.5 ACC.5 ,, DLP DLP ;未显示到最左边;未显示到最左边 LEDLED ,继续显示,继续显示 RET RET ;全部扫描一遍,结束;全部扫描一遍,结束

DTABDTAB : : DB 0C0HDB 0C0H ,, 0F9H0F9H ,, 0A4H 0A4H ;字形代码表(共阳极);字形代码表(共阳极) DB 0B0HDB 0B0H ,, 99H99H ,,

DLY1MSDLY1MS : … : … ;延时;延时 1ms1ms 子程序子程序

1B2B1B1B1B1B3B1B

Page 55: 第 7 章    I/O 扩展及应用

44 、用、用 82798279 作作 LEDLED 显示器接口:显示器接口:

P2.7=0 时:A0=P2.0=1 :命令口地址为: 7FFFH ;A0=P2.0=0 :数据口地址为: 7EFFH 。 (程序略)

段码

位码

Page 56: 第 7 章    I/O 扩展及应用

四、四、 LCDLCD 显示:显示:

LCDLCD (( LLiquid iquid CCrystal rystal DDisplay)isplay) ::它是一种被动式的显示器,即液晶本身并不发光,它是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能改变光线通过方向的而是利用液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。特性,而达到白底黑字或黑底白字显示的目的。 LCDLCD 只能工作在静态显示方式。只能工作在静态显示方式。 并要求加上专门的驱动芯片并要求加上专门的驱动芯片 40564056 。。 原理与原理与 LEDLED 类似!!类似!!

Page 57: 第 7 章    I/O 扩展及应用

程序:程序:#include<reg51.h>#include<reg51.h>#define uchar unsigned char#define uchar unsigned charuchar byte=0x59;uchar byte=0x59;Void display(uchar x)Void display(uchar x){{

SBUF=x;SBUF=x; /*/*由串行口输出由串行口输出 */*/while(TI= =0);while(TI= =0); /*/* 等待等待 88位发送结束位发送结束*/*/TI=0;TI=0;

}}void main(void)void main(void){{

display(byte);display(byte);}} 因因 40564056是是 BCDBCD 的的 LCDLCD 驱动芯片,故驱动芯片,故 bytebyte 中包含中包含

的的 BCDBCD 码可直接输出显示。码可直接输出显示。

Page 58: 第 7 章    I/O 扩展及应用

7-8 7-8 打印机接口技术打印机接口技术11 、不用扩展接口的打印机连接:、不用扩展接口的打印机连接: P217P217图图 7.447.44

在打印机中只有一个数据寄存器,用于寄存打印数据。P2.7 选通 80C51 的 RD 和 WR :(只能使用查询方式)数据口的地址为: 7FFFH 。

RD

WR

P080C51

GND

微型打印机

BUSY

STBP2.7

Vss

DB

+

+

8P0.7

Page 59: 第 7 章    I/O 扩展及应用

打印驱动程序:(查询方式)打印驱动程序:(查询方式)MOVMOV RR00 ,, #7FH#7FH ;控制寄存器地址(;控制寄存器地址( PP0.70.7 =0 =0 ))MOVMOV AA ,, ##8EH8EH/88H/88H ;工作方式控制字;工作方式控制字MOVXMOVX @R@R00 ,, AA ;写入工作方式控制字;写入工作方式控制字

TPTP :: MOVMOV RR00 ,, #7EH#7EH ;; PCPC 口地址口地址TP1TP1 :: MOVXMOVX AA ,, @R@R00 ;读;读 CC 口口

JBJB ACC.7ACC.7 ,, TP1TP1 ;; BUSY=1BUSY=1 (忙),继续查询(忙),继续查询MOVMOV RR00 ,, #7CH#7CH ;; PAPA 口地址口地址MOVMOV AA ,, @R@R11 ;取缓冲区数据;取缓冲区数据MOVXMOVX @R@R00 ,, AA ;打印数据送;打印数据送 82558255

INCINC RR11 ;指向下一单元;指向下一单元MOVMOV RR00 ,, #7FH#7FH ;控制口地址;控制口地址MOVMOV AA ,, #00H#00H ;输出;输出 STBSTB脉冲脉冲MOVXMOVX @R@R00 ,, AA

MOVMOV AA ,, #01H#01HMOVXMOVX @R@R00 ,, AA

DJNZDJNZ RR22 ,, TPTP ;数据长度减;数据长度减 11 ,不为,不为 00继续继续RETRET

产生 1 个

Page 60: 第 7 章    I/O 扩展及应用

向打印机输出字符串“向打印机输出字符串“WELCOME”WELCOME” 的的 C51C51 程序:程序:#include<absacc.h>#include<absacc.h>#include<reg51.h>#include<reg51.h>#define uchar unsigned char#define uchar unsigned char#define COM8255 XBYTE[0x007F]#define COM8255 XBYTE[0x007F] /* /* 命令口地址命令口地址 */*/#define PA8255 XBYTE[0x007C]#define PA8255 XBYTE[0x007C] /* PA/* PA 口地址口地址 */*/#define PC8255 XBYTE[0x007E]#define PC8255 XBYTE[0x007E] /* PC/* PC 口地址口地址 */*/Void toprn(uchar *p)Void toprn(uchar *p) /* /* 打印字符串函数打印字符串函数 */*/{{while(*p!=‘\0’){while(*p!=‘\0’){

while((0x80&PC8255)!=0;while((0x80&PC8255)!=0; /* /* 查询等待打印机的查询等待打印机的 BUSYBUSY 状态状态 */*/PA8255=*p;PA8255=*p; /* /* 输出字符输出字符 */*/COM8255=0x00;COM8255=0x00; /* /* 模拟模拟 STBSTB脉冲脉冲 */*/COM8255=0x01;COM8255=0x01;p++;p++;}}

}}Void main(void)Void main(void){{

uchar idata prn[ ]=‘WELCOME’’uchar idata prn[ ]=‘WELCOME’’ /* /* 设一测试用字符串设一测试用字符串 */*/COM8255=0x8E;COM8255=0x8E; /* /* 输出方式选择命令字输出方式选择命令字 */*/toprn(prn);toprn(prn); /* /* 打印字符串打印字符串 */*/

}}

reg51.h文件定义了所有 8051 的特殊功能寄存器及中断

Page 61: 第 7 章    I/O 扩展及应用

11 、接口的功能、接口的功能(链接)(链接)、编址方式和控制方式(无、编址方式和控制方式(无 条件、查询、中断和条件、查询、中断和 DMADMA )。)。22 、单片机本身、单片机本身 44 个并行个并行 II//OO 口的使用。口的使用。33 、通用并行接口芯片、通用并行接口芯片 82558255 的结构、工作方式、编址的结构、工作方式、编址 和应用。和应用。44 、通用多功能接口芯片、通用多功能接口芯片 81558155 的内部结构、功能、工的内部结构、功能、工 作方式、编址和应用,以及与作方式、编址和应用,以及与 82558255 的异同。的异同。55 、键盘、键盘 // 显示器专用接口芯片显示器专用接口芯片 82798279 的结构、内部时钟的结构、内部时钟 的设定、编址和应用。的设定、编址和应用。66 、键盘、显示器和打印机的接口原理和实现方法。、键盘、显示器和打印机的接口原理和实现方法。

小 结小 结