模块七

Preview:

DESCRIPTION

模块七. 80C51 的系统扩展. 本章主要内容. 80C51 存储器扩展 ( 扩展 ROM 、 RAM ). 80C51 并行接口扩展 ( 芯片 8155 ). 80C51 单片机键盘和显示器扩展. 问题的提出 1. 80C51 系列典型产品资源配置. 芯片型号. ROM 类型及字节数. RAM 字节数. 分类. 基本型. 80C31. 无 ROM. 128B. 80C51. 4KB 掩膜 ROM. 128B. 87C51. 4KBEPROM. 128B. 89C51. 4KBFLashROM. 128B. 80C32. 增强型. - PowerPoint PPT Presentation

Citation preview

80C51 的系统扩展

80C51 存储器扩展(扩展 ROM 、 RAM)

本章主要内容 80C51 单片机键盘和显示器扩展

模块七

80C51 并行接口扩展 (芯片 8155 )

问题的提出1 80C51 系列典型产品资源配置

分类 RAM 字节数芯片型号 ROM 类型及字节数

基本型

80C31

80C51

87C51

89C51

80C32

80C52

87C52

89C52

增强型

无 ROM

4KB 掩膜 ROM

4KBEPROM

4KBFLashROM

无 ROM

8KB 掩膜 ROM

8KBEPROM

8KBFLashROM

128B

128B

128B

128B

256B

256B

256B

256B

问题的提出2

并行口 P0 、 P1 、 P2 、P3

1234567891011121314151617181920

4039383736353433323130292827262524232221

RST

XTAL2XTAL1

VSS

VCC

EA/VPP

PSEN

8031

8051

8751

89C51

RXDTXD/INT0/INT1T0T1/WR/RD

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7

P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7

P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7

ALE/PROG

接口名称

第一功能 第二功能

P0 I/O 口(需接上拉电

阻 )

地址 /数据总线(扩展片外ROM/RAM 时使用) MOVC/MOV

X)P1 I/O 口

(需接上拉电阻 )

P2 I/O 口(需接上拉电

阻 )

高 8位地址总线(扩展片外ROM/RAM 时使用) (MOVC/MO

VX)P3 I/O 口

(需接上拉电阻 )

P3.0 : RXD ; P3.1 : TXD ; 等等

并行口 P0 、 P1 、 P2 、P3

问题的提出3

在单片机的应用系统设计中,往往出现 ROM 、 RAM 和 I/O 口不够用时怎么办?

▼ ROM 扩展

▼ RAM 扩展▼ I/O 接口扩展

一、存储器的扩展当系统要求扩展时,为了便于与各种芯片相连接,应将其外部连线变为与一般 CPU 类似的三总线结构形式,即

数据总线( DB ):

地址总线 (AB ):

控制总线( CB ):

宽度为 8位 ,由 P0 口提供 ;

宽度为 16 位 ,低 8位地址由 P0口分时复用,高 8位地址由 P2口提供 ;/RD 、 /WR 、 /EA 、 ALE 和 /PSEN 等信号组成。

1 、程序存储器的扩展片内资源: ▼80C31 片内无 ROM , 80C51 片内 RO

M 容量为 4KB 。

▼片外最大可扩展 ROM 为 64KB 。

用到锁存器芯片:

能够作为片外 ROM 的芯片主要有 EPROM 存储器和 E2PROM 存储器。

例如 74LS373

▼相关引脚: EA

①常见 EPROM 芯片的主要技术特性

芯片型号 容量 /KB

引脚数

读出时间 /ns

最大工作电流 /mA

最大工作电流 /mA

2732

4

24

100 ~ 300

2764

8

28

100 ~ 300

27128

16

28

100 ~ 300

27256

32

28

100 ~ 300

27512

64

28

100 ~ 300

100

35

75

35

100

40

100

40

125

40

②常见 E2PROM 芯片的主要技术特性

芯片型号 容量 /KB

引脚数

读操作电压

2816

4

24

5V

2816A

8

24

5V

2817

16

28

5V

2817A

32

28

5V

2864

64

28

5V

写操作电压 21V 5V 21V 5V 5V

擦除时间 /ms 10 9~15 10 10 10

写入时间 /ms 10 9~15 10 10 10

▼E2PROM 具有 ROM 的非易失性,同时又具有 RAM的随机读 /写特性,可使用单片机系统的 5V 电源在线擦除和改写。每个单元可以重复进行 1万次改写。

③ 8KB EPROM 2764 引脚功能VPP

A12A7A6A5A4A3A2A1A0D0D1D2GND

2764

2764 引脚功能A0~A12 地址线

D0~D7 数据线

地址线

地址线

编程脉冲输入

VPP 编程电源

CE

OE

VccPGMN.CA8A9A11OEA10CED7D6D5D4D3

