电子定时器设计

合集下载

定时器的设计实验报告

定时器的设计实验报告

定时器的设计实验报告1. 引言定时器是一种常见的计时装置,广泛应用于各个领域,如电子设备、工业自动化、交通运输等。

本实验通过设计一个基于脉冲计数的定时器电路,旨在研究其工作原理,探索其在实际应用中的可行性和性能表现。

2. 原理及设计2.1 工作原理脉冲计数定时器是一种通过计数器累加输入脉冲信号的数量来实现计时的装置。

其基本原理是利用脉冲信号的频率和计数器的计数速度之间的关系,通过计数器的累加值计算时间间隔。

2.2 设计步骤1. 确定定时器的时间基准。

时间基准可以选择外部脉冲输入或者由稳定的晶振产生。

2. 设计计数器的位数。

根据计时的范围确定计数器的位数,以保证计数范围的覆盖。

3. 计算计数器的计数速度。

根据计时的最大时间间隔和计数器的位数,计算所需的输入脉冲频率。

4. 根据计数器的位数和计数速度,选择合适的计数器芯片。

5. 配置计数器芯片的工作模式和输入脉冲的触发方式。

6. 连接电路并验证设计是否符合要求。

2.3 接线图_______________input > Counter > output________ Display_________3. 实验结果及分析3.1 实验设置- 输入脉冲频率:1kHz- 计数器位数:4位- 计数器芯片:74HC163- 时间基准:晶振(频率为10MHz)3.2 实验结果在实验过程中,我们通过将输入脉冲接到74HC163计数器芯片的CP 输入端,将74HC163的输出接到数码显示器,观察并记录实时的计数结果。

在实验进行中,我们发现计数器芯片的最大计数范围是15(4位二进制),对应的时间间隔为15ms(1kHz输入脉冲时)。

3.3 实验分析通过实验结果可以看出,该定时器电路能够准确计时,实际测量的时间结果与理论计算非常接近。

由于74HC163计数器芯片的高稳定性和高精度,使得定时器的性能表现较好。

然而,该设计存在一个缺点,即计数器位数的限制。

由于计数器位数的限制,导致定时的最大时间间隔受到了限制。

倒计时定时器电路设计

倒计时定时器电路设计

倒计时定时器电路设计倒计时定时器电路是一个常用的电子电路,在各种应用场景中被广泛使用。

例如,在厨房,我们可以使用倒计时定时器电路来实现烹饪定时;在赛车场上,我们可以使用倒计时定时器电路来准确计时比赛时间等等。

下面是一个关于倒计时定时器电路设计的详细说明:首先,我们需要确定时间范围。

根据实际需求,我们可以选择不同的计时范围,如分钟、小时、天等。

不同的时间范围对应着不同的计数器位数,即需要不同数量的计数器。

例如,如果我们需要设计一个分钟级别的倒计时定时器,那么我们需要使用至少6位的计数器,以便表示60分钟。

其次,我们需要确定时间单位。

在设计倒计时定时器电路时,我们需要确定最小的时间单位,即每次计数的时间间隔。

常见的时间间隔有秒、分、时等。

根据实际需求选择最小时间单位。

然后,我们需要选择适当的计数器和显示单元。

计数器是用来计数的关键元件,可以通过不同的计数器实现不同范围和位数的倒计时。

常见的计数器有二进制加法计数器(如74LS191)、二进制表计数器(如74LS193)等。

显示单元可以是数码管,也可以是液晶显示屏等。

接下来,我们需要设计时钟信号源。

时钟信号源可以是晶振电路,也可以是晶振模块,甚至我们可以利用其他电路的时钟来作为时钟信号源。

设计时钟信号源时,需要确定时钟频率,即每秒或每分钟的脉冲数。

根据时钟频率和时间单位选择相应的频率分频电路,以便生成具有所需时间间隔的时钟信号源。

最后,我们需要设计控制逻辑。

控制逻辑用于控制计数器,根据时钟信号源的脉冲将计数器递减。

当计数器减至0时,需要触发警报或其他操作。

控制逻辑可以使用逻辑门、可编程逻辑器件等来实现。

在设计倒计时定时器电路时,还需要考虑一些额外的功能,如暂停、重置、显示等。

这些功能可以通过增加额外的开关、按钮、显示芯片等元件来实现。

总结起来,倒计时定时器电路设计的关键是确定时间范围、时间单位、计数器和显示单元的选择,设计适当的时钟信号源和控制逻辑。

在设计过程中,需要充分考虑实际需求和制约条件,并结合相应的电子元件来实现倒计时定时器电路。

智能定时器毕业设计

智能定时器毕业设计

毕业设计(论文)课题名称:基于51单片机的智能定时控制器系统设计指导教师:系别:电子信息系专业:应用电子技术班级:10电子(2)班姓名:毕业设计(论文)任务书课题名称基于51单片机的智能定时控制器系统设计课题性质工程应用专业应用电子技术班级10电子(2)班学生姓名学号指导教师教研室主任系部主任发放日期一、课题条件:随着电子工业的发展,数字电子技术已经深入到了人们生活的各个层面,各种各样的电子产品也正在日新月异地向着高精尖技术发展。

数字电子时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

二、毕业论文(设计)主要内容:1、时间显示:用4位数码管显示当前小时和分钟,秒功能用两LED灯代替(每秒闪烁一次)。

2、可手动设定时间。

3、开机流程:系统有红色和蓝色指示灯,上电10S内,每秒红色指示灯闪烁一次,并伴有蜂鸣声,作为开机/重启提醒,此时绿色指示灯灭。

10S后红色指示灯灭,若光线较强则绿色指示灯亮,若光线较弱则绿色指示灯亮度减半进入节能模式。

