单片机论文.docx

上传人:b****2 文档编号:2435900 上传时间:2022-10-29 格式:DOCX 页数:10 大小:231.40KB
下载 相关 举报
单片机论文.docx_第1页
第1页 / 共10页
单片机论文.docx_第2页
第2页 / 共10页
单片机论文.docx_第3页
第3页 / 共10页
单片机论文.docx_第4页
第4页 / 共10页
单片机论文.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

单片机论文.docx

《单片机论文.docx》由会员分享,可在线阅读,更多相关《单片机论文.docx(10页珍藏版)》请在冰豆网上搜索。

单片机论文.docx

单片机论文

 

单片机定时器/计数器在流水灯中的应用

 

班级:

学号:

姓名:

专业:

 

摘要:

自计算机问世以来,单片机技术在社会各领域中得到了广泛的应用。

在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式市发展速度,成为日后此系统中的核心部分。

由于单片机具有一些突出的优点:

体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。

1、基本内容

利用80C51单片机芯片控制8个发光二极管和一个按钮。

要求上电后,系统按照依次亮一个灯的次序进行循环,当按下按钮一次时,8个发光二极管依次递增点亮,全亮后灭,10次后回到单灯循环点亮,每盏灯点亮时间为50ms,系统晶振设为12MHz。

1.硬件电路原理图

基于单片机定时中断的流水灯控制系统硬件原理图(如下图所示),输入按钮通过INT0与单片机相连,输出发光二极管经晶体管驱动和单片机的P1.0相连。

单片机的第31引脚EA=1,电源外接+5V。

2.程序分配

按键采用INT0中断方式工作,下降沿触发,高优先级,TCON=11H,IP=01H,灯亮后的持续时间采用定时器T0工作来实现,设置T0工作在16位计数器方式。

TMOD=01H,定时时间为50ms,中断10次为500ms,TH0=TH0H,TL0=TL0H,用伪指令来实现,便于调节时间长短。

从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。

因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则就看不到“流水”效果了。

流水灯控制系统硬件原理图

3.程序设计

TH0HEQU6CH;定义TH0H定时器初值高位数

TH0LEQU8BH;定义TH0L定时初值的低位数

ORG0000H

LJMPMAIN;转主程序

ORG0003H

SJMPAINT0;转外部中断0入口

ORG000BH

SJMPAT0;转T0中断入口

ORG0030H

AT0:

PUSHPSW;T0中断程序

PUSHACC

INCR7

MOVTH0,#TH0H

MOVTL0,#TH0L

SETBTR0;重新启动T0D定时

POPACC

POPPSW

AINT0:

PUSHPSW;INT0中断程序

PUSHACC

SETB20H.0;置标志位20H.0

POPACC

POPPSW

RETI

MAIN:

MOVP1,#00H;初始化

MOVP3,#0FFH;

MOVSP,#60H;堆栈指针

MOV20H,#00H;

MOVIP,#01H;设置INT0为高优先级

MOVTMOD,#01H;设置T0为16位定时器方式

MOVTH0,#TH0H;送定时器初值高8位

MOVTL0,#THOL;送定时器初值低8位

MOVTCON,#11H;INT0下降沿触发,启动T0定时

MOVIE,#10000011B;开EA,T0和INT0中断

NEXT:

MOVA,#01H

MOVP1,A;点亮第一个LED

MOVR5,#10;循环流水十次计数器

MOVR7,#00;0.5s计数器

NEXT:

JNB20H.0,NEXT2;有键按下则NEXT2

CJNER7,#10,NEXT1

MOVR7,#00H

RLA

MOVP1,A

SJMPNEXT1

NEXT2:

MOVR7,#00

MOVR6,#08

MOVA,#01H

MOVP1,A

NEXT3:

CJNER7,#10,NEXT3

MOVR7,#00

MOVA,P1

RLA

ORLA,#01H

MOVP1,A

DJNER6,NEXT3

DJNER5,NEXT2;循环10次未满则转NEXT2

MOV20H,#00H

SJMPNEXT

END

2、工作原理

定时器/计数器T0和T1的实质是加1计数器,即每输入一个脉冲,计数器加1,当加到计数器全为1时,再输入一个脉冲,就使计数器归0,且计数器的溢出是TCON中的标志位TF0或TF1置1,向CPU发出中断请求。

只是输入的技术脉冲来源不同,把他们分成定时与计数两种功能。

作定时器时脉冲来自于内部时钟振荡器,作计数器时脉冲来自于外部引脚。

在作定时器使用时,输入脉冲是由内部振荡器的输出位12分频后送来的,所以定时器可看作是对机器周期的计数器。

若晶振频率为12MHz,则机器周期是1微秒,定时器每接收一个输入脉冲的时间为1微秒;若晶振频率为6MHz,则机器周期是1微秒,定时器每接收一个输入脉冲的时间为2微秒。

因此,要定时时间的长短,只需计算一下脉冲个数即可。

在作计数器使用时,输入脉冲是由外部引脚P3.4(T0)或P3.5(T1)输入到计数器的。

在每个机器周期的S5P2期间采样T0、T1引脚电平。

当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1.由于检测一个从1到0的下降沿需要两个机器周期,因此要求被采样的电平至少要维持一个机器周期,以保证在给定的电平再次变化之前至少被采样一次,否则会出现漏计数现象,所以最高计数频率为晶振频率的1/24.当晶振频率为12MHz时,最高计数频率不超过500kHz,即计数脉冲的周期要大于2微秒;当晶振频率为6MHz时,最高计数频率不超过250kHz,即计数脉冲的周期要大于4微秒。