PGM

④ 地址锁存器的结构地址锁存器一般选用带三态缓冲输出的 8D锁存器 74LS373 。

G 高电平 Q=D

D

G Q

D0

D

G Q

D7

. . .

Q0

Q7

. . .

G

D 触发器三态门

OE

D 锁存在 Q 中

G低电平, D变化时Q不再随之变化

74L

S37

3

GOE

D7

D0

Q7

Q0

地址锁存器

D0D1D2D3D4D5D6D7

Q0Q1Q2Q3Q4Q5Q6Q7

8D 锁存器 三态门

⑤ 地址锁存器的工作原理

G

OE

G 高电平Q=D

D 锁存在 Q 中

G 低电平, D变化时Q不再随之变化

IN OUT

74L

S37

3276480C31

80C31 扩展 2764A 程序存储器

P2.7

P2.0~P2.4

ALE

P0

EA

A8~A12

CE

A7

A0

D0~D7

OE

8KB ROM

G OED7

D0

Q7

Q0

PSEN

扩展 ROM 地址分配表及其读操作

P2.7 P2.6 P2.5 P2.4~P2.0 P0.7~P0.0

0 × × 0 0 0 0 0 0 0 0 0 0 0 0 0

0 × × 1 1 1 1 1 1 1 1 1 1 1 1 1

扩展 ROM 地址可以为: 0000H ~ 1FFFH.

MOV DPTR,#1000H

MOVC A,@DPTR

读 ROM 1000H 单元操作

74L

S37

3276480C51

80C51 扩展 2764A 程序存储器

P2.7

P2.0~P2.4

ALE

P0

EA

A8~A12

CE

A7

A0

D0~D7

OE

8KB ROM

G OED7

D0

Q7

Q0

PSEN

VCC

扩展 ROM 地址分配表及其读操作

P2.7 P2.6 P2.5 P2.4~P2.0 P0.7~P0.0

0 × 0 1 0 0 0 0 0 0 0 0 0 0 0 0

0 × 1 0 1 1 1 1 1 1 1 1 1 1 1 1

片外 ROM 地址可以为: 1000H ~ 2FFFH 。

由于 80C51 内部已经有 4KBROM ( 0000H ~0FFFH ),同时 /EA 接高电平,所以扩展 ROM地址范围为:

74L

S37

3

276480C31

P2.7

P2.0~P2.4

ALE

P0

EA

A8~A12

CE

A7

A0

D0~D7

OE

G OED7

D0

Q7

Q0

PSEN

执行 MOVC A, @DPTR 读片外 ROM 指令时,使 /PSEN 信号变为低电平,从而选通 /OE 。

2 、数据存储器的扩展片内资源: ▼80C51 片内仅 128BRAM , 80C52 片

内也仅 256BRAM 。

▼片外最大可扩展 RAM 为 64KB 。

用到锁存器芯片:

常用的数据存储器 SRAM 芯片有 6116 、 6264 、62256 等。

例如 74LS373

片外 RAM 的读和写由 80C51 的 RD 和 WR 信号控制。

① 8KB SRAM 6264 引脚功能

6264

2764 引脚功能A0~A12 地址线

D0~D7 数据线

片选

CE

OE

WE

N.CA12A7A6A5A4A3A2A1A0D0D1D2GND

VccWECSA8A9A11OEA10CED7D6D5D4D3

74L

S37

3626480C31

80C31 扩展 6264A 程序存储器

P2.7

P2.0~P2.4

ALE

P0

WR

RD

A8~A12

CE

A7

A0

D0~D7

WE

OE

8KB RAM

G OED7

D0

Q7

Q0

CS

+ 5V

扩展 RAM 地址分配表及其读操作P2.7 P2.6 P2.5 P2.4~P2.0 P0.7~P0.0

0 × × 0 0 0 0 0 0 0 0 0 0 0 0 0

0 × × 1 1 1 1 1 1 1 1 1 1 1 1 1

扩展 RAM 地址可以为: 0000H ~ 1FFFH ,地址不是唯一的 ,也可以为: 6000H ~ 7FFFH

MOV DPTR,#1000H

MOVX A,@DPTR

读 RAM 操作实例

写 RAM 操作实例MOV DPTR,#1000H

MOVX @DPTR,A

读写片外 RAM8KB RAM

74L

S3

73

626480C31

P2.7

P2.0~P2.4

ALE

P0

EA

WR

RD

A8~A12CE

A7

A0D0~D7

WEOE

G OED7

D0

Q7

Q0

执行 MOVX A,@DPTR 片外读指令时,使 /RD 信号变为低电平,从而选通 /OE执行 MOVX @DPTR , A 片外写指令时,使 /WR 信号变为低电平,从而选通 /WE 。

CS

二、并行接口( I/O 接口)的扩展