3、具有整点报时功能(四短一长),可自行设定报时时间段;三、计划进度:1. 资料的收集撰写开题报告6月20日至9月8日2. 方案设计9月9日至9月15日3. 电路的设计指标分析与确定;后期的电路优化元器件的选择与参数确定9月16日至11月2日4. 毕业设计论文的修改、完善11月3日至11月10日5. 毕业设计答辩11月15 日至11月20日四、主要参考文献:a) 康光华主编.电子技术基础.北京:高等教育出版社,1999.6b) b)何宏主编.单片机原理与接口技术.北京:国防工业出版社.2006.07c) c)杨西明,朱骐主编.单片机编程与应用入门.北京:机械工业出版社.2004.06d) d)先锋工作室编著.单片机程序设计实例.北京:清华大学出版社.2003.01指导教师(系)教研室主任年月日年月日摘要本次设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个简易的电子时钟,它由5V直流电源供电。

定时器控制电路的设计实验报告

定时器控制电路的设计实验报告

定时器控制电路的设计实验报告
本实验的目的是设计一个定时器控制电路,通过将定时器输出与另一个设备连接,以实现定时控制开关等功能。

一、实验原理
定时器电路主要由计时器、比较器和触发器构成。

计时器是根据输入的时钟脉冲来计数的,当达到设定的计数值时,触发比较器产生输出信号,控制输出电路的开关状态。

在本实验中,我们将使用555定时器来实现定时功能,由于555定时器内部电路复杂,本报告不对其具体原理进行详细的介绍。

为了方便设计,我们可以使用NE555单片集成电路来实现。

NE555包括一个内部电压比较器、一个RS触发器和一个放大器,可以直接应用于各种定时器和脉冲发生器电路的设计。

二、实验步骤
1. 检查所需器件是否齐备,包括NE555、电解电容、电阻、导线等。

2. 按照电路图依次连接电路,注意连接的正确性和电路的稳定性。

3. 根据你的需求选择合适的电容和电阻的数值来设定所需的时间长度。

4. 连接计时器的输出端和另一个设备的控制端,例如电机、灯等设备。

5. 打开电源,等待定时结束,观察设备的开关状态,验证电路的正常工作。

三、实验结果
经过实验,我们成功地设计了一个定时器控制电路,并将其输出端与LED灯相连。

在设定的时间结束后,LED灯会自动开启或关闭,验证了电路的正常工作。

四、实验总结
本次实验主要介绍了定时器控制电路的设计原理和实验步骤。

通过实验,我们进一步了解了NE555定时器的应用,熟悉了电容和电阻的作用与选取,掌握了电路连接和调试的技巧。

在实验的过程中,我们还注意到了电路的安全性和稳定性的重要性,这对于其他电子电路的设计和应用也非常重要。

数字定时器设计

数字定时器设计

数字定时器设计摘要随着时代的进步,电子行业的发展,定时器的应用也越来越广泛。

但传统的定时器都是使用发条驱动式、电机传动式或电钟式等机械定时器。

数字定时器相对传统定时器来说,体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。

本文以AT89C51单片机为核心模块,使用AT89C51内部定时器计时,设计了数字定时器的键盘模块,显示模块,声光报警模块,辅助电源模块,继电器开关模块以及硬件复位模块。

系统阐述了数字定时器的工作原理,并给出了软件流程。

该数字定时器最大定时时间为30h,可精确到分。

关键词:定时器;单片机;AT89C51;Design Digital TimerAbstractWith the development of the electronics industry, timer becoming widely used. But the traditional timers are used to wind-driven, the motor drive or electro-mechanical timer Bell, etc. Digital timer relatively traditional timer, small size, light weight, low cost, high accuracy, long life, and secure, easy and suitable for frequent use.This paper use the AT89C51 internal timer as time control, designs a digital timer keyboard module, display module, sound and light alarm module, auxiliary power modules, relay switch modules and hardware reset module. The paper systemic explains digital timer works and software process. The digital timer maximum scheduled time for 30h, accurate to the minute.Keywords: Timer; Monolithic machine; AT89C51; Development is scanned.1绪论我们在日常生活中,经常碰到一些需要定时的事情,例如:印相或放大照片,需要定在零点几秒的时间,洗衣机洗涤衣物需要定在几分钟到几十分钟的时间,电风扇需要定在数十分钟的时间。

555定时器及其应用电路的设计

555定时器及其应用电路的设计

555定时器及其应用电路的设计定时器是一种常用的电子元器件,它能够按照一定的时间间隔来控制电路的开关状态。

在各种相关的应用中,定时器可以实现很多不同的功能,如闹钟、计时器、定时加热器等。

本文将介绍555定时器的基本原理及其应用电路的设计。

一、555定时器的基本原理555定时器是一种集成电路,由三个功能单元组成:比较器、RS触发器和输出级。

它的输入引脚包括控制电压引脚(Control Voltage, CV)、重置引脚(Reset, R)、触发引脚(Trigger, T)、电源引脚(VCC)和地引脚(GND)。

输出引脚包括输出引脚(Out)和电源引脚(Reset Out)。

1.RS触发器:当T引脚的电平从低电平变为高电平时,触发RS触发器的工作。

当R引脚的电压接近VCC时,RS触发器的输出为低电平;当R引脚的电压接近GND时,RS触发器的输出为高电平。

2. 比较器:555定时器包含两个比较器,分别由两个比较器的非反相输入引脚和控制电压引脚(Control Voltage, CV)连接。

当电压比控制电压引脚的电压高时,比较器的输出为低电平;当电压比控制电压引脚的电压低时,比较器的输出为高电平。

3.输出级:输出引脚输出RS触发器的输出,经过输出级进行放大,最终输出到外部电路。

1.单稳态触发器:单稳态触发器可以产生一个固定时间长度的脉冲信号。

当输入引脚接收到一个触发信号时,输出端将输出一个特定持续时间的高电平信号。

这种电路可以应用于检测器、计数器、自动化系统等。

2.方波发生器:方波发生器可以产生一个固定频率的方波信号。

通过调节电阻和电容的数值,可以实现不同的频率输出。

这种电路可以应用于时钟、计数器、调制解调器等。

3.PWM发生器:PWM发生器可以产生一个脉宽可调的方波信号。

调节电阻和电容的数值,可以实现不同的脉宽输出。

这种电路可以应用于调光、马达驱动器、温度控制等。

