软件延时实现60秒计时器
- 格式:doc
- 大小:56.50 KB
- 文档页数:3
60秒计时器及应用60秒计时器是一种用于计时60秒的设备或应用程序。
它可以在各种场合和用途中使用,例如体育比赛、健身训练、烹饪、科学实验等。
这篇回答将涵盖60秒计时器的工作原理、常见的应用场景以及如何使用60秒计时器等方面的内容。
首先,让我们了解60秒计时器是如何工作的。
60秒计时器通常是一种电子设备或应用程序,有一个显示屏和一个按钮或滑动条,用于开始和停止计时。
当用户按下开始按钮或滑动滚动条时,计时器启动,并开始倒计时60秒。
屏幕上的数字会每秒更新一次,以显示剩余的秒数。
当计时器倒计时结束时,它会自动停止,并发出一个声音或显示一个警告,告诉用户时间已经到了。
60秒计时器有很多实际应用的场景。
首先,它在体育比赛中非常常见。
例如,在田径比赛中,运动员需要在60秒内完成某个项目,例如短跑或跳远。
60秒计时器可以帮助裁判员和运动员准确地测量时间,确定比赛结果。
其次,60秒计时器也广泛应用于健身训练。
例如,高强度间歇训练(HIIT)通常是在固定的时间内进行高强度运动,然后休息一段时间,然后再重复。
一个常见的时间间隔是60秒的工作时间和30秒的休息时间。
使用60秒计时器可以帮助人们保持训练的节奏和时间控制。
此外,60秒计时器也可以在烹饪中发挥作用。
在烹饪过程中,有时需要计时短暂的步骤,例如煮面条、蛋糕烘焙或蛋的煮熟时间。
60秒计时器可以确保食物被烹饪到理想的时间,以获得最佳的口感和风味。
除了上述应用场景,60秒计时器还可以用于科学实验、医疗护理、游戏等其他领域。
在科学实验中,60秒计时器可以帮助研究人员在特定的时间窗口内进行观察和数据采集。
在医疗护理中,它常用于监测生命体征或药物注射的时间。
在游戏中,60秒计时器可以用来限制玩家的动作或反应时间,增加游戏的挑战性。
现在,让我们看看如何使用60秒计时器。
首先,将计时器设置为60秒。
通常,计时器会有一个按钮或滑动条,通过按下按钮或滑动滚动条来启动计时。
一旦你按下按钮或滑动滚动条,计时器开始倒计时,并显示60秒的剩余时间。
时钟倒数效果:在Adobe Premiere Pro中制作计时效果在视频编辑中,时钟倒数效果是一种常见的技巧,可以给观众带来紧迫感,增加视频的张力。
在Adobe Premiere Pro中,我们可以轻松地制作出这种效果。
下面就让我来介绍一下具体的制作步骤。
首先,打开Adobe Premiere Pro软件并创建一个新项目。
然后将你想要添加倒计时效果的视频素材导入到项目媒体库中。
接下来,创建一个新的视频轨道。
右键点击时间线上的空白处,选择“添加轨道”,然后选择“视频”。
这样就在时间线上创建了一个新的视频轨道。
现在,在媒体库中找到你的倒计时素材。
可以是一个数字图像、一个视频剪辑或者一个动态图像,适合你的视频风格和需求。
将倒计时素材拖放到新创建的视频轨道上。
然后,调整倒计时素材的持续时间。
选中倒计时素材,然后在时间线上将其拉伸或剪辑,直到你想要的持续时间。
你可以根据需要重复这个步骤,例如,如果你想要一个60秒的倒计时,你可以将倒计时素材重复60次。
现在,你可以对倒计时素材进行一些进一步的调整和特效。
点击倒计时素材,在“效果控制”面板中可以找到各种效果选项。
你可以调整颜色、亮度、对比度等来改变素材的外观。
如果你想要给倒计时素材添加音效,可以在音轨中导入和插入音频剪辑。
在时间轴上的音频轨道上点击右键,选择“添加音轨”,然后将音频素材拖放到新创建的音频轨道上。
调整音频剪辑的持续时间以匹配你的倒计时持续时间。
最后,在导出设置中选择你想要的输出格式和设置。
点击“文件”菜单,在下拉菜单中选择“导出”>“媒体”。
然后在弹出窗口中选择输出的文件格式、分辨率等选项,并为你的倒计时视频选择保存位置。
点击“导出”按钮即可开始导出。
至此,你已经成功地在Adobe Premiere Pro中制作了一个时钟倒计时效果。
你可以将这个效果应用到你的视频项目中,提升视频的观赏性和吸引力。
总结起来,制作时钟倒计时效果并不复杂。
只需几个简单的步骤,利用Adobe Premiere Pro软件中的工具和特效选项,就可以轻松地创造出令人印象深刻的效果。
60秒倒计时设计一:1.目的课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
2.要求单片机控制的60s倒计时00000(1)用单片机AT89C51的定时器实现60s倒计时。
00000(2)用PROTEUS设计,仿真基于AT89c51单片机的60s倒计时实验。
3. 目标通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法。
2:方案选择图2.1:60秒倒计时总体电路设计本设计由硬件设计和软件设计两部分组成,总电路框图如图2.1所示。
具体设计:通过AT89C51型号单片机,由P1和P2两组I/O引脚分别控制两个7SEG–COM –ANODE型号数码管,分十位控制和个位控制,达到显示60秒倒计时的目的。
通过复位电路,在仿真过程中点击开关实现60复位3.1 AT89C51外形及引脚排列如图3.1所示图3.1:89C51的核心电路框图主要特性·与MCS-51 兼容·4K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路管脚说明(1)电源及时钟引脚(4个)Vcc: 电源接入引脚Vss:接地引脚XTAL1:晶振震荡器接入的一个引脚(采用外部振荡器时,此引脚接地);XTAL2:晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器信号的输入端)。
(2)控制线引脚(4个)RST/Vpd:复位信号输入引脚/备用电源输入引脚;ALE:地址锁存允许信号输出引脚/编程脉冲输入引脚:EA:内外存储器选择引脚/片外EPROM编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。
微机原理与接口技术课程设计报告题目 60秒倒计时系统设计系别虞山学院年级 09 专业电子科学与技术班级 Y051091 学号 Y051091(07/10/20/29)学生姓名徐熙超、施祥祥、肖天宇、陆庆山指导教师周平职称讲师设计时刻目录第一章系统设计................................................................... 错误!未定义书签。
题目要求.................................................................................................. 错误!未定义书签。
方案论证.................................................................................................. 错误!未定义书签。
实施方案.................................................................................................. 错误!未定义书签。
第二章倒计时硬件设计....................................................... 错误!未定义书签。
倒计时的硬件框图.................................................................................. 错误!未定义书签。
8255A的大体资料................................................................................ 错误!未定义书签。
一、实验任务如下图所示,在A T89S51单片机的P0和P2端口分别接有两个静态共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。
二、电路原理图图11.1三、硬件连线参照教程十的方法完成硬件连线(只是去掉按键部分)。
四、程序设计内容1在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,从新秒计数。
2对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。
3在数码上显示,仍通过查表的方式完成。
4一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1秒时间为1.002秒。
DELY1S: MOV R5,#100D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RET五、程序框图图11.2 六、汇编源程序Second EQU 30HORG 0START: MOV Second,#00HNEXT: MOV A,SecondMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOVC A,@A+DPTRMOV P2,ALCALL DELY1SINC SecondMOV A,SecondCJNE A,#60,NEXTLJMP STARTDELY1S: MOV R5,#100D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END七、C语言源程序#include <A T89S53.H>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Second;void delay1s(void){unsigned char i,j,k;for(k=100;k>0;k--)for(i=20;i>0;i--)for(j=248;j>0;j--);}void main(void){Second=0;P0=table[Second/10];P2=table[Second%10];while(1){delay1s();Second++;if(Second==60){Second=0;}P0=table[Second/10];P2=table[Second%10];}}。
单片机60秒计时器实验报告一、实验目的本实验旨在设计并实现一个基于单片机的60秒计时器,通过学习单片机的基本原理和编程语言,掌握单片机计时器的设计和实现方法。
二、实验原理1. 单片机基础知识:单片机是一种集成电路芯片,它包含了中央处理器(CPU)、存储器(RAM、ROM)、输入输出(I/O)接口等多个功能模块。
单片机可以通过编写程序来控制各种外设,如LED灯、蜂鸣器等。
2. 计时器原理:计时器是一种用于测量时间的电子设备,它通常由一个晶振作为基准信号源,通过分频和计数来实现精确计时。
在单片机中,计时器通常由定时器(Timer)模块来实现。
3. 60秒计时器设计:本次实验需要设计一个能够精确计时60秒的计时器。
具体步骤如下:(1) 设置定时器工作模式为定时模式;(2) 设置定时时间为60秒;(3) 等待定时完成,并触发中断;(4) 在中断服务函数中输出时间到LED灯或数码管上。
三、实验材料1. STC89C52RC单片机开发板;2. 4位共阳数码管或8个LED灯;3. 杜邦线若干。
四、实验步骤1. 连接电路:将单片机开发板上的P0口连接到4位共阳数码管或8个LED灯的控制引脚,P3口连接到晶振、复位电路等。
2. 编写程序:使用Keil C51编写单片机程序,实现60秒计时器功能。
具体代码如下:#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit LED1 = P0^0; //LED灯连接到P0.0sbit LED2 = P0^1; //LED灯连接到P0.1sbit LED3 = P0^2; //LED灯连接到P0.2sbit LED4 = P0^3; //LED灯连接到P0.3void InitTimer() //初始化定时器{TMOD &= 0xF0; //设置工作模式为定时模式TH1 = 0x3C; //设置定时时间为60秒TL1 = 0xB0;ET1 = 1; //开启定时器中断允许位}void TimerInterrupt() interrupt 3 //定时器中断服务函数{static uchar cnt = 60; //计数器,初始值为60秒if(cnt > 0) cnt--; //每次中断计数器减一if(cnt == 10) { //当计数器为10秒时,LED1闪烁LED1 = ~LED1;}if(cnt == 0) { //当计数器为0秒时,所有LED灯关闭 LED1 = 0;LED2 = 0;LED3 = 0;LED4 = 0;}}void main(){InitTimer(); //初始化定时器while(1) {LED2 = 1; //LED2始终点亮if(TF1) { //如果定时器溢出,重新加载计时器TF1 = 0; //清除定时器中断标志位TH1 = 0x3C; //设置定时时间为60秒TL1 = 0xB0;ET1 = 1; //开启定时器中断允许位cnt = 60; //重置计数器}}}3. 烧录程序:将编写好的程序通过ISP或其他烧录工具烧录到单片机中。
60秒倒计时设计一:1.目的课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
2.要求单片机控制的60s倒计时(1)用单片机AT89C51的定时器实现60s倒计时。
(2)用PROTEUS设计,仿真基于AT89c51单片机的60s倒计时实验。
3. 目标通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法。
2:方案选择图2.1:60秒倒计时总体电路设计本设计由硬件设计和软件设计两部分组成,总电路框图如图2.1所示。
具体设计:通过AT89C51型号单片机,由P1和P2两组I/O引脚分别控制两个7SEG–COM –ANODE型号数码管,分十位控制和个位控制,达到显示60秒倒计时的目的。
通过复位电路,在仿真过程中点击开关实现60复位3.1 AT89C51外形及引脚排列如图3.1所示图3.1:89C51的核心电路框图主要特性·与MCS-51 兼容·4K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路管脚说明(1)电源及时钟引脚(4个)Vcc: 电源接入引脚Vss:接地引脚XTAL1:晶振震荡器接入的一个引脚(采用外部振荡器时,此引脚接地);XTAL2:晶体振荡器的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器信号的输入端)。
(2)控制线引脚(4个)RST/Vpd:复位信号输入引脚/备用电源输入引脚;ALE:地址锁存允许信号输出引脚/编程脉冲输入引脚:EA:内外存储器选择引脚/片外EPROM编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。
课程论文题目:单片机实现60S倒计时作者:学号:所在学院:信息科学与工程学院专业年级:通信12-5班指导教师:职称:讲师2013 年05月25 日单片机实现60S倒计时摘要:本设计用两种方案并采用电路仿真软件Proteus设计完成了60S倒计时按键控制电路仿真图;使用Keil C51对该电路进行编程,使用DXP2009完成了此电路原理图绘制以及PCB印刷电路版图的设计,掌握了电路原理图、PCB图的设计方法,独立完成了原件的原理图库文件、原件封装库文件的设计。
使用自动布线辅助手动布线设计了电路的PCB印刷图。
关键字:Keil C51;Proteus;DXP2009;60S倒计时1 前言近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本篇课程论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。
2 软件简介Protel DXP 2009已不是单纯的PCB(印制电路板)设计工具,而是由多个模块组成的系统工具,分别是SCH(原理图)设计、SCH(原理图)仿真、PCB(印制电路板)设计、Auto Router(自动布线器)和FPGA设计等,覆盖了以PCB为核心的整个物理设计。
该软件将项目管理方式、原理图和PCB图的双向同步技术、多通道设计、拓朴自动布线以及电路仿真等技术结合在一起,为电路设计提供了强大的支持。
Proteus是英国Labcenter electronics 公司出版EDA工具软件。
它不仅具有其他EDA工具软件访真功能,还能访真单片机及其外围器件。
Proteus是世界上著名的EDA仿真软件,从原理图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完美设计。
电子系统设计创新实验报告题目60s计时器的设计与实现学生姓名高权黄盼徐传武易孟华学生学号************ 07 14 15专业名称电子信息工程指导教师肖永军2016年11月17 日设计要求:1、利用单片机定时器/计数器T0中断设计秒表。
2、实现基本的0-60秒计时。
3、以数码管作为显示器件,用单片机进行控制。
摘要数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。
本设计用单片机组成数字秒表,用AT89C51系列单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合硬件晶振电路,复位电路,数码管显示电路来设计计时器,将软、硬件有机地结合起来。
其中软件系统采用汇编语言编写程序,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键字:AT89C51 单片机数码管一、系统总体设计系统总体设计框图如图1所示,该系统共由时钟电路模块、复位电路模块、AT89C51单片机及数码管显示电路组成。
其中主控制器用于系统控制,可以控制电路的开关的功能,系统中AT89C51单片机作为主控元件,计数器显示电路由数码管和驱动电路组成。
图1 系统总体设计框图二、系统硬件设计(1)复位电路采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。
当单片机已在运行之中时,按下复位键也能使用使RST 持续一段时间的高电平,从而实现上电加开关复位的操作。
这不仅能使单片机复位,而且还能使单片机的外围芯片也同时复位。
当程序出现错误时,可以随时使电路复位。
复位电路如图2所示:图2 复位电路该复位电路由R9,C3和开关组成,当开关断开时,C3两端电压较低,单片机RST端则为低电平,而当开关闭合时,RST端高电平,此时单片机复位。
(2)时钟电路系统的时钟电路如图3所示,此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
MCS-51内部的高增益反相放大器外接12MHZ的晶谐以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中构成时钟电路。
单片机60秒计时器实验报告1. 引言在现代电子技术中,单片机是一种非常重要的设备,它具有小巧、功能强大、可靠性高等优点。
本实验旨在使用单片机设计一个60秒计时器,通过实验来熟悉单片机的使用和编程,同时加深对计时器原理的理解。
2. 实验目的1.学习单片机的基本使用方法;2.掌握计时器的工作原理;3.通过实验设计一个60秒计时器。
3. 实验器材和软件3.1 实验器材•单片机开发板•电脑•USB数据线3.2 实验软件•Keil C 编译器4. 实验步骤4.1 硬件连接将单片机开发板通过USB数据线连接到电脑上。
4.2 软件配置1.打开Keil C 编译器;2.新建一个工程;3.选择合适的单片机型号;4.配置编译器和调试器。
4.3 编写代码在Keil C 编译器中编写代码,实现60秒计时器的功能。
以下是代码示例:#include <reg51.h>// 定义延时函数void delay(unsigned int ms){unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 1141; j++);}void main(){unsigned int i;while (1){for (i = 0; i < 60; i++){// 计时器开始计时P1 = i;delay(1000);}// 计时器停止计时P1 = 0;}}4.4 烧录程序将编写好的代码烧录到单片机开发板中。
4.5 运行实验将单片机开发板上电,观察数码管的显示,验证60秒计时器的功能是否正常。
5. 实验结果与分析经过实验,我们成功实现了一个60秒计时器。
在实验过程中,我们观察到数码管的显示按照秒数递增,当计时达到60秒时重新归零。
这说明我们的计时器工作正常。
6. 实验总结通过本次实验,我们学习了单片机的基本使用方法,并掌握了计时器的工作原理。
通过编写代码和烧录程序,我们成功设计了一个60秒计时器。
交通与汽车工程学院课程设计说明书课程名称: 微机原理及应用课程设计课程代码: 8234570 题目: 60s倒计时年级/专业/班: 学生姓名: 学号: 开始时间: 2012 年 07 月 02 日完成时间: 2012 年 07 月 06 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总分(100)指导教师签名:年月日目录摘要.................................................................. - 2 - 1 引言................................................................. - 3 -1.1 问题的提出........................................................ - 3 -1.2任务与分析 ........................................................ - 3 -2 系统方案设计 ........................................................... -3 -2.1 系统设计方案...................................................... - 3 -2.2 系统总体框图...................................................... - 4 -3 系统硬件电路设计........................................................ -4 -3.1 AT89C51单片机..................................................... - 4 -4 系统软件设计 ........................................................... - 6 -4.1 proteus软件环境介绍 ............................................... - 6 -4.2 Protel软件环境介绍 ................................................ - 7 -4.3系统软件分析....................................................... - 8 -4.3.2倒计时显示模块选择............................................ - 8 -4.3.2控制器选择.................................................. - 10 -4.3.3 键盘选择 ................................................... - 11 -4.3.4时钟频率电路的设计........................................... - 12 -4.3.5复位电路的设计............................................... - 12 -4.4 程序流程图....................................................... - 14 - 主程序流程图............................................................ - 14 - 5 系统调试过程 .......................................................... - 17 - 结论 ................................................................. - 20 - 致谢 ................................................................. - 21 -摘要随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也越来越重要。
课程论文题目:基于Proteus的60秒倒计时时钟设计与仿真60秒倒计时时钟一丶设计要求用单片机的定时器/计数器实现60秒倒计时,用两只数码管从59开始静态示倒计时秒值。
当显示为00时,再从59开始显示倒计时。
本实验中采用定时器/计数器T1的方式1定时,定时时间为50ms,对应的时间常数为0x3cb0,对应的十进制的初值为15536,计数满50000后,即1us×50000=50ms,20次中断后,则时间为1s。
从而秒单元增1。
采用74LS47 BCD-7段数码管译码器/驱动器,即用于将BCD码转化为数码管的显示数字,从而简化了显示程序的编写。
二丶Proteus电路设计所有操作都在ISIS中进行,步骤如下。
1.从Proteus库中选取元器件(1)AT89C51:单片机;(2)RES:电阻;(3)7SEG-COM-AN-GRN:带公共端的共阳极七段绿色数码管;(4)CAP丶CAP-ELEC:电容丶电解电容;(5)CRYSTAL:晶振;(6)74LS47:四输入译码器。
2.放置元器件丶放置电源和地丶连线丶元器件属性设置丶电气检测所有操作都在ISIS中进行。
完成的电路设计如下图所示:60秒倒计时试验电路原理图三丶源程序设计通过Keil uVision3建立工程,再建立源程序文件。
参考的源程序如下:# include <reg52.h>unsigned char second,timer;void t1_init() //初始化函数{TMOD=0x10; //定时器T1方式1定时IE=0X88; //总中断允许,允许定时器T1中断TH1=0xb0; //给定时器T1装入时间常数TL1=0xb0;TR1=1; //启动定时器}void main() //主函数{t1_init(); //调用初始化函数second=59; //秒单元second初始值为59timer=0; //中断次数计数单元timer初始值为0while(1);}void t1_func() interrupt 3 //定时器T1中断函数{TH1=0x3c; //重新装入时间常数TL1=0xb0;if(timer<20){timer=timer+1; //中断次数计数单元如果小于20,则timer加1 }else if(timer==20){timer=0; //中断次数计数单元timer如果等于20,则1秒时间到if(second==0) //如果秒单元为0,则从59重新开始{second=59;}else{second=second-1; //如果秒单元不为0,则减1}}P2=second/10; //取秒单元的十位数并送P2口,送译码器译码并显示P3=second%10; //取秒单元的十位数并送P3口,送译码器译码并显示}程序说明:由于定时器的初始值为15536,因使用的时钟为12MHz,所以定时的时间为1us ×(65536—15536)=1us×50000=50ms。
stm32定时器实现60秒定时秒表#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "lcd.h"#include "usart.h"#include "timer.h"#include "beep.h"extern u32 sec;int main(void){delay_init(); //延时函数初始化NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600); //串⼝初始化为9600LED_Init();LCD_Init();BEEP_Init();TIM3_Int_Init(9999,7199);//10Khz的计数频率, 延时1s == 1000 000uswhile(1){LCD_ShowString(30,70,200,16,16,"Zhaocundang:14160310317");LCD_ShowString(30,162,200,2,16,"Second Clock:");LCD_ShowNum(150,162,sec,2,16);}}#include "timer.h"#include "led.h"#include "sys.h"#include "usart.h"#include "lcd.h"#include "beep.h"#include "delay.h"////////////////////////////////////////////////////////////////////////////////////本程序只供学习使⽤,未经作者许可,不得⽤于其它任何⽤途//ALIENTEK战舰STM32开发板//定时器驱动代码//正点原⼦@ALIENTEK//技术论坛://修改⽇期:2012/9/3//版本:V1.0//版权所有,盗版必究。
课程论文题目:基于Proteus的60秒倒计时时钟设计与仿真60秒倒计时时钟一丶设计要求用单片机的定时器/计数器实现60秒倒计时,用两只数码管从59开始静态示倒计时秒值。
当显示为00时,再从59开始显示倒计时。
本实验中采用定时器/计数器T1的方式1定时,定时时间为50ms,对应的时间常数为0x3cb0,对应的十进制的初值为15536,计数满50000后,即1us×50000=50ms,20次中断后,则时间为1s。
从而秒单元增1。
采用74LS47 BCD-7段数码管译码器/驱动器,即用于将BCD码转化为数码管的显示数字,从而简化了显示程序的编写。
二丶Proteus电路设计所有操作都在ISIS中进行,步骤如下。
1.从Proteus库中选取元器件(1)AT89C51:单片机;(2)RES:电阻;(3)7SEG-COM-AN-GRN:带公共端的共阳极七段绿色数码管;(4)CAP丶CAP-ELEC:电容丶电解电容;(5)CRYSTAL:晶振;(6)74LS47:四输入译码器。
2.放置元器件丶放置电源和地丶连线丶元器件属性设置丶电气检测所有操作都在ISIS中进行。
完成的电路设计如下图所示:60秒倒计时试验电路原理图三丶源程序设计通过Keil uVision3建立工程,再建立源程序文件。
参考的源程序如下:# include <reg52.h>unsigned char second,timer;void t1_init() //初始化函数{TMOD=0x10; //定时器T1方式1定时IE=0X88; //总中断允许,允许定时器T1中断TH1=0xb0; //给定时器T1装入时间常数TL1=0xb0;TR1=1; //启动定时器}void main() //主函数{t1_init(); //调用初始化函数second=59; //秒单元second初始值为59timer=0; //中断次数计数单元timer初始值为0while(1);}void t1_func() interrupt 3 //定时器T1中断函数{TH1=0x3c; //重新装入时间常数TL1=0xb0;if(timer<20){timer=timer+1; //中断次数计数单元如果小于20,则timer加1 }else if(timer==20){timer=0; //中断次数计数单元timer如果等于20,则1秒时间到if(second==0) //如果秒单元为0,则从59重新开始{second=59;}else{second=second-1; //如果秒单元不为0,则减1}}P2=second/10; //取秒单元的十位数并送P2口,送译码器译码并显示P3=second%10; //取秒单元的十位数并送P3口,送译码器译码并显示}程序说明:由于定时器的初始值为15536,因使用的时钟为12MHz,所以定时的时间为1us ×(65536—15536)=1us×50000=50ms。
一、实验任务
如下图所示,在A T89S51单片机的P0和P2端口分别接有两个静态共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。
二、电路原理图
图11.1
三、硬件连线
参照教程十的方法完成硬件连线(只是去掉按键部分)。
四、程序设计内容
1在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,从新秒计数。
2对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。
3在数码上显示,仍通过查表的方式完成。
4一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1秒时间为1.002秒。
DELY1S: MOV R5,#100
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
五、程序框图
图11.2 六、汇编源程序
Second EQU 30H
ORG 0
START: MOV Second,#00H
NEXT: MOV A,Second
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
LCALL DELY1S
INC Second
MOV A,Second
CJNE A,#60,NEXT
LJMP START
DELY1S: MOV R5,#100
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
七、C语言源程序
#include <A T89S53.H>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Second;
void delay1s(void)
{
unsigned char i,j,k;
for(k=100;k>0;k--)
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{
Second=0;
P0=table[Second/10];
P2=table[Second%10];
while(1)
{
delay1s();
Second++;
if(Second==60)
{
Second=0;
}
P0=table[Second/10];
P2=table[Second%10];
}
}。