▼对于简单的 I/O 设备可以直接于单片机的 4个并行接口或 1个串行接口连接。

▼现在许多 I/O 接口已经系列化、标准化,并具有可编程功能。

▼当 I/O 接口不够用或当系统较为复杂时,往往要借助于输入 /输出接口电路(简称 I/O 接口)完成单片机与 I/O 设备的。

本小节主要学习可编程接口芯片 8155

单片机与 I/O 设备

80C51

P1

P0

P2

P3 I/O

设备

数据 /地址复用

高 8位地址

第二功能

存在的问题

③I/O 设备信号类型多样,有些不能与单片机直接连接。等等

①单片机的 I/O口有限;

②单片机要比 I/O 设备快很多;

单片机与 I/O 设备

80C51

P1

P0

P2

P3 I/O

设备

数据 /地址复用

高 8位地址

第二功能

I/O接口

数据

控制信号

状态信号

74L

S37

3

80C51

1 、单片机与 I/O 设备的关系

P2

ALE

P0

WR

RD

G OED7

D0

Q7

Q0

状态端口

数据端口

控制端口

I/O设备

I/O 接口状态信号

数据

控制信号

2 、 I/O 接口的功能① 对单片机输出的数据锁存单片机要比 I/O 设备快得多, I/O 接口的数据端口要锁存数据线上 瞬间出现的数据,以解决单片机与 I/O 设备的速度协调问题。

② 对输入设备的三态缓冲单片机的数据是所有 I/O 设备分时复用的,利用I/O 接口的三态缓冲功能,可以实现 I/O 设备与数据总线的隔离,从而实现 I/O 设备的总线共享。

③ 信号转换必须利用 I/O 接口实现单片机与 I/O 设备间信号类型(数字与模拟、电流与电压)、信号电平(高与低、正与负)、信号格式(并行与串行)等的转换。

④ 时序协调

I/O 接口的功能

单片机输入输出数据时,只有 I/O 设备准备好了,才能进行读写操作。不同的 I/O 设备的定时与控制逻辑是不同的,需要 I/O 接口进行时序的协调。

3 、可编程接口 8155 与显示器

本小节主要内容:

2) 8155 的引脚及结构3) 8155 的工作方式

6) 计数器输出模式7) 选通 I/O 的组态

4) 8155 芯片与单片机的接口

1) 七段 LED 显示器工作原理

5) 8155 的状态字格式

LED 显示器由若干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点发光。

b

c

d

fg

e

aa b c d e f g

1 1 1 1 1 1 0

0 1 1 0 0 0 0

1 1 0 1 1 0 1

1 )七段显示器件的工作原理

数码显示器简介 七段半导体数码显示器 (LED)

a

b

c

d

e

fg

DP

ag f COM b

ce d COM DP

a

b

c

d

e

fg

DP

  发光字段,由管脚 a ~ g 电平控制是否发光。

小数点,需要时 才点亮。

显示的数字形式

常用共阴极 LED

主要优点:字形清晰、工作电压低、体积小、可靠 性高、响应速度快、寿命长和亮度高等。

主要缺点:工作电流大,每字段工作电流约 10 mA 。

共阳接法 共阴接法

半导体数码显示器内部接法

COM

COMDP g f e d c b a

DP g f e d c b aCOM

COM

VCC

+5 V

串接限流电阻

a ~ g 和 DP 为低电平时才能点亮相应发光段。

a ~ g 和 DP 为高电平时才能点亮相应发光段。

  共阳接法数码显示器需要配用输出低电平有效的译码器。

  共阴接法数码显示器需要配用输出高电平有效的译码器。

R

R

共阳极

共阴极

b

c

d

fg

e

aa b c d e f g

1 1 1 1 1 1 0

0 1 1 0 0 0 0

1 1 0 1 1 0 1

共阳顺序段码: C0H , F9H , A4H , B0H , 99H , 92H , 82H , F8H , 80H , 90H

共阴顺序段码: 3FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH

项目七:六位动态 LED 显示1 、项目内容

2、项目分析

将 79H开始的六个单元依次送入 06H , 05H , 08H , 00H , 00H ,02H ,并将这些数据用六位 LED依次显示。

由于所需 LED 位数较多,采用动态 LED 显示较合适,采用 8155 接口芯片的 PA 口作为扫描口(字位口 ),PB 口作为段数据口(字型口)。

8155

PB0PB1PB2PB3PB4PB5PB6PB7

+5V

PA5PA4PA3PA2PA1PA0

7407×2

7406

3 、项目电路

AD0~AD7

CE

IO/M

RESET

ALE

RD

WR

80C51P2.7

P2.0

RESET

ALE

RD

WR

EA

P0

ab

cd

ef

gdp

+ 5V

COM

4 、画流程图

程序开始

