《单片机技术及应用》5
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.8255的内部结构
第一节 扩展并行口 二、可编程并行口扩展
2.8255的引脚 8255的引脚排列如图5-11所示,最常用的封装形式 是DIP-40,也有PLCC和CLCC的封装。
8255引脚排列图
第一节 扩展并行口
二、可编程并行口扩展
3.8255的寄存器 8255一共有4个寄存器,通过对A0和A1的控制来选择对其中的一个寄存器进行操作,A0、 A1和CS、WR、 RD一起可以确定8255的操作
6.工作方式5——硬件控制
工作方式5的特点如下: (1)在GATE门控信号触发之后的N+1个时钟脉冲之后输出一 个负脉冲。 (2)在计数器工作过程中,如果GATE门控信号再次接收到 一个上升沿,计数器从计数初值开始重新计数,OUT引脚的输 出维持高电平而不产生变化。 (3)在计数器计数过程中写入的计数初值需要等到下一次 GATE门控信号触发计数器后才重新开始计数。
8253/8254引脚图
第二节 扩展定时器/计数器8253/8254
二、8253的引脚
CS
WR
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
1
—
RD
A1
A0
操作
1
0
0
写入计数器0的计数初值
1
0
1
写入计数器1的计数初值
1
1
0
Hale Waihona Puke Baidu
写入计数器2的计数初值
1
1
1
写控制寄存器
0
0
0
读计数器0的计数初值
0
表40 -6寄存器1TMOD读各计位数的器1功的能计数初值
16位数据总线
第一节 扩展并行口 一、不可编程并行口扩展
利用单片机串行口和8位并行输入/串行输出移位寄存器CD4014来扩展串行口为16位并行数据输入口的示例。
用串行口扩展16位并行输入口
第一节 扩展并行口
二、可编程并行口扩展
在单片机系统设计中还经常使用可编程并行口芯片8255来扩展并行口。 8255是一种可编程并行输入/输出芯片,有3组8位并行数 据口,可以分别根据独立编程为输入输出方式。
void delay(unsigned int delaydata) {
unsigned char i; for(i=0;i<delaydata;i++); }
void main(void) {
delay(255); PORTCtr = 0x91;
//设置8255工作方式 DataA = PORTA; DataB = PORTB;
描述
数据读/写格式控制,单片机对16位计数器进行写入和读出操作时,有4种方式, 由D5~D4的值来决定: 00:将计数器的当前值锁存在输出寄存器中 01:只读/写计数器的低8位,写入时高8位自动置0 10:只读/写计数器的高8位,写入时低8位自动置0 11:对于16位计数器进行两次读/写操作,第1次为低字节,第2次为高字节,两 次的地址相同
第一节 扩展并行口
二、可编程并行口扩展
4.8255和单片机的接口
第一节 扩展并行口
二、可编程并行口扩展
8255的4个寄存器地址分配:
A口寄存器 0xxx xx00 B口寄存器 0xxx xx01 C口寄存器 0xxx xxl0 控制口寄存器 0xxx xx11
例:扩展8255
#include “ treg51.h” #include “absac.h”
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
4.工作方式3——方波发生器
工作方式3的特点如下: (1)当计数初始化值N为偶数时,输出引脚OUT上的高低 电平脉宽相等均为N/2;当N为奇数时,输出引脚OUT上的 高电平的脉宽比低电平多一个脉冲周期。 (2)硬件同步。 (3)软件同步。
状态,如表所示。
A1
A0
RD
WR
CS
8255操作
0
0
0
1
0
A口输出B口
0
1
0
1
0
输出
输入
C口输出
1
0
1
0
0
0
0
1
0
0
A口输入B口
0
1
1
0
0
输入
1
10
1
0
0
C口输入
输出
1
1
1
写控制字 0
.
.
.
1
高阻
1
1
0
1
0
非法状态 非法操作
高阻
.
.
1
1
0
8255操作模式
第一节 扩展并行口 二、可编程并行口扩展
3.8255的控制寄存器和工作方式
void main(void) {
…… while(1) {
U3 = 0xFF; U4 = 0xAA; …… } }
第一节 扩展并行口
一、不可编程并行口扩展
2.使用三态门扩展并行口 常用的三态门有74xx244等。
当74LS244的1G和2G引脚均加上低电平时,输出引脚Y上的数值和输入引脚A 上的数值相同,否则74LS244的输出为“高阻态”,可以看作与总线断开。
计数器工作方式选择,D3~D1的数值从000~101分别决定了计数器的工作方式 为0~5
计数格式选择位: 0:采用二进制计数方式,写入的初始化数值范围为0x0000~0xFFFF,最大计数 数值为0x0000,代表65536 1:采用十进制元计数方式,写入的初始化数值范围为0000~9999,最大计数数 值为0000,代表10000
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
2.工作方式1——可控的单个脉冲发生器
工作方式1的特点: (1)不需要再次写入初值。 (2)在任何时刻都可以重启计数。 (2)可在工作时重装初值,但必须在下次计数启动 时初值方可生效。
第二节 扩展定时器/计数器8253/8254
• 并行口的扩展有 • 1.可编程并行口扩展 • 2.不可编程并行口扩展
第一节 扩展并行口
一、不可编程并行口扩展
• 不可编程的并行口扩展一般用于扩展系统比较简单、没有严格时序 要求的场合,以及仅仅需要对信号进行缓冲、驱动的场合。不可编 程的并行口扩展一般包括: 1.使用锁存器扩展; 2.使用三态门扩展; 3.使用总线驱动器扩展等方式。
SCM Technology & Application
单片机技术及应用
PRESENTED BY 盛国超 许林冲
CONTENTS
目录
1
PART ONE
绪论
2
PART TWO
MCS-51结 构及系统
指令
3
PART THREE
MCS-51的 C语言基础
4
PART FOUR
MCS-51的 基本内部
资源
5
void main(void) {
…… while(1) {
U3_Data = U3; U4_Data = U4; …… } }
第一节 扩展并行口
一、不可编程并行口扩展
• 在MCS-51系列单片机进行外围设备扩展时,常常需要将P0口复用,既作为低8位的地址 总线使用,也作为8位的数据总线使用,在这种情况下可以使用带三态功能的锁存器 74xx373来进行扩展。
0
1
0
读计数器2的计数初值
0
1
1
非法操作
—
—
— 禁止工作
8253的操作状态
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
位标号 7 6
5
4 3 2 1
0
位名称 D7 D6
D5
D4 D3 D2 D1
D0
选择计数器: 00:选择计数器0 01:选择计数器1 10:选择计数器2 11:非法
PART FIVE
单片机的 资源扩展
5
PART FIVE
单片机资源扩展
I. 扩展并行口 II. 扩展定时器/ 计数器8253/8254…定时器/计
数器 III. 扩展外部内存
IV. I2C 总线扩展
V. 其他扩展
第一节 扩展并行口
扩展并行口
• 并行口是单片机进行内外信息交换的主要信道。虽然MCS-51系列 单片机一般都有4个8位并行口,但是由于需要进行复用,所以常常 需要进行并行口的扩展。此外,并行口的扩展也是解决单片机并行 口驱动能力不足的一个好办法。
进行驱动;当数据流向为双向时,需要使用双向的驱动器,如74xx245。
第一节 扩展并行口
一、不可编程并行口扩展
如果系统需要的驱动能力很大,可以使用达林顿管或L293等专用驱动芯片,L293的驱动能力能够达到1A。
第一节 扩展并行口
一、不可编程并行口扩展
4.使用串行口来扩展并行口 MCS-51系列单片机的并行口太少时,可以把未使用的单片机串行口扩展成一个并行口。
//从A口、B口读入数据
DataC = 0x55; PORTC = DataC; //从C口输出数据 PORTCtr = 0x09; //设置PC4=1 delay(10);
PORTCTr = 0x08; //清除PC4
}
第二节 扩展定时器/计数器8253/8254 一、8253的内部结构
一、8253的内部结构 1.数据总线缓存器 2.读写控制逻辑 3.控制寄存器 4.定时器/计数器0、1、2
8253控制寄存器功能
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
• 8253的每个计数器都可以通过对控制寄存器的D5~D4操作来独立配置为工作方式0~工作方式5。 1.工作方式0——计时结束时产生中断
方式0的工作特点: (1)仅仅计数1次。 (2)在计数器工作过程中可以修改计数器的当前初始化 值。 (3)可以通过设置GATE门控信号为0来暂停计数。
第二节 扩展定时器/计数器8253/8254
#define PORTA XBYTE[0x7FFC]
#define PORTB XBYTE[0x7FFD]
#define PORTC XBYTE[0x7FFE]
#define PORTCtr XBYTE[Ox7FFF]
unsigned char DataA; unsigned char DataB; unsigned char DataC;
1.使用锁存器扩展并行口
输入引脚
CLEAR
CLOCK
D
L
X
X
H
H
H
L
H
L
X
OUTPUT Q
L H L Q0
74LS273引脚图
74LS273引脚图
第一节 扩展并行口 一、不可编程并行口扩展
用74LS273扩展并行口
第一节 扩展并行口
一、不可编程并行口扩展
• 例:扩展74LS273
#include “absacc.h” #define U3 XBYTE[0xBF] #define U4 XBYTE[0x7F]
三、8253的控制寄存器和工作方式
3.工作方式2——分频器
工作方式2有以下几个特点: (1)不用设置初始化值,计数器能够连续工作,输出频率 固定的脉冲。 (2)可以通过GATE门控信号控制计数器工作,控制方式和 工怍方式0相同。 (3)可在工作时重装初值,但是并不停止正在工作的计数 器,等到下一个工作周期时按照新的初值开始工作。
用74LS244引脚图
第一节 扩展并行口 一、不可编程并行口扩展
• 用74LS244扩展并行口
第一节 扩展并行口
一、不可编程并行口扩展
例:扩展74LS244
• 下例给出了对U3、U4操作的实例,扩展
74LS244的地址分配和扩展74LS273完全相同, 也不是一个确定的数值。
#include “absacc.h” #define U3 XBYTE[0xBF] #define U4 XBYTE[0x7F] unsigned char U3_Data; unsigned char U4_Data;
8253内部结构框图
第二节 扩展定时器/计数器8253/8254
二、8253的引脚
1.Do~D7:双向数据总线。 2.CS:使能信号。 3.WR:对8253写数据信号。 4.RD:对8253读数据信号。 5.CLKO~CLK2:计数器0~计数器2的时钟信号输入端。 6.GATE0~GATE2:计数器0~计数器2的门控信号输入端。 7.OUTO~OUT2:计数器0~计数器2的输出信号端口 8.A0、 A1: 8253的内部寄存器选择位。
OUTPUT ENABLE
L L L H
ENABLE
LATCH
D
H
H
H
L
L
X
X
X
74LS373引脚功能表
OUTPUT
H L Q0 Z
74LS373引脚图输出
第一节 扩展并行口 一、不可编程并行口扩展
用74LS373来复用P0口
第一节 扩展并行口
一、不可编程并行口扩展
3.扩展总线驱动能力 单片机的引脚驱动能力是有限的,所以在单片机的引脚的实际负载超过能够承受的驱动能力时必须使用驱动器。 数据总线上的信号可能是单向流动的,也可能是双向流动的。当数据流向为单向时,可以使用和地址总线、控制总线相同的驱动器
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
5.工作方式4——软件控制的选通信号发生器
工作方式4的特点如下: (1)在使用软件触发过程中,门控信号一定要保 持为高电平。 (2)软件再触发。
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
第一节 扩展并行口 二、可编程并行口扩展
2.8255的引脚 8255的引脚排列如图5-11所示,最常用的封装形式 是DIP-40,也有PLCC和CLCC的封装。
8255引脚排列图
第一节 扩展并行口
二、可编程并行口扩展
3.8255的寄存器 8255一共有4个寄存器,通过对A0和A1的控制来选择对其中的一个寄存器进行操作,A0、 A1和CS、WR、 RD一起可以确定8255的操作
6.工作方式5——硬件控制
工作方式5的特点如下: (1)在GATE门控信号触发之后的N+1个时钟脉冲之后输出一 个负脉冲。 (2)在计数器工作过程中,如果GATE门控信号再次接收到 一个上升沿,计数器从计数初值开始重新计数,OUT引脚的输 出维持高电平而不产生变化。 (3)在计数器计数过程中写入的计数初值需要等到下一次 GATE门控信号触发计数器后才重新开始计数。
8253/8254引脚图
第二节 扩展定时器/计数器8253/8254
二、8253的引脚
CS
WR
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
1
—
RD
A1
A0
操作
1
0
0
写入计数器0的计数初值
1
0
1
写入计数器1的计数初值
1
1
0
Hale Waihona Puke Baidu
写入计数器2的计数初值
1
1
1
写控制寄存器
0
0
0
读计数器0的计数初值
0
表40 -6寄存器1TMOD读各计位数的器1功的能计数初值
16位数据总线
第一节 扩展并行口 一、不可编程并行口扩展
利用单片机串行口和8位并行输入/串行输出移位寄存器CD4014来扩展串行口为16位并行数据输入口的示例。
用串行口扩展16位并行输入口
第一节 扩展并行口
二、可编程并行口扩展
在单片机系统设计中还经常使用可编程并行口芯片8255来扩展并行口。 8255是一种可编程并行输入/输出芯片,有3组8位并行数 据口,可以分别根据独立编程为输入输出方式。
void delay(unsigned int delaydata) {
unsigned char i; for(i=0;i<delaydata;i++); }
void main(void) {
delay(255); PORTCtr = 0x91;
//设置8255工作方式 DataA = PORTA; DataB = PORTB;
描述
数据读/写格式控制,单片机对16位计数器进行写入和读出操作时,有4种方式, 由D5~D4的值来决定: 00:将计数器的当前值锁存在输出寄存器中 01:只读/写计数器的低8位,写入时高8位自动置0 10:只读/写计数器的高8位,写入时低8位自动置0 11:对于16位计数器进行两次读/写操作,第1次为低字节,第2次为高字节,两 次的地址相同
第一节 扩展并行口
二、可编程并行口扩展
4.8255和单片机的接口
第一节 扩展并行口
二、可编程并行口扩展
8255的4个寄存器地址分配:
A口寄存器 0xxx xx00 B口寄存器 0xxx xx01 C口寄存器 0xxx xxl0 控制口寄存器 0xxx xx11
例:扩展8255
#include “ treg51.h” #include “absac.h”
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
4.工作方式3——方波发生器
工作方式3的特点如下: (1)当计数初始化值N为偶数时,输出引脚OUT上的高低 电平脉宽相等均为N/2;当N为奇数时,输出引脚OUT上的 高电平的脉宽比低电平多一个脉冲周期。 (2)硬件同步。 (3)软件同步。
状态,如表所示。
A1
A0
RD
WR
CS
8255操作
0
0
0
1
0
A口输出B口
0
1
0
1
0
输出
输入
C口输出
1
0
1
0
0
0
0
1
0
0
A口输入B口
0
1
1
0
0
输入
1
10
1
0
0
C口输入
输出
1
1
1
写控制字 0
.
.
.
1
高阻
1
1
0
1
0
非法状态 非法操作
高阻
.
.
1
1
0
8255操作模式
第一节 扩展并行口 二、可编程并行口扩展
3.8255的控制寄存器和工作方式
void main(void) {
…… while(1) {
U3 = 0xFF; U4 = 0xAA; …… } }
第一节 扩展并行口
一、不可编程并行口扩展
2.使用三态门扩展并行口 常用的三态门有74xx244等。
当74LS244的1G和2G引脚均加上低电平时,输出引脚Y上的数值和输入引脚A 上的数值相同,否则74LS244的输出为“高阻态”,可以看作与总线断开。
计数器工作方式选择,D3~D1的数值从000~101分别决定了计数器的工作方式 为0~5
计数格式选择位: 0:采用二进制计数方式,写入的初始化数值范围为0x0000~0xFFFF,最大计数 数值为0x0000,代表65536 1:采用十进制元计数方式,写入的初始化数值范围为0000~9999,最大计数数 值为0000,代表10000
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
2.工作方式1——可控的单个脉冲发生器
工作方式1的特点: (1)不需要再次写入初值。 (2)在任何时刻都可以重启计数。 (2)可在工作时重装初值,但必须在下次计数启动 时初值方可生效。
第二节 扩展定时器/计数器8253/8254
• 并行口的扩展有 • 1.可编程并行口扩展 • 2.不可编程并行口扩展
第一节 扩展并行口
一、不可编程并行口扩展
• 不可编程的并行口扩展一般用于扩展系统比较简单、没有严格时序 要求的场合,以及仅仅需要对信号进行缓冲、驱动的场合。不可编 程的并行口扩展一般包括: 1.使用锁存器扩展; 2.使用三态门扩展; 3.使用总线驱动器扩展等方式。
SCM Technology & Application
单片机技术及应用
PRESENTED BY 盛国超 许林冲
CONTENTS
目录
1
PART ONE
绪论
2
PART TWO
MCS-51结 构及系统
指令
3
PART THREE
MCS-51的 C语言基础
4
PART FOUR
MCS-51的 基本内部
资源
5
void main(void) {
…… while(1) {
U3_Data = U3; U4_Data = U4; …… } }
第一节 扩展并行口
一、不可编程并行口扩展
• 在MCS-51系列单片机进行外围设备扩展时,常常需要将P0口复用,既作为低8位的地址 总线使用,也作为8位的数据总线使用,在这种情况下可以使用带三态功能的锁存器 74xx373来进行扩展。
0
1
0
读计数器2的计数初值
0
1
1
非法操作
—
—
— 禁止工作
8253的操作状态
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
位标号 7 6
5
4 3 2 1
0
位名称 D7 D6
D5
D4 D3 D2 D1
D0
选择计数器: 00:选择计数器0 01:选择计数器1 10:选择计数器2 11:非法
PART FIVE
单片机的 资源扩展
5
PART FIVE
单片机资源扩展
I. 扩展并行口 II. 扩展定时器/ 计数器8253/8254…定时器/计
数器 III. 扩展外部内存
IV. I2C 总线扩展
V. 其他扩展
第一节 扩展并行口
扩展并行口
• 并行口是单片机进行内外信息交换的主要信道。虽然MCS-51系列 单片机一般都有4个8位并行口,但是由于需要进行复用,所以常常 需要进行并行口的扩展。此外,并行口的扩展也是解决单片机并行 口驱动能力不足的一个好办法。
进行驱动;当数据流向为双向时,需要使用双向的驱动器,如74xx245。
第一节 扩展并行口
一、不可编程并行口扩展
如果系统需要的驱动能力很大,可以使用达林顿管或L293等专用驱动芯片,L293的驱动能力能够达到1A。
第一节 扩展并行口
一、不可编程并行口扩展
4.使用串行口来扩展并行口 MCS-51系列单片机的并行口太少时,可以把未使用的单片机串行口扩展成一个并行口。
//从A口、B口读入数据
DataC = 0x55; PORTC = DataC; //从C口输出数据 PORTCtr = 0x09; //设置PC4=1 delay(10);
PORTCTr = 0x08; //清除PC4
}
第二节 扩展定时器/计数器8253/8254 一、8253的内部结构
一、8253的内部结构 1.数据总线缓存器 2.读写控制逻辑 3.控制寄存器 4.定时器/计数器0、1、2
8253控制寄存器功能
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
• 8253的每个计数器都可以通过对控制寄存器的D5~D4操作来独立配置为工作方式0~工作方式5。 1.工作方式0——计时结束时产生中断
方式0的工作特点: (1)仅仅计数1次。 (2)在计数器工作过程中可以修改计数器的当前初始化 值。 (3)可以通过设置GATE门控信号为0来暂停计数。
第二节 扩展定时器/计数器8253/8254
#define PORTA XBYTE[0x7FFC]
#define PORTB XBYTE[0x7FFD]
#define PORTC XBYTE[0x7FFE]
#define PORTCtr XBYTE[Ox7FFF]
unsigned char DataA; unsigned char DataB; unsigned char DataC;
1.使用锁存器扩展并行口
输入引脚
CLEAR
CLOCK
D
L
X
X
H
H
H
L
H
L
X
OUTPUT Q
L H L Q0
74LS273引脚图
74LS273引脚图
第一节 扩展并行口 一、不可编程并行口扩展
用74LS273扩展并行口
第一节 扩展并行口
一、不可编程并行口扩展
• 例:扩展74LS273
#include “absacc.h” #define U3 XBYTE[0xBF] #define U4 XBYTE[0x7F]
三、8253的控制寄存器和工作方式
3.工作方式2——分频器
工作方式2有以下几个特点: (1)不用设置初始化值,计数器能够连续工作,输出频率 固定的脉冲。 (2)可以通过GATE门控信号控制计数器工作,控制方式和 工怍方式0相同。 (3)可在工作时重装初值,但是并不停止正在工作的计数 器,等到下一个工作周期时按照新的初值开始工作。
用74LS244引脚图
第一节 扩展并行口 一、不可编程并行口扩展
• 用74LS244扩展并行口
第一节 扩展并行口
一、不可编程并行口扩展
例:扩展74LS244
• 下例给出了对U3、U4操作的实例,扩展
74LS244的地址分配和扩展74LS273完全相同, 也不是一个确定的数值。
#include “absacc.h” #define U3 XBYTE[0xBF] #define U4 XBYTE[0x7F] unsigned char U3_Data; unsigned char U4_Data;
8253内部结构框图
第二节 扩展定时器/计数器8253/8254
二、8253的引脚
1.Do~D7:双向数据总线。 2.CS:使能信号。 3.WR:对8253写数据信号。 4.RD:对8253读数据信号。 5.CLKO~CLK2:计数器0~计数器2的时钟信号输入端。 6.GATE0~GATE2:计数器0~计数器2的门控信号输入端。 7.OUTO~OUT2:计数器0~计数器2的输出信号端口 8.A0、 A1: 8253的内部寄存器选择位。
OUTPUT ENABLE
L L L H
ENABLE
LATCH
D
H
H
H
L
L
X
X
X
74LS373引脚功能表
OUTPUT
H L Q0 Z
74LS373引脚图输出
第一节 扩展并行口 一、不可编程并行口扩展
用74LS373来复用P0口
第一节 扩展并行口
一、不可编程并行口扩展
3.扩展总线驱动能力 单片机的引脚驱动能力是有限的,所以在单片机的引脚的实际负载超过能够承受的驱动能力时必须使用驱动器。 数据总线上的信号可能是单向流动的,也可能是双向流动的。当数据流向为单向时,可以使用和地址总线、控制总线相同的驱动器
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式
5.工作方式4——软件控制的选通信号发生器
工作方式4的特点如下: (1)在使用软件触发过程中,门控信号一定要保 持为高电平。 (2)软件再触发。
第二节 扩展定时器/计数器8253/8254
三、8253的控制寄存器和工作方式