2024年4月25日发(作者:火炬之光2攻略流程)
计算机应用技术
信息技术
与
信息化
基于单片机的多功能番茄钟设计
Design of Multifunctional Pomodoro Timer on MCU
蔡燕玲
*
CAI Yan-ling
摘 要
番茄钟是番茄工作法
[1]
的主要工具,采用早期的机械式定时器及当前的电脑软件作为番茄钟将受到使用
环境的约束。应用单片机设计制作的番茄钟适用任何环境,可根据个体需求及实际场景设置多种工作模
式,并在符合番茄工作法要求的基础上,增加灵活多变的功能设计。详细介绍了多功能番茄钟的软硬件
设计原理及方案实现。
关键词
AT89C51 24C02 番茄钟周期
Abstract
Pomodoro timer is the main tool of pomodoro technique. Mechanical timer or software timer will be subject to the
environment. Pomodoro timer on SCM will be suitable for any place,which will be set to multiple modes for the individual needs and the actual
scene. The flexible functions following pomodoro technique will also be added to the multi-function pomodoro timer. Hardware and software
design principle and programs are described.
Key words
AT89C51 24C02 pomodoro timer cycle
doi:10.3969/.1672-9528.2015.10.020
引言
番茄工作法是弗朗西斯科·西里洛发明的一种提高效率
的时间管理方法,实施这种方法需要一个核心工具—-番茄
时钟,用来执行进行番茄工作法需要的周期为25分钟和5分
钟的交替循环定时。标准番茄钟的定时时间是工作25分钟,
休息5分钟,但由于个体的差异,25分钟/5分钟的标准番
茄钟不一定适用任何人。西里洛最早使用的番茄钟是机械式
定时器,后来有人用软件设计了这样的定时器安装在电脑或
手机中。环境的差异使机械式定时器及电脑定时软件的使用
受到约束,如在某些环境下没有电脑、在自习室不应让手机
发出声音等等,用单片机设计制作的番茄钟却可随心所欲,
而且可以在提高使用效率的基础上增加多种人性化功能。
1 系统功能
系统主要有四种工作模式。工作模式1为标准番茄钟,
进行25分钟/5分钟循环定时。工作模式2为可调时间长度
的番茄钟,可自行设定时间长度X分钟/Y分钟循环定时。
工作模式3为长休息模式,可自行设定0-99中的任意时间
2.1 时间显示电路
由于番茄钟的主要目的是定时时间到了需要提醒,显示
的时间不需要精确到秒位,所以显示部分只需要两个LED数
* 厦门海洋职业技术学院 福建 厦门 361012
码管,可显示0-99分钟,通常用于设定时间长度时的显示,
图1 系统原理框图
长度Z分钟,主要目的是用于3-4个番茄周期后的长休息,
通常标准为15-30分钟,此模式也可用于日常需定时的场合。
时间设置模式用于设置模式2和模式3中的时间长度。此外,
番茄工作时间和番茄休息时间到了都会发出声光提示。
2 硬件设计方案
系统的硬件部分以AT89C51为核心,外围用两位数码管
作时间显示,用24C02存储自行设置的时间长度,另外采用
发光二极管和扬声器作为声光提示。
图-1为系统原理框图。
79
2015年第10期
信息技术
与
信息化
计算机应用技术
也可用于显示即时时间。为了充分利用单片机的资源,减少
额外硬件并简化程序,显示电路采用静态显示接口技术。
2.2 键控电路
系统采用1个按键和6个自锁开关,其中自锁开关
MOD1、MOD2、MOD3作为模式1、模式2和模式3的控制。对
于前两种模式,按下时开始番茄工作时间,松开后开始番茄
休息时间。模式3则按下时开始休息时间,松开后结束此模式。
自锁开关ADJ用于模式2和模式3中时间长度的自行设
置。按下ADJ,再按MOD1(作为第二功能),通过ADD按键可
以设置模式2中的番茄工作时间长度,再按一次MOD1就可保
存所设置的时间长度。同样, ADJ键按下的情况下按MOD2
可设置保存模式2中的番茄休息时间长度,按MOD3可设置保
存模式3中的休息时间长度。
另两个自锁开关用于关闭显示和关闭声音。
2.3 存储电路
24C02是I
2
C总线接口的E
2
PROM芯片。SCL为时钟线,作
为数据传输时的时钟信号。SDA为数据线,在此系统中用于
传输自行设置的时间长度,包括存储正在设置时间长度以及
读取已设置的时间长度用于模式2和模式3。
2.4 声音提示电路
这部分电路的作用是当定时时间到时发出提示音。蜂鸣
器
[2]
有有源蜂鸣器和无源蜂鸣器,有源蜂鸣器因其本身含有
振荡电路,所以可用直流电压驱动,但发出的音调是固定的。
而无源蜂鸣器需用振荡信号驱动才能发声,不同频率的振荡
信号驱动可发出不同的音调。因此系统中采用无源蜂鸣器,
当番茄工作时间到时发出急促的“嗒嗒”声,当番茄休息时
间到时发出舒缓的“嗒-嗒-”声。
2.5 光提示电路
用两个不同颜色的发光二极管,红色表示处于番茄工作
时间,绿色表示处于番茄休息时间。时间到时相应的发光二
极管闪烁,与声音提示同步。
系统的总电路如图2所示。
R10
D1
LED-RED
100
R11
100
R12
10k
U1
19
18
XTAL1
XTAL2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
D2
LED-GREEN
R5
10k
R4
10k
R3
10k
R2
10k
R1
10k
9
RST
DISPLAY OFF
ADDADJMOD3MOD2MOD1
29
30
31
PSEN
ALE
EA
R6
10k
U2
6
5
7
SCK
SDA
WP
24C02C
A0
A1
A2
1
2
3
1
2
3
4
5
6
7
8
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
AT89C51
R7
10k
R9
R8
100
1k
Q1
NPN
LS2
SPK OFF
SPEAKER
图2 总电路图
3 软件设计方案
软件用C语言编写,分为工作模式查询模块和四种工作
模式模块,具体流程如图3所示。
3.1 主程序
主函数包括定时器初始化、IC总线初始化及循环查询部分。
定时器T0定时50mS作为番茄时钟的时基信号,定时器
T1作为程序中其余延时函数的基本延时单位。
2
24C02芯片本身含I
2
C总线接口,但AT89C51单片机没有
I
2
C总线接口可与之对接,所以用程序模拟I
2
C总线协议,并
把总线驱动做成头文件,在主函数中进行初始化。
循环查询部分包含对MOD1、MOD2、MOD3和ADJ四个自锁
开关的巡测,以确定进入相应的工作模式。
while(1)
KeyValue=P1&0x1f;
switch(KeyValue)
2015年第10期
80
计算机应用技术
信息技术
与
信息化
图3 软件设计流程图
{
case 0x1e:MODE1();break;
case 0x1d:MODE2();break;
case 0x1b:MODE3();break;
case 0x17:ADJUST();break;
}
}
3.2 工作模式1和工作模式2
进入工作模式后启动T0定时,点亮相应的发光二极管。
番茄时间到则发出声响,同时发光二极管闪烁,直到再按同
个自锁开关后开始下一段时间。
while(!MOD1)
{
ALARM();
LED_RED=!LED_RED;
DELAY_();
}
3.3 时间长度设置程序
当ADJ按下后,若有ADD键也按下,则代表时间分钟的
计数加1,按住ADD键则连续加1,一直到所需要设定的时间
长度。
void ADJ_Count()
{
if(ADD==0)
{
if(tm<99)ts++;
else tm=0;
81
2015年第10期
}
shiwei=tm/10;
gewei=tm%10;
P2=tab[shiwei]&timerset1;
P3=tab[gewei]&timerset2;
DELAY_();
}
3.4 存储器读写程序
在24C02的驱动头文件中,已将向24C02的任意地
址写入一个数据做成一个写数据函数Write_Data(uchar
addres,uchar Data),同样也有一个读数据函数Read_
Data(uchar address)。需设置的时间长度调好后,就用写函
数存入24C02中。启动模式2、3时,就从24C02中取出已设
置好的时间长度。
存储一个时间长度用两次写数据函数,分别存时间长度
的十位数和个位数,如下:
Write_Data(1,shiwei);DELAY_();
Write_Data(2,gewei);DELAY_();
读取时间长度如下:
tm=Read_Data(1)*10+Read_Data(2);
4 结语
单片机番茄钟设计采用PROTEUS软件画电路原理图,用
Keil μVision编辑编译程序,单片机加载目标文件后仿真
运行的结果证明可实现预期的各种功能。
多功能番茄钟贴合实际需求,除了具有标准番茄钟功能,
还可根据需要设置成长度可调节的番茄钟。另外按照番茄工
作法默认时间表中“每隔三个短休息就要有一个长休息”的
建议设计了长休息模式。与机械式定时器和纯软件定时器相
比,采用单片机设计制作的番茄钟,具有可根据环境及个体
习惯设置成时间显示可关闭、声音提醒可关闭等多种人性化
特点,以及简单实用、携带方便、适用群体广。
参考文献:
[1] Staffan·Noteberg.番茄工作法图解.北京:人民邮电
出版社,2014.
[2] 程国钢.案例解说单片机C语言开发.北京:电子工业
出版社,2012.
(收稿日期:2015-10-09)
发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1714012430a2363414.html
评论列表(0条)