送数据到 79H开始的显示缓冲单元

调用显示子程序

结束

设置 8155 工作方式

5、源程序

主程序流程图

主程序 ORG 0000H

START: AJMP MAIN

MAIN:ORG 0030H

MOV 79H,06HMOV 7AH,05HMOV 7BH,08HMOV 7CH,00HMOV 7DH,00HMOV 7EH,02HMOV DPTR,#7F00 H

MOV A,#03H

MOVX @DPTR,A

ACALL DISPLAY

ENDSJMP LOOP

LOOP:

扫描到第 6 个显示器否?

显示数据缓冲区首地址送 R0

使显示器最右边位亮

数据指针指向 A 口

送扫描值

数据指针指向 B口

取欲显示的数据

查表,取出字型码

调用延时子程序

未到,扫描码左移 1 位

4 、画流程图 显示子程序子程序入口

送显示

指向下一个显示段数据地址

5 、源程序 显示子程序

DISPLAY : MOV R0,#79H

MOV R3,#01H

MOV A, R3

MOV DPTR,#7F01H

MOVX @DPTR,A

INC DPTR

MOV A,@R0

ADD A,#0DH

MOVC A,@A+PC

MOVX @DPTR, A ACALL DEALY

MOV A,R3JB ACC.5 ,ELD1

INC R0

RL A

MOV R3,AAJMP LD0

ELD1:;-------------------- 段码DSEG: DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H, DB 40H,00H

;R3 存放扫描值

DELAY: MOV R7,#200

DEL1: MOV R6,#123

NOP

DEL2: DJNZ R6,DEL2

DJNZ R7,DEL1

RET

LD0:

RET

2) 8155 的内部结构

256×8静态 RAM

命令 /状态寄存器

计数器

A

B

C

AD0~AD7

IO/M

CE

ALE

RD

WRRESET

TIMER IN

TIMER OUT

GND

VCC

PA0~PA7

PB0~PB7

PC0~PC5

8155 的引脚1234567891011121314151617181920

4039383736353433323130292827262524232221

ALEAD0AD1AD2AD3AD4AD5AD6AD7

GND

VCC

PA7PA6PA5.PA4PA3PA2.PA1PA0

8155

AD7~AD0: 三态地址 /数据总线

ALE: 地址锁存允许信号输入端CE

RESET: 复位信号输入端

RDWR

IO/M

PA0~PA7:A 口的 8根通用 I/O 口线PB0~PB7:B口的 8根通用 I/O 口线PC0~PC5:C 口的 6根数据 /控制线TIMER IN 、 TIMER OUT :计数器时钟输入输出端。

PB7PB6PB5PB4PB3PB2PB1PB0

PC2PC1PC0

PC3PC4

RESETTIMER IN

TIMER OUTPC5

CE: 片选信号

IO/M: 内部 端口和 SRAM 选择信号

WR 、 RD: 读写信号

3) 8155 的工作方式设置

命令寄存器和状态寄存器可以采用同一编址 ,简称命令 / 状态寄存器 , 用 C/S 表示。

▼8155 的工作方式设置通过命令字写入命令寄存器实现。

▼8155 的状态可以由读出状态寄存器的内部 获得。

▼从逻辑上说,只允许写入命令寄存器和读出状态寄存器,所以

工作方式设置▼8155 的状态可以由读出状态寄存器的内部 获得。

D7 D6 D5 D4 D3 D2 D1 D0

000PAPBPC2 PC1IEAIEBTM1TM2

A 口的中断允许设置位0:禁止; 1:允许

A口数据传送方向设置位。0:输入; 1:输出

C口工作方式设置位

计数器工作方式设置位

C 口工作方式

PC2 PC1 工作方式 说明0 0 ALT1

A 、 B 口为基本 I/O , C 口方向为输入

1 1 ALT2A 、 B 口为基本 I/O , C 口方向为输

0 1 ALT3A 口为选通 I/O , PC0~PC2 作为 A 口的选通

应答B 口为基本 I/O , PC3 ~ PC5方向为输出

1 0 ALT4A 、 B 口为基本 I/O , C 口方向为输

定时 / 计数器命令字

TM2 TM1 工作方式 说明0 0 方式 0 空操作,对计数器无影响0 1 方式 1 使计数器停止计数1 0 方式 2 减 1 计数器回 0后停止工作

1 1 方式 3未计数时,送完初值及方式后立即启动计数;正常计数时,重置初值后,减 1

计数器回 0则按新计数初值计数

4 ) 8155 的内部编址

▼8155 的内部 RAM 地址为 00H~FFH 。

▼8155 的内部 端口地址为 :000—命令 /状态寄存器001—A 口010—B 口011—C 口

100— 计数器低 8 位101— 计数器高 6 位及计数器方式设置位

8155

