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条)