三、555定时器应用实例1.闪光灯电路:该电路使用555定时器和几个电阻和电容元件构成,可以实现一个闪光灯。

数电课程设计--十秒倒计时定时器

数电课程设计--十秒倒计时定时器

辽宁师范大学《数字电路》课程设计(09级本科)题目:定时器1 学院:物理与电子技术学院专业:电子信息工程班级:班级学号: 14 姓名:张宁指导教师:赵静邱红张卓完成日期:2011 年 10 月 27 日一.设计内容及要求10秒的倒计时定时器,倒计时要求用数码显示,当定时到1秒时,有声音提示,提示声音为秒,当倒计时到0时停止计数二.总体方案设计由设计内容及要求,我设计了一个以NE555构成的多谐振荡电路,来发出一秒间隔的脉冲;用74LS192进行倒计时,通过74LS47连接一个数码显示器;由74LS192发出的高低电平经过逻辑电路变化,连接74LS121来控制蜂鸣器在1秒时响。

三.单元模块设计.1.以NE555构成的多谐振荡器图1 图二NE555的震荡器在本电路中的周期T=C(R1+R2)=1S图三。

图三为多谐振荡电路R1和R2,C的值确保震荡周期为1秒,图三的右下角为复位电路,与下一部分一同介绍。

2.倒计时电路图四图五由74LS192的真值表图四可以看出,若想让元件工作在减计数状态MR,PL非,CPu的值必须分别为0,1,1。

由要求可以看出,192的初始必须是九,所以加了一个复位电路,确保初始值是9.计数器输入端P0,1,2,3对应接高低低高电平。

Q0,Q1,Q2,Q3为计数器输出端接到74LS47上。

NE555的3号管脚与74LS192的4浩管脚相连。

一秒发出一个脉冲,74LS192开始倒计时。

图六4.逻辑电路逻辑电路的作用在于将74LS192输出为一,即Q3Q2Q1Q0=0001时输给报警电路一个负脉冲。

图七图八图九图九管脚功能描述:管脚3(A1)、4(A2)是负边沿触发的输入端;管脚5(B)是同相施密特触发器的输入端,对于慢变化的边沿也有效;管脚10(C ext)和管脚11(R ext/C ext)接外部电容(C x),电容范围在10pF~10μF之间;管脚9(R int)一般与管脚14(V CC,接+5V)相连接;如果管脚11为外部定时电阻端时,应该将管脚9开路,把外接电阻(R x)接在管脚11和管脚14之间,电阻的范围在2~40kΩ之间。

简易定时器数字课程设计

简易定时器数字课程设计

简易定时器数字课程设计一、课程目标知识目标:1. 让学生理解简易定时器的原理和功能,掌握数字电路基础知识。

2. 使学生掌握定时器电路的设计方法,能够运用所学知识搭建简单的定时器电路。

3. 帮助学生了解定时器在实际生活中的应用,拓宽知识视野。

技能目标:1. 培养学生动手操作能力,能够正确使用数字电路实验器材。

2. 提高学生的问题解决能力,能够运用所学知识分析并解决定时器电路故障。

3. 培养学生的团队协作能力,学会在小组合作中共同完成任务。

情感态度价值观目标:1. 激发学生对电子技术的兴趣,培养积极探索、勇于创新的科学精神。

2. 培养学生严谨、细致的学习态度,养成良好的实验习惯。

3. 增强学生的环保意识,认识到电子技术在实际应用中对环境保护的重要性。

本课程针对初中学段学生,结合学科特点和教学要求,注重理论与实践相结合,以培养学生的动手能力、问题解决能力和团队协作能力为核心。

课程目标具体、可衡量,旨在让学生在掌握数字电路基础知识的同时,能够将所学应用于实际生活,提高学生的综合素养。

二、教学内容本章节教学内容主要包括以下三个方面:1. 数字电路基础知识:- 介绍数字电路的基本概念、逻辑门电路及其功能。

- 讲解定时器电路的原理,以课本相关章节为基础,结合实际案例进行分析。

2. 定时器电路设计:- 引导学生了解定时器的种类和功能,掌握典型定时器集成电路的使用方法。

- 依据教材内容,制定详细的教学大纲,逐步讲解定时器电路的设计步骤和注意事项。

教学内容安排:- 第一课时:数字电路基础知识回顾与拓展- 第二课时:定时器电路原理及其应用- 第三课时:定时器电路设计方法与实验操作3. 实践操作与案例分析:- 安排学生进行数字电路实验,搭建简单的定时器电路,巩固所学知识。

- 结合实际案例,分析定时器电路在实际应用中的优缺点,提高学生的问题解决能力。

教学内容具有科学性和系统性,结合教材章节和教学要求,注重理论与实践相结合,旨在帮助学生掌握数字电路基础知识,提高定时器电路设计和分析能力。

定时器设计的课程设计

定时器设计的课程设计

定时器设计的课程设计一、课程目标知识目标:1. 学生能理解定时器的基本概念、工作原理及其在电子技术中的应用。

2. 学生能掌握定时器的种类、功能及参数,并能根据需求选择合适的定时器。

3. 学生了解定时器编程的基本方法,能运用所学知识编写简单的定时程序。

技能目标:1. 学生能够运用所学知识设计简单的定时器电路,并进行调试与优化。

2. 学生能够运用编程软件编写定时程序,实现特定功能。

3. 学生能够通过实际操作,培养动手能力、团队协作能力和问题解决能力。

情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发学习热情,形成积极的学习态度。

2. 学生在团队协作中,学会相互尊重、沟通与协作,培养集体荣誉感。

3. 学生通过学习定时器设计,认识到科技对生活的改变,增强社会责任感和创新意识。

本课程针对初高中电子技术课程,结合学生年龄特点和知识水平,注重理论与实践相结合,培养学生的动手能力、创新能力和团队协作精神。

课程目标具体、可衡量,便于教师进行教学设计和评估,确保学生能够达到预期学习成果。

和教学内容二、教学内容本节课程依据课程目标,选取以下教学内容:1. 定时器基本概念:介绍定时器的定义、功能、分类及其在电子技术中的应用。