PB0PB1PB2PB3PB4PB5PB6PB7

+5V

PA5PA4PA3PA2PA1PA0

7407×2

7406

3 、项目电路

AD0~AD7

CE

IO/M

RESET

ALE

RD

WR

80C51P2.7

P2.0

RESET

ALE

RD

WR

EA

P0

ab

cd

ef

gdp

+ 5V

COM

8155

5 ) 8155 与单片机接口实例

AD0~AD7

CE

IO/M

RESET

ALE

RD

WR

80C51P2.7

P2.0

RESET

ALE

RD

WR

P0

PA

PB

PC

EA

+ 5V

TIME IN

TIME OUT

输出

输出

① 求 I/O端口地址P2.7 P2.6 ~ P2.1 P2.0 P0.7~P0.0 P0.2 P0.1 P0.0

0 ×××××××× 0 0 0

I/O 口

×××××× 1 命令状态口

0 ×××××××× 0 0 1×××××× 1 PA 口

0 ×××××××× 0 1 0×××××× 1 PB 口

0 ×××××××× 0 1 1×××××× 1 PC 口

0 ×××××××× 1 0 0×××××× 1 计数器低 8 位

0 ×××××××× 1 0 1×××××× 1 计数器高 6 位及方式

IO/M=1

P2.7~P2.0 P0.7 P0.1 P0.0

0××××××1 ×××××000

I/O 口

命令状态口

0××××××1 ×××××001 PA 口

0××××××1 ×××××010 PB 口

0××××××1 ×××××011 PC 口

0××××××1 ×××××100 计数器低 8 位

0××××××1 ×××××101 计数器高 6 位及方式

地址

7F00H

7F01H

7F02H

7F03H

7F04H

7F05H

▼ 一般将不用的 P2 口位置 1 ,而不用的 P0 口位置 0

② 求 RAM 地址 IO/M=0

P2.7 P2.6 ~ P2.1 P2.0 P0.7~P0.0

0 0000 0000

RAM 地址

×××××× 0 7E00H

0 0 7EFFH×××××× 1111 1111

▼RAM 地址因 P2.7=0 及 P2.0=0 ,故可选为

0111 1110 0000 0000B ( 7E00H )~ 0111 1110 1111 1111B ( 7EFFH )

② 求 8155 的工作方式字

D7 D6 D5 D4 D3 D2 D1 D0

000PAPBPC2 PC1IEAIEBTM1TM2

A 口数据传送方向设置位。0:输入; 1:输出

110 0000 0

所以本实例 8155 方式字可以为 03H8155 工作方式设置程序:

MOV DPTR,#7F00H

MOV A, #03H

MOVX @DPTR,A

;命令字为 03H

③ 对 PA 、 PB 口编程模式

I/O 口

命令状态口

PA 口

PB 口

地址

7F00H

7F01H

7F02H

▼若 PA 为输出口, PB 为输入口, 编程模式如下:

MOVX @DPTR,A

MOV A,#01H

MOV DPTR,#7F01H

MOVX A,@DPTR

INC DPTR ;数据指针指向 PB口

6) 8155 的状态字格式▼通过读 C/S寄存器的操作(即用输入指令),读出的是状态寄存器的内容。

D7 D6 D5 D4 D3 D2 D1 D0

000INTRAINTEABFBINTEBTIMER

A 口的中断允许 /禁止标志0 :禁止; 1:允许

A口中断请求标志位。0:无; 1:有

A口缓冲器空 /满标志0 :空; 1:满

计数器计满标志1 :原计数初值已计满回零

0 :计数器尚为计满

BFAINTRB

7 ) 8155 选通 I/O 的组态

▼A 或 B 口工作在选通方式时 ,C 口的 PC0~PC5就被定义为 A 或 B 口选通 I/O方式的应答和控制线

C 口的控制分配表

工作方式 PC5 PC4 PC3 PC2 PC1 PC0

ALT1 输入ALT2 输出ALT3 输出 BFA INTRA

ALT4 BFB INTRB BFA INTRA

STBA

STBASTBB

ALT3 输出 BFA INTRA

ALT4 BFB INTRB BFA INTRA

STBA

STBASTBB

当外设发出 STBA负脉冲信号时,在该信号下降沿将 PA0 ~ PA7 上的数据锁入 PA口,同时使输入缓冲器满输出线 BFA 变为高电平,用已通知输入设备数据已收到。

8155

PAPA0~PA7

8155 选通方式的组态逻辑如下图所示:

AD0~AD7

PC0PC1PC2PC3PC4PC5

&

PBPB0~PB7

INTEA

&INTEB

WR

RD

INTRABFASTBAINTRBBFBSTBB

均为1

申请中断

8 ) 8155 计数器输出模式8155 内部有一个 14 位减法计数器,计数脉冲来自其引脚“ TIMER IN”,使用定时器前要先装入“时间常数” ---14 位二进制数。其格式为:

