随着日常节奏的加快,每个人在工作时常常被打断,导致效率低下,许多人会采用一种高效的时间管理工具:番茄时钟,这个是一个提高工作效率的得力助手!
目前行业中已经有十分成熟又低廉的番茄时钟计时器了,不过基本都是使用段式TN屏,显示效果比较差也较为单调。而如今的社会环境又激发了人们对品质与格调的追求,因此许多人会想拥有一款做工更精致,然后看起来即漂亮又好用的时钟计时器。这里介绍一种方案,是采用TFT彩色屏做为显示,其显示效果可以做得比较亮丽,单片机还可以扩展许多功能,比如存储计时习惯、切换界面风格等等,绝对可以做出相当具有特色的计时器。
这里提供一个免费方案,该方案成本低廉,开发容易,生产简单,主要框架如下图:
演示效果:
限于空间,只传模拟演示图如上,液晶屏可以采用320x240、480x272、480x320、640x480或者800x480等等。此方案中界面图标、字符等均可灵活修改,研发可以自由发挥,做出有特色的计时器。
瑞佑(RAIO)的控制器是公认的程序特别好写的产品,开发时间快,效率高!下面截取一些代码出来先分享:
BTE_Memory_Copy(0,1600,800,0,0,0,0,0,0,1600,0,0,12,800,480); // 初始界面
DMA_24bit(1,0,855,102,110,150,110,TIME[A0].start_addr);
DMA_24bit(1,0,975,102,110,150,110,TIME[A0].start_addr);
DMA_24bit(1,0,1148,102,110,150,110,TIME[A0].start_addr);
DMA_24bit(1,0,1258,102,110,150,110,TIME[A0].start_addr);
DMA_24bit(1,0,1378,150,80,100,80,TIME[B0].start_addr);
DMA_24bit(1,0,1460,150,80,100,80,TIME[B0].start_addr);
DMA_24bit(1,0,1088,405,memu_W,memu_H,memu_W,TIME[model2_up].start_addr);
DMA_24bit(1,0,1423,0,136,50,136,TIME[model_countdown].start_addr);
delay_ms(1000);
delay_ms(800);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B4].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B3].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B2].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B1].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B0].start_addr);
delay_ms(1000);
DMA_24bit(1,0,sech_x,sec_y,sec_W,sec_H,sec_W,TIME[B2].start_addr);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B9].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B8].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B7].start_addr);
delay_ms(1000);
DMA_24bit(1,0,288,405,memu_W,memu_H,memu_W,TIME[model1_down].start_addr); //模式1按下
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B6].start_addr);
delay_ms(1000);
DMA_24bit(1,0,288,405,memu_W,memu_H,memu_W,TIME[model1_up].start_addr);
delay_ms(200);
TIM_Cmd(BASIC_TIM, DISABLE);
BTE_Memory_Copy(0,1600,800,0,0,0,0,0,0,1600,0,0,12,800,480); // 模式2界面
for(i=1;i<6;i++)
{
delay_ms(600);
TimeShow_min(i);
}
delay_ms(1000);
delay_ms(1000);
DMA_24bit(1,0,533,405,memu_W,memu_H,memu_W,TIME[start_down].start_addr);
TIM_Cmd(BASIC_TIM, ENABLE);
delay_ms(1000);
DMA_24bit(1,0,533,405,memu_W,memu_H,memu_W,TIME[start_up].start_addr);
delay_ms(200);
DMA_24bit(1,0,533,405,memu_W,memu_H,memu_W,TIME[stop_up].start_addr);
DMA_24bit(1,0,minl_x,min_y,min_W,min_H,min_W,TIME[A4].start_addr);
DMA_24bit(1,0,sech_x,sec_y,sec_W,sec_H,sec_W,TIME[B5].start_addr);
for(i=20;i>13;i--)
{
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[i].start_addr);
delay_ms(1000);
}
for(i=13;i>11;i--)
{
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[i].start_addr);
delay_ms(300);
}
TimeShow_run(4);
TimeShow_run(3);
TimeShow_run(2);
TimeShow_run(1);
TimeShow_run1(0);
delay_ms(900);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B4].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B3].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B2].start_addr);
delay_ms(1000);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B1].start_addr);
delay_ms(1000);
TIM_Cmd(BASIC_TIM, DISABLE);
BTE_Memory_Copy(0,1600,900,480,0,0,0,0,0,1600,297,100,12,50,150);
DMA_24bit(1,0,secl_x,sec_y,sec_W,sec_H,sec_W,TIME[B0].start_addr);
BTE_Memory_Copy(0,1600,0,50,0,0,0,0,0,1600,0,480,12,800,250); //备份显示区块00:00 00
DMA_24bit(1,0,533,405,memu_W,memu_H,memu_W,TIME[start_up].start_addr);
for(i=6;i>0;i--)
{
Time_Blink();
}
欢迎大家与我交流!可提供相关码源,并且有机会获取专业的技术支持。
网址:http://www.lcdvision.com.cn/