2. 定时器工作原理:讲解定时器的内部结构、工作方式,重点掌握计数器、定时器的原理。

3. 定时器电路设计:学习定时器电路的组成、设计方法,分析常见定时器电路图。

4. 定时器编程:学习定时器编程的基本方法,掌握定时器的初始化、计数和控制。

5. 定时器应用实例:分析实际应用案例,了解定时器在日常生活和工业中的应用。

教学大纲安排如下:第一课时:定时器基本概念、分类及功能。

第二课时:定时器工作原理,重点讲解计数器、定时器原理。

第三课时:定时器电路设计,分析电路图,进行电路搭建。

第四课时:定时器编程,学习编程方法,编写简单定时程序。

第五课时:定时器应用实例,分析实际应用,进行课堂讨论。

教学内容与教材章节关联紧密,确保科学性和系统性。

电子系统设计数字定时器实验报告

电子系统设计数字定时器实验报告

电子系统设计数字定时器实验报告学校:学院:城市轨道交通学院班级:通信工程组员:前言在电子技术飞速发展的今天,电子产品逐渐趋向人性化和智能化。

人们人们为了实现这一目的而引入了单片机。

单片机又称单片微型计算机,也称为微控制器,是微型计算机的一个重要分支,单片机是20世纪70年代中期发展起来的一种大规模集成电路芯片,是集CPU,RAM,ROM,I/O接口和中断系统于同一硅片上的器件。

单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。

目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

单片机已在广阔的计算机应用领域中表现得淋漓尽致电器因此,单片机已成为电子类工作者必须掌握的专业技术之一。

这次实验,我们组是以单片机为核心设计一个数字定时器。

在实验过程中,我们开始了解电系统设计的和基本理念,基本规则和基本流程;在不断完善设计的过程中,我们逐步丰富和巩固自己的理论知识,培养积极思考解决问题的习惯并充分地发挥自己动手实验操作的能力。

可以说这次实验将我们所学的《单片机原理与应用》以及《电子系统设计》两门课程进行了有机的结合。

通过解决实际问题,我们对原理有了更深刻的理解,对于应用有了更广泛的接触。

另外实验中我们学会使用Proteus和Keil两款软件进行单片机电路的仿真以及程序的编写及联调。

这些都为我们以后的课程设计乃至工作研究奠定了厚实的基础。

这次的实验中,我们以单片机实现计时和倒计时功能,由LED 显示剩余时间,显示格式为XX(分),精确到1分的整数倍。

虽然接触到的功能模块较多,包括接口模块、中断模块、存储模块、控制模块和显示模块等,但仍然只是单片机这门学问的皮毛,在以后的学习中我们还需要不断汲取知识,不断地将理论与实践结合。

本次实验有本小组4位组员共同完成,张强强负责,朱宇翔负责,吴易洲负责,肖伟健负责。

编者注目录第1部分实验概述1.1 设计要求……………………………………………………1.2 数字定时器系统的基本理论………………………………1.3 设计方案……………………………………………………1.4 硬件电路工作原理…………………………………………第2部分程序设计2.1 整体结构……………………………………………………2.2 资源分配……………………………………………………2.3 程序流程……………………………………………………2.4 程序编写……………………………………………………第3部分仿真验证3.1 Keil 与Proteus联调仿真…………………………………3.2 实物连接仿真………………………………………………第4部分实验总结4.1 问题分析……………………………………………………4.2 小结…………………………………………………………第1部分实验概述1.1实验要求1定时时间的设置范围为1~99min,开机上电后隐含值为10min。

基于单片机的定时器设计

基于单片机的定时器设计

基于单片机的定时器设计1.引言定时器是一种非常常见的电子设备,用于测量和控制时间。

在嵌入式系统中,定时器通常由单片机来实现。

单片机是一种高度集成的微型计算机,拥有处理器、存储器和输入输出设备。

本文将介绍基于单片机的定时器设计,并进行详细探讨。

2.单片机定时器的概念单片机定时器是单片机内部的一个功能模块,用于生成定时的脉冲信号。

通过控制定时器的设置,可以实现各种不同的定时功能,如时间测量、延时控制、周期性信号生成等。

在控制系统中,定时器的应用广泛,对于实时控制和时间精度要求较高的场景尤为重要。

3.单片机定时器的工作原理单片机定时器通常由计数器和预分频器组成。

计数器用于计数,每计数到一个特定的值,就会产生一个中断或输出脉冲。

预分频器用于控制计数器的计数速度,通过调整预分频器的设置,可以实现不同的计数速度和定时周期。

4.单片机定时器的应用单片机定时器广泛应用于各种场景中,如通信设备、工业自动化、仪器仪表等。

在通信设备中,定时器用于生成各种调制解调信号、时钟信号等。

在工业自动化中,定时器用于周期性的控制任务,如定时采样、定时测量等。

在仪器仪表中,定时器用于测量和显示时间,并和其他功能模块进行协调。

5.单片机定时器的设计要点在进行单片机定时器设计时,需要注意以下几个要点:5.1确定定时器的应用需求根据实际的应用需求,选择适当的定时器类型和工作模式。

不同类型的单片机定时器提供了不同的功能和参数设置,需要根据具体的应用场景进行选择。

5.2设置定时器的计数值和预分频器根据应用的时间精度要求和计数周期,设置合适的计数值和预分频器。

计数值和预分频器之间存在一定的数学关系,需要进行计算和调整。

5.3配置定时器的工作模式和中断根据应用的实际需要,选择合适的定时器工作模式和中断方式。

定时器可以工作在单次触发模式和周期性触发模式,可以选择中断方式或输出脉冲方式。

5.4编写相应的程序控制定时器通过单片机的编程,用相应的指令和函数来控制定时器的工作。

(完整版)电子倒计时定时器设计毕业设计论文

(完整版)电子倒计时定时器设计毕业设计论文

