MCS-51单片机功能模块及其应用.ppt_第1页
MCS-51单片机功能模块及其应用.ppt_第2页
MCS-51单片机功能模块及其应用.ppt_第3页
MCS-51单片机功能模块及其应用.ppt_第4页
MCS-51单片机功能模块及其应用.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,胡景春,单片机原理及应用,4.1 并行口及其应用 4.2 定时器及其应用 4.3 串行接口UART 4.4 89C52FLASH程序存储器,第四章 MCS-51单片机功能模块及其应用,4.1 并行口及其应用,MCS51单片机中有个双向(位)并行I/O 端口(线),每线都配备独立的端口锁存器、输出驱动器和输入缓冲器,用于与外界设备之间交换信息 4.1.1 P0口 。,P0口一位结构图,P0口除了作普通的I/O口,直接和外部设备打交道外;还用作片外总线的地址总线AB0-AB7的低八位和数据总线。注:单片机复位后4个端口对外均呈现高电平,P2口除了作普通的I/O口,直接和外部设备打交道外;还用作片外总线的地址总线的高八位地址线AB8-AB15, P2口 P0口在作输出入口使用时,由于它无内部上拉电阻,为了在口线上输出高电平并具有一定的驱动能力,必须外接上拉电阻。注意:作输入口使用时,为了防止口锁存器对输入口线的输入信号造成影响,必须先往口锁存器写1。同理,P2口作输入时,也必须先往口锁存器写1。,P2口一位结构图,P1口一位结构图,P1口只用作普通输入输出口, P1口 从单片机的使用角度来看,P1是一个真正的双向口,而其他三个端口都是准双向口。注意:和P0、P2口一样,为防止口锁存器对输入口线造成影响,P1口作输入时,也必须先往口锁存器写1。,P3口一位结构图,P3口除了作普通的I/O口(功能和P1口一样)直接和外部设备打交道外;还具有第二功能。,P3.0 串行输入口(RXD) P3.1 串行输出口(TXD) P3.2 外中断0(INT0) P3.3 外中断1(INT1) P3.5 定时/计数器1的外部输入口(T1) P3.6 外部数据存储器写选通(WR) P3.4 定时/计数器0的外部输入口(T0) P3.7 外部数据存储器读选通(RD),4.3 中断系统应用举例,【例1 .1】: 如图所示为电加热锅炉控制工作原理图和单片机控制系统: 当压力报警信号发出时,要求排汽电磁阀通电,打开排汽电磁阀以减少锅炉内蒸汽压力; 当低水位限位报警信号发出时,打开进水阀进水; 当高水位限位报警信号发出时,关闭进水阀停止进水; 当温度达到100时,关闭电加热丝; 当温度低于95时,接通电加热丝。请设计控制软件。,图4-3 电加热锅炉控制工作示意图,解:从示意图和控制系统电原理图中可以看出,该系统有5个中断源,而单片机只有2个外部中断请求,本系统中5个中断源通过或非门后接入外部中断1。 5个中断源中哪个发生中断请求还需要通过查询程序进行判断,查询顺序的先后决定了这5个中断源的优先级高低。参考程序如下:,ORG 0000H LJMP MAIN ORG 0013H LJMP INT1 ORG 0100H MAIN: SETB EX1 ;允许INT1中断 SETB EA ;开中断 HALT: SJMP HALT ;等待中断 ORG 1000H 中断服务程序: INT1: JB P1.0 PRESS ;P1.0=1转压力报警服务程序 LOOP1: JB P1.1 HIGH ;P1.1=1转高水位服务程序 JB P1.2 LOW ;P1.2=1转低水位服务程序,LOOP2: JB P1.3 HEATOFF ; P1.3=1转100服务程序 JB P1.4 HEATON ; P1.4=1转95服务程序 LOOP3: RETI PRESS: SRTB P1.5 ;压力报警服务程序 JB P1.0 PRESS CLR P1.5 SJMP LOOP1 HIGH: CLR P1.6 ;高水位服务程序 SJMP LOOP2 LOW: SETB P1.6 ;低水位服务程序 SJMP LOOP2 HEATOFF: CLR P1.7 ; 100服务程序 SJMP LOOP3 HEATON: SETB P1.7 ; 95服务程序 SJMP LOOP3 END,5.1 定时/计数器的概述 5.2 定时/计数器的控制 5.3 定时/计数器的工作方式 5.4 定时/计数器的一般编程步骤 5.5 定时/计数器的应用举例,第五章 MCS-51单片机的定时/计数器,5.1 定时/计数器概述,在单片机的内部结构中,有两个16位可编程的定时/计数器,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。,5.2 定时/计数器的控制,1、 定时器控制寄存器 TCON (88H),TR0 :定时 / 计数器0运行控制位。=0 停止,=1 开始工作(与GATE位的状态有关),软件置位,软件复位。 TR1:定时 / 计数器1运行控制位。(用法与TR0类似) TF0、TF1 :分别是定时、计数器T0、T1的溢出标志位。,2、定时方式寄存器 TMOD (89H ),GATE : 门控位. GATE = 0 启动不受 /INT0或 /INT1的控制;GATE = 1 启动受 /INT0 或 /INT1 的控制。 C/T : 外部计数器 / 定时器方式选择位C/T = 0 定时方式;C /T = 1 计数 方式 M1M0 工作模式选择位(编程可决定四种工作模式)。,5.3 定时/计数器的工作方式,5.3.1 工作方式 0 13位定时/计数器,定时器/计数器方式0的计数器结构:,图5-2 方式0等效逻辑结构,在计数工作方式下,计数器的计数值范围是: 20 213 18192 在定时工作方式时,定时时间的计算公式为: 定时时间=( 8192 -计数初值)晶振周期12 = ( 8192 -计数初值)机器周期 计数初值=8192- 定时时间 / 机器周器 =2n-定时时间 / 机器周期 如果单片机的晶振选为6.000MHz,则最长定时时间为: (81920)1/610-612=1638410-6(s)=16384(us)。,定时器/计数器运行控制的情况: 、由TR0控制的情况 要运行控制位TR0能够控制定时器/计数器的运行,其或门的输出一定要为1,这就意味着GATE要设置为0或者INT0=1。 因此在单片机的定时或计数应用中,要注意定时器方式寄存器TMOD的GATE位一定要设置为0。 、由INT0控制的情况 要能用INT0来控制定时器/计数器的运行,TR0和GATE均应设置为1。这种情况可用于测量外部信号的脉冲宽度。,例5.1设单片机晶振频率为6MHZ,使用定时器1以方式0 产生周期为500s的等宽正方波连续脉冲,并由P1.0输出。以查询方式完成。 解:计算计数初值 欲产生500s的等宽正方波脉冲,只需在P1.0端以250s为周期交替输出高低电平即可实现,为此定时时间应为250s。使用6MHZ晶振,则一个机器周期为2s。方式0为13位计数结构。设待求的计数初值为X,则 ( 213X)210-6=25010-6 求解得:X=8067。二进制数表示为0001111110000011B。十六进制(按方式0的13位11111100XXX00011)表示得:高8位为0FCH,低5位为03H,。,、相关控制寄存器的设定 TMOD各位的设定。设定方式0:M1M0=00;实现定时:C/T=0;定时应用:GATE=0。 TCON(地址:88H)是可以位寻址的,又因与该题有关的位只有TR1,故这里采用位寻址方式,用设置TR1 =1来启动定时器T1,TR1 =0来停止定时器T1。 IE 题目要求采用查询方式,当定时时间到定时器溢出标志位TF1置1时,不允许产生中断,故应禁止中断,即置IE=00H。,、参考程序:,ANL TMOD,#0FH ;设置T1为定时工作方式0 ORL TMOD,#00H ;且不影响T0的工作 MOV TH1,#0FCH ;置计数初值 MOV TL1,#03H MOV IE,#00H ;禁止中断 LOOP:SETB TR1 ;启动定时器 JBC TF1,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1:MOV TH1,#0FCH ;重新设置计数初值 MOV TL1,#03H CPL P1.0 ;输出取反 AJMP LOOP ;重复循环 END,5.3.2 工作方式 116位定时/计数器,图5-3 方式1等效逻辑结构,在计数工作方式下,计数器的计数值范围是: 20 216 165536 在定时工作方式时,定时时间的计算公式为: 定时时间=( 65536 -计数初值)晶振周期12 =( 65536-计数初值)机器周期 计数初值=65536- 定时时间 / 机器周器 =2n-定时时间 / 机器周期 如果单片机的晶振选为6.000MHz,则最长定时时间为: (655360)1/610-612=13107210-6(s)=131072(us)。,例2.2设单片机晶振频率为6MHZ,要求使用定时器0 工作方式1产生周期为500s的等宽正脉冲,并在P1.0端输出。试编写采用中断方式完成的相关程序。 解:、计算计数初值 (216-X)1/610-612=25010-6 X=65411=FF83H,即可得:TH0=0FFH,TL0=83H 、设置各相关控制寄存器 TMOD应设置为XXXX0001B;IE和TCON均采用位寻址方式。,参考程序: ORG 0000H START: AJMP MAIN ORG 000BH AJMP INTER ORG 0100H MAIN: ANL TMOD,#0F0H ;置定时器0工作方式1 ORL TMOD,#01H MOV TH0,#0FFH ;设置计数初值 MOV TL0,#83H SETB EA ;CPU开中断 SETB ET0 ;定时器0开中断 SETB TR0 ;启动定时器0 SJMP ;等待中断 INTER: MOV TH0,#0FF ;重新设置计数初值 MOV TL0, #83H CPL P1.0 ;输出取反 RETI ;中断返回 END,2.3.3 工作方式 28位循环计数,图2-4 方式2等效逻辑结构,方式2与方式0、1的区别: 工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。 工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。 方式2在串口通讯时,常用作波特率发生器。,例2.3已知晶振频率fosc=6MHz,要求使用定时器0以工作方式2产生100s定时,在P1.0输出周期为200s的连续正方波脉冲。试编写相关程序。 解:、计算计数初值 在6MHZ晶振下,一个机器周期为2s,假设计数初值为X,则: (28-X)210-6=10010-6 求解得: X=206=0CEH 、各有关控制寄存器的设置 IE和TCON均采用位寻址方式,即分别将应位置“1”或“0”。 TMOD的设置:定时器/计数器0为方式2,M1M0=10;为实现定时功能C/T应设置为0;为允许定时器/计数器0能通过TR0进行运行控制,须使GATE=0;定时器/计数器1不用,通常应不改变其参数,故应将其屏蔽起来,、参考程序(查询方式),ANL TMOD,#0F0H ;设置定时器0 ORL TMOD,#02H ;为工作方式2 MOV TH0,#0CEH ;设置计数初值 MOV,TL0,#0CEH MOV IE,#00H ;禁止中断 SETB TR0 ;启动定时 LOOP:JBC TF0,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1:CPL P1.0 ;输出方波,初值自动装入 AJMP LOOP,、参考程序(中断方式) 主程序: ANL TMOD,#0F0H ORL TMOD,#02H MOV TH0, #0CEH MOV TL0, #0CEH SETB EA ;CPU开中断 SETB ET0 ;定时器0开中断 SETB TR0 ;启动定时 SJMP ;等待中断 中断服务程序: CLP P1.0 RETI,5.3.4 工作方式 3 双8位定时方式,图5-5 方式3等效逻辑结构,前三种工作方式,对两个定时器/计数器的设置和使用是完全相同的。但是在工作方式3下,两个定时器/计数器的设置和使用却是不同的。 1、工作方式3下的定时器/计数器0 在工作方式3下,定时器/计数器0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以用作计数,又可以用作定时,定时器/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0和方式1完全相同,而且逻辑电路结构也极其类似,如图513a所示。 定时器/计数器0的高8位TH0,则只能作为简单的定时器使用。而且由于定时器/计数器0的控制位已被TL0占用,因此只好借用定时器/计数器1的控制位TR1和TF1。即以计数溢出去置位TF1,而定时的启动和停止则由TR1的状态控制。 在工作方式3下,定时器/计数器0可以构成两个定时器或一个定时器一个计数器。,2、在定时器/计数器0 设置为工作方式3时的定时器/计数器1 定时器/计数器1不能工作于方式3,只能工作于方式0、方式1或方式2。且在定时器/计数器0已工作于方式3时,定时器/计数器1通常用作串行口的波特率发生器,以确定串行通信的速率。因为已没有计数溢出标志位TF1可供使用,因此只能把计数溢出直接送给串行口,如图5 14所示。 当作为波特率发生器使用时,只需设置好工作方式,便可自动运行。如要停止工作,只需送入一个把它设置为方式3的方式控制字就可以了。,5.4 定时/计数器的一般编程步骤,首先必须对定时计数器进行初始化,然后再开启定时或计数。简单的总结一下,定时器/计数器的初始化包括以下内容。 (1)确定工作方式对TMOD赋值; 如: MOV TMOD, #06H指令,设定T0为计数器工作方式。 (2)预置定时计数器中计数的初值直接写入TH和TL;如 MOV TH0,#00H 两条指令,设定计数初值。 MOV TL0,#00H (3)开放定时器/计数器的中断对IE位赋值; (4)启动定时器/计数器。如:SETB TR0 (5)计数初值的计算方法 N=8192- 定时时间 / 机器周器 =2n-定时时间 / 机器周期 n视工作方式不同而不同。方式0, n=13, 最多计数 脉冲是8192个。方式1, n=16, 最多计数脉冲是65536个。方式2和方式3 ,n=8, 最多计数脉冲是256个。,5.5 定时/计数器的应用举例,【例5 .4】: 单片机 对按键次数(99次)进行计数,并在发 光二极管上实时显示。,图5-6 例5.4的硬件电路图,任务描述:用手按动按键S3,每按键一次S3引脚上出现一个负脉冲,单片机计数一次,并实时将按键次数以BCD码方式,在发光二极管上面显示。,图5-7 【例5 .4】流程图,ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV TMOD,#06H ;外部计数方式2 MOV TH0,#00H ;设定计数初值 MOV TL0,#00H ; SE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论