null第四章 51系列单片机 的功能模块及应用第四章 51系列单片机 的功能模块及应用主要掌握并行口、串行口、定时器的结构、工作原理及应用§4-1 并行口及其应用§4-1 并行口及其应用51系列单片机的并行口,按特性可分类为:
单一的准双向口(如89C52的P1.2~P1.7)
多功能复用的准双向口(如89C52的P1.0、P1.1,P3.0~P3.7)
可作地址总线输出口的准双向口(P2)
可作地址/数据总线口的三态双向口(P0)null每个I/O线均由锁存器,输出电路和输入缓冲器组成。
每一条口线可独立用作输入和输出。作输出时可锁存数据,输入时可缓冲数据。
CPU对口的读操作有两种:
①读—修改—写操作(读口锁存器状态)
例:ANL P0,A ;(P0)←(P0)∧(A)
ORL P0,#data ;(P0)←(P0)∨data
DEC P0 ;(P0)←(P0) -1
②读引脚操作(读口引脚上外部输入信息)
例 MOV A,P1null§4-1-1 P0 口§4-1-1 P0 口 P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用I/O接口。
其1位的结构原理如下图所示。P0口由8个这样的电路组成。nullP0口1位结构图起输出锁存作用,8个锁存器构成了SFR—P0V1、V2组成输出驱动器,以增大带负载能力三态门1是引脚输入缓冲器读锁存器端口null 2.地址/数据分时复用功能
当P0口作为地址/数据分时复用总线时,可分为两种情况:一种是从P0口输出地址或数据,另一种是从P0口输入数据。
null在访问片外存储器而需从P0口输出地址或数据信号时,控制信号应为高电平“1”,使转换开关MUX把反相器4的输出端与V1接通,同时把与门3打开。
1)当地址或数据为“1”时,经反相器4使V1截止,而经与门3使V2导通,P0.x引脚上出现相应的高电平“1”;
2)当地址或数据为"0"时,经反相器4使V1导通而V2截止,引脚上出现相应的低电平"0"。这样就将地址/数据的信号输出。null3.通用I/O接口功能
当P0口作为通用I/O口使用,在CPU向端口输出数据时,对应的控制信号为0,转换开关把输出级与锁存器Q端接通,同时因与门3输出为0使V2截止,此时,输出级是漏极开路电路。当写脉冲加在锁存器时钟端CLK上时,与内部总线相连的D端数据取反后出现在Q端,又经输出V1反相,在P0引脚上出现的数据正好是内部总线的数据。当要从P0口输入数据时,引脚信息仍经输入缓冲器进入内部总线。
null总之:
一 P0口作为一般I/O口使用
1 P0口用作输出口:必须外接上拉电阻,才有高电平输出。
2 P0口作输入口:先向端口锁存器写入“1”。
二 P0口作为地址/数据总线使用
1 以P0口引脚输出低8位地址或数据信息
2 由P0口输入数据
三 P0口可驱动8个LSTTL电路§4-1-2 P1口(准双向口)§4-1-2 P1口(准双向口)①P1.0、P1.1为多功能双向口, P1.2~P1.7为单一功能准双向口。
②P1口的第一功能是准双向口,每一位可分别定义为输入线或输出线。
③输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出高电平时,可以提供上拉电流负载。①P1.0、P1.1为多功能双向口, P1.2~P1.7为单一功能准双向口。
②P1口的第一功能是准双向口,每一位可分别定义为输入线或输出线。
③输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出高电平时,可以提供上拉电流负载。④P1的某一位作为输入线时,该位的口锁存器必须保持“1”。使输出场效应管截止。该引脚才可由内部拉高电路拉成高电平,或由外部电路拉成低电平。
⑤P1口具有驱动4个LSTTL负载的能力。④P1的某一位作为输入线时,该位的口锁存器必须保持“1”。使输出场效应管截止。该引脚才可由内部拉高电路拉成高电平,或由外部电路拉成低电平。
⑤P1口具有驱动4个LSTTL负载的能力。null§4-1-3 P2口(准双向口)§4-1-3 P2口(准双向口)null 当作为准双向通用I/O口使用时:
控制信号使转换开关接向左侧,锁存器Q端经反相器3接V1,其工作原理与P1相同,也具有输入、输出、端口操作三种工作方式,负载能力也与P1相同。 null1 系统中外接程序存储器时:P2口输出程序存储器的高8位地址,不作I/O口使用。
2 系统中无外接程序存储器,而扩展有片外RAM的系统中:
① 片外RAM的容量<256B:P2口仍做输入/输出口使用。使用R0或R1作地址指针。
②片外RAM的容量>256B : P2口不能做输入/输出口,而做系统扩展的高8位地址总线口使用。使用DPTR、P2R0、P2R1作地址指针。 §4-1-4 P3口(准双向口)§4-1-4 P3口(准双向口)null P3口是一多功能口,既做准双向口又做特殊输入输出口。
1 做通用I/O口使用:
P3口做输入使用,应由软件向口锁存器写“1”。null2 做第二功能使用:
某位做第二功能使用该位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 T03 P3口具有驱动4个LSTTL负载的能力。§4-1-5 并行口的应用§4-1-5 并行口的应用1 外接蜂鸣器
2 利用可控硅控制加热电路
3 BCD码拨码盘的接口
BCD码拨码盘构造——
一个拨码盘可以输入1位十进制数据。
拨码盘拨到某个位置时,控制线分别与4位数据线中某几位接通。
接通线定义为“1”,不通的线定义为“0”。§4-2 定时器及其应用§4-2 定时器及其应用
定时器功能:
1 定时操作
2 测量外部输入信号
3 定时输出
4 监视系统正常工作§4-2-1定时器的结构和工作原理
§4-2-1定时器的结构和工作原理
1 定时器由一个N位计数器、计数时钟源控制电路、状态和控制寄存器等组成。
2 计数脉冲有两个来源:①外部的脉冲源②系统的时钟振荡器。TMOD TCON
中断null3 用作定时器时,每经过一个机器周期,计数器自动加1,直到计数溢出;用作计数器时,外部时钟脉冲加在定时器的外输入端T0(P3.4)或T1(P3.5),每出现一次负跳变,计数器加1。
4 两个模拟开关,左边决定定时/计数器的工作状态,右边决定脉冲源是否加在计数器的输入端。
5 16位的计数器由两个8位SFR TH和TL组成。null定时器/计数器T0、T1的结构框图§4-2-2 定时器/计数器T0和T1§4-2-2 定时器/计数器T0和T1一方式寄存器TMOD(89H)
1 不能进行位寻址,只能用字节寻址。复位时,TMOD所有位为0
熟悉各位功能
T1方式字段 T0方式字段null① GATE——门控位
“1”:定时器的计数受外部引脚输入电平的控制
“0”:定时器的计数不受外部引脚输入电平的控制
② C/T——功能选择位
“1”:计数功能 “ 0”:定时功能
③ M1M0——工作方式选择位
null
适于T0,两个8位计数器null二 控制寄存器TCON(88H)
1 既可字节寻址又可位寻址。复位时,TCON各位为0
例:SETB TR1 ;启动定时器T1工作
熟悉各位功能
D7 D6 D5 D4 D3 D2 D1 D0
nullTF1——定时器/计数器T1的溢出标志位
TR1——定时器/计数器T1的运行控制位
TF0——定时器/计数器T0的溢出标志位
TR0——定时器/计数器T0的运行控制位
IE1——外部中断1下降沿触发标志位
IE0——外部中断0下降沿触发标志位
IT1——外部中断1触发类型选择位
IT0——外部中断0触发类型选择位null三 定时器/计数器的初始化
初始化即将控制字写入定时器/计数器的过程。初始化一般步骤:
1 写入初值TH0、TL0或TH1、TL1
2 对TMOD赋值
3 对IE赋值(有中断产生时)
4 ①若用软件启动,则仅把TR0或TR1置“1”;
②若用外中断引脚电平启动,则还需给外 引脚加启动电平。null四 定时器/计数器的4种工作方式
1 方式0null 方式0是一个13位的定时器/计数器,由TL0的低5位和TH0的8位组成。
定时时间为T=12*(213-a)/fosc s
最大定时时间:M=213=8192T
null例7:已知晶振频率fosc=6MHZ,若使用T0方式0产生10ms定时中断,试对T0进行初始化编程。
MOV TH0,#63H
MOV TL0,#18H
SETB TR0
MOV IE ,#82H
RETnull例: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中断
AJMP $ ;定时中断等待null ORG 4000H ;中断服务程序
INQP: MOV TH0, #0F0H ;重写定时常数
MOV TL0, #0CH
CPL P1.0 ;P1.0变反输出
RETI
null2 方式1
方式1是一个16位定时器/计数器,结构和操作方式与方式0基本相同。定时时间为T=12*(216-a)/fosc s
最大定时时间:M=216=65536Tnull例:设fosc=12MHz,T0工作于方式1,产生50ms定时中断,TF0为高级中断源。试编写主程序中的初试化程序和中断服务程序,使P1.0产生周期为1秒的方波。
MAIN:MOV SP, #EFH
MOV TH0, #3CH
MOV TL0, #0B0H
MOV TMOD , #1
MOV IP, #2 null 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:RETInull用查询法:
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, #0B0H
null DJNZ 30H, L2
MOV 30H, #0AH
CPL P1.0
SJMP L2
null3 方式2
方式2是能重置初值的8位定时器/计数器,TL0作为8位计数器,TH0作为计数初值寄存器。适于用做较精确的定时脉冲信号发生器。
定时时间 T=12*(28-a)/fosc s
最大定时时间:M=28=256Tnull定时器/计数器方式2的逻辑结构null MOV TMOD, #60H ; 设置T1为方式2计数
MOV TH1, #9CH ;赋初值
MOV TL1, #9CH
SETB TR1
DE:JBC TF1, RE ;查询计数溢出
AJMP DE
RE: CPL P1.0
AJMP DE例:用定时器1在方式2计数,要求每计满100次,将P1.0端取反。
外部计数信号由P3.5引入,每跳变一次计数器加1
100=28-a ; a=156=9CHnull定时器/计数器方式3的逻辑结构 4 方式3null
方式3只适用于T0,T0分为两个独立的8位计数器TL0和TH0。一般T1用作串行口波特率发生器。
最大定时时间:M=28=256T
例 用定时器T0,分别产生两个方波,一个周期为200s,另一个周期为400 s
(fosc =9.216MHZ)。
null解:定时初值计算
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
转换十六进制为66Hnull ORG 0000H
AJMP MAIN
ORG 000BH ;TL0中断入口
AJMP ITL0
ORG 001BH ;TH0中断入口
AJMP ITH0
ORG 0100H
MAIN:MOV SP, #60H
MOV TMOD, #03H
null MOV TL0, #0B3H
MOV TH0, #66H
SETB TR0 ;启动TL0初值
SETB TR1 ;启动TH0初值
SETB ET0 ;允许TL0中断
SETB ET1 ;允许TH0中断
SETB EA ;CPU中断开放
AJMP $
null ORG 0200H
ITL0:MOV TL0, #0B3H
CPL P1.0 ;输出方波200s
RETI
ITH0:MOV TH0, #66H
CPL P1.1 ;输出方波400s
RETI
五 门控位的应用五 门控位的应用GATE位是控制外部输入脉冲对定时计数器的控制。当为“1”时,允许外部输入电平控制启、停定时器。利用这个特性可测量外部输入脉冲的宽度。
例:利用T0门控位测试INT0引脚上出现的正脉冲的宽度,将所测得值高位存入片内71H单元,低位存入片内70H单元。(fosc=12MHz)
测试时,应在/INT0为低电平时,设TR0为1;当/INT0变高时,启动计数;当/INT0再变低时,停止计数。该计数值即被测正脉冲宽度。nullMOV TMOD , #09H;T0定时器方式,GATE=1
MOV TL0, #00H
MOV TH0, #00H
MOV R0, #70H
JB P3.2, $ ;等待P3.2变低
SETB TR0 ;启动T0准备工作
JNB P3.2, $ ;等待P3.2变高
JB P3.2, $ ;等待P3.2再次变低
CLR TR0 ;停止计数
MOV @R0, TL0 ;存放计数低字节
INC R0
MOV @R0, TH0 ;存放计数高字节
SJMP $ §4-3 串行接口UART§4-3 串行接口UART一 两种基本的通信方式(a) 并行通信;(b) 串行通信二串行通信传输方式二串行通信传输方式
(a) 单工方式;(b) 半双工方式;(c) 全双工方式null三串行通信两种基本方式
1异步通信
①异步通信中数据或字符是一帧一帧传送。
②帧即为一个字符的完整通信格式,又称帧格式。在帧格式中,一个字符由4部分组成:起始位、数据位、奇偶校验位、停止位。 串行异步传送的字符格式null2 同步通信
数据或字符开始处是由一同步字符来指示,并由时钟实现发送端和接收端同步。
四 波特率(Baud rate)
①波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位/秒。
②要求发送端与接收端的波特率必须一致。§4-3-1 串行接口的组成和特性
§4-3-1 串行接口的组成和特性
51系列单片机的串行口是全双工异步串行通信接口。
一 串行口结构
1 波特率发生器
主要由T1、T2及内部的一些控制开关和分频器组成。提供串行口的时钟信号即TCLK、RCLK。
null串行口结构框图2 串行口的内部包含——2 串行口的内部包含——①串行数据缓冲寄存器SBUF
数据接收缓冲器(只读出不写入)和数据发送缓冲器(只写入不读出)。物理上隔离,共用一个地址( 99H )。
串行发送时,从片内总线向发送缓冲器写入数据;
即MOV SBUF,A
串行接收时,从接收缓冲器读出数据到片内总线。
即MOV A,SBUF
②串行口控制寄存器null③串行数据输入/输出引脚
接收方式下,串行数据从RXD(P3.0)输入。串行口内部在接收缓冲器之前还有移位寄存器,构成串行接收双缓冲结构。避免数据接收重叠。
发送方式下,串行数据从TXD(P3.1)输出。
④串行口控制逻辑
null二串行口控制
1 串行口控制寄存器SCON(98H)
①SM0和SM1
②SM2 方式2和方式3的多机通信控制位
②SM2 方式2和方式3的多机通信控制位
方式0,SM2=0。
方式1,若SM2=1,只有接收到有效停止位,接收中断RI才置1。
方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI,产生中断请求。当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。该功能用于多机通信中。null③REN 允许串行接收位
1—允许接收;0—禁止接收
由软件置1或清0,相当于串行接收的开关。
④TB8 发送数据D8位
在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。该位由软件置位或复位。null⑤RB8 接收数据D8位
在方式2和方式3时,接收到的第9位数据,可作为奇偶校验位或地址帧或数据帧的标志。方式1时,若SM2=0,则RB8是接收到的停止位。在方式0时,不使用RB8位。
⑥TI 发送中断标志
在方式0时,当发送数据第8位结束后,或在其它方式发送停止位后,由内部硬件使TI置位,向CPU请求中断。CPU在响应中断后,必须用软件清零。此外,TI也可供查询使用。null⑦RI接收中断标志位
在方式0时,当接收数据的第8位结束后,或在其它方式接收到停止位的中间时由内部硬件使RI置位,向CPU请求中断。在CPU响应中断后,也必须用软件清零。RI也可供查询使用。2 特殊功能寄存器PCON
2 特殊功能寄存器PCON
SMOD位是串行口波特率系数控制位,为1时使波特率加倍。
其余位是掉电方式控制位,与串行口无关。§4-3-2串行接口的工作原理§4-3-2串行接口的工作原理一 方式0
1 方式0为同步移位寄存器输入/输出方式,常用于扩展并行I/O口。
2 数据由RXD串行输入/输出,TXD输出移位脉冲。
3 数据传输波特率固定为fosc/12。
4 接收/发送的是8位数据,传输时低位在前。null输出:
当执行写SBUF的指令时(MOV SBUF,A),启动串行数据发送。从低位开始串行输出。当完成一个字节的输出后就停止移位,并置位TI。
输入:
在REN=1,RI=0时启动串行口接收。当外部移位寄存器内容移入内部移位寄存器,并写入SBUF,则置位RI,停止移位,完成一个字节的输入。
注意:每当发送或接收完8位数据时,由硬件将发送中断TI或接收中断RI标志置“1”;CPU响应TI或RI中断请求时,不会清除标志,必须由软件清“0”.null二 方式1
1 方式1时,串行口为10位通用异步接口。
2 数据传输波特率由定时/计数器T1和T2的溢出决定,由程序设定。
当T2CON中RCLK和TCLK置位时,由T2作接收/发送的波特率发生器;当RCLK和TCLK都为0时,由T1作接收/发送的波特率发生器。
3 数据从引脚TXD端输出,从引脚RXD输入。null发送
当数据写入发送缓冲器时,启动发送器开始发送。8位数据发送完,置位TI=1,并申请中断,通知CPU可发送下一个数据。
接收
在REN=1的前提下,确认是真正起始位“0”后,开始接收一帧数据。当RI=0且SM2=0时,数据被接收。null三 方式2和方式3
1 CPU向发送缓冲器写入数据就启动串行口发送。发送完毕,使TI=1。
2 接收时,先置REN为“1”,将RI清“0”。再根据SM2状态和所接收到RB8状态决定串口在信息到来后是否会使RI=1,申请中断,接收数据。
当SM2=0,不管RB8状态,将RI置1—串口接收
当SM2=1, RB8=1时,多机通信,接收信息为地
址,将RI置1—串口接收
RB8=0时,接收信息为数据,但不发给本从机,此时RI不置1—数据丢失null§4-3-3 波特率
一 方式0:
波特率=振荡器频率/12
二 方式2:
波特率=2SMOD*振荡器频率/64
三 方式1、3(T1产生波特率):
波特率=2SMOD*振荡器频率/[32*12(256-(TH1))]
注:记住当振荡器频率选用11.0592MHZ时,对于常用波特率,能正确计算T1的初值。
§4-3-4 多机通信原理§4-3-4 多机通信原理在主从式多机系统中:
1主机发出的信息有两类。一类为地址,用来确定需要和主机通信的从机,特征是串行传送的第9位数据为1;另一类是数据,特征是串行传送的第9位数据为0。2对从机来说,在接收时,若RI=0,则只要SM2=0,接收总能实现;而若SM2=1,则发送的第9位TB8必须为1接收才能进行。null1 主机首先发出要求通信的从机地址信号。此时,所有从机的SM2都为“1”,所有从机均收到地址信号。
2 从机判断主机发出的地址信号是否与本从机号相符。相符的从机SM2“0”,反之为“1”。
3 主机发送数据帧。仅SM2=0的从机可收到。
§4-3-5 串行口的应用和编程§4-3-5 串行口的应用和编程一串行口应用
同一印板内,两个单片机串行口可直接通信。
单片机与PC机之间利用串行口通信,必须进行电平转换。
二串行口编程
串行口初始化编程:
选择串行口工作方式,波特率,允许串行口中断。即对SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP、SBUF编程。null例:编写程序,功能为对串行口初始化为方式1输入/输出,fosc=11.0592MHZ,波特率为9600,先在串行口上输出字符串“MCS-51”,接着读串行口上输入的字符,又将该字符从串行口上输出。
MOV TMOD, #20H
MOV TH1, #0FDH
MOV TL1, #0FDH
SETB TR1
MOV SCON, #52H
MOV R4, #0
MOV DPTR, #TSABnullLP1: MOV A, R4
MOVC A, @A+DPTR
JZ LP6
LP3: JBC TI, LP2
SJMP LP3
LP2: MOV SBUF, A
INC R4
SJMP LP1
LP6: JBC RI, LP5
SJMP LP6
LP5: MOV A, SBUFLP8:JBC TI, LP7
SJMP LP8
LP7:MOV SBUF, A
SJMP LP6
TSAB:DB ‘MCS-51’
DB 0AH,0DH,0 用串行口进行双机异步通信——
例:将甲机片内RAM50H—5FH单元中的数据块从串行口输出。定义在方式3下发送,TB8作奇偶校验位。采用定时器1方式2作波特率发生器,波特率为1200,fosc=11.0592MHz。用串行口进行双机异步通信——
例:将甲机片内RAM50H—5FH单元中的数据块从串行口输出。定义在方式3下发送,TB8作奇偶校验位。采用定时器1方式2作波特率发生器,波特率为1200,fosc=11.0592MHz。 使乙机从甲机接收16个字节数据块,并存入片外3000H—300FH单元。接收过程中要求判奇偶标志RB8。若出错则置F0标志为1,反之为0,然后返回。甲机发送子程序——甲机发送子程序—— MOV TMOD,#20H
MOV TL1, #0EBH
MOV TH1, #0E8H
SETB TR1
MOV SCON,#0C0H
MOV R0, #50H
MOV R7, #10H
TRS:MOV A, @R0
MOV C, P
MOV TB8, C
MOV SBUF, AWAIT:JNB TI,$
CLR TI
INC R0
DJNZ R7,TRS
RET乙机接收子程序——乙机接收子程序—— MOV TMOD,#20H
MOV TL1,#0EBH
MOV TH1,#0E8H
SETB TR1
MOV SCON,#0C0H
MOV DPTR,#3000H
MOV R7,#10H
SETB REN
WAIT:JNB RI,$
CLR RI
MOV A,SBUF JNB PSW.0, PZ
JNB RB8, ERR
SJMP YES
PZ: JB RB8,ERR
YES:MOVX @DPTR,A
INC DPTR
DJNZ R7,WAIT
CLR PSW.5
RET
ERR:SETB PSW.5
RET注意:双机通信时,两机应用相同的工作方式和波特率。§4-3-6 RS232C总线和电平转换器§4-3-6 RS232C总线和电平转换器RS232C是美国电气工业协会推广使用的一种串行通信总线
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
,是DCE(数据通信设备)和DTE(数据终端设备)间传输串行数据的接口总线。
RS232C最大传输距离15m,最高传输速率约20kbps,信号“0”为+3~+15V, “1”为-3~-15V。null§4-5 节电方式
一 电源控制寄存器PCON
二 空闲方式
1当PCON.0置“1”,进入空闲方式。
2振荡器保持工作,时钟脉冲继续输出到中断、串行口、定时器等功能部件,但CPU停止工作。
3退出空闲的方式:产生中断请求和硬件复位
三 掉电方式
1当PCON.1置“1”,进入掉电方式。
2振荡器工作停止,单片机内部所有功能部件停止工作。
3硬件复位方式退出