D0D1D2D3D4D5D6D7D8D9D10D11D10D11M1M2

低 8 位计数值高 6 位计数值定时器方式

▼装入计数长度寄存器的值为 2H ~ 3FFFH 。

▼ 由于计数长度为 14 位,而每次装入的长度只能为 8 位,故必须分两次装入。

① 计数器输出方式

M2 M1 输出方式 说明0 0 方式 0 单方波输出0 1 方式 1 连续方波输出1 0 方式 2 单脉冲输出1 1 方式 3 连续脉冲输出(计数值自动重装)

▼8155 的计数最高频率约为 4MHz

▼硬件复位信号 RESET 的到达,会使计数器停止工作,直至由 C/S寄存器再发出启动计数器命令。

② 8155 计数器实例

实例内容:

若 A 口定义为基本输入 方式, B口也定义为基本输出方式,计数器作为方波发生器,对 80C51 输入脉冲进行 24分频,试编写 8155 I/O 口初始化程序。

24分频即计数初值为 24(000000 0011000B=18H)加上定时计数控制 01(连续方波),则送往定时计数器的时间常数及定时控制字应为: 01000000 00011000B=4018H

实例分析:

8155

③ 8155 计数器实例

AD0~AD7

CE

IO/M

RESET

ALE

RD

WR

80C51P2.7

P2.0

RESET

ALE

RD

WR

P0

PA

PB

PC

EA

+ 5V

TIME IN

TIME OUT

输出

输出

MOV DPTR,#7F00H MOV A,,#0C2HMOVX @DPTR,A

MOV DPTR,#7F04H MOV A , #18HMOVX @DPTR , A

I/O 口

命令状态口

PB 口

PA 口

PC 口

计数器低 8 位

计数器高 6 位及方式

地址

7F00H

7F01H

7F02H

7F03H

7F04H

7F05H

INC DPTRMOV A,,#40HMOVX @DPTR,A

;送 8155命令字

;计数器寄存器低 8位赋值

; 计数器寄存器高 8位赋值

三、静态显示与动态显示

1 、静态显示

▼ 所谓静态显示,是指显示器显示某一个字符时,相应段的发光二极管恒定地导通或截至。静态显示有并行输出和串行输出两种方式。

▼ 对于静态显示方式, LED 显示器由接口芯片直接驱动,采用较小的驱动电流就可以得到较高的显示亮度。

74LS138

① 并行输出的静态显示电路abcdefgdp

+5v

共阳 LED1

abcdefgdp

+5v

共阳 LED2

80C51

P0

P2.7 P2.6 P2.5

WR ≧1 1

C B A

Y0Y1≧1 1

D1D2D3D4D5D6D7D8

Q1Q2Q3Q4Q5Q6Q7Q8G

74L

S3

73

D1D2D3D4D5D6D7D8

Q1Q2Q3Q4Q5Q6Q7Q8G

74L

S3

73

② 串行输出的静态显示电路abcdefgdp

+5v

共阳 LED1

abcdefgdp

+5v

共阳 LED2

80C51

RXD

A

B

74L

S1

64

CP

Q1Q2Q3Q4Q5Q6Q7Q8

A

B7

4LS

16

4

CP

Q1Q2Q3Q4Q5Q6Q7Q8

TXD &P1.0

静态显示与动态显示

2 、动态显示

▼ 所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。对于显示的每一位而言,每隔一段时间点亮一次。

▼虽然在同一时刻只有一位显示器在工作(点亮),但由于人眼的视觉暂留效应和发光二极管熄灭时的余晖,我们看到的却是多个字符“同时”显示。

8155

PB0PB1PB2PB3PB4PB5PB6PB7

+5V

PA5PA4PA3PA2PA1PA0

7407×2

7406

3 、项目电路

AD0~AD7

CE

IO/M

RESET

ALE

RD

WR

80C51P2.7

P2.0

RESET

ALE

RD

WR

EA

P0

ab

cd

ef

gdp

+ 5V

COM

100Ω

4 、画流程图

程序开始

送数据到 79H开始的显示缓冲单元

调用显示子程序

结束

设置 8155 工作方式

5、源程序

主程序流程图

主程序 ORG 0000H

START: AJMP MAIN

MAIN:ORG 0030H

MOV 79H,06HMOV 7AH,05HMOV 7BH,08HMOV 7CH,00HMOV 7DH,00HMOV 7EH,02HMOV DPTR,#7F00 H

MOV A,#03H

MOVX @DPTR,A

ACALL DISPLAY

ENDSJMP LOOP

LOOP:

扫描到第 6 个显示器否?

显示数据缓冲区首地址送 R0

使显示器最右边位亮

数据指针指向 A 口

送扫描值

