《单片机技术第四章外围模块教学文案》由会员分享,可在线阅读,更多相关《单片机技术第四章外围模块教学文案(82页珍藏版)》请在金锄头文库上搜索。
1、1,第四章 51系列单片机 的功能模块及应用,主要掌握并行口、串行口、定时器的结构、工作原理及应用,2,4-1 并行口及其应用,51系列单片机的并行口,按特性可分类为: 单一的准双向口(如89C52的P1.2P1.7) 多功能复用的准双向口(如89C52的P1.0、P1.1,P3.0P3.7) 可作地址总线输出口的准双向口(P2) 可作地址/数据总线口的三态双向口(P0),3,每个I/O线均由锁存器,输出电路和输入缓冲器组成。 每一条口线可独立用作输入和输出。作输出时可锁存数据,输入时可缓冲数据。 CPU对口的读操作有两种: 读修改写操作(读口锁存器状态) 例:ANL P0,A ;(P0)(P
2、0)(A) ORL P0,#data ;(P0)(P0)data DEC P0 ;(P0)(P0) -1 读引脚操作(读口引脚上外部输入信息) 例 MOV A,P1,4,6,P0口1位结构图,起输出锁存作用,8个锁存器构成了SFRP0,V1、V2组成输出驱动器,以增大带负载能力,三态门1是引脚输入缓冲器,读锁存器端口,7,2地址/数据分时复用功能 当P0口作为地址/数据分时复用总线时,可分为两种情况:一种是从P0口输出地址或数据,另一种是从P0口输入数据。,8,在访问片外存储器而需从P0口输出地址或数据信号时,控制信号应为高电平“1”,使转换开关MUX把反相器4的输出端与V1接通,同时把与门3
3、打开。 1)当地址或数据为“1”时,经反相器4使V1截止,而经与门3使V2导通,P0.x引脚上出现相应的高电平“1”; 2)当地址或数据为0时,经反相器4使V1导通而V2截止,引脚上出现相应的低电平0。这样就将地址/数据的信号输出。,9,3通用I/O接口功能 当P0口作为通用I/O口使用,在CPU向端口输出数据时,对应的控制信号为0,转换开关把输出级与锁存器Q端接通,同时因与门3输出为0使V2截止,此时,输出级是漏极开路电路。当写脉冲加在锁存器时钟端CLK上时,与内部总线相连的D端数据取反后出现在Q端,又经输出V1反相,在P0引脚上出现的数据正好是内部总线的数据。当要从P0口输入数据时,引脚信
4、息仍经输入缓冲器进入内部总线。,10,总之: 一 P0口作为一般I/O口使用 1 P0口用作输出口:必须外接上拉电阻,才有高电平输出。 2 P0口作输入口:先向端口锁存器写入“1”。 二 P0口作为地址/数据总线使用 1 以P0口引脚输出低8位地址或数据信息 2 由P0口输入数据 三 P0口可驱动8个LSTTL电路,11,4-1-2 P1口(准双向口),12,P1.0、P1.1为多功能双向口, P1.2P1.7为单一功能准双向口。P1口的第一功能是准双向口,每一位可分别定义为输入线或输出线。输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出高电平时,可以提供上拉电流负载。,13,P1的
5、某一位作为输入线时,该位的口锁存器必须保持“1”。使输出场效应管截止。该引脚才可由内部拉高电路拉成高电平,或由外部电路拉成低电平。P1口具有驱动4个LSTTL负载的能力。,14,15,4-1-3 P2口(准双向口),16,当作为准双向通用I/O口使用时: 控制信号使转换开关接向左侧,锁存器Q端经反相器3接V1,其工作原理与P1相同,也具有输入、输出、端口操作三种工作方式,负载能力也与P1相同。,17,1 系统中外接程序存储器时:P2口输出程序存储器的高8位地址,不作I/O口使用。 2 系统中无外接程序存储器,而扩展有片外RAM的系统中: 片外RAM的容量256B:P2口仍做输入/输出口使用。使
6、用R0或R1作地址指针。 片外RAM的容量256B : P2口不能做输入/输出口,而做系统扩展的高8位地址总线口使用。使用DPTR、P2R0、P2R1作地址指针。,18,4-1-4 P3口(准双向口),19,P3口是一多功能口,既做准双向口又做特殊输入输出口。 1 做通用I/O口使用: P3口做输入使用,应由软件向口锁存器写“1”。,20,2 做第二功能使用: 某位做第二功能使用该位D锁存器Q应被硬件自动置“1”。 P3.0 RXD P3.5 T1 P3.1 TXD (出) P3.6 WR(出) P3.2 INT0 P3.7 RD(出) P3.3 INT1 P3.4 T0,3 P3口具有驱动4
7、个LSTTL负载的能力。,21,4-1-5 并行口的应用,1 外接蜂鸣器 2 利用可控硅控制加热电路 3 BCD码拨码盘的接口 BCD码拨码盘构造 一个拨码盘可以输入1位十进制数据。 拨码盘拨到某个位置时,控制线分别与4位数据线中某几位接通。 接通线定义为“1”,不通的线定义为“0”。,22,4-2 定时器及其应用,定时器功能: 1 定时操作 2 测量外部输入信号 3 定时输出 4 监视系统正常工作,23,4-2-1定时器的结构和工作原理,1 定时器由一个N位计数器、计数时钟源控制电路、状态和控制寄存器等组成。 2 计数脉冲有两个来源:外部的脉冲源系统的时钟振荡器。,TMOD TCON,中断,
8、24,3 用作定时器时,每经过一个机器周期,计数器自动加1,直到计数溢出;用作计数器时,外部时钟脉冲加在定时器的外输入端T0(P3.4)或T1(P3.5),每出现一次负跳变,计数器加1。 4 两个模拟开关,左边决定定时/计数器的工作状态,右边决定脉冲源是否加在计数器的输入端。 5 16位的计数器由两个8位SFR TH和TL组成。,25,定时器/计数器T0、T1的结构框图,26,4-2-2 定时器/计数器T0和T1,一方式寄存器TMOD(89H) 1 不能进行位寻址,只能用字节寻址。复位时,TMOD所有位为0 熟悉各位功能 T1方式字段 T0方式字段,27, GATE门控位 “1”:定时器的计数
9、受外部引脚输入电平的控制 “0”:定时器的计数不受外部引脚输入电平的控制 C/T功能选择位 “1”:计数功能 “ 0”:定时功能 M1M0工作方式选择位,28,适于T0,两个8位计数器,29,二 控制寄存器TCON(88H) 1 既可字节寻址又可位寻址。复位时,TCON各位为0 例:SETB TR1 ;启动定时器T1工作 熟悉各位功能 D7 D6 D5 D4 D3 D2 D1 D0,30,TF1定时器/计数器T1的溢出标志位 TR1定时器/计数器T1的运行控制位 TF0定时器/计数器T0的溢出标志位 TR0定时器/计数器T0的运行控制位 IE1外部中断1下降沿触发标志位 IE0外部中断0下降沿
10、触发标志位 IT1外部中断1触发类型选择位 IT0外部中断0触发类型选择位,31,三 定时器/计数器的初始化 初始化即将控制字写入定时器/计数器的过程。初始化一般步骤: 1 写入初值TH0、TL0或TH1、TL1 2 对TMOD赋值 3 对IE赋值(有中断产生时) 4 若用软件启动,则仅把TR0或TR1置“1”; 若用外中断引脚电平启动,则还需给外 引脚加启动电平。,32,四 定时器/计数器的4种工作方式 1 方式0,33,方式0是一个13位的定时器/计数器,由TL0的低5位和TH0的8位组成。 定时时间为T=12*(213-a)/fosc s 最大定时时间:M=213=8192T,34,例7
11、:已知晶振频率fosc=6MHZ,若使用T0方式0产生10ms定时中断,试对T0进行初始化编程。 MOV TH0,#63H MOV TL0,#18H SETB TR0 MOV IE ,#82H RET,35,例:T0工作于方式0,要求在P1.0引脚上产生周期为2ms的方波输出(fosc=6MHZ),ORG 0000H AJMP MAIN ORG 000BH AJMP INQP ORG 0030H MAIN: MOV TMOD, #00H MOV TH0, #0F0H MOV TL0, #0CH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;开放CPU中断 A
12、JMP $ ;定时中断等待,36,ORG 4000H ;中断服务程序 INQP: MOV TH0, #0F0H ;重写定时常数 MOV TL0, #0CH CPL P1.0 ;P1.0变反输出 RETI,37,2 方式1 方式1是一个16位定时器/计数器,结构和操作方式与方式0基本相同。定时时间为T=12*(216-a)/fosc s 最大定时时间:M=216=65536T,38,例:设fosc=12MHz,T0工作于方式1,产生50ms定时中断,TF0为高级中断源。试编写主程序中的初试化程序和中断服务程序,使P1.0产生周期为1秒的方波。 MAIN:MOV SP, #EFH MOV TH0,
13、 #3CH MOV TL0, #0B0H MOV TMOD , #1 MOV IP, #2,39,MOV IE, #82H SETB TR0 MOV 30H, #0AH PTF0:ORL TL0, #0B0H;中断服务程序 MOV TH0, #3CH DJNZ 30H, PTF0R MOV 30H, #0AH CPL P1.0 PTF0R:RETI,40,用查询法: MOV 30H, #0AH MOV TH0, #3CH MOV TL0, #0B0H MOV TMOD, #1 SETB TR0 L2: JBC TF0, L1 SJMP L2 L1: MOV TH0, #3CH MOV TL0,
14、 #0B0H,41,DJNZ 30H, L2 MOV 30H, #0AH CPL P1.0 SJMP L2,42,3 方式2 方式2是能重置初值的8位定时器/计数器,TL0作为8位计数器,TH0作为计数初值寄存器。适于用做较精确的定时脉冲信号发生器。 定时时间 T=12*(28-a)/fosc s 最大定时时间:M=28=256T,43,定时器/计数器方式2的逻辑结构,44,MOV TMOD, #60H ; 设置T1为方式2计数 MOV TH1, #9CH ;赋初值 MOV TL1, #9CH SETB TR1 DE:JBC TF1, RE ;查询计数溢出 AJMP DE RE: CPL P1
15、.0 AJMP DE,例:用定时器1在方式2计数,要求每计满100次,将P1.0端取反。,外部计数信号由P3.5引入,每跳变一次计数器加1 100=28-a ; a=156=9CH,45,定时器/计数器方式3的逻辑结构,4 方式3,46,方式3只适用于T0,T0分为两个独立的8位计数器TL0和TH0。一般T1用作串行口波特率发生器。 最大定时时间:M=28=256T 例 用定时器T0,分别产生两个方波,一个周期为200s,另一个周期为400 s (fosc =9.216MHZ)。,47,解:定时初值计算 TL0=28-9.216*106*100*10-6/12 =256-76.8 =179.2 转换十六进制为0B3H TH0=28-9.216*106*200*10-6/12 =256-153.6 =102.4 转换十六进制为66H,48,ORG 0000H AJMP MAIN ORG 000BH ;TL0中断入口 AJMP ITL0 ORG 001BH ;TH0中断入口 AJMP ITH0 ORG 0100H MAIN:MOV SP, #60H MOV TMOD, #03H,49,MOV TL0, #0B3H MOV TH0, #66H SETB TR0 ;启动TL0初值 SETB TR1 ;启动TH0初值 SETB ET0 ;允许TL0中断 SETB ET1 ;允许TH