加1计数器实际上是由2个8位的特殊功能寄存器TH0、TL0或TH1、TL1构成的。

这些寄存器用于存放定时器或计数器的初值。

可以用MOV指令给计数器赋初值,即给TH0、TL0和TH1、TL1赋值。

一般情况下,当计数器工作时,这些寄存器中的值随计数器脉冲做加1变化。

3、结构

基本结构是两个16位寄存器T0和T1,每个都是由两个独立的8位寄存器(TH0、TL0和TH1、TL1)组成,用于存放定时器/计数器的初值。

TMOD是定时器/计数器工作方式寄存器,由它确定定时器/计数器的工作方式和功能。

TCON是定时器/计数器的控制寄存器,用于控制T0、T1的启动和停止以及设置溢出标志。

80C51单片机定时器/计数器结构原理图

四、控制与实现

80C51单片机定时器/计数器控制与实现由两个特殊功能寄存器TMOD和TCON完成。

TMOD用于设置定时器/计数器的工作方式,TCON用于控制定时器/计数器的启动和中断申请。

1.工作方式寄存器TMOD

TMOD是一个特殊的寄存器,用于设定T0和T1的工作方式。

只能对其进行字节操作,不能位寻址。

其格式如下:

(1)GATE:

门控位。

GATE=0时,只要软件使TR0或TR1置1就可启动定时器,与INT0或INT1引脚的电平状态没有关系。

GATE=1时,只有INT0或INT1引脚为高电平且TR0或TR1由软件置1后,才能启动定时器。

(2):

定时或计数功能选择位。

=0时,用于定时;=1时,用于计数。

(3)M1和M0位:

T1和T0工作方式选择位。

定时器/计数器有4种工作方式,由M1、M0进行设置,如下表所示:

M1M0

工作方式

功能选择

00

方式0

13位定时/计数器(TH高8位加上TL低5位)

01

方式1

16位定时/计数器

10

方式2

8位自动重装初值定时器/计数器

11

方式3

模式3只针对T0,T0分成两个独立的8位定时/计数器,T1无模式3

系统复位时,TMOD所有为清零,定时器/计数器工作在非门控方式0状态。

2.控制寄存器TCON

TCON既参与中断控制,又参与定时控制。

其低4位用于外部中断,高4位用于控制定时器/计数器的启动和中断申请。

其格式如下:

(1)TF1和TF0:

T1和T0的溢出标志位。

当定时器/计数器产生计数溢出时,由硬件置1,向CPU发出中断申请。

中断响应后,由硬件自动清零。

在查询方式下,这两位作为程序的查询标志位;中断方式下,作为中断请求标志位。

(2)TR1和TR0:

定时器/计数器控制运行位。

TR1(TR0)=0时,定时器/计数器停止工作;TR1(TR0)=1时,启动定时器/计数器工作。

TR1和TR0根据需要,由用户通过软件将其清零或置1。

3.下面对上述提到的工作方式作详细说明:

80C51单片机定时器/定时器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。

另外,T1还可作为串行通信接口的波特率发生器,以T0为例。

(1)方式0

在方式0下,T0的方式0逻辑结构图如下:

在此工作方式下,定时器中的计数器是一个13位的计数器,由TH0的8位和TL0的低5位组成,TL0高3位未用,最大计数值为。

定时器/计数器初值的计算及其赋值:

用作定时器时,定时时间T=(-T0的初值)时钟周期12,则

T0的初值=-T/(时钟周期12)

将T0初值的十进制形式的数转换成二进制数,低5位TL0,TL0的高3位为任意值,一般取0,高8位送TH0,即实现了给定时器赋初值的要求。

用作计数器时,计数次数值N=-T0的初值,则T0的初值=-计数初值N

将T0初值的十进制形式的数转换成二进制数,低5位TL0,TL0的高3位为任意值,一般取0,高8位送TH0,即实现了给计数器赋初值的要求。

(2)方式1

在此方式下,T0构成16位定时/计数器,其中TH0作为高8位,TL0作为低8位,最大计数值位,其余同方式0类似。

定时器/计数器初值的计算及其赋值:

用作定时器时,定时时间T=(-T0的初值)时钟周期12,则T0的初值=-T/(时钟周期12),并将T0初值的十进制形式的数转换成二进制数,低8位送TL0,高8位送TL1。

用作计数器时,计数次数值N=-T0的初值,则T0的初值=-计数初值,将T0初值的十进制形式的数转换成二进制数,低8位送TL0,高8位送TL1。

(3)方式2

在方式2下,TH0和TL0被当作两个8位计数器,计数过程中,TH0寄存器8位初值并保持不变,由TL0进行加1计数,当TL0计数溢出时,除了可产生中断申请外,还将TH0中保存的内容向TL0重新装入,以便于从预定计数初值开始重新计数,而TH0中的初值仍然保留,以便下轮计数时再对TL0进行重装初值。

方式2的最大计数值只有,T0方式2逻辑结构如图所示:

定时器/计数器初值的计算及其赋值:

用作定时器时,定时时间T=(-T0的初值)时钟周期12,则T0的初值=-T/(时钟周期12),并将T0初值的十进制形式的数转换成二进制数,分别送TL0和TH0。

用作计数器时,计数次数值N=-T0的初值,则T0的初值=-计数初值,将T0初值的十进制形式的数转换成二进制数,分别送TL0和TH0。

(4)方式3

只有定时器T0有此工作方式。

在方式3下,T0被拆成两个独立工作的8位计数器TL0和TH0。

其中TL0用原T0的控制位、引脚和中断源,T0的方式3逻辑结构图如下所示:

可见,方式3增加了一个8位定

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1