AT89S51单片机的定时器 计数器 虚拟仿真设计案例

AT89S51单片机的定时器 计数器 虚拟仿真设计案例


2024年5月30日发(作者:)

第6章

虚拟仿真设计案例

本章的虚拟设计仿真案例的源程序清单及虚拟仿真运行文件见拓展资源。必须

在Proteus7.5版本环境下运行。

1. 秒定时器的设计

利用片内定时器

/

计数器来进行定时,定时时间间隔为

1

秒。原理电路如图

5-

6

所示。单片机

P1.0

脚控制发光二极管闪烁,时间间隔

1

秒。

5-6

利用定时器控制发光二极管

1

秒闪亮

1

定时器的初始化编程,主要是设置定时常数和有关特殊功能寄存器。本例使用定

时器模式,即定时中断,实现每

即发光二极管每

1

1

秒钟单片机的

P1.0

脚输出状态发生一次翻转,

秒钟闪亮一次。

内部计数器用于定时器时,是对机器周期计数,可根据单片机的时钟频率算出机

器周期,再计算出定时时间从而得出定时时间常数。

参考源程序清单及虚拟仿真运行文件见拓展资源。在Proteus7.5版本环境下运行。

·1·

2. 计数器的应用

如图

5-8

所示,定时器

T1

采用计数模式,方式

T1

8

1

中断,计数输入引脚

P3.5

)上外接按钮开关,作为计数信号输入。按

4

次按钮开关后,

P1

口的

LED

闪烁不停。对各相关的特殊功能寄存器的设置如下。

1

)设置

TMOD

寄存器

定时器

T1

工作在方式

1

,应使

TMOD

寄存器的

M1

M0=01

;设置

C/

T

=1

,为计数器模式;对

T0

的运行控制仅由

TR0

来控制,应使

GATE0=0

。定时器

T0

不使用,各相关位均设为

0

。所以,

TMOD

寄存器应初始化为

2

T1

的计数初值的设置

LED

0x50

由于每按

1

次按钮开关,计数器计数

1

次,按

4

次后,

P1

8

烁不停。因此计数器的初值为

65 536−4=65 532

,将其转换成十六进制后为

0xfffc

所以,

TH0=0xff

TL0=0xfc

3

IE

寄存器的设置

本例由于采用

T1

中断,需将

IE

寄存器中的

EA

ET1

位置

1

5-8

由外部计数输入信号控制

LED

的闪烁

4

)启动和停止定时器

T1

将定时器控制寄存器

TCON

中的

TR1=1

,则启动定时器

T1

计数;

·2·

TR1=0

,则停止

T1

计数。

参考源程序清单及虚拟仿真运行文件见拓展资源。在Proteus7.5版本环境下运行。

3. 控制P1.0产生频率为500Hz的方波

假设系统时钟为

12MHz

,设计电路并编写程序实现从

P1.0

引脚上输出一个频率

500Hz

,即周期为

2ms

的方波,如图

5-9(a)

所示。

5-9 (a)

定时器控制

P1.0

输出一个周期

2ms

的方波

要在

P1.0

上产生周期为

2ms

的方波,定时器应产生

1ms

的定时中断,定时时间

T0

的方式

1

定时中断,

GATE

到则在中断服务程序中对

P1.0

求反。使用定时器

不起作用。

本例的原理电路如图

5-9(b)

所示。其中在

P1.0

引脚接有虚拟示波器,用来观察

产生

5-9(b)

定时器控制

P1.0

输出周期

2ms

的方波的电路原理图

的周期为

2ms

的方波。

下面来计算

T0

的初值:设

T0

的初值为

X

,有

(2

16

− X)

´

1

´

10

−6

= 1

´

10

−3

·3·


发布者:admin,转转请注明出处:http://www.yc00.com/web/1717052622a2733324.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信