精华内容
下载资源
问答
  • 倒数计时器就是这样种元素,当用户登陆页面时,它会给用户产生种紧迫感。在我们的日常生活中,会看到各种各样的倒计时设计效果,比如:视频的开头;APP启动页面的右上角;某些电子商务和活动网站的价格区域,...

    视觉效果和动画效果已经成为产品设计中不可或缺的一部分,开发人员使用动画效果可以创建引人入胜的内容,营销人员可以使用这些效果来获得更好的产品覆盖率和良好的转化率。倒数计时器就是这样一种元素,当用户登陆页面时,它会给用户产生一种紧迫感。

    在我们的日常生活中,会看到各种各样的倒计时设计效果,比如:视频的开头;APP启动页面的右上角;某些电子商务和活动网站的价格区域,等等。

    毫无疑问,倒计时是非常有用的。在电子商务网站中,倒数计时器广泛使用在特惠价附近,以使用户感到机不可失。大多情况下,无论用户是否有购买产品的意愿,这种营销技巧对用户都是非常有效的。富有创造力的倒数计时器页面设计可以获得很多潜在客户并提高产品的转化率。那么,如何用简单的方法做出酷炫的倒计时效果呢?在下面列表中,小编给大家收集了十款最佳免费倒数计时器动效,我们一起来学习一下。

    1

    Watch Timer

    af071c7cfdb8482cd77bf365a1c59520.gif

    智能穿戴设备在当今的受众中正在迅猛增长, 进行健身运动时,智能手表上最常用的功能之一就是计时器。在这个倒数计时器设计中,设计师使用了不同的颜色。我们只需拖动顶部的时间滑块即可设置“倒计时”时间。点击“开始”图标后,倒计时开始,环形进度条的进度也随之减小,整体效果非常炫酷。

    2

    Daily UI

    ff459cbe6a45c70ebeb8258bca2b1060.gif

    Daily UI倒数计时器设计非常富有创意,该计时器可以很好的用在产品发布会等大屏场合。视觉效果非常流畅,即使在小型屏幕设备上也不会出现滞后现象。使用白色的数字字体,和背景很好地融合在一起。

    3

    Storm

    687b4959d7faa67b5bc1395d00bba06a.png

    这个倒数计时器效果非常适合于电子商务网站和时尚网站。设计师使用了干净的图像背景,整体文本在背景上看起来也非常简洁、清晰。倒数计时器使用白色框突出显示,与黑色的计时器刻度盘对比明显,很容易引起用户的注意。

    4

    Pomodoro Clock

    ae19e0d1d06eff5af9d2ccf3d1afbced.gif

    整体设计看起来很时髦、现代且诱人。这个倒数计时器不仅可以设置时间,还可以播放一些音乐。默认情况下,此时钟支持五种音轨,用户可以根据自己的喜好更改音轨。背景使用了流行的渐变色,非常具有视觉冲击力。

    5

    数字倒数计时器

    7484247a127219ef7482d853f64820f9.gif

    这是一个非常常规的数字倒数计时器设计。整体设计非常简洁,大方。使用的字体很大,富有现代感,可以让用户清楚地看到时间。另外,旋转动画是非常平滑干净的。尤其是在分钟部分,过渡很顺利。

    6

    倒数计时器

    861aca83c307789ce92c9654508160c9.gif

    在这个倒数计时器中使用了卡片翻转风格的效果,模拟日历卡片的翻页效果,趣味性很强。整体效果看起来非常平滑,整洁,尤其是分钟和秒钟内所有卡片同时翻转时,你都可以体验到效果的平滑度。此外,字体还精心的选择了以配合复古的外观和现代设计。

    7

    倒数计时器设计

    f29c6b56eef8799e050f6cfc9daba312.png

    这个倒数计时器中的图像背景上的白色圆形刻度盘提供了非常清晰的视图。页面使用了分屏设计的布局形式,将页面的内容保留在另侧,而计时器保留在左侧。使用这种设计方式可以很好的向用户告知某些信息。例如:如果网站因这种设计而需要维护,则可以清楚地指出需要花费多长时间。此外,用于文本和计时器的字体非常干净且易于阅读。

    8

    Online store

    a0d009eab2738fd6facc01f2e1df5f59.gif

    随着假期的临近,很多在线商店都在做产品促销活动。上面的倒数计时器效果非常适用于商城网站。此设计中的计时器具有天、小时、分钟和秒的格式,可以帮助站主提醒用户,给用户心理带来紧迫感。当然,也可以在电子邮件中使用此计时器,向客户发送交互式电子邮件。

    9

    倒数计时器设计

    385694469d02f9fd38719b236e941bd1.gif

    倒数计时器使用斜体字体,背景使用轮播图片的形式进行切换,看起来很吸引人。文本和倒数计时器虽使用了不同的字体,但它们彼此之间达到了完美的平衡,并为整体设计带来优雅的外观。

    10

    顶部倒数计时器设计效果

    cd6e0f483faaf1bf90713b1cc26c7c84.gif

    将倒数计时器置于页面的顶部位置,而顶部一般都是显示重要通知的最佳位置。用户进入页面后,计时器非常显眼,不会分心,同时,确保用户至少会看到一次。时钟的每个部分都由细线隔开,动画效果简洁明了。

    dca44657dd7defab719e8874d4a282b6.gif 倒数计时器原型设计

    在进行精美的UI界面设计之前,对界面进行原型设计是必不可缺的一步。还是老规矩,今天小编带着大家使用原型工具Mockplus对倒数计时器效果进行简单的原型设计。

    首先,我们一起来看看效果:

    dc3271bc53f76c8f24e2a76be8593d5d.gif

    设计步骤解析:

    1)拖出圆形组件,对其设置文本、背景色及去掉边框。

    2)复制4个同样的组件,并输入对应数字(最后一个设为空白)。

    3)5个组件分别对自己设置交互,选择触发方式为“载入时”,效果为显示/隐藏。

    4)分别设置好相应延迟时间,最大的一个数字,延迟时间应最短。

    5)将五个组件按数字大小依次叠加在一起,最小的数字组件放在最下面。

    e4c5942120b81a969b1f9509ecd10fa1.png

    总 结

    倒数计时器的使用场景非常多,如果我们使用得当,会给我们带来非常有效的效果。当然,这些前提是我们有一个优秀的倒数计时器设计,对倒数计时器感兴趣的设计师,可以结合上面的实例和想法去设计一个属于自己的倒数计时器。

     c89bbfca749ea7ab4fc8349a7f27e759.gif

    恭喜以下小伙伴每人获得《UI那些事儿》一本!

    Vicky.

    还好

    伍三芹

    请获奖小伙伴在10月25日(本周五)12:00前,将收货地址及收货人信息发送至本公众号后台~

    630b7094d953168eb14d87c1773fea83.png 摹  客

    让设计和协作,更快更简单

    https://www.mockplus.cn/

    20772e1a0f5f68bc2be5c71a3d845860.png

    展开全文
  • 自己制作计时器、倒计时器

    千次阅读 2020-11-30 10:12:00
    时间的观念在现在的时代越来越重要,考试要定时完成,炒菜做饭要计时完成,甚至连煮包泡面都要计时才能更加美味。...本程序的编写环境是VC++6.0,目前此程序实现了计时器和倒计时器的功能。每次只能执行个功能。

    计时器和倒计时器的设计与实现

    摘 要
    时间的观念在现在的时代越来越重要,考试要定时完成,炒菜做饭要计时完成,甚至连煮包泡面都要计时才能更加美味。制作计时器对我们越来越重要。

    本计时器中的倒计时使用的for函数输出把时间用00:00:00这种格式输出,使用Sleep来让整个程序暂停一秒,来完成计时一秒的功能,然后用/r覆盖掉上一行输出一秒后的剩余倒计时,在倒计时变为00:00:00时,输出时间到并用/a响铃。计时器采用类似的计时方法,不一样的是这次使用system(“cls”)清屏,然后重新输出下一次时间,用函数kbhit确定是否有键盘敲击,如果有将其录入,当这个值和所确定的停止值相同时,将退出for函数,停止计时,并输出时间。

    本程序的编写环境是VC++6.0,目前此程序实现了计时器和倒计时器的功能。每次只能执行一个功能。
    关键词: vc6.0,C语言,函数,计时器,倒计时器。

    1 引言

    1.1关于工程实践

    在我看来,整个工程实践中是让我们了解程序设计的整个流程,以及怎么实现这项功能,如何利用所学的c语言知识,来完成一个属于自己的小程序,小软件,在其中遇到的问题将其总结,最后将成为很好的学习笔记。

    1.2 课题背景

    经过一个学期的C语言课程学习,我们已经掌握了基本的C语言编程,而如何使用这些编程知识,让其变得有用十分重要。于是我们想到了开发一个计时倒计时的小程序。

    在人们生活中,时间是很重要的一种东西。无论什么都离不开时间。倒计时和计时更是如此。通过倒计时计算考试时间,计算煮饭煮菜的时间,通过计时计算跑步时间,计算做题讲课的时间。时间观念对我们来说越来越重要,制作计时器对我们也越来越重要,所以让我们来看看如何制作一个计时装置,即一个计时器和一个倒计时器。

    2 需求分析

    2.1程序目标

    完成一个简单的计时器和倒计时器,要求实现最基本的计时和倒计时程序,当用户打开程序后通过提示输入数字1 2 3进行三种操作。

    (1)输入数字1进行倒计时操作,通过输入00:00:00这种格式的时间倒计时,在时间到的时候提示“时间到!”,同时响铃。
    (2)输入数字2进行计时器操作,通过提示进入计时程序,并通过按Esc键停止计时,并输出计时时间。

    2.2 开发环境及工具

    2.2.1 运行环境

    Windows10
    也可以在一台内存大于800k内存的位系统电脑运行。

    2.2.2 编程软件介绍

    Microsoft Visual C++60.:调用系统文件#include <stdio.h>实现输入输出、#include <stdlib.h>使用退出exit函数、#include <time.h>读取系统时间通过结构体time_t实现、#include <Windows.h>

    3 系统总体结构设计

    3.1 基本简介

    本程序分为四个模块,除了程序的main函数以外,分别分为面板,计时和倒计时三部分。其中面板模块就是呈现给用户的主界面,计时模块负责实现记录在给定时间之间的时间长度,以及开始计时和结束计时的输入输出,而倒计时则是专门负责在倒计时的时间录入和时间到时的提示以及响铃。
    下面是程序流程图:
    程序流程图

    3.2 系统功能模块及设计

    3.2.1 数据结构设计

    主体程序中设计除了选择以外,输出“输入错误”的程序后可以重新输入选择。

    在这里插入图片描述

    3.2.2 面板模式介绍

    进入程序后,输出:

    “计时器&&倒计时器
    本程序是由网络空间安全学院学生工程实践研发
    ==== 计时方式 ====
    1. 倒计时器
    2. 计时器
    请输入你选择的代号:”

    几行字样。

    通过用户输入1 或 2来控制进入计时器还是倒计时器,如果用户不小心输入错误将提示“不好意思选错咯~”并在此进行选择,面板模块只是起到将其他模块链接起来的作用,在后期需要追加更多功能时也可以由面板模块连接。

    3.2.3 倒计时器模块介绍

    倒计时器将承担输入时间并进行倒计时的功能,用户将在此模块界面直接输入格式为“00:01:09”的时间进行倒计时,输入正确时间正确,将输出“倒计时开始!”,当时间变成“00:00:00”时,输出“时间到!”并响铃,之后按任意键退出程序。

    3.2.4 计时器模块介绍

    计时器将承担计算从用户输入开始标记到用户输入结束标记之间的时间的功能,用“计时时长为:00:00:05”的格式输出所计的时间。

    4 系统详细设计与实现

    4.1界面模块设计与实现

    作为最简单的计时和倒计时程序,使用vc6.0的默认程序窗口。

    4.2 模块设计与实现

    4.2.1主体模块设计与实现

    在主体之前定义其他模块的函数。通过while函数实现如果输入错误那么便接受用户的重新输入选择,通过switch函数选择进入计时器功能的函数还是倒计时器功能的函数。作为main函数,在之后追加函数或修改时更加容易。

    4.2.2 面板模块设计与实现

    进入程序后,由面板模块的函数通过printf函数输出边界图形字符以及欢迎界面,并介绍该程序选择方法(输入数字1 or 2)具体如下图。提示用户进行输入,之后通过while函数和switch函数进行选择。(while函数用于当输入错误时可以重新输入)
    在这里插入图片描述

    4.2.3 倒计时器模块的设计与实现

    倒计时器的代码在面部模式的函数中,通过printf输出提示输入倒计时时间(格式:00:01:08),当输入正确后,输出“倒计时开始”并输出“00:01:08”格式一秒一秒减少的时间,当时间变为“00:00:00”时,响铃并输出“时间到!”三字。

    在这里插入图片描述在这里插入图片描述

    4.2.4 计时器模块设计与实现

    模块分为两部分,一部分在主体函数里通过输入选择计时模式开始计时,然后进入计时器函数,用Sleep和system(”cls”)和while循环通过(00:00:00)格式下秒数分钟数,进行计时,通过函数kbhit、if、getch停止计时跳出循环,完成计时。

    在这里插入图片描述在这里插入图片描述

    5 系统测试与分析

    5.1 测试

    根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本或网络的参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用。

    5.2 调试过程中遇到的主要问题

    if,while,switch三个循环中容易缺少括号,进行修改后括号更加容易出错。这直接导致在vc中编译时出现很多错误。
    time_t结构体出现在#include <time.h>头文件里。
    <conio.h>头文件用来 kbhit getch
    <Windows.h>头文件用来 sleep

    结论

    经过了四个星期的c语言程序设计终于在老师的细心指导和同学的热情帮助下基本完成了计时器和倒计时器的设计修改任务。
    程序设计期间,学习到很多课堂上没有的知识,还积累了很多实践经验,增强了动手能力和解决实际问题的能力。我通过网上查找到很多成功的关于计时器倒计时器的程序,通过对那些已经成功的程序进行分析找到自己的设计思路,制定设计流程。通过对网现存的计时器倒计时器的比对,我发现我自己做的程序显得十分简陋,但是这个程序也是我通过完整的设计流程设计出的程序。
    限于作者知识水平和经验有限,此程序还有许多有待完善和改正的地方,恳请各位老师和读者批评指正。

    参考文献

    [1] 黄明等.21世纪进阶辅导 C语言程序设计.大连理工大学出版社,2005
    [2] 马靖善等.C语言程序设计.清华大学出版社,2005

    附录:

    程序下载:

    程序下载地址(exe)

    代码

    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <time.h>
    
    #include<conio.h>//kbhit getch
    
    #include <Windows.h>//用于sleep
    
    int daojishi();
    
    int jishiqi();
    
    int main ()
    {  
        int c;
    
    	printf("╔╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");
    	printf("╠                          ╣\n");
    	printf("╠                          ╣\n");
    	printf("╠                          ╣\n");
    	printf("╠     计时器&&倒计时器     ╣\n");
    	printf("╠                          ╣\n");
    	printf("╠                          ╣\n");
    	printf("╠                          ╣\n");
    	printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n");
    
    	
    	printf("本程序是由网络空间安全学院学生工程实践研发\n");
    
        
    	printf("====计时方式====\n");  
        
    	printf("1. 倒计时器\n");  
        
    	printf("2. 计时器\n");  
    
        
    	printf("请输入你选择的代号:");  
        
    	scanf("%d", &c);  
    
    
        while(c!=1&&c!=2){
    	
    	printf("不好意思选错咯~\n");
    	
    	printf("====计时方式====\n");  
        
    	printf("1. 倒计时器\n");  
    
        printf("2. 计时器\n"); 
    	
        printf("请输入你选择的代号:");
    
    	scanf("%d", &c);
    	}
    
    
    	switch(c)  
        {  
        case 1: 
    		 daojishi();
    
            break;
    		
        case 2: 
    			jishiqi();
    
            break; 
    	
    	}
        
    	return 0;  
    
    }
    
    
    
    
    int daojishi()
     {
    	int i,j,k;
    
    	int hour=0,min=0,sec=0;
    
    
    	printf("请输入倒计时时间(例如:01:26:30):");
    
    
    	scanf("%d:%d:%d", &hour, &min, &sec);
    
    
    	if(hour>24 || hour<0 || min>60 || min<0 || sec>60 || sec<0)
    	{
    
    		printf("输入有误!\n");
    
    		return 0;
    
    	}	
    
    	printf("倒计时开始!\n");
    
    
    
    	for(i=hour; i>=0; i--)
    	 {
    
    		for(j=min; j>=0; j--)
    		{
    	
    			for(k=sec; k>=0; k--)
    			{
    
    				printf("\r%02d:%02d:%02d", i, j, k);
    
    				Sleep(1000);
    
    			}
    
    			sec = 59;
    
    		}	
    
    			min = 59;
    
    	}
    
    	printf("\a\n时间到!\n");//倒计时结束后响铃
    
    	exit(0);
    
    }
    
    
    
    int jishiqi()
    {
    	
    	int hour = 0, min = 0, sec = 0,n;    
    	
    	while (n!=32)
    		{
    
    			if(kbhit()){//键盘敲击 检查当前是否有键盘输入,如果有则赋值给n
    			
    			n=getch();
    			
    			while(n==32){
    			
    				exit(0);	
    			}
    		
    		}
    		
    
    		Sleep(1000);//暂停1s        
    	    
    		system("cls");//清屏
            
    		
    		printf("╔╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");
    		printf("╠                          ╣\n");
    		printf("╠                          ╣\n");
    		printf("╠                          ╣\n");
    		printf("╠     计时器&&倒计时器     ╣\n");
    		printf("╠                          ╣\n");
    		printf("╠                          ╣\n");
    		printf("╠                          ╣\n");
    		printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n");
    	
    		
    		printf("本程序是由网络空间安全学院学生工程实践研发\n");
    		
    		
    		printf("====计时方式====\n");  
    	    
    		printf("1. 倒计时器");
    
    		printf("\n");
    	    
    		printf("2. 计时器");  
    
    		printf("\n");
    		
    		printf("请输入你选择的代号:2");
    
    		printf("\n");
    		
    		printf("按空格停止计时");
    
    		printf("\n");
    
    
    	    sec++;      
    
    
    	    if (sec == 60)
    		{            
    		
    			min++;            
    		   
    			sec = 0;       
    		}        
    	    if (min == 60)
    		{            
    	
    			hour++;            
    		   
    			min = 0;        
    		}        
    	    if (hour == 24)
    		{            
    		   
    			hour = 0;        
    		}        
    	    
    		printf("%02d:%02d:%02d\n", hour, min, sec); //%02d输出长度为2,不足2前面补0    
    		
    		
    		if(kbhit()){//键盘敲击 检查当前是否有键盘输入,如果有则赋值给n
    			
    			n=getch();
    			
    			while(n==32){
    			
    				exit(0);	
    			}
    		
    		}
    
    	}
    
        return 0;
    }
    
    
    展开全文
  • 计时器由分、秒计数器完成,秒计数器为模60,分计数器应能计至40分钟。 “分”、“秒”显示用LED数码管,应配用相应译码器。 人工拨动开关来控制计时器的启动/暂停。 半场、全场到自动会有相应的提示。
  • 设计个利用单片机控制的多功能秒表系统。 设计功能描述: 1、采用51单片机作为控制芯片; 2、数码管前两位显示分钟,后两位显示秒; 2、正计时、倒计时可以切换; 3、倒计时时间可设置,计时结束蜂鸣...
    当今社会在很多比赛中,都要用到时间的长短来衡量比赛的结果。本设计是一个利用单片机控制的多功能秒表系统。

     

    功能描述

    1、采用51单片机作为控制芯片;

    2、数码管前两位显示分钟,后两位显示秒;

    2、正计时、倒计时可以切换;

    3、倒计时时间可设置,计时结束蜂鸣器报警;

    4、计时过程中最多可记录10个时刻点,过后可翻阅记录的数据;

     

    按键说明

    K1:开始/停止计时;倒计时设置模式下,设置位加1;

    K2:计时进行中按下,记录时间点;倒计时设置模式下,设置位切换;

    K3:计时值归零;

    K4:正/倒计时模式切换(计时停止状态下操作);

    K5:进入/退出倒计时设置模式(计时停止状态下操作);

     

    电路设计

    采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

     

    仿真设计

    采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

     

    博主福利:100G电子设计学习资源包!

    http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect

    --------------------------------------------------------------------------------------------------------------------------

    展开全文
  • 2.1.2 计时系统: 2.2 原理分析 2.3 总体设计 2.4 软硬件设计 2.4.1 硬件设计 2.4.2 软件设计 2.5 方案论证及可行性分析 2.6 测试结果与分析 2.7 参考文献: 3. 设计文件以及源码下载 1. 设计任务: ...

    1. 设计任务:

    本次设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。系统应具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩以及赛后成绩暂存等功能。
    内容包括:显示、键盘、时钟等内容

    2. 设计说明

    2.1 需求分析

    2.1.1 计分系统:

    (1)分为“A队”和“B队”的“3分”,“2分”,“1分”各六个按键输入部分,以及两队比分的LED显示部分。在每次增加分数的同时,“24秒”计时恢复为初始值,“12分钟”计时暂停,等待比赛的继续进行

    2.1.2 计时系统:

    (1)比赛开始/继续:当“比赛开始/继续”键按下后,“24s”和“12分钟”计时器开始倒计时;
    (2)手动24s复位:当“24s复位” 键按下后,“24s”倒计时恢复初始值,“12分钟”倒计时暂停,等待比赛的继续;
    (3)比赛暂停:“比赛暂停”键按下后,“24s”倒计时和“12分钟”倒计时均暂停,等待比赛的继续进行;
    (4)自动增加比赛节数:当“12分钟”倒计时完成后,判断当前节数是否为最后一节,若不是,则节数自动增加,并“12分钟”和“24s”均恢复默认值,等待下一节比赛的进行。

    2.2 原理分析

    采用单片机AT89C51作为本设计的核心元件。利用7段共阴LED作为显示器件。在此设计中共接入了6个7段共阴LED显示器,其中2个4位LED显示器用于记录AB队的分数,每队1个4位LED显示器显示范围可达到0~999分,足够满足赛程需要;2个两位LED显示器用来记录赛程时间,其中1个用于显示分钟,1个用于显示秒钟;使用1个2位LED显示器用于显示“24s”倒计时,赛程计时均采用倒计时方式。即比赛前将时间设置好,即12分钟,比赛开始时启动计时,直至计时到零为止。本设计中设立了10个按键,其中6个用于设置两队的比分,1个用于比赛开始/比赛继续,1个用于暂停,1个用于手动增加比赛节数,一个用于恢复“24s”倒计时等功能。

    2.3 总体设计

    系统主要包括单片机、LED显示电路、按键控制电路、时钟电路及复位电路等组成

    2.4 软硬件设计

    2.4.1 硬件设计

    设计思路:
    (1)按键模块设计 :
    按键接至P1口和P3口,按键按下时输入是低电平。键的设置如下:“A1”,“A2”,“A3”键是A队加1分、加2分,加3分键盘,B队同理。“比赛开始/比赛继续”是启动键,“比赛暂停”是暂停键。此外,还有两个按键, “24s”复位键,“增加比赛节数”键。
    (2) LED显示模块设计 :
    显示分为计时和计分显示两个部分,均采用共阴极LED数码管动态扫描显示,由2个四位一体和4个两位一体的共阴极数码管构成。数码管的7个段控端输出经过74HC573驱动器进行电流放大驱动接至P0口。采用动态扫描方式,在足够短的周期内,使各位数码管逐个轮流受控显示。

    设计截图:
    设计截图

    2.4.2 软件设计

    软件设计采用C语言模块设计方法,程序由主程序、T0中断程序、显示程序、外部中断0程序、按键程序、初始函数、计时函数、延时函数组成。

    C语言程序代码:

    #include<reg52.h>
    #include<absacc.h>
    
    #define uchar unsigned char 
    #define uint unsigned int
    
    sbit A8=P2^0;  
    sbit A9=P2^1;
    sbit A10=P2^2;
    sbit A11=P2^3;
    sfr P00=0x80;
    
    
    uchar code wei_1[]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
    uchar code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x77,0x7c,0x39,0x5e,0x79,0x71,0X00,0X40};
    
    uchar minute=12;  //分
    uchar second=0;   //秒
    uchar key_status=0;     //按键状态值
    uchar scoreA=0;     //A队得分
    uchar scoreB=0;     //B队得分
    uchar count1=20;    //记录定时器时间
    uchar match=1;      //比赛节数
    uchar rule_time=24; //记录24秒规则
    uchar rule_flag=0;          //记录24秒规则是否启用
    
    
    /*
    初始化IO口
    */
    void IO_init(){
        A8=0;
        A9=0;
    }
    /*
    初始化时间
    */
    
    void time_init(){
        TMOD = 0x01;
        TH0 = (65536-50000)/256;
        TL0 = (65536-50000)%256; 
        EA = 1;
        ET0 = 1;
    }
    /*
    延时函数
    */
    void delay_ms(uint z){
      uint i;
        uchar j;
        for(i=0;i<z;i++){
    
            for(j=0;j<100;j++);
        }
    }
    
    /*
    计时函数
    */
    void T0_Time() interrupt 1 using 1{
        if (count1-- == 0) 
        {
            second--;
            rule_time--;
            count1 = 20; 
        }
        TH0 = (65536-50000)/256;
        TL0 = (65536-50000)%256;
    }
    
    /*
    时间显示函数
    */
    void time_display(uchar w2,uchar d2){
        uchar shi1,ge1;
        shi1=d2/10;
        ge1=d2%10;
    
        P00=wei_1[w2];
        A10=1;
        A10=0;
        P00=table[shi1];;
        A8=1;
        A8=0;
        delay_ms(5);
        P00=0;
        A10=1;
        A10=0;
        A8=1;
        A8=0;
    
        P00=wei_1[w2+1];
        A10=1;
        A10=0;
        P00=table[ge1];
        A8=1;
        A8=0;
        delay_ms(5);
        P00=0;
        A10=1;
        A10=0;
        A8=1;
        A8=0;   
    }
    
    /*
    分数显示函数
    */
    void score_dispaly(uchar w2,uchar d2){
        uchar qian2,shi2,ge2;
        qian2=d2/100;
        shi2=d2%100/10;
        ge2=d2%100%10;
    
        P00=wei_1[w2];
        A9=1;
        A9=0;
        P00=table[qian2];;
        A8=1;
        A8=0;
        delay_ms(10);
        P00=0;
        A9=1;
        A9=0;
        A8=1;
        A8=0;
    
        P00=wei_1[w2+1];
        A9=1;
        A9=0;
        P00=table[shi2];
        A8=1;
        A8=0;
        delay_ms(10);
        P00=0;
        A9=1;
        A9=0;
        A8=1;
        A8=0;   
    
        P00=wei_1[w2+2];
        A9=1;
        A9=0;
        P00=table[ge2];
        A8=1;
        A8=0;
        delay_ms(10);
        P00=0;
        A9=1;
        A9=0;
        A8=1;
        A8=0;
    }
    
    /*
    键盘输入函数
    */
    void key(){
        static uchar key_new = 0, key_l,temp;
        key_status = 0;                  
        P1 = 0x0f;
        if((P1 & 0x0f) != 0x0f)     
        {
            delay_ms(1);            
            if(((P1 & 0x0f) != 0x0f) && (key_new == 1))
            {                       
                key_new = 0;
                /*
                矩阵键盘扫描
                */
                key_l = (P1 | 0xf0);   
                P1 = key_l;
                switch(P1)
                {
                    /*
                    开始计时/比赛继续   
                    */
                    case 0x7e:  
                        TR0=1;  
                        rule_flag=1;
                        time_display(6,rule_time);
                        break;      
                    /*
                    暂停比赛
                    */
                    case 0x7d:
                        TR0=0;
                        break;  
    
                    /*
                    加分,同时24秒清零和总计时器停止计时
                    */
                    case 0xee: 
                        TR0=0; 
                        scoreA +=3;
                        rule_time=24;   
                        rule_flag=0;
                        break;
                    case 0xed: 
                        TR0=0;                  
                        scoreA +=2;
                        rule_time=24;   
                        rule_flag=0;
                        break;
                    case 0xeb:  
                        TR0=0; 
                        scoreA +=1;
                        rule_time=24;   
                        rule_flag=0;
                        break;
                    case 0xde:  
                        TR0=0; 
                        scoreB +=3;
                        rule_time=24;   
                        rule_flag=0;
                       break;
                    case 0xdd:  
                        TR0=0; 
                        scoreB +=2;
                        rule_time=24;   
                        rule_flag=0;
                        break;
                    case 0xdb:  
                        TR0=0; 
                        scoreB +=1;
                        rule_time=24;   
                        rule_flag=0;
                        break;
                    /*
                    增加比赛节数,同时24秒复位和总计时器复位
                    */
                    case 0xbd:
                        match++;
                        minute=12;
                        second=0;
                        TR0=0; 
                        rule_time=24;   
                        rule_flag=0;
                        break;
                    /*
                    手动24秒复位
                    */
                    case 0xbe:
                        if(TR0==1){
                                rule_time=0;   
                                rule_flag=0;
                        }else{
                                rule_flag=0;  
                        }
                        break;
                }   
            }           
        }
        else 
        {
            key_new = 1;
        }
    }
    
    void main()
    {
        IO_init();
        time_init();
        while(1){
            key();
    
            if(second==0){
                /*
                    判断某节比赛是否结束
                */
                if(minute==0){ 
                    /*
                    判断是否为最后一节比赛
                    */
                    if(match<4){
                        /*
                        计时系统恢复为默认值,比赛节数加一
                        */
                        second=60;
                        minute=11;
                        match++;
                        rule_time=24;   
                        rule_flag=0;
                    }   
                    TR0=0;
                }
                /*
                比赛分钟数减一
                */
                else {  
                    second=60;
                    minute--;
                }               
            }
            /*
            24秒结束,计时器暂停和24秒复位
            */
            if(rule_time<=0){
                TR0=0;
                rule_time=24;   
            }
    
            /*
            显示
            */
            time_display(0,minute);
            time_display(2,second);
            time_display(4,match);
            time_display(6,rule_time);
            score_dispaly(1,scoreA);
            score_dispaly(5,scoreB);
        }
    }

    2.5 方案论证及可行性分析

    本设计以单片机AT89C51为核心的控制电路实现了计时计分、计时的功能,设计中,使用大尺寸数码管的制造构思巧妙和软件设计,降低了整个系统的成本,实现了多用途的目的。通过仿真和实物实验验证了该系统的正确性和实用性。系统电路制造简单,显示清晰,成本低廉。

    2.6 测试结果与分析

    设计采用C语言编程,在Keil C51软件编译环境中,经过编译和连接,生成十六进制的目标代码文件.hex。在硬件上,用Proteus软件绘制出原理图,经过纯电路调试无误后,将生成的目标代码文件加载到Proteus界面的AT89C51中。接着再进行软硬件联合调试,反复调试,直至所有显示及按键功能实现,直至仿真成功。\

    运行截图:

    这里写图片描述

    2.7 参考文献:

    [1] 胡辉. 单片机原理与应用[M].北京:中国水利水电出版社,2007.
    [2] 戴佳. 51单片机C语言应用程序设计实例精讲[M].北京:电子工业出版社,2006.

    3. 设计文件以及源码下载

    CSDN下载地址
    或者关注博主公众号,回复:篮球计时器即可下载,还有更多资源分享哦~

    扫码关注作者个人技术公众号,有关技术问题后台回复即可,不定期将有学习资源分享
    这里写图片描述

    展开全文
  • Android实现秒表计时器的程序设计

    万次阅读 2010-08-08 18:21:00
    主要功能是实现秒表计时,功能简介如下:简介:计时器小程序——秒表计时器,程序界面简洁,只有个时间显示区域和两个图片按钮,个按钮是开始/暂停,另个按钮是停止。1.功能:(1)根据用户设置.按0.1秒或1秒为...
  • 倒数计时器就是这样种元素,当用户登陆页面时,它会给用户产生种紧迫感。 在我们的日常生活中,会看到各种各样的倒计时设计效果,比如:视频的开头;APP启动页面的右上角;某些电子商务和活动网站的价格区域,...
  • 有源蜂鸣种一体化结构的电子讯响,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 LED灯即发光二极管,它是半导体二极管的...
  • 这几天在写个程序,顺带完成了STM32F1版本的计时器程序,用的是正点原子的F1精英版开发板。 实现的功能是:当按下KEY1按键时,程序开始计时,当再次按下KEY1按键时,程序停止计时。并且显示当前的时间计数(总共...
  • 倒计时计时器的用途很广泛。它可以用做定时,控制被定时的电器的工作状态,实现定时开或者定时关,最长定时时间为9分钟。它还可以用做倒计时记数,由三位数码管显示记数状态。 1. 基本功能&...
  • 计时器实验程序

    2018-12-20 18:38:57
    用51单片机编程实现个秒表,可显示小时、分钟、秒功能。 1. 给出硬件电路(4分) 2. 给出程序流程(4分) 3. 给出汇编语言程序(4分) 4. 加入两个按钮,修改相应程序,可实现计时暂停、继续、清零功能(5...
  • 基于VHDL的简易计时器设计与实现 传送门: 本项目地址:Gitee | GitHub 其他相关项目 DE2-VHDL计时器:Gitee | GitHub DE2-VHDL实验:Gitee | GitHub 前言 该设计是笔者大二时的硬件课实践作品,如今2年过去...
  • 最近要做这么个东西,在个activity中,实现多个计时器,点击哪个按钮,就开启哪个计时器。如下: 涉及线程操作、更新ui。看着好简单,做起来还真花我不少功夫,主要是没理清这个思路,所以写代码的时候,...
  • python3 做计时器和点名软件

    千次阅读 2018-07-15 22:42:42
    突然同学要我帮忙做个点名软件,我以为是他的大作业就答应了,结果。。。不多说了开始了 写的比较累赘,主要是打算给和我一样的萌新看的。 首先我们要个UI # 包含个tk的模块,画UI需要用到 import ...
  • WINDOWS程式设计--计时器

    千次阅读 2006-09-28 13:54:00
    计时器Microsoft Windows计时器种输入设备,它周期性地在每经过个指定的时间间隔後就通知应用程式次。您的程式将时间间隔告诉Windows,例如「每10秒钟通知我声」,然後Windows给您的程式发送周期性发生的...
  • 毫秒计时器功能如下: 1)LCD1602.上显示累积计时时间(分:秒:毫秒) ; 2)计时方式:实时时钟DS1302或单片机内部定时器(任选其)3)计时开始:按钮命令; 3) 计时结束:按钮命令或累计计时超过1分钟;及时结束将显示时间...
  • Microsoft Windows计时器种输入设备,它周期性地在每经过个指定的时间间隔後就通知应用程式次。您的程式将时间间隔告诉Windows,例如「每10秒钟通知我声」,然後Windows给您的程式发送周期性发生的WM_...
  • 这里写自定义目录标题欢迎使用Markdown编辑新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入段漂亮的代码片生成个适合你的列表创建个表格设定内容居中、居左、...
  • 7-1 Verilog 计时器

    万次阅读 2016-04-27 22:44:08
    Verilog学习过程 计时器
  • 59分59秒计时器的实验报告 包括 校分 报时 快速校分 校分停秒等功能 有multisim仿真
  • ❤️使用 HTML、CSS 和 JS 的简单倒数计时器 ❤️

    万次阅读 多人点赞 2021-09-09 16:07:44
    在本文中,我使用简单的 JavaScript 代码创建了个倒数计时器和你分享。 您可以观看它的现场演示以了解它是如何工作的。如果您知道如何创建数字时钟,那么创建这样的项目就会容易得多。您可以在此处提前安排特定...
  • Verilog实现毫秒级计时器(秒表)

    千次阅读 多人点赞 2014-12-04 12:24:49
     使用Verilog语言在Nexys3开发板上实现个毫秒精度的计时器。    计时器从0.000s开始计时到9.999s,然后重头开始计时,如此往复。Nexys3开发板上7段译码管要实时显示当前计数时间值和小数点。另外,跟一般的...
  • 文/借我一生执拗图形界面首先,我们使用 Qt Designer 来设计计时器的图形界面,参考如下:左边画三个按钮,分别命名为:开始、暂停、清零。右边画个标签,文本内容为...
  • 本可调倒计时提醒具有:电路简洁、显示醒目、定时准确、制作容易、可调倒计0~99 分钟,抗干扰能力强,使用方便的优点。它既有制作的趣味性,又有使用的实用性。  、硬件电路  如1所示,电源变压器T1将AC220...
  • 汇编语言 -- 计时器/倒计时

    千次阅读 2020-12-01 17:18:27
    打脸来的太快,发现这次课设很多都没有读题按要求来,凑合吧就… 流程 计时器 DATAS SEGMENT SINPUT DB 'Please enter hours, minutes, and seconds with spaces: $' SOUTPUT DB 'Any key to again and ESC to ...
  • 课程设计题九: 倒计时时钟设计

    千次阅读 2019-07-13 00:02:36
    1)设计任务:完成倒计时时钟的设计。 2)指标要求 (1)能够分钟级的倒计时分钟和秒显示。 (2)倒计时的起始值可以设置。 (3)具有暂停和清零按钮,倒计时结束报警。 (4)供电电压3.3V/5V。 获取该程序...
  • “ojjaks(kidbisjsnsnsjxjjxjhkshsjsh)”gajshbsjsihsihshsnxjsn

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,662
精华内容 3,864
关键字:

一分钟计时器设计图