江苏信息职业技术学院毕业设计(论文)题目:电子倒计时定时器设计摘要随着时代的进步,电子技术的发展,倒计时定时器得到了越来越广泛的应用,给人们日常的生活、学习、工作、娱乐带来便利,电子定时器相比普通的定时器来事具有体积小、重量轻、造价低、精度高等特点。

本设计主要采用51系列单片机,通过硬件电路设计和软件编程设计来实现,硬件主要包括主控模块,时间显示模块,键盘设置模块,报警器模块的设计,软件编程主要采用C语言,虽然程序条数比较多,但是设计起来比较方便,可通过Keils软件进行调试。

此次倒计时定时器采用单片机AT89S51为核心,利用时钟芯片DS1302来显示一天的时间,系统通电后利用数码管自动显示当前时间,通过键盘可以调整时间,分别对时、分、秒进行加减,也可以通过键盘转换成倒计时模式,最大倒计时时间为59分59秒,而且误差很小,当倒计时为零时蜂鸣器进行报警,指示灯变亮,倒计时功能关闭则显示当前时间,操作简单方便。

关键词:时钟芯片;AT89S51;倒计时;DS1302目录摘要 (1)第1章绪论 (5)1.1课题的学术背景及其实际意义 (5)1.2相关领域的成果及存在的不足 (5)1.3课题来源及主要研究内容 (5)第2章倒计时定时器的结构、原理及设计方案 (7)2.1 单片机的发展概况 (7)2.2 51单片机的内部结构 (7)2.3 设计要求、方案及框图 (9)2.1.1设计要求 (9)2.1.2设计方案 (9)2.1.3设计框图 (10)第3章硬件电路设计 (11)3.1ATS89C51单片机介绍 (11)3.2时钟模块 (13)3.2.1DS1302简介 (13)3.2.2 (14)3.2.3时钟电路设计 (15)3.2.4时钟复位电路 (15)3.3键盘模块 (16)3.4显示模块 (17)3.4.1LED数码管介绍 (17)3.4.2 (19)3.5报警模块 (21)第4章软件程序设计 (22)4.1Keil软件介绍 (22)4.2软件程序流程图 (22)第5章系统调试 (25)结论 (30)参考文献 (31)附录 (32)附录1 主程序 (32)附录 2 电路原理图 (49)附录3 PCB图 (50)致谢 (51)第1章绪论1.1课题的学术背景及其实际意义倒计时定时器已经成为人们日常生活中必不可少的物品,随着技术的发展,广泛的应用于各个公共场所,给人们日常的生活、学习、工作、娱乐带来便利,但是由于原先简单的报时功能已经不能够被人们所满足,希望出一些新的功能新的产品来满足人们的需要,例如重要日子的倒计时、秒表等等,这些都能带来更大的方便。

倒计时定时器电路设计

倒计时定时器电路设计

倒计时定时器电路设计倒计时定时器电路是一种常见的电子设计,用于实现指定的时间倒数计时功能。

该电路可以广泛应用于各种需要定时操作的场景,如倒数计时器、定时器启动控制、设备关机等。

本文将介绍倒计时定时器电路的设计原理及实现方法。

倒计时定时器电路主要由以下几个部分组成:时钟发生器、计数器、译码器和显示器。

时钟发生器产生稳定的时钟信号,计数器用于记录经过的时钟周期数,译码器将计数器的输出转换为对应的数字信号,显示器将数字信号转换为可视的倒计时显示。

时钟发生器是倒计时定时器电路的核心组件之一、它负责产生稳定的时钟信号,并通过一个特定的频率来控制倒计时的时间精度。