数据指针指向 B口

取欲显示的数据

查表,取出字型码

调用延时子程序

未到,扫描码左移 1 位

4 、画流程图 显示子程序子程序入口

送显示

指向下一个显示段数据地址

5 、源程序 显示子程序

DISPLAY : MOV R0,#79H

MOV R3,#01H

MOV A, R3

MOV DPTR,#7F01H

MOVX @DPTR,A

INC DPTR

MOV A,@R0

ADD A,#0DH

MOVC A,@A+PC

MOVX @DPTR, A ACALL DEALY

MOV A,R3JB ACC.5 ,ELD1

INC R0

RL A

MOV R3,AAJMP LD0

ELD1:;-------------------- 段码DSEG: DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H, DB 40H,00H

;R3 存放扫描值

DELAY: MOV R7,#200

DEL1: MOV R6,#123

NOP

DEL2: DJNZ R6,DEL2

DJNZ R7,DEL1

RET

LD0:

RET

四、键盘及其接口

◇ 按键的特点、输入原理及抖动问题

◇ 独立式键盘

◇ 矩阵式(行列式)键盘

1 、 按键的特点、输入原理

▼按键的分类

触点式:机械无触点式:电气

▼按键输入原理

通过按键的接通与断开,实现两种相反的逻辑状态。

低电平“ 0” 与高电平“ 1”

2 、 键盘接口需要解决的问题

机械按键的抖动时间一般为 5ms~10ms

▼按键识别

▼键抖动及消除

消除方法

是否有键按下求键号

硬件方案—— 双稳去抖电路

软件方案——延时 10ms ~ 20ms后再次判断

1 )按键抖动现象

▼ 在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。

理想波形

实际波形

按下抖动 释放抖动稳定闭合

2 )消除按键抖动① 硬件去抖动在硬件上可采用在键输出端加 R-S 触发器 (双稳态触发器 )或单稳态触发器构成去抖动电路

有抖动

无抖动

▼按键较少时,常采用硬件去抖动电路。

&

&

+ 5V

+5V

A

B

② 软件去抖动

▼在检测到有按键按下时,执行一个 10 ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。

▼ 同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。

3 、独立式键盘

80C51

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

▼ 芯片内部有上拉电阻

特点:

一键一口,按键识别(编程)简单,占用较多口线,适合 8 键以下使用。

80C51

D1

D2

D3

D4

D5

D6

D7

D8

▼ 芯片内部无上拉电阻

Q1

Q2

Q3

Q4

Q5

Q6

Q7

Q8

P0

+5V

5.1K×8

1 )独立式键盘识别

三种方法——随机扫描,定时扫描,中断扫描

定时扫描——每隔一段时间对键盘扫描一次,它是利用单片机内部的 定时 /计数器产生一定时间 (例如 10ms) 的定时,当定时时间到就产生溢出中断。CPU响应中断后,对键盘进行扫描,并在有键按下时,识别按键出该键,并执行该键的功能。

随机扫描——当 CPU空闲时调用键盘扫描子程序,

响应键盘的输入请求

&

中断扫描——为提高 CPU 工作效率,可采用中断扫描工作方式。当无键按下时, CPU做自己的事情,当有键按下时, CPU响应中断请求,执行键盘扫描程序,识别出键号,作相应处理。

80C51

P1.7

P1.6

P1.5

P1.4

INT0

2) 键盘扫描程序▼ 当任何一个键被按下时,与其相连的输入线被置成 “ 0”,平时该线为“ 1”。

START : MOV P1 , #0FFH ;先置 P1口为输入 MOV A , P1 ;输入键状

态JNB ACC.0 , P0F ;查询 0 号键JNB ACC.1 , P1F ;查询 1 号键JNB ACC.2 , P2F ;查询 2 号键JNB ACC.3 , P3F ;查询 3 号键JNB ACC.4 , P4F ;查询 4 号键JNB ACC.5 , P5F ;查询 5 号键JNB ACC.6 , P6F ;查询 6 号键JNB ACC.7 , P7F ;查询 7 号键AJMP START

P0F : LJMP PROM0 ;入口地址表P1F : LJMP PROM1

P7F : LJMP PROM7

……

PROM0 :… ... ; 0号键功能程序

PROM7 :… … ; 7号键功能程序

… …LJMP START ; 0号键处理完返回键盘扫描

LJMP START ; 7号键处理完返回键盘扫描

… …… …

… …

4 、行列式(矩阵式)键盘

80C51

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

Y1Y0 Y2 Y3

X0

X1

X2

X3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

4×4 键盘

芯片内部有上拉电阻

4 行

4 列

8155PC0

PC1

PC2

PC3

PA0

PA1

PA2

PA3

Y1Y0 Y2 Y30 1 2 3 4 5

6 7 8 9 10 11

