秒表倒计时定时器的设计(1)
- 格式:doc
- 大小:357.50 KB
- 文档页数:20
倒计时定时器设计倒计时定时器是一种常见的计时器类型,经常被用于倒计时活动、比赛等场景中。
它可以根据预设的时间间隔和倒计时时间,实时更新倒计时进度,并在时间结束时触发相应的动作或事件。
在本篇文章中,我们将讨论倒计时定时器的设计与实现。
一、倒计时定时器的功能需求在确定设计倒计时定时器时,我们首先需要明确其功能需求。
下面是一些常见的功能需求:1.设置倒计时时间:用户可以设置倒计时的时间,即预设的时间长度。
2.显示倒计时进度:定时器应该实时显示倒计时的进度,包括倒计时的剩余时间、百分比、进度条等。
3.声音提示功能:用户可以选择在倒计时结束时,通过声音提示来提醒。
4.后台运行功能:定时器可以在后台运行,即使用户切换到其他应用,也能继续计时。
5.自定义样式:用户可以根据自己的喜好,选择不同的样式来显示倒计时页面。
二、倒计时定时器的设计思路在确定功能需求之后,我们可以开始设计倒计时定时器的架构。
以下是一些设计思路:1.数据模型设计:倒计时定时器需要一个数据模型来保存倒计时的相关信息,包括倒计时的起始时间、目标时间、剩余时间等。
2.UI设计:倒计时定时器需要一个用户界面来显示倒计时的进度和其他相关信息。
用户可以通过界面设置倒计时的时间和其他参数。
3.定时器机制:定时器机制可以使用系统提供的定时器API,或者使用线程等其他方式来实现。
定时器应该能够根据设定的时间间隔,实时更新倒计时的进度。
4.声音提示功能:声音提示功能可以使用系统提供的音频API来实现。
在倒计时结束时,播放预设的声音文件。
5.后台运行功能:后台运行功能可以使用系统提供的后台任务API来实现。
在用户切换到其他应用时,定时器可以继续计时,并在合适的时机发送通知。
6.自定义样式:自定义样式可以使用系统提供的界面定制API来实现。
用户可以选择不同的主题、颜色等来定制界面。
三、倒计时定时器的具体实现以下是一个简单的倒计时定时器的实现示例:1.数据模型设计:```javascriptclass Timerconstructor(totalTime)this.totalTime = totalTime; // 倒计时的总时间this.startTime = new Date(; // 倒计时的起始时间}getRemainingTimconst currentTime = new Date(;const elapsedTime = currentTime - this.startTime;const remainingTime = this.totalTime - elapsedTime;return remainingTime;}```2.UI设计:```html<div id="progress-bar"></div><button id="start-button">Start</button><button id="stop-button">Stop</button></div>```3.定时器机制:```javascriptfunction updateTimeconst remainingSeconds = Math.floor(remainingTime / 1000);const progressBar = document.getElementById('progress-bar');if (remainingTime <= 0)clearInterval(interval);playSound(;}function startTimeinterval = setInterval(updateTimer, 100);document.getElementById('start-button').addEventListener('click', startTimer);```4.声音提示功能:```javascriptfunction playSounconst audio = new Audio('sound.mp3');audio.play(;```5.后台运行功能:```javascriptfunction sendNotificatioconst notification = new Notification('Timer Ended', });if (Notification.permission === 'granted')sendNotification(;} else if (Notification.permission !== 'denied')Notification.requestPermission.then(permission =>if (permission === 'granted')sendNotification(;}});```6.自定义样式:```cssbackground-color: white;padding: 20px;font-size: 24px;margin-bottom: 10px;#progress-barbackground-color: blue;height: 10px;margin-bottom: 10px;#start-button, #stop-buttonbackground-color: green;color: white;border: none;padding: 10px 20px;margin-right: 10px;```以上是一个简单的倒计时定时器的设计与实现示例。
一、倒计时定时器设计1、20秒、30分钟到计时计数器1、1 设计要求:20s倒计时定时器:倒计时由按钮启动,计时精度0.1s,在数码管中显示倒计时值。
30分钟倒计时定时器:倒计时由按钮启动,计时精度1s,在数码管中显示倒计时值。
1、2设计的作用目的:此次设计是我们更进一步了解基本电路的设计流程,提高自己的设计理念,丰富自己的理论知识,巩固所学知识,使自己的动手动脑能力有更进一步提高,为自己今后的学习和工作打好基础,为自己的专业技能打好基础。
通过解决实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。
本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,以便今后自己在单片机领域的学习和开发打下基础,提高自己的动手能力和设计能力,培养创新能力,丰富自己的理论知识,做到理论和实践相结合。
本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解,同时还对单片机的接口技术,中断技术,存储方式和控制方式作更深层次的了解。
1、3问题分析:在电子技术飞速发展的今天,电子产品的人性化和智能化已经非常成熟,其发展前景仍然不可估量。
如今的人们需求的是一种能给自己带来方便的电子产品,当然最好是人性化和智能化的,如何能做到智能化呢?单片机的引入就是一个很好的例子。
单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。
单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。
目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
单片机已在广阔的计算机应用领域中表现得淋漓尽致电器因此,单片机已成为电子类工作者必须掌握的专业技术之一。
倒计时计时器设计倒计时计时器是一种常见的时间管理工具,可以帮助人们准确地计时和组织时间。
设计一个高效和易于使用的倒计时计时器需要考虑多个方面,包括用户界面设计,功能设置,报警方式等等。
本文将详细阐述如何设计一个倒计时计时器。
首先,倒计时计时器的用户界面应该简洁明了,使用户能够方便地进行操作。
主界面应该包括一个显示倒计时时间的区域,一个开始/暂停按钮,以及一个重置按钮。
倒计时时间应以小时、分钟和秒的形式显示,并且具有易于辨认的字体和颜色。
开始/暂停按钮应该有明显的标识,以便用户一目了然地知道当前的功能状态。
重置按钮则用于重设倒计时器到初始状态。
其次,倒计时计时器的功能设置应该灵活多样,便于用户根据需要进行调整。
用户应该可以设置倒计时的总时间,并且能够选择倒计时结束时是否自动重新开始或者报警。
此外,用户还可以选择报警方式,比如声音报警、振动报警或者文字提示。
一些情况下,用户可能需要设置多个倒计时器,并且可以为每个倒计时器设置不同的总时间和报警方式。
倒计时计时器应该具备准确的计时功能,保证计时时间精确到秒。
计时器的算法应该优化,能够准确地计算出时间的流逝,且不会受到设备性能或者其他因素的影响。
此外,倒计时计时器还应该具备倒计时结束自动停止的功能,以免用户忘记停止计时器。
报警方式是倒计时计时器的重要功能之一、报警方式应该能够有效地吸引用户的注意力,并且能够根据用户的喜好进行调整。
声音报警可以设置为不同的音量和音调,振动报警可以设置为不同的强度和频率,文字提示也可以根据用户的需求进行自定义。
在报警方式上,可以提供预设的模式供用户选择,也可以允许用户自定义报警方式。
安全性也是倒计时计时器设计中需要考虑的一个重要方面。
倒计时计时器应当保证用户设置的倒计时时间和设置不受恶意程序或者其他因素的影响。
为了实现这一点,倒计时计时器应具备数据加密和处理安全的机制。
同时,倒计时计时器的数据也应当能够在设备间进行同步和备份,以保证用户的数据不会意外丢失。
倒计时定时器电路设计倒计时定时器电路是一个常用的电子电路,在各种应用场景中被广泛使用。
例如,在厨房,我们可以使用倒计时定时器电路来实现烹饪定时;在赛车场上,我们可以使用倒计时定时器电路来准确计时比赛时间等等。
下面是一个关于倒计时定时器电路设计的详细说明:首先,我们需要确定时间范围。
根据实际需求,我们可以选择不同的计时范围,如分钟、小时、天等。
不同的时间范围对应着不同的计数器位数,即需要不同数量的计数器。
例如,如果我们需要设计一个分钟级别的倒计时定时器,那么我们需要使用至少6位的计数器,以便表示60分钟。
其次,我们需要确定时间单位。
在设计倒计时定时器电路时,我们需要确定最小的时间单位,即每次计数的时间间隔。
常见的时间间隔有秒、分、时等。
根据实际需求选择最小时间单位。
然后,我们需要选择适当的计数器和显示单元。
计数器是用来计数的关键元件,可以通过不同的计数器实现不同范围和位数的倒计时。
常见的计数器有二进制加法计数器(如74LS191)、二进制表计数器(如74LS193)等。
显示单元可以是数码管,也可以是液晶显示屏等。
接下来,我们需要设计时钟信号源。
时钟信号源可以是晶振电路,也可以是晶振模块,甚至我们可以利用其他电路的时钟来作为时钟信号源。
设计时钟信号源时,需要确定时钟频率,即每秒或每分钟的脉冲数。
根据时钟频率和时间单位选择相应的频率分频电路,以便生成具有所需时间间隔的时钟信号源。
最后,我们需要设计控制逻辑。
控制逻辑用于控制计数器,根据时钟信号源的脉冲将计数器递减。
当计数器减至0时,需要触发警报或其他操作。
控制逻辑可以使用逻辑门、可编程逻辑器件等来实现。
在设计倒计时定时器电路时,还需要考虑一些额外的功能,如暂停、重置、显示等。
这些功能可以通过增加额外的开关、按钮、显示芯片等元件来实现。
总结起来,倒计时定时器电路设计的关键是确定时间范围、时间单位、计数器和显示单元的选择,设计适当的时钟信号源和控制逻辑。
在设计过程中,需要充分考虑实际需求和制约条件,并结合相应的电子元件来实现倒计时定时器电路。
倒计时定时器设计倒计时定时器是一种常见的计时工具,用来精确计算和显示倒计时的时间。
它被广泛应用在各种场合,如考试倒计时、比赛倒计时、产品推广倒计时等等。
在设计倒计时定时器时,需要考虑以下几个方面:确定计时方式、计时精度、用户界面和功能设计。
以下是一个关于设计倒计时定时器的细致说明,总计1200字。
首先,确定计时方式是设计倒计时定时器的第一步。
常见的计时方式有两种:秒数计时和时间点计时。
秒数计时是指以秒数为单位进行计时,例如倒计时30秒。
在这种计时方式下,用户只需要输入需要倒计时的总时长,系统将自动显示倒计时的剩余秒数。
可以使用计时器对象或定时器线程来实现这种计时方式。
时间点计时是指以特定的时间点为截止时间进行计时,例如倒计时至2024年1月1日。
在这种计时方式下,用户需要输入截止日期和时间。
系统将计算当前时间到截止时间的时间差,并显示剩余的天、小时、分钟和秒数。
可以使用日期时间函数和定时器对象来实现这种计时方式。
其次,计时精度是设计倒计时定时器的另一个要考虑的因素。
计时精度决定了计时器的准确程度,通常有毫秒级和秒级两种选择。
毫秒级计时器具有更高的计时精度,可以实现更精确的倒计时。
但是,毫秒级计时器的实现较为复杂,需要使用更精细的计时机制,可能会占用较多的系统资源。
秒级计时器相对简单一些,可以使用系统提供的定时器函数或对象实现。
虽然计时精度相对较低,但对大多数倒计时场景来说已足够满足需求。
再次,用户界面设计是设计倒计时定时器的另一个重要方面。
一个好的用户界面可以提高用户的使用体验,降低误操作的可能性。
首先,应该提供一个易于设置倒计时时间的输入框或选择器,允许用户输入或选择需要倒计时的时长。
对于时间点计时方式,可以提供日期选择器和时间选择器来选择截止日期和时间。
其次,应该提供一个清晰明了的倒计时显示区域,显示剩余的天、小时、分钟和秒数。
可以使用数字显示或者进度条等形式来展示。
另外,可以提供启动、暂停和重置按钮,以便用户可以根据需要进行操作。
目录一、计时器概括 (1)1、计时器的特色及应用 (1)2、设计任务及要求 (1)二、电路设计原理及单元模块 (1)1、设计原理 (1)2、设计方案 (2)3、单元模块 (3)3.1、所用各个芯片功能 (3)3.2、各单元电路 (7)四、安装与调试 (11)1、电路的安装 (11)2、电路的调试 (12)五、结论与心得 (12)六、参照文件 (13)1、总电路图 (14)2、元件清单 (14)3、实物 (15)24秒倒计时器的设计和制作一、计时器概括1、计时器的特色及应用在很多领域上当时器均获得广泛应用,诸如在体育竞赛,准时报警器、游戏中的倒时器,交通讯号灯、红绿灯、行人灯、交通纤毫控制机,还能够用来做为各样药丸、药片,胶囊在指准时间提示用药等等,因而可知计时器在现代社会的应用是相当广泛的。
在篮球竞赛中,规定了球员的持球时间不可以超出24 秒,不然就违例了。
本课程设计“智能篮球竞赛倒计时器的设计”,可用于篮球竞赛中,用于对球员持球时间 24 秒限制。
一旦球员的持球时间超出了24 秒,它自动的报警进而判断此球员的违例。
2、设计任务及要求设计一个 24 秒倒计时器,详细功能要求以下:1、用小规模集成电路设计24 秒倒计时电路;2、用 555 准时器产生 1Hz 的标准脉冲信号;3、当计时器显示00,同时报警;4、计时器应拥有清零、启动、暂停/持续计时等控制功能。
二、电路设计原理及单元模块1、设计原理24 秒计时器的整体参照方案框图如图 1 所示。
它包含秒脉冲发生器、计数器、译码显示电路、报警电路和协助时序控制电路(简称控制电路)等五个模块构成。
其上当数器和控制电路是系统的主要模块。
计数器达成24 秒计时功能,而控制电路达成计数器的直接清零、启动计数、暂停 /连续计数、译码显示电路的显示与灭灯、准不时间到报警等功能。
秒脉冲发生器产生的信号是电路的时钟脉冲和准时标准,但本设计对此信号要求其实不太高,故电路可采纳555 集成电路或由TTL 与非门构成的多谐振荡器构成。
目录一、引言 (2)1.1秒表的概述 (2)1.2本次设计任务 (2)1.3系统主要功能 (2)二、设计目的 (3)三、设计要求 (3)四、总体设计 (3)4.1 设计方案 (3)4.2 硬件电路设计 (4)(1)晶振电路部分 (4)(2)总体电路构成及功能 (4)(3)系统板硬件连接 (5)4.3 软件程序设计 (6)五、方案实施 (6)5.1 单片机简介 (7)5.2 静态数码管显示 (10)5.3 软件调试及调试方法 (11)六、课程设计总结 (12)七、参考文献 (13)八、附件(源程序) (14)一、引言单片机具有体积小,成本低,抗干扰能力强,面向控制,可以实现分机各分布式控制等优点。
本秒表/时钟设计就是利用单片机的上述优点,采用目前市场上性能价格比较高的MCS-51单片机设计而成的最小系统。
它在实际生活中具有广泛的应用。
例如:工业生产中的定时启停自动化设备、学校中上下课铃定时控制、农村广播站每天早中晚广播的自动定时控制均可采用本仪器。
1.1 秒表的概述秒表是电器制造,电国,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、廷时器、定时器等的时间测试。
目前所使用的电秒表大多是指针式或集成电路型的,结构相对复杂、测试功能单一。
但我们这次设计的秒表比较简单,所以使用很简单。
1.2 本次设计任务(1)开始时,显示“00”,第1次按下SP1后就开始计时。
(2)第2次按SP1后,计时停止。
(3)第3次按SP1后,计时归零。
1.3 系统主要功能99秒计时器主要是用在精确计间方面。
比如:学校里的校运会、答题倒计时等方面。
它通过一个按键来控制它的开和停,它能及时有效的记录瞬间时间。
而且它在我们生活中运用很广泛,希望我们做的这个计时器对以上方面有所帮助。
它也许比较简单,而且有可能达不到很多人的要求,但我相信通过我们过一步的学习,我们一定会制造出更好的系统,为社会大众服务。
24秒倒计时器的设计和制作设计和制作一个24秒倒计时器可以分为硬件设计和软件设计两个部分。
硬件设计:1. 选择一个适合的开发板或者单片机作为控制器。
常见的选择有Arduino、Raspberry Pi等。
2.连接一个LCD显示屏,用于显示倒计时的时间。
3.连接一个按钮,用于启动倒计时。
4.使用一个蜂鸣器或者其他声音装置,用于倒计时结束时发出提示音。
软件设计:1. 在选定的控制器上,使用相应的开发环境进行编程。
例如使用Arduino IDE进行Arduino编程。
2.编写倒计时函数,用于倒计时的逻辑。
3.编写LCD显示函数,用于在LCD上显示倒计时的时间。
4.编写按钮检测函数,用于检测按钮的按下事件。
5.编写蜂鸣器控制函数,用于在倒计时结束时发出提示音。
下面是一个简单的伪代码示例,展示了如何实现一个24秒倒计时器:```cpp#include <LiquidCrystal.h> // 引入LCD库LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 初始化LCD引脚const int buttonPin = 6; // 按钮引脚const int buzzerPin = 7; // 蜂鸣器引脚int buttonState = 0; // 按钮状态int countdownTime = 24; // 倒计时时间void setulcd.begin(16, 2); // 设置LCD行数和列数pinMode(buttonPin, INPUT); // 设置按钮引脚为输入pinMode(buzzerPin, OUTPUT); // 设置蜂鸣器引脚为输出void loobuttonState = digitalRead(buttonPin); // 读取按钮状态if (countdownTime > 0 && buttonState == HIGH) countdownTime--; // 倒计时减1秒displayTime(countdownTime); // 显示倒计时时间delay(1000); // 延迟1秒}if (countdownTime == 0)tone(buzzerPin, 1000, 500); // 发出提示音digitalWrite(buzzerPin, LOW); // 停止提示音delay(1000); // 延迟1秒countdownTime = 24; // 重置倒计时时间}lcd.setCursor(0, 0); // 设置LCD光标位置为第一行第一列lcd.print("Countdown: "); // 显示文本```这个示例使用了Arduino控制器和连接了16x2 LCD显示屏展示倒计时时间。
电子设计报告秒表倒计时电路小组成员:目录设计的任务 (3)设计方案选择 (4)设计思路 (5)电路仿真 (7)主要元器件与参数 (11)电路焊接 (12)失败与改进 (14)收获体会和想法 (15)设计的任务秒表倒计时电路设计要求:1.设计一个秒表倒计时电路,计时最大值为59秒,每隔一秒钟减1,最小值为0秒,接着再回到59秒,58秒,57秒,……,0秒,59秒,58秒,57秒,如此循环往复。
2.采用7段数码管显示时间。
3.可能的话,在上述要求的基础上进行相关扩展功能的设计。
4.先进行原理分析与方案选择,采用仿真软件(比如Proteus或Quartus)进行设计;功能实现后,设计并制作实际电路并进行调试,完成一份设计报告。
相关知识:1.计数器集成电路如74191的使用方法。
2.555电路的应用。
3.数码管、7段显示译码器电路的使用。
设计方案选择模块1、脉冲电路采用555电路构成多谐震荡器。
由于T=(2*R1+R2)*C。
经过计算采用R1=R2=1000K。
C=0.47UF。
再加上0.01uf的电容。
就设计出由555构成的多谐震荡器产生1秒的脉冲。
模块2、计数电路采用74LS190构成计数器。
通过74LS04等门电路构成反馈置数电路。
通过反馈回路使其计数到一定时候置数。
模块3、显示电路由计数器输出信号通过CD4511译码和驱动共阴数码管,由数码管显示数字。
设计思路题目要求:秒表倒计时基本设计:1、由振荡器产生脉冲输入到计数器2、计数器计数并将计数的信号输入到数码管驱动器。
3、由数码管驱动器CD4511驱动数码管现实当前数值。
4、计数器通过各种门电路产生反馈回路。
扩展设计:1、计时开始开关:由开关控制振荡器的脉冲输入到计数器即可实现。
2、正向与反向计时:通过开关的开合选着正向计时(1、2、3…59、0…)与反向计时(59、58、57…0、59…)。
由于正向计时置数是59到0。
反向计时的置数是0到59。
倒计时秒表的设计
要设计一个倒计时秒表,可以使用以下步骤:
1. 首先,确定你要在哪个平台上设计这个倒计时秒表,比如是在电子设备上还是在网页上。
2. 确定你的倒计时秒表的功能和需求。
比如,确定最大的倒计时时间、是否需要设置提醒的功能、是否需要显示当前的倒计时时间等。
3. 根据需求,设计一个计时器类,该类应该包含以下属性和方法:
- 计时器的初始时间和当前时间
- 开始计时、暂停计时和重置计时的方法
- 获取当前倒计时时间的方法
- 设置提醒功能的方法
4. 如果你是在电子设备上设计该秒表,你可以使用编程语言如Python,Java或C++来实现计时器类。
如果你是在网页上设计该秒表,你可以使用HTML、CSS和JavaScript来实现。
5. 根据你选择的平台和编程语言,创建一个用户界面来显示计时器的功能和当前倒计时时间。
比如,你可以在电子设备上使用命令行界面或者创建一个图形界面,你可以在网页上使用
HTML元素和JavaScript代码来设计用户界面。
6. 测试你的秒表功能是否正常工作。
你可以设置不同的倒计时时间和提醒功能,并检查秒表是否按预期运行。
《电子线路CAD》课程论文题目:倒计时计时器电路设计1 电路功能和性能指标采用计数器74LS192作为核心部分。
同时选择74LS48作为BCD码译码器来对7段数码显示管进行译码驱动,两个七段数码显示管进行显示。
采用555计时器制成的多谐振荡器,进行秒脉冲的输入。
因为我们需要对其进行暂停、清零、报警等控制,所以我们使用了两个开关来控制计数器的各功能的实现,从而实现各种功能.2 原理图设计2.1原理图元器件制作该元器件制作简单,从工具栏放置了三种基本结构并对格式稍作修改就完成了.2.2 原理图设计①新建一个项目,并保存为“倒计时计时器电路.PRJPCB”,然后新建一个原理图文件,保存为“倒计时计时器.SCHDOC”,绘图坏境已设置好.②原理图绘制如下图:③原理图编译⑴编译参数设置,如下图:⑵项目编译④项目元器件库的生成2.3 原理图报表①网络表的生成⑴元器件信息⑵电气连接②简易元器件清单报表生成2个报表文件,分别为“24秒倒计时电路.BOM”和“24秒倒计时电路. CSV”.3 PCB设计3.1元器件封装制作3.2 PCB设计①新建一个PCB文件②生成该项目封装库生成当前元器件封装库,截图如下:③目录结构3.3 PCB设计后处理①补滴泪操作采用默认设置补滴泪后PCB截图如下:②放置敷铜采用默认设置,敷铜后PCB截图如下:③生成PCB信息报表④生成网络状态报表4心得体会cad是现在景观和建筑界用的很多的一种绘图工具。
功能很强大,可以绘画出很多很复杂的图形,这对设计思想很新颖和大胆的设计师来说有很大的发挥空间,所以学习CAD是很重要的。
网上有很多CAD 的学习教程和练习,看过之后发现那些上传的视频都太快,都是以画图为例然后画出某某图,可是没有考虑到新学者对那些命令的认识度基本上是零。
CAD高手在视频上面噼里啪啦的画图,变化边说用什么命令,我第一次看这样的视频的时候是稀里糊涂的下来的,完后什么效果也没有,所以经过一段时间的学习后,对学习CAD有一些小心得,发表出来希望对新手有些帮助,文采不好希望大家见谅。
一.实验目的理解倒计时器工作原理,实现以中小规模集成电路设计计时器的方法,它是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
它是由时钟脉冲产生电路、计数电路、译码驱动及显示电路、报时电路及电源电路组成。
时钟脉冲采用555定时器构成多谐振荡电路产生,通过EDA软件Multisim10绘制了电子电路仿真原理图,并进行仿真,同时用万能板焊接制作了硬件实现电路。
二.系统原理框图图1系统原理框图一.1秒脉冲发生器:秒脉冲信号发生器需要产生一定精度和幅度的矩形波信号。
实现这样矩形波的方法很多,可以由非门和石英振荡器构成,可由单稳态电路构成,可以由施密特触发器构成,也可以由555点哭构成等。
不同的电路队矩形波频率的精度要求不同,由此可以选用不同电路结构的脉冲信号发生器。
本实验中由于脉冲信号作为计数器的计时脉冲,其精度直接影响计数器的精度,因此要求脉冲信号有比较高的精度。
一般情况下,要做出一个精度比较高的频率很低的振荡器有一定的难度工程上解决这一问题的办法就是先做一个频率比较高的矩形波震荡器,然后将其输出信号通过计数器进行多级分项,就可以得到频率比较低精度比较高的脉冲信号发生器,其精度取决于振荡器的精度和分级项数。
2.30秒减法计数器: 30秒减法计数器采用74LS192设计,74LS192是十进制同步加法|减法计数器,采用8421BCD码编码,具有直接清零异步置数功能。
3.控制电路按照系统的要求,电路应该完成以下4个功能;1)当操作直接清零按键时,要求计数器清零。
2)当启动按键闭合时,控制电路应封锁时钟信号CP(秒脉冲信号),同时计数器完成置数功能,显示器显示30秒字样。
当启动按键释放时,计数器开始减法计数。
3)当暂停连续开关处于暂停状态时,控制电路封锁计数脉冲,计数器停止计数,显示器显示原来的数,而且保持不变,当暂停连续开关处于连续状态时,计数器正常计数,另外,外部操作开关都应该采取消抖措施,以防止机械抖动造成电路工作不稳定。
课程设计--倒计时计时器的设计
倒计时计时器可以说是计时器应用非常广泛的一种开发模型,极大的方便了人们的工作和生活,本文详细描述如何通过技术手段设计出一个倒计时计时器。
首先是倒计时计时器的模型设计,首先应设计出一个定时器的容器,需要具有计算显示倒计时的能力;且支持多种不同时间单位的显示。
在容器内要加入pause/resume和reset按钮,以便在运行中可以调节运行速度、暂停运行以及重置计时器。
接着是倒计时计时器的编程,首先应考虑编程语言的选择,常见的开发语言包括
C/C++、Java、Python等,可根据应用需要适当地挑选一种合适的编程语言。
在编码中要尽量使程序具备高效率和稳定性,并保证计时器流畅地运行和动画显示;同时,要引入错误处理,以便在出现计时器错误时保证计时器能够自动恢复正常运行。
最后是计时器的UI设计,首先要考虑计时器的外观,应尽量以简洁的线条组成,容易引起使用者注意;另外,除了固有的功能按钮,可以考虑采用进度条形式展示倒计时的剩余时间,易于观看,以及引入皮肤机制,使计时器更加让人耳目一新。
以上是此次倒计时计时器的设计,通过模型设计、编程实现和UI设计,倒计时计时器便能高效得到实现,极大地方便了人们的生活。
倒计时定时器电路设计倒计时定时器电路是一种常见的电子设计,用于实现指定的时间倒数计时功能。
该电路可以广泛应用于各种需要定时操作的场景,如倒数计时器、定时器启动控制、设备关机等。
本文将介绍倒计时定时器电路的设计原理及实现方法。
倒计时定时器电路主要由以下几个部分组成:时钟发生器、计数器、译码器和显示器。
时钟发生器产生稳定的时钟信号,计数器用于记录经过的时钟周期数,译码器将计数器的输出转换为对应的数字信号,显示器将数字信号转换为可视的倒计时显示。
时钟发生器是倒计时定时器电路的核心组件之一、它负责产生稳定的时钟信号,并通过一个特定的频率来控制倒计时的时间精度。
时钟发生器一般采用定时集成电路(如555定时器)来实现,通过改变RC电路的电阻和电容值可以调整时钟信号的频率。
计数器是用于记录经过的时钟周期数的电子元件。
在倒计时定时器电路中,计数器以二进制方式计数,并根据时钟信号的输入递增或递减计数值。
计数器的位数决定了倒计时定时器电路的最大计时范围。
译码器是将计数器的输出转换为对应的数字信号的组件。
以BCD编码为例,译码器将4位二进制数字转换为对应的BCD码输出。
通过将译码器的输出连接至显示器,可以将数字信号转换为可视的倒计时显示。
显示器是倒计时定时器电路的输出设备,用于展示倒计时的时间。
常见的显示器包括数码管显示器(7段数码管、16段数码管等)和液晶显示屏。
通过控制译码器的输入信号,可以实现显示不同的数字。
1.确定倒计时的时间范围和精度要求,以及显示器的类型。
2.根据时间范围和精度要求选择时钟发生器的频率,计算出时钟信号的周期。
3.根据时钟信号的周期确定计数器的位数,确保计数器能够满足倒计时的范围。
4.根据计数器的位数选择合适的译码器,确保译码器能够正确解码计数器的输出。
5.连接时钟发生器、计数器、译码器和显示器,按照设计要求进行布线和电气连结。
6.编写控制程序,实现倒计时的逻辑控制。
7.进行仿真测试和调试,确保倒计时定时器电路的正常工作。
倒计时定时器电路设计1.时钟源:提供一个稳定的时钟信号作为基准。
可以使用晶体振荡器或其他稳定的时钟源。
2.频率分频器:可将时钟信号分频为更低的频率,使定时器可以设置更长的时间。
比如,使用一个12位频率分频器,可以将1Hz的时钟信号分频为1/4096Hz,即每4096秒产生一个脉冲。
3.总计数器:用于控制定时器的定时时间。
总计数器可以采用二进制计数器,其位数由分频器的位数决定。
比如,如果使用12位频率分频器,总计数器可以是一个12位的二进制计数器。
4.设定逻辑:用户可以通过设置开关或编程的方式设置定时时间。
设定逻辑会将用户设置的时间转换为二进制码,并将其加载到总计数器中。
5.使能逻辑:用于启动或停止定时器。
当用户设置完成后,使能逻辑会将时钟信号传递给总计数器,从而开始倒计时。
当倒计时时间到达时,使能逻辑会发出一个触发信号。
6.触发逻辑:用于处理触发信号。
触发逻辑可以根据需要控制其他电路或设备的启停。
比如,可以连接蜂鸣器使其发出声音,或控制电源开关以打开或关闭其他设备。
以上是倒计时定时器电路的基本组成部分。
在实际设计中,还需要考虑到一些其他因素,比如电源电压稳定性、电路的抗干扰能力等。
例如,如果需要设计一个倒计时1分钟的定时器电路,可以采用一个1Hz的时钟信号作为时钟源,使用一个6位的频率分频器将时钟信号分频为1/64Hz,然后使用一个6位的二进制计数器作为总计数器。
用户可以通过设置开关将60秒转换为二进制码,并加载到总计数器中,然后使能逻辑启动倒计时。
当倒计时时间到达时,触发逻辑会发出一个触发信号,控制其他电路或设备的启停。
总之,倒计时定时器电路是一种用于控制定时时间的电子电路,它可以广泛应用于各个领域。
通过合理的设计和调整,可以满足不同场景下的倒计时需求。
秒表/时钟计时器的设计一.功能要求秒表/始终计数器要求用六位LED数码显示时,分,秒,以24小时计时方式。
使用按键开关可实现时分调整,秒表/时钟功能转换,省电等功能。
二.方案论证为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。
由于静态显示需要数据锁存器等硬件,接口复杂一些。
考虑时钟显示只有六位,且系统没有其他复杂的处理任务,所以决定采用动态扫描法实现LED 的显示。
单片机采用8052,这样单片机可具有足够的空与硬件资源实现其他的扩展功能,如考虑到要用电池供电的话,则可采用LV系列单片机。
现今的计时器通常只能通过启/停按键实现断点计时的功能,即通过启/停按键来记录一段时间。
这种计时器查看的时间只能为计时结束时刻。
实际的应用中往往需要在不影响正常计时的基础上,能查看记录过程中的某些点的时间。
本课设即针对此问题,设计了一种能通过按键方式查看记录过程中任一时刻值的计时器。
这种计时器在查看中间值时不会影响整个记录过程,并且能把相应数据送入存储模块及显示模块,以便查看。
三.系统硬件电路的设计本系统采用AT89C52单片机作控制器,LED数码管,实现显示时、分、秒,以24小时计时方式。
为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。
由于静态显示法需要数据锁存器等硬件,结构较为复杂,考虑时钟显示只有六位,且系统没有其他复杂的处理任务,所以采用动态扫描法实现LED的显示。
单片机采用AT89C52系列,有足够的空余硬件资源实现其它的扩充功能。
秒表/时钟计时器的总体设计框图如图1所示。
图1 硬件系统的总体设计框架具体实现电路图1.1 Sheet1.Sch图1.2 S heet2.Sch图1.3 总的连接图系统主要实现如下功能:1.时钟功能对于时钟功能,需要在数码管上显示小时、分钟和秒钟,因此,可以在内部存储空间分别定义它们的显示缓存空间,来存放小时、分钟和秒钟的BCD码,各2个字节。
由于时钟是不能停止的,因此需要采用内部定时器自动计时,并使用定时器中断处理程序来定时进行时间数值的刷新。
摘要本设计主要由秒脉冲电路、分频器、可预置数减数器、显示译码器、七段数码管和执行电路组成,能实现定时计数显示、倒计时控制外围电路,从而达到智能化控制。
该电路在计数到设置时间时,继电器开始工作,从而实现控制外围电路的功能。
其中时钟信号是由多谐振荡器产生的1Hz秒脉冲信号,而且秒脉冲信号可以通过分频器产生出1/60Hz的分脉冲信号,然后通过开关选择秒脉冲或分脉冲信号通过开关选择输入电路,对倒计时计数器进行触发,计数器由置数开关输入的预置数开始进行计数,其中数字由译码数码管显示,直到倒计时末了,产生信号使继电器工作,从而通过控制开关控制受控电器的开或关。
所以,此设计相当于构造了一个电器的控制开关,能够灵活定时电器的工作时间,从而使电器的开关更加方便。
关键词倒计时;定时器;显示器第1章绪论倒计时计数器的用途很广泛。
它可以用作定时,控制被定时电器的工作状态,实现定时开或者定时关。
在加上运用显示电路将倒计时的时间显示出来,从而更让人觉得这是个比较方便的控制加定时开关。
在日常生活中,我们经常碰到一些需要定时的事情,不仅在医学设备、在交通方面、比赛场合等,而且在一些数字化、智能化设备上倒计时定时器得到了很好的应用。
例如印相或放大照片,需要定在零点几秒的时间,洗衣机洗涤衣物需要定在几分钟到十几分种的时间,电风扇需要定在数十分钟的时间。
完成这种定时的定时器有多种多样,在家用电器中采用的机械定时器就是根据一般上弦钟表原理设计的,这种定时器虽然结构简单,成本低,维修也比较方便,但是它的触头频繁接触和断开,大大的缩短了它的使用寿命,也不利于进一步全自动化。
在电子技术突飞猛进的今天,电子定时器也慢慢的多了,有采用模拟量的定时、有采用单片机定时的、有采用数字电路定时的等等。
综上所述,不管是采用机械定时还是采用电子定时,无可厚非它们都是一种定时装置,都是服务于社会的,他的到来给人们带来了许许多多的方便。
而且对于现在的人来说也是越来越离不开它的,因为人们所最求的是一种智能化的方便。
秒计时器设计报告 Prepared on 22 November 2020课程设计报告题目 30S定时器设计院部名称班级学生姓名学号指导教师目录44前言电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。
在许多领域中计时器均得到普遍应用,诸如在体育比赛,定时报警器、游戏中的倒时器,交通信号灯、红绿灯、行人灯、交通纤毫控制机、还可以用来做时间提醒设备等等,由此可见计时器在现代社会是何其重要的。
本设计主要能完成:显示30秒倒计时功能;系统设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能;在直接清零时,数码管显示器全部显示为“0”;计时器为30秒递减计时其计时间隔为秒;计时器递减计时到零时,数码显示器不灭灯,同时发光二极管LED点亮,停止减计数等。
整个电路的设计借助于Multisim 仿真软件和数字逻辑电路相关理论知识,并在Multisim 下设计和进行仿真,得到了预期的结果。
一、电路设计原理与设计方案设计原理我们可以用555时基电路构成的多谐振荡器来产生频率为10Hz的脉冲,即输出周期为秒的方波脉冲,将该方波脉冲信号送到计数器74LS192的CP减计数脉冲端,再通过译码器74LS48把输入的8421BCD码经过内部作和电路“翻译”成七段(a,b,c,d,e,f,g)输出,显示十进制数,然后在适当的位置设置开关或控制电路即可实现计数器的直接清零,启动和暂停/连续、译码显示电路的显示与灭灯及光电报警等功能。
设计方案该系统应包括秒脉冲发生器、计数器、译码显示电路、辅助时序控制电路(简称控制电路)等几部分构成。
其中,计数器和控制电路是系统的主要部分。
计数器完成30s计时功能,而控制电路具有直接控制计数器的启动计数、暂停、连续计数、译码显示电路的显示和灭灯功能以及工作时间的调节。
为了满足系统的设计要求,在设计控制电路时,应正确处理各个信号之间的时序关系。
第一章绪论1.1系统背景◆ 1.1.1单片机的介绍单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。
一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!◆ 1.1.2单片机的应用目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域1.2多功能家用定时器◆ 1.2.1多功能家用定时器的概述人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。
1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。
它利用机械钟带动开关来控制煤气阀门。
定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多,家用电器都安装了定时器来控制开关或工作时间。
◆ 1.2.2多功能家用定时器的功能与实现步骤1.能够调整数字钟、定时开启、关闭时间的显示当时间分别显示小时、分钟状态时,按11键,实现将当前显示的小时或分钟减1;按12键时,实现将当前显示的小时或分钟加1。
2.能过实现三路定时通过按10键来选择显示的时间。
从而实现三路定时的开启与关闭,实现三路定时功能。
3.既能够实现按键输值,也可用加减键来对其调时当在小时状态时,不管是在数字钟还是定时状态,都可以通过按键来对其调时,同时此时如果觉得时间按错还可以通过加减键进行调整时间。
4.能够时间倒计时的秒表功能当一开始接通是,显示的是60秒倒计时功能,这一功能有助于对准确时间更好的把握。
5.能够显示今天心情当在时钟状态时,按加减键,可显示出今天心情。
如果按减号键时,显示sad,并且LED灯全灭;如果按加号键时,显示fine,并且灯全亮。
第二章系统电路设计2.1 系统总体设计框架结构总体结构图如下:图2.1总体结构图按键输入电路:对定时器输入定时时间、时钟时间,并对其调整。
时钟电路:给单片机一个时钟信号,让其工作。
复位电路:使单片机为初始状态,并从初态开始工作。
LED显示电路:表明定时器的工作状态。
数码管显示电路:显示数字钟时间或定时时间或心情。
继电器电路:是用较小的电流去控制较大电流的一种“自动开关”。
2.2 系统硬件单元电路设计2.2.1 时钟电路设计时钟电路对单片机是不可缺的,单片机的每个功能都要以时钟电路为基础工作。
单片机内部自带一个时钟电路,外部接入定时控制元件即可构成一个稳定的自激振荡器。
其中机器周期共有12个振荡脉冲周期,因此,机器周期是时钟周期的12倍。
本实验中时钟电路中使用的晶体是12MHz,则时钟周期为(1/12)us,机器周期为1us。
实验图如下:时钟电路图:图2.2时钟电路图◆ 2.2.2 复位电路设计复位操作有上电自动复位、按键电平复位和外部脉冲复位三钟方式,本次实验用的是按键电平复位,利用电容的充放电公式来选择所需的电容、电阻,能保证复位信号高电平持续时间大于2个机器周期。
电路图如下:复位电路图:图2.2按键电平复位◆ 2.2.3按键电路设计本课题要用数码管显示数字钟、定时时间。
这就需要键盘来设定,键盘可以分为独立连接式和矩阵式。
本实验用的是矩阵式。
为了减少所以的I/O口,利用三——八译码器来实现12个键盘的连接。
对于这种矩阵式的键盘连接,扫描时依次将行线置为低电平,即在置某根行线为低电平时,其它都线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
注意在按键时一定要调延时子程序来消除抖动。
矩阵式键盘如下所示:按键电路图:1231145612789图2.3按键电路◆ 2.2.4 LED显示电路设计本次实验中要用发光二极管显示状态。
由下图知发光二极管阴极以经接地,当其阳极为高电平时,二极管就发光显示所处状态。
LED显示电路图:图2.4 LED显示电路图◆ 2.2.5 数码管显示电路设计实验中所用的数码管为共阴极数码管,当给其引脚加入高电平时,数码管中对应的那一段就亮。
图2.6为外部显示图,其内部结构如下:图2.5共阴极数码管内部结构图2.6共阴极数码管显示2.2.6 继电器电路设计继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等作用。
图2.7继电器电路2.3系统硬件总电路总电路图由时钟电路、复位电路、继电器电路、键盘电路、LED 显示电路、数码管显示电路组成来实现定时功能。
其中四个数码管为共阴极的数码管。
74LS138为3—8译码器,74LS07为输出缓冲器,74LS00为与非门,7805为三端稳压器,电容的作用基本都是滤波来减少噪声对实验的影响。
电路图如下:图2.8总电路图第三章 系统软件设计3.1 系统软件流程图3.1.1主程序流程图主程序在执行时,通过单片机内部中断对程序不断的扫描判断、刷新显示,当有键按下时,将数字钟中的时间与定时时间相比较,然后根据比较程序显示状态,并且还要延时消除抖动,之后进行按键处理,从而显示不同的状态,如此周期循环。
3.1.2子程序流程图1.延时子程序流程图此延时子程序在实验中被主程序调用,当有按键按下时,调用此程序可以达到消除振动的作用,避免发光二极管一直闪烁,此程序延时时间不能太短,要不然不能很好的起到消振作用,也不能够太长,避免按键很长时间后才反应。
并且因为此程序用C语言编程,延时时间没有汇编语言精准。
2.比较子程序流程图此程序通过将定时时间不断与数字钟时间相比较来表明定时器是否开启。
当LED7亮的时候表明定时开启;当LED7灭的时候表明定时关闭。
3.刷新缓冲子程序流程图此程序为刷新缓冲区流程图,其中F为状态量,当F为不同的值时,数码管显示不同的状态,同时此程序不断的刷新来显示此状态下的数码管显示的值。
4.按键处理子程序流程图此为按键处理子程序流程图,主程序在不停的扫描中,每当有按键按下时,就会根据状态量STATE的值跳转到此程序进行处理,此程序中还包含显示时所需的状态量的定义和加减键及键值的输入,按不同的键实现不同的功能。
5.LED显示子程序流程图此为LED显示子程序流程图,显示当STATE这个状态量为不同的值时,表明不同的状态,而这种状态通过不同的的发光二极管显示出来。
这对于判断实验的正确性提供了不可缺少的帮助。
6.数码管显示子程序流程图此为数码管显示的流程图,此程序与刷新缓冲区流程图相似,都与状态量F 相关。
不同的的F值显示不同的状态所对应的数值。
3.1.3中断程序流程图1.T0中断程序流程图此图为T0中断程序流程图,用于计数器的计时,一直执行中。
当60秒到时,分加1,秒单元清零,当60分到时,时家1,分单元清零。
24时到时,时单元清零。
2. T1中断程序流程图此为T1中断流程图,用于键值判断和中断扫描,它一直保持着扫描按键判断是否有键按下,然后让按键处理子程序能准确的进行执行。
3.2 系统程序设计3.2.1系统主程序V oid main (void){P1=0x00;EA=1; //CPU允许中断TMOD |=0x01;//定时器0计时50ms in 12M crystal 定时器T0选择方式0工作其前七位没影响,开始是什么还是什么,最后一位变成0=方式0TH0=0x3C;TL0=0xB0; //初值0011 1100 1011 0000 65535-15536=49999 50msET0=1; TR0=1; //开启T0TMOD |=0x10; //定时器1用于动态扫描T1TH1=0xFa; //初值65535-64240=1295 0.13msTL1=0xF0;ET1=1; TR1=1; //开启T1while (1){ RefreshTab ();LED_Display();if(!L1||!L0){ compare();Delay(200);Key_Process();} //只要有键按下,就} 比较时间,延时后进行按键处理。
}◆ 3.2.2定时中断子程序/* 定时器0用于数字钟的计时*/ V oid Timer0(void) interrupt 1{TH0=0x3C; TL0=0xB0; count++;//重新赋值50ms溢出if(count==10) LED1=~LED1; //LED1半秒亮if (count==20) { count=0;second++; //秒加1 20*50=1Sif(second==60){ second=0;minute++; //分加1if(minute==60) {minute=0;hour++; //时加1if(hour==24){ hour=0; } //小时到24时,清零}}}}/* 定时器1中断扫描显示+键值判断*/V oid Timer1 (void) interrupt 3{TH1=0xFa; TL1=0xF0; 定时2ms显示下一个数码管Switch (num){ Case 0: P2=0x0f; if (!L1)Keyno=1; if(!L0)Keyno=10; SEG_Display();break;//当num为0时,选择Y0,当按下L1时,键值时1;当按下L0时,键值是10,显示case 1: P2=0x1f; if(!L1)Keyno=4;if(!L0)Keyno=7; SEG_Display();break;//当num为0时,选择Y1,当按下L1时,键值时4;当按下L0时,键值是7,显示case 2: P2=0x2f;if(!L1)Keyno=3;if(!L0)Keyno=12;SEG_Display();break;//当num为0时,选择Y2,当按下L1时,键值时3;当按下L0时,键值是12,显示case 3: P2=0x3f;if(!L1)Keyno=5;if(!L0)Keyno=8;SEG_Display();break;//当num为0时,选择Y3,当按下L1时,键值时5;当按下L0时,键值是8,显示case 4: P2=0x4f;if(!L1)Keyno=2;if(!L0)Keyno=11;SEG_Display();break;//当num为0时,选择Y4,当按下L1时,键值时2;当按下L0时,键值是11,显示case 5: P2=0x5f;if(!L1)Keyno=6;if(!L0)Keyno=9;SEG_Display();break;//当num为0时,选择Y5,当按下L1时,键值时6;当按下L0时,键值是9,显示Default: break;}Num++;if(num==6)num=0;//当num为6时清零}◆ 3.2.3时间比较子程序V oid compare (void){if(sg[0]==sg[4]&&sg[1]==sg[5]&&sg[2]==sg[6]&&sg[3]==sg[7]&&flog==1) LED7=1;//当数字钟时间与一路定时的开启时间相同时,LED7亮if(sg[0]==sg[8]&&sg[1]==sg[9]&&sg[2]==sg[10]&&sg[3]==sg[11]&&flog==1) LED7=0;//当数字钟时间与一路定时的关闭时间相同时,LED7灭if(sg[0]==sg[12]&&sg[1]==sg[13]&&sg[2]==sg[14]&&sg[3]==sg[15]&&flog==1) LED7=1;//当数字钟时间与二路定时的开启时间相同时,LED7亮if(sg[0]==sg[16]&&sg[1]==sg[17]&&sg[2]==sg[18]&&sg[3]==sg[19]&&flog==1) LED7=0;//当数字钟时间与二路定时的关闭时间相同时,LED7灭if(sg[0]==sg[20]&&sg[1]==sg[21]&&sg[2]==sg[22]&&sg[3]==sg[23]&&flog==1) LED7=1;//当数字钟时间与三路定时的开启时间相同时,LED7亮if(sg[0]==sg[24]&&sg[1]==sg[25]&&sg[2]==sg[26]&&sg[3]==sg[27]&&flog==1) LED7=0;//当数字钟时间与三路定时的关闭时间相同时,LED7灭}◆ 3.2.4延时子程序void Delay( uint x) //自定义延时约0.1ms ,大约为120*x{Uint t;while (--x)for (t=0;t<120;t++);}◆ 3.2.5刷新缓冲区子程序void RefreshTab (void){ if(F==-2) {XQ[0]=Tab[kx[0]]; XQ[1]=Tab[kx[1]]; XQ[2]=Tab[kx[2]]; XQ[3]=Tab[kx[3]];}//当F=-2时,数码管刷新显示今天心情if(F==-1) {MB[0]=Tab[second/10]; MB[1]=Tab[second%10];}//当F=-1时,数码管刷新显示倒计时的秒表if(F==0) {TimeTab[0]=Tab[sg[0]];TimeTab[1]=Tab[sg[1]];TimeTab [2] =Tab[sg[2]]; TimeTab[3]=Tab[sg[3]];}//当F=0时,数码管刷新显示数字钟时间if(F==1) {STab[0]=Tab[sg[4]]; STab[1]=Tab[sg[5]];STab[2]=Tab[sg[6]];STab[3]=Tab[sg[7]];} //当F=1时,数码管刷新显示一路定时开启时间if(F==2) {FTab[0]=Tab[sg[8]]; FTab[1]=Tab[sg[9]];FTab[2]=Tab[sg[10]];FTab[3]=Tab[sg[11]];} //当F=2时,数码管刷新显示一路定时关闭时间if(F==3){STab1[0]=Tab[sg[12]];STab1[1]=Tab[sg[13]];STab1[2]=Tab[sg[14]];STab1[3]=Tab[sg[15]];}//当F=3时,数码管刷新显示二路定时开启时间if(F==4) {FTab1[0]=Tab[sg[16]]; FTab1[1]=Tab[sg[17]];FTab1[2]=Tab[sg[18]];FTab1[3]=Tab[sg[19]];}//当F=4时,数码管刷新显示二路定时关闭时间if(F==5) {STab2[0]=Tab[sg[20]]; STab2[1]=Tab[sg[21]];STab2[2]=Tab[sg[22]];STab2[3]=Tab[sg[23]];}//当F=5时,数码管刷新显示三路定时开启时间if(F==6) {FTab2[0]=Tab[sg[24]]; FTab2[1]=Tab[sg[25]];FTab2[2]=Tab[sg[26]];FTab2[3]=Tab[sg[27]];}//当F=6时,数码管刷新显示三路定时关闭时间}3.2.6按键处理子程序void Key_Process(void)//根据不同状态量STA TE的值,在不同的状态按不同的键实现不同的功能,能够按键输值时刻别忘时间显示的范围{ switch (STATE){case 0:if(Keyno==11){kx[0]=5;kx[1]=10;kx[2]=11;kx[3]=15;h=0;}if(Keyno==12){kx[0]=12;kx[1]=1;kx[2]=13;kx[3]=14;h=1;} //心情状态if(Keyno==10){STATE=2;F=0;} break;case 2: if(Keyno<10){sg[n]=Keyno;n++;if(sg[0]>2||(sg[0]==2&&sg[1]>4))sg[0]=sg[1]=0;if(sg[2]>5)sg[2]=sg[3]=0;if(n>3)n=4;} //用可以改变按键计数器初值if(Keyno==11){sg[1]=sg[1]+1;if(sg[0]==2&&sg[1]==4)sg[0]=sg[1]=0;}//加1键if(Keyno==12){sg[1]=sg[1]-1;if(sg[0]!=0&&sg[1]==-1){sg[0]=sg[0]-1;sg[1]=9;}if(sg[0]==0&&sg[1]==-1){sg[0]=2;sg[1]=3;}}//减1键,时间设定范围if(Keyno==10){STATE=3;} break; //case3:if(Keyno==11){sg[3]=sg[3]+1;if(sg[3]>9){sg[2]=sg[2]+1;sg[3]=0;}if(sg[2]==6) sg[2]=sg[3]0;} //加1键if(Keyno==12){sg[3]=sg[3]-1;if(sg[2]!=0&&sg[3]==-1){sg[2]=sg[2]-1;sg[3]=9;}if(sg[2]==0&&sg[3]==-1){sg[2]=5;sg[3]=9;}} //减1键if(Keyno==10){STA TE=4;F=1;} break;case 4: if(Keyno<10){sg[n]=Keyno;n++; if((sg[4]==2&&sg[5]>4))sg[4]=sg[5]=0;if(sg[6]>5)sg[6]=sg[7]=0;if(n>7)n=8;}if(Keyno==11){sg[5]=sg[5]+1;if(sg[5]==6)sg[4]=sg[5]=0;}if(Keyno==12){sg[5]=sg[5]-1;if(sg[4]!=0&&sg[5]==-1){sg[4]=sg[4]-1;sg[5]=9;}if(sg[4]==0&&sg[5]==-1){sg[4]=2;sg[5]=3;}}if(Keyno==10){STA TE=5;} flog=0; break;case5:if(Keyno==11){sg[7]=sg[7]+1;if(sg[7]>9){sg[6]=sg[6]+1;sg[7]=0;}if(sg[6]==6)sg[6]=sg[7]=0;}if(Keyno==12){sg[7]=sg[7]-1;if(sg[6]!=0&&sg[7]==-1){sg[6]=sg[6]-1;sg[7]=9;}if(sg[6]==0&&sg[7]==-1){sg[6]=5;sg[7]=9;}}if(Keyno==10){flog=1;STATE=6;F=2;} break; //case 6: if(Keyno==10){STA TE=7;}if(Keyno<10){sg[n]=Keyno;n++; if((sg[8]==2&&sg[8]>4))sg[8]=sg[9]=0;if(sg[10]>5)sg[10]=sg[11]=0;if(n>11)n=12;}if(Keyno==11){sg[9]=sg[9]+1;if(sg[5]==6)sg[8]=sg[9]=0;}if(Keyno==12){sg[9]=sg[9]-1;if(sg[8]!=0&&sg[9]==-1){sg[8]=sg[8]-1;sg[9]=9;}if(sg[8]==0&&sg[8]==-1){sg[8]=2;sg[9]=3;}} flog=0; break;case7:if(Keyno==11){sg[11]=sg[11]+1;if(sg[11]>9){sg[10]=sg[10]+1;sg[11]=0;}if(sg[10]==6) sg[10]=sg[11]=0;}if(Keyno==12){sg[11]=sg[11]-1; if(sg[10]!=0&&sg[11]==-1){sg[10]=sg[10]-1;sg[11]=9;} if(sg[10]==0&&sg[11]==-1){sg[10]=5;sg[11]=9;}}if(Keyno==10){flog=1;STATE=8;F=3;} break;case 8: if(Keyno<10){sg[n]=Keyno;n++;if(sg[12]>2||(sg[12]==2&&sg[13]>4))sg[12]=sg[13]=0;if(sg[14]>5)sg[14]=sg[15]=0;if(n>15)n=16;} //用可以改变按键计数器初if(Keyno==11){sg[13]=sg[13]+1;if(sg[12]==2&&sg[13]==4)sg[12]=sg[13]=0;}if(Keyno==12){sg[13]=sg[13]-1;if(sg[12]!=0&&sg[13]==-1){sg[12]=sg[12]-1;sg[13]=9;}if(sg[12]==0&&sg[12]==-1){sg[12]=2;sg[13]=3;}} if(Keyno==10){STATE=9;} flog=0; break; //case9: if(Keyno==11){sg[15]=sg[15]+1;if(sg[15]>9){sg[14]=sg[14]+1;sg[15]=0;}if(sg[14]==6)sg[14]=sg[15]=0;}if(Keyno==12){sg[15]=sg[15]-1; if(sg[14]!=0&&sg[15]==-1){sg[14]=sg[14]-1;sg[15]=9;} if(sg[14]==0&&sg[15]==-1){sg[14]=5;sg[15]=9;}}if(Keyno==10){flog=1;STATE=10;F=4;} break;case 10: if(Keyno<10){sg[n]=Keyno;n++;if(sg[16]>2||(sg[16]==2&&sg[17]>4))sg[16]=sg[17]=0;if(sg[18]>5)sg[18]=sg[19]=0;if(n>19)n=20;} //用可以改变按键计数if(Keyno==11){sg[17]=sg[17]+1;if(sg[16]==2&&sg[17]==4)sg[16]=sg[17]=0;}.if(Keyno==12) {sg[17]=sg[17]-1;if(sg[16]!=0&&sg[17]==-1){sg[16]=sg[16]-1;sg[17]=9;} if(sg[16]==0&&sg[17]==-1){sg[16]=2;sg[17]=3;}} if(Keyno==10){STATE=11;} flog=0; break;//case11:if(Keyno==11){sg[19]=sg[19]+1;if(sg[19]>9){sg[18]=sg[18]+1;sg[19]=0;}if(sg[18]==6)sg[18]=sg[19]=0;}if(Keyno==12){sg[19]=sg[19]-1;if(sg[18]!=0&&sg[18]==-1){sg[18]=sg[18]-1;sg[19]=9;}if(sg[18]==0&&sg[19]==-1){sg[18]=5;sg[19]=9;}}if(Keyno==10){flog=1;STATE=12;F=5;} break;case 12:if(Keyno<10){sg[n]=Keyno;n++;if(sg[20]>2||(sg[10]==2&&sg[21]>4))sg[20]=sg[21]=0; if(sg[22]>5)sg[22]=sg[23]=0;if(n>23)n=24;}if(Keyno==11){sg[21]=sg[21]+1;if(sg[20]==2&&sg[21]==4)sg[20]=sg[21]=0;} if(Keyno==12){sg[21]=sg[21]-1;if(sg[20]!=0&&sg[21]==-1){sg[20]=sg[20]-1;sg[21]=9;} if(sg[20]==0&&sg[21]==-1){sg[20]=2;sg[21]=3;}} if(Keyno==10){STATE=13;} flog=0; break;//case13:if(Keyno==11){sg[23]=sg[23]+1;if(sg[23]>9){sg[22]=sg[22]+1;sg[23]=0;}if(sg[22]==6)sg[22]=sg[23]=0;}if(Keyno==12){sg[23]=sg[23]-1;if(sg[22]==0&&sg[23]==-1){sg[22]=5;sg[23]=9;}if(sg[23]!=0&&sg[24]==-1){sg[23]=sg[23]-1;sg[24]=9;}} if(Keyno==10){flog=1;STATE=14;F=6;} break;case 14: if(Keyno<10){sg[n]=Keyno;n++; if((sg[24]==2&&sg[25]>4))sg[24]=sg[25]=0;if(sg[26]>5)sg[26]=sg[27]=0;if(n>27)n=0;}if(Keyno==11){sg[25]=sg[25]+1;if(sg[25]==6)sg[24]=sg[25]=0;}if(Keyno==12){sg[25]=sg[25]-1;if(sg[24]!=0&&sg[25]==-1){sg[24]=sg[24]-1;sg[25]=9;} if(sg[24]==0&&sg[25]==-1){sg[24]=2;sg[25]=3;}} if(Keyno==10){STATE=15;} flog=0; break;case15:if(Keyno==11){sg[27]=sg[27]+1;if(sg[27]>9){sg[27]=sg[27]+1;sg[28]=0;}if(sg[26]==6)sg[26]=sg[27]=0;}if(Keyno==12){sg[27]=sg[27]-1;if(sg[26]==0&&sg[27]==-1){sg[26]=5;sg[27]=9;}if(sg[26]!=0&&sg[27]==-1){sg[26]=sg[26]-1;sg[27]=9;}} if(Keyno==10){flog=1;STATE=2;F=0;} break; //default: break;}}◆ 3.2.7数码管显示子程序V oid SEG_Display(void)//根据不同的F值,数码管来显示不同是时间{ if(F==-2) P0=XQ[num];if(F==-1) P0=MB[num];if(F==0) P0=TimeTab[num];//分别显示的是心情、秒表、数字钟if(F==1) P0=STab[num]; if(F==2) P0=FTab[num]; if(F==3) P0=STab1[num];//分别显示的是一路定时开启、关闭,二路定时开启时间if(F==4) P0=FTab1[num];if(F==5) P0=STab2[num];if(F==6) P0=FTab2[num];//分别显示的是二路关闭,三路开启、关闭时间}◆ 3.2.8 LED显示子程序V oid LED_Display (void){ switch(STATE){ case 0:if(h==0){LED3=0;LED6=0;LED7=0;}//心情不好时,灯全灭if(h==1) {LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;} break;//心情好时灯全部亮case 2:LED2=1; LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;break;//数字钟的时钟状态case 3:LED2=0;LED3=1;break; case 4:LED2=1;LED3=0;LED4=1;break;//数字钟的分钟状态、一路定时开启的的时钟状态case 5:LED2=0;LED3=1;break; case 6:LED2=1;LED3=0;break;//一路定时开启的的分钟状态、一路定时关闭的时钟状态case 7:LED2=0;LED3=1;break; case 8:LED2=1;LED3=0;LED4=0;LED5=1;break;//二路路定时关闭的的分钟状态、二路定时开启的时钟状态case 9:LED2=0;LED3=1;break; case 10:LED2=1;LED3=0;LED4=0;break;//二路定时开启的的分钟状态、二路定时关闭的时钟状态case 11:LED2=0;LED3=1;break; case 12:LED2=1;LED3=0;LED5=0;LED6=1;break;//二路定时关闭的的分钟状态、三路路定时开启的时钟状态case 13:LED2=0;LED3=1;break; case 14:LED2=1;LED3=0;LED5=0;break;//三路定时开启的的分钟状态、三路定时关闭的时钟状态case 15:LED2=0;LED3=1;break; default: break;//三路定时关闭的的分钟状态}}第四章实验结果和分析4.1实验使用的仪器设备与元件◆ 4.1.1实验使用的仪器设备焊烙铁、能够给单片机烧入程序的电脑、电源4.1.2实验使用的元件如图所示4.2测试结果分析这次实验中,在自己没编写程序前,用同学给的基本程序,输入+5V后,检查电路板的焊接问题和数码管的好坏,接好后发现电路板是好的,首先显示秒表的发光二极管能够一直闪亮;其次就是显示电路通电标志是二极管也能够正常发亮;再就是数码管能够完整的显示,调加减键时,所有的数码管都能够显示正确的数据,这说明数码管是好的,焊接也问题。