时钟发生器一般采用定时集成电路(如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秒转换为二进制码,并加载到总计数器中,然后使能逻辑启动倒计时。

当倒计时时间到达时,触发逻辑会发出一个触发信号,控制其他电路或设备的启停。

总之,倒计时定时器电路是一种用于控制定时时间的电子电路,它可以广泛应用于各个领域。

通过合理的设计和调整,可以满足不同场景下的倒计时需求。

基于51单片机定时器的电子时钟设计

基于51单片机定时器的电子时钟设计

基于51单片机定时器的电子时钟设计电子时钟是一种集计时、显示时间等功能于一体的电子设备。

它可以准确地显示当前的时间,并通过定时器控制乃至更新时间。

本文将介绍基于51单片机定时器的电子时钟设计。

设计步骤如下:步骤一:硬件设计首先,需要准备以下硬件元件:1.51单片机:作为主要控制单元;2.DS1302实时时钟芯片:用于计时和保存时间数据;3.16x2字符LCD显示屏:用于显示时间;4.4x4矩阵键盘:用于调整时间和设置闹钟;5.蜂鸣器:用于报时功能;6.电位器:用于调整LCD背光亮度。

将这些硬件元件按照电路图连接起来,注意正确连接引脚和电源。

步骤二:软件设计在51单片机上编写程序,实现以下功能:1.初始化:a.初始化DS1302实时时钟芯片,设置初始时间;b.初始化LCD显示屏;c.初始化矩阵键盘;2.获取时间:a.从DS1302芯片读取当前时间;3.显示时间:a.将时间数据转换为字符,并在LCD上显示出来;4.键盘输入:a.监测矩阵键盘输入,判断用户按下的是哪个键;b.根据不同的键,执行相应的操作,如设置时间、设置闹钟等;5.闹钟功能:a.设置闹钟时间,当当前时间与闹钟时间相同时,触发蜂鸣器报时;b.可以通过按键来设置闹钟时间和开启/关闭闹钟功能。

以上是基本的电子时钟功能,可以根据实际需求进行扩展和添加其他功能。

步骤三:测试与调试步骤四:优化与扩展在基本功能正常运行的基础上,可以对电子时钟进行优化和扩展。

添加一些实用的功能,如温湿度显示、日期显示、闹钟音乐选择等,以提高电子时钟的实用性和用户体验。

总结:本文介绍了基于51单片机定时器的电子时钟设计步骤,包括硬件设计和软件编程。

通过该设计,可以实现准确显示时间、调整时间、设置闹钟等功能。

为了使电子时钟更加实用,可以根据需要进行优化和扩展。

定时器电子秒表课程设计

定时器电子秒表课程设计

定时器电子秒表课程设计一、课程目标知识目标:1. 学生能理解定时器电子秒表的基本原理,掌握其电路组成和工作机制。

2. 学生能描述定时器电子秒表中各个电子元件的功能和作用。

3. 学生了解定时器电子秒表在日常生活和科技领域的应用。

技能目标:1. 学生能运用所学知识,正确组装和调试定时器电子秒表电路。

2. 学生能运用定时器电子秒表进行简单的时间测量和计时功能。

3. 学生能通过实际操作,培养动手能力、问题解决能力和团队协作能力。

情感态度价值观目标:1. 学生培养对电子技术的兴趣和热情,增强学习动力。

2. 学生在实践过程中,养成积极探索、勤于思考的良好习惯。

3. 学生通过学习定时器电子秒表,认识到科技对生活的影响,提高创新意识。

课程性质:本课程为电子技术实践课程,以理论为基础,以实践操作为核心。

学生特点:初三学生,具备一定的物理知识和电子技术基础,好奇心强,喜欢动手操作。

教学要求:结合学生特点,注重理论与实践相结合,强调学生的动手实践能力,培养创新思维和团队协作精神。

通过课程目标的设定,使学生在掌握知识的同时,提高技能和情感态度价值观。

教学过程中,注重分解课程目标为具体学习成果,以便进行有效的教学设计和评估。

二、教学内容1. 定时器电子秒表基本原理:介绍定时器电子秒表的电路组成、工作原理及各元件功能。

- 课本章节:第三章第三节“定时器与计数器”2. 定时器电子秒表电路组装与调试:讲解并演示如何正确组装定时器电子秒表电路,进行调试和故障排查。

- 课本章节:第四章“电子电路的安装与调试”3. 定时器电子秒表的应用:分析定时器电子秒表在日常生活和科技领域的应用实例。

- 课本章节:第五章“电子技术应用”4. 实践操作:安排学生分组进行定时器电子秒表的组装、调试和应用实践,培养动手能力和团队协作精神。

- 课本章节:第六章“实践活动”教学进度安排:第一课时:定时器电子秒表基本原理学习第二课时:定时器电子秒表电路组装与调试第三课时:定时器电子秒表的应用案例分析第四课时:实践操作,分组完成定时器电子秒表的组装、调试和应用教学内容注重科学性和系统性,结合课程目标,将理论与实践相结合,使学生能够掌握电子秒表相关知识,提高实际操作能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《专业实训设计报告》设计题目:电子定时器设计班级:电子11-2班学号: 1106040207学生姓名:李高指导教师:刘英哲一、设计要求要求实现一个电子定时器,即根据外部输入的计定时间进行计时(时间可采用外部按键的方式输入),并实时的显示当前计时结果,当计时到计定时间后进行警报(可通过LED 闪烁或蜂鸣器)。

计时时间以秒/分为显示单位,可分别实现对5 分钟,10 分钟,15 分钟和20 分钟的计时。

二、设计的目的1.掌握电路设计的一般方法在前面我们已经学习了模电、数电、单片机的理论知识,并对模拟电路,数字芯片和单片机各个接口的功能、各个功能模块有了了解。

通过此次课程设计,我们可以更加了解单片机及其使用,并围绕单片机设计拓展电路。

2.掌握电路仿真和调试过程此次课程设计是一个综合设计,要求我们做出实物。

在设计中我们要学习软硬件,绘制和焊接电路,通过调试使定时器能够正常工作。

3.提高总结能力完成智能定时器实物设计后,我们要在报告中总结设计过程,经验和分析结果,对设计不足的地方提出改进建议。

三、设计的具体实现方案一:采用555定时器来输入脉冲,先通过74LS90进行十进制计数(时钟的秒数个位),达到进位时将进位送入74LS92进行六进制计数(时钟的秒数十位),进位送入74LS90进行十进制计数(时钟的分位);由74LS47译码后送给数码管进行显示。

方案二:该方案仅由主电路、按键电路、显示电路、报警电路,四个模块组成。

整个系统的计时功能皆由STC89C52内部自带的定时器T0来实现;时钟由共阴极数码管显示;五个开关按钮可以实现时钟的加,分钟的加,预置定时时间,定时启停;并利用蜂鸣器进行定时报警。

方案框图如图3-1:图3-1方案一中虽然不需要程序,但是电路复杂,且不符合课程设计“以单片机为核心”的要求,所以最后采用了方案二。

方案二,电路简单,时钟部分完全用软件实现,操作方便,完全可以满足课程设计要求。

根据选题要求,设计任务主要完成LED数码管能实现秒/分的显示;通过按钮调整时间;预置定时时间定时;并提醒用户定时时间到。

为完成相应功能,系统设计包含以下几个基本模块:控制模块、信息显示模块、报警模块。

总的框图如上面方案二中图3-1所示。

1.控制模块的选取方案控制器是控制模块的核心,控制模块主要完成时钟和定时功能,从按键读取操作要求、从数码管和蜂鸣器信息显示。

方案一:采用中小规模集成电路。

采用中小规模集成电路构成的控制电路,由于外围器件多,容易出故障,而且调试起来非常麻烦。

方案二:采用ATMEL 公司的AT89S51作为系统控制器。

单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。

本系统控制算法不太复杂,系统规模较小,适宜采用单片机控制方案。

综合考虑,本设计采用方案二。

2.硬件设计及电路图1)设计原理:硬件电路主要有单片机最小系统,按键输入电路,LED显示电路,蜂鸣器电路组成。

按键输入电路:对定时器输入定时时间、时钟时间,并对其调整。

最小系统:包括晶振电路,复位电路。

LED显示电路:显示数字钟时间,定时时间和按键操作。

2)单元电路设计:控制器:本设计采用A T89S51单片机芯片,AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

在设计中,P1.0~P1.6口用来控制数码管的段选,P1.7口控制小数点显示;P0.4~P0.7则用来控制LED数码管的位选;P0.0、P0.1、P0.2、P0.3是按键输入接口;P2.7控制蜂鸣器报警。