12 13 14 15 16 17

18 19 20 21 22 23

+5V

PA4PA5

5.1KΩ×4

4×6 键盘

芯片内部无上拉电阻

Y5Y4

1 )矩阵式键盘扫描过程

80C51

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

Y1Y0 Y2 Y3

X0

X1

X2

X3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

+5V

▼ 先判断有无键按下

▼ 再确认哪个键被按下

▼ 再确定每个键的键号

0

0

0

0

11

11

内部上拉电阻

①、先判断有无键按下▼ 列线输出 0000 ,然后输入行线状态, 若没有键按下,则行线状态为全 1 ( 1111 ); 若有任一键按下,则行线状态不为全( 1111 );键按下 / 释放判断子程序 KS : MOV A,#00H

MOV P1,A

MOV P1,#0FH

MOV A,P1

CPL A

ANL A,#0FH

RET

;全扫描字# 00H送 P1口

;读入 P1 口状态;变正逻辑,高电平表示有键按下

;取低 4 位;返回, A≠0 表示有键按下

② 再确认哪个键被按下

▼ 列线逐行输出 0 (如 1110 ), 然后输入行线状态 ;

▼若没有键按下,则行线状态为全 1 ( 1111 );

▼若有任一键按下,则行线状态不为全为 1 (如 0111 ,说明右上角那个键被按下)

确认哪一键被按下子程序

ACALL KS 键按下 / 释放判断子程序JNZ LK1

ACALL DELAY10ms

AJMP SMKEY

ACALL KS

JZ WKEY

LK1:

SMKEY:

AJMP SMKEY

WKEY: MOV P1, #1110 1111B

MOV A,P1

ANL A,#0FH

CJNE A,#0FH,PKEY

; 置扫描码,检测 P1.4 列

;P1.4 列( Y0) 有键按下,转键处理MOV P1, #1101 1111BMOV A,P1

ANL A,#0FH

CJNE A,#0FH,PKEY

; 置扫描码,检测 P1.5 列

;P1.5 列( Y1) 有键按下,转键处理

;以下为逐列扫描哪一列有键按下程序

WKEY: MOV P1, #1011 1111B

MOV A,P1

ANL A,#0FH

CJNE A,#0FH,PKEY

; 置扫描码,检测 P1.6 列

;P1.5 列( Y2) 有键按下,转键处理MOV P1, #0111 1111BMOV A,P1

ANL A,#0FH

CJNE A,#0FH,PKEY

; 置扫描码,检测 P1.7 列

;P1.7 列( Y3) 有键按下,转键处理

;继续检测 P1.5 列及 P1.6 列

LJMP SMKEY

PKEY: … … ; 键处理

③ 确定每个键的键号(键处理)▼ 当第 0列处于低电平时,逐行查找是否有行线变 低,若有,则第 0列与该行的交叉点按键按下;若无,则表示第 0列无键按下,再让下一列处在低电平,依次循环。

键号=所在行号 × 键盘列数+所在列号

或 键号=行首键号( 0 、 4 、 8 、 12 )

+列号( 0 、 1 、 2 、3 )

模块七小结 1 、单片机应用系统的扩展中,通常都要用 到 ROM 的扩展,单片机的地址总线为 16位,所以,外扩片外存储器的最大容量为 64KB。虽然 ROM 与 RAM 的地址重叠,但由于使用的控制信号不同,所以不会发生混乱。外扩片外 RAM 的最大容量也为 64KB。

2、 8155 芯片内部 包括 256B的 SRAM ,两个 8位并行接口,一个 6位并行接口和一个 14位定时 /计数器,它与单片机的接口非常简单,是单片机应用系统中广泛使用的芯片之一。

模块七作业

P177

题 1 加油,努力!

作业题解析

编写程序,把外部 RAM 中 1000H ~ 1030H 的内容传送到内部 RAM 的 30H ~ 60H 中。

▼这是单片机内部和外部 RAM 数据批量传递的问题,所以会用到MOVX A,@DPTR 或 MOVX @DPTR,A ;

▼这样内容 RAM 单元用 R0 或 R1 作为指针,外部RAM 单元用 DPTR 作为指针,共有 31H 个单元,用R7 作为计数寄存器。

1、题目

2 、题意分析

3 、画流程图程序开始

结束

设置指针 R0 的初值设置指针 DPTR 的初值

设置计数寄存器 R7的初值为 31H

(R7)-1(R7)=0?

传送数据指针 R0 和 DPTR 各

加 1

N

Y

ORG 0000H

LJMP MAINORG 0030H

MAIN :MOV R0,#30H

MOV DPTR,#1000H

MOV R7,#31H

MOVX A,@DPTR

MOV @R0,A

DJNZ R7,LOOP

LOOP:

INC R0INC DPTR

END

4 、源程序