时钟定时由定时/计数器T0实现。

晶振电路设计:时钟电路对单片机是不可缺的,单片机的每个功能都要以时钟电路为基础工作。

单片机内部自带一个时钟电路,外部接入定时控制元件即可构成一个稳定的自激振荡器。

其中机器周期共有12个振荡脉冲周期,因此,机器周期是时钟周期的12倍。

本实验中时钟电路中使用的晶体是12MHz,则时钟周期为(1/12)us,机器周期为1us。

在电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。

电路图如下:复位电路设计:复位操作有上电自动复位、按键电平复位和外部脉冲复位三钟方式,本次实验用的是按键电平复位,利用电容的充放电公式来选择所需的电容、电阻,能保证复位信号高电平持续时间大于2个机器周期。

电路图如下:按键输入电路:按键输入电路有4个按钮组成。

SEC/MIN分别控制秒钟、分钟加1,SET 设置时间,START/REST控制定时的启停, ALARM ON/OFF控制报警灯的闪灭。

电路图如下:LED显示电路:LED数码管就是由发光二极管组合而成的1种新型显示器件。

LED显示采用了7SEG-MPX4-CC-BLUE四位共阴极数码管。

最后确定LED显示电路如图:报警灯电路:单片机P2.7口高电平使报警灯工作。

电路如图:3.软件设计软件设计主要是实现对定时/计数器T0的控制。

总体思路是用中断方式计数定时器T0定时到50毫秒的次数。

如果计满20次,则表示1秒到达,接着就可以软件方式实现分,时的加1或清零。

此次设计采用了T0的定时工作方式1。

下面介绍与设计相关的定时/计数器T0的控制寄存器和工作方式1。

定时/计数器方式寄存器TMOD:TMOD低四位用于选择T0的工作方式。

GATE门控(开/关),GATE=0则T0工作在自启动方式;GATE=0工作在外启动方式。

C/—T 计数/定时,C/—T=0则T0定时;C/—T=1计数。

M1M0=00,T0选择工作方式0;M1M0=01,T0选择工作方式1;M1M0=10,T0选择工作方式2;M1M0=11,T0选择工作方式3。

定时/计数器控制寄存器TCON:TR0位是T0运行控制位。

TR0=1,启动T0工作;TR0=0,停止T0工作。

工作方式1:16位定时计数方式,THx和TLx各提供8位计数初值,当TLx低8位计数满回零向THx进位,当THx也计数满回零时置位TFx。

方式1最大计数值为65536,是计数值最大的方式。

程序使用Keil软件编写,完整程序见附2。

下图是程序的总流程图:4.元器件清单四、结论与展望倒计时定时器已经成为人们日常生活中必不可少的物品,随着技术的发展,广泛的应用于各个公共场所,给人们日常的生活、学习、工作、娱乐带来便利,但是由于原先简单的报时功能已经不能够被人们所满足,希望出一些新的功能新的产品来满足人们的需要,例如重要日子的倒计时、秒表等等,这些都能带来更大的方便。

而所有的这些都是以倒计时定时器为基础的。

因此,研究倒计时定时器有着非常重要的意义和实用价值。

电子定时器在家用电器中经常用于延时自动关机、定时。

延时自动关机可用于:收音机、电视机、录音机、催眠器、门灯、路灯、汽车头灯、转弯灯以及其他电器的延时断电及延时自停电源等。

定时可用于:照相定时曝光、定时闪光、定时放大、定时调速、定时烘箱、冰箱门开定时报警、水位定时报警、延时催眠器、延时电铃、延时电子锁、触摸定时开关等。

例如:空调中的定时器,在工作一段时间之后便能自动切断电源停止工作。

夏季夜间使用,入睡前先顶好时间,等睡熟后到了预定时间,空调自动关机,方便节能。

定时器除了应用于家用电器外,还广泛地用于工业农业生产和服务设施等等。

五、心得与体会通过这次课程设计,我学习到了我平时没有接触过的东西,特别是这个学习过程,就突然感觉自己终于把书本上的理论用到了生活中至少是与生活跟接近了。

把这些知识运用到实际中去,对于做家用定时器硬件的时候有着很大的帮助,同时还培养了我的自学能力和独立思考能力。

在调试过程中每当遇到问题的时候,都能通过自己的思考分析,一次又一次的实验最终能够完成。

这对我也是一次很大的考验,能有这次锻炼的机会是我不可缺少的经历。

感谢老师的指导、同学的讨论,让课程设计的整个过程变得更加具有人情味,同学们的思维也能更好地得到舒展。

总的来说,这次课程设计是一个不错的经历,告诉我要不断学习,不断提高。

六、参考文献[1]吴金戎,沈庆阳,郭庭吉. 8051单片机实践与应用[M]. 北京:清华大学出版社,2002[2]李鸿. 单片机原理及应用[M]. 湖南:湖南大学出版社,2004[3]肖洪兵. 跟我学用单片机[M]. 北京:北京航空航天大学出版社,2002.8[4]马忠梅藉顺心,单片机C语言应用程序设计,北京航空航天大学出版社,2007[5]刘刚,秦永左,单片机原理及应用,北京,北京大学出版社,2006[6]李群芳, 肖看, 张士军. 单片微型计算机与接口技术, 2012.1附1:附2:Timer:#include <reg52.h>#include "cext.h"#include "timer.h"#include "taskproc.h" // interrupt period (1 msec)#define tmr_time 1e-3static uchar counter ;static uchar cnt, dpcnt, kbcnt;static uint timer_counter;#include <reg52.h>#include "cext.h"#include "timer.h"void main( void ){ // initializes internal 8052 timer.// Clock Frequency = 12 MHzinit_timer(12e6);// enables interruptsEA = 1;// loop for everwhile (1);}void ISR_timer2 () interrupt 5 using 1 // Timer2 isr{ // Clear interruptTF2 = 0;// Do it at 1msled_mux();// Task procedure.// Each task runs every 10ms multiplied by its own task counter // S0:if (counter == 1){ if (cnt == 100){ cnt = 0;led_counter();}// Increment of the Timer task countercnt++; }// S1:if (counter == 2){ if (dpcnt == 20){ dpcnt = 0;blink_dp(); }// Increment of the decimal point task counterdpcnt++; }// S2:if (counter == 3){ if (kbcnt == 25){ kbcnt = 0;get_key(); }// Increment of the keyboard task counterkbcnt++; }if (++counter == 10) counter = 0;/*State tableS0: Timer countsS1: Blink dpS2: get keysOther task state are null*/ }void init_timer (float fclk)// Timer2 initialization{ int tmr_reload;counter = 0; // initialize state counter// initialization T2CON:// CP/RL2 = 0 (autoreload, no capture),// EXEN2 = 0 (disable external input T2EX),// C/T2 = 0 (timer, no counter),// RCLK = TCLK = 0 (timer, no baud rate generator), // TF2 = EXF2 = 0 (interrupt flags cleared)// TR2 = 0 (timer stop, please)T2CON = 4;// Load timer2 autoreload bytestmr_reload = (0xFFFF - (uint)((fclk * tmr_time) / 12)); RCAP2H = high_byte(tmr_reload);RCAP2L = low_byte(tmr_reload);// Highest priority for Timer2 interruptsPT2 = 1;// Enables Timer2 interruptsET2 = 1;// Start Timer2TR2 = 1; }Task Proc:#include <reg52.h>#include "cext.h"char num[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 7-seg codeschar add[ ] = {0x0fe,0x0fd,0x0fb,0x0f7}; // Multiplexing addresschar dpn[ ] = {0,0,0,0}; // Dots matrixchar buf[ ] = {0,0,0,0}; // Counter bufferchar alm[ ] = {0,0,0,0}; // Alarm sets bufferchar value, key_mask, new_key;static uchar d0, d1, d2, d3, d5;static uchar flag;static uchar digit_counter;static char set_flag;static char set_count;static char set_alm;static char stop_counter = true;char un, th;uint timer;uint alarm;uchar del;// P2.7. Alarm outputsbit alm_out = P2^7;// processor switch contest.#pragma registerbank (1)// Multiplexing Task. Do it every 10msvoid led_mux (){ if (!set_flag){ // Normal counting. Display the counts.value = buf[digit_counter];P1 = num[value] | dpn[digit_counter] ; }else{ // Display alarm valuesvalue = alm[digit_counter];P1 = num[value] | dpn[digit_counter] ; }if (set_alm){ // Timer and alarm valuetimer = buf[0] * 1000 + buf[1] * 100 + buf[2] * 10 + buf[3]; alarm = alm[0] * 1000 + alm[1] * 100 + alm[2] * 10 + alm[3]; // Check whether the alarm condition is occured or notif ((alarm - timer) <= 0){ alm_out = false; // Make alarm out low.stop_counter = true ; // Stop the counter. } } // Drive the digit actually multiplexed.P0 = add[digit_counter];for (del=0; del<100; del++) ;// Increase multiplexer address to the next digitdigit_counter++ ;// Did you diplay all digit ?if (digit_counter >= 4)// Start again.digit_counter = 0;// Pulse high P0.0, P0.1, P0.2 and P0.3P0 = P0 | 0x0f; }// Blink on and off the dots when counting and alarm is on.void blink_dp (){ if (!set_flag && !stop_counter){ if (flag)dpn[1] = 0x80;elsedpn[1] = 0x0;flag = !flag; } }// Counter. Counts from 00.00 to 59.59 min.sec.// The Timer interrupt is driven every 1 sec.void led_counter (){ if (!stop_counter) buf[3]++;if (buf[3] > 9){ buf[3] = 0;d3 = true; }if (d3){ ++buf[2];d3 = false; }if (buf[2] > 5){ buf[2] = 0;d2 = true; }if (d2){ ++buf[1];d2 = false; }if (buf[1] > 9){ buf[1] = 0;d1 = true; }if (d1){ ++buf[0];d1 = false; }if (buf[0] > 5){ buf[0] = 0;d0 = true; } }// Four keys Task manager.// Timer interrupt driven every 250msvoid get_key (){ char valid_key;char delay = 127;key_mask = P0 & 0xf0;while (--delay >= 0) ;valid_key = P0 & 0xf0;if (key_mask != valid_key) valid_key = 0;while ((P0 & 0xf0) != (0 | (valid_key & 0x40))) ;switch (valid_key){ case 0x10: // Reset Timerbuf[0] = 0;buf[1] = 0;buf[2] = 0;buf[3] = 0;alm_out = true;stop_counter = !stop_counter;break;case 0x20: // Set alarm++set_count;if (set_count == 1){ // First time SET is pressed. Sets secondsset_flag = true;dpn[0] = 0; dpn[1] = 0; dpn[2] = 0x80; dpn[3] = 0x80; } else if (set_count == 2){ // Second time SET is pressed. Set minutesset_flag = true;dpn[0] = 0x80; dpn[1] = 0x80; dpn[2] = 0; dpn[3] = 0; } else if (set_count == 3){ // Latest time SET is pressed. Return to timer functions. set_flag = false;set_count = 0;dpn[0] = 0; dpn[1] = 0; dpn[2] = 0; dpn[3] = 0; }un = 0;th = 0;break;case 0x40: // Set seconds/minutesif (set_count == 1){ ++un;if (un > 9){ th++;un = 0;if(th > 5)th = 0; }alm[3] = un;alm[2] = th; }else if (set_count == 2){ ++un;if (un > 9){ th++;un = 0;if(th > 5)th = 0; }alm[1] = un;alm[0] = th; }break;case 0x80: // Set alarm on/offset_alm = !set_alm;if (set_alm){ dpn[0] = 0x80; dpn[1] = 0x80; dpn[2] = 0x80; dpn[3] = 0x80;} else{ dpn[0] = 0x0; dpn[1] = 0x80; dpn[2] = 0x0; dpn[3] = 0x0; } break; }}。

相关文档
最新文档