按键和定时器中断综合应用-秒表计时器

合集下载

C51单片机秒表计时(C语言)

C51单片机秒表计时(C语言)
if(mm==80) //考虑其它损耗,调整后约为1S
{ cout++;
mm=0;}
}
效果显示
图一(电路总图)
图二(效果显示)注:第四位显示为单位:S
程序清单
#include<reg51.h>
#include<stdio.h>
unsigned char Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
sbit P37=P3^7;
}
/*********显示程序*****************/
void display()
{
x=cout/10;//秒十位
P34=0;
P1=Tab[x]; delay();
P34=1;
y=cout-x*10; //秒各位
P35=0;
P1=Tab[y]; delay();
P1=做任何修改或编辑并不能对任何下载内容负责
南开大学滨海学院
C51嵌入式软件设计(C语言)
题目:计时秒表
功能描述:本设计实现在99秒内的秒表计时,一个按键实现开始、暂停、复位。
原理概述:P1接四位七段数码管,P3.2接一按键产生外部中断0,P3.4-P3.7控制扫描显示。计时使用定时器0产生10ms中断累计。按键不同次序决定了对应的控制功能,因为第一次按键必定为开始计时,所以第二次按键判断为暂停,依次第三次为置零。主程序调用显示程序,显示程序实时显示计时时间。
sbit P36=P3^6;
sbit P35=P3^5;
sbit P34=P3^4;
unsigned int a=0,cout=0,mm=0;x,y,p,q;

可任意启动停止的电子秒表设计

可任意启动停止的电子秒表设计

可任意启动停止的电子秒表设计1.引言本文将介绍一种设计思路,实现了可任意启动停止的电子秒表。

在日常生活中,秒表广泛应用于计时和测量领域,例如运动比赛、实验室测量等。

设计一个方便灵活的电子秒表,可以提高计时的准确性和便捷性。

2.设计原理2.1 电路结构该电子秒表设计采用基于微控制器的数字计时器。

电路结构简单,主要由微控制器、晶振、按钮和显示器组成。

按钮用于控制启动和停止,显示器用于显示计时结果。

2.2 程序设计通过编程实现秒表的启动、停止和计时功能。

通过轮询按钮状态,实现按钮功能的触发。

使用定时器中断来实现计时功能,每次中断增加计时值,并更新显示器内容。

同时,设计一个状态机控制秒表的状态切换,如初始状态、运行状态和停止状态。

3.实现步骤3.1 硬件连接将微控制器与晶振、按钮和显示器连接正常,确保电路连接正确。

3.2 程序编写编写秒表的程序,包括按钮轮询、定时器中断和状态机设计。

程序应该简洁高效,确保计时准确。

3.3 测试验证将程序下载到微控制器中,连接电源进行测试验证。

通过按键操作验证秒表的启动、停止功能是否正常。

4.应用场景该可任意启动停止的电子秒表可广泛应用于日常生活和工作中。

例如运动比赛、游戏计时、实验室测量等场景。

5.总结通过本设计,实现了一个灵活方便的电子秒表,具有可任意启动停止的功能。

通过合理的电路设计和程序编写,提高了计时的准确性和便捷性,满足了不同场景的需求。

以上是对可任意启动停止的电子秒表设计的介绍,希望能够为读者提供一些参考和启发。

gshock按键功能

gshock按键功能

gshock按键功能G-Shock按键功能是一款非常实用的功能齐全的手表。

它被广泛应用于各种户外运动和极限运动,凭借其耐冲击、防水、防磁等特点而备受青睐。

它不仅有时钟、计时器、秒表等常见功能,还具备一些独特的按键功能,下面我将为大家详细介绍一下:首先是G-Shock的调整按键功能。

通过这些按键,用户可以轻松地切换模式,调整时间和日期等基本设置。

手表上通常有四个按键,根据按键的不同组合方式可以进行不同的操作。

比如,通过同时按下两个按键,可以进入设置模式,并通过其他按键来调整时间和日期。

这使得调整时间和日期变得非常方便快捷。

其次是G-Shock的闹钟和定时器功能。

用户可以设置多个闹钟和定时器,可以在特定的时间提醒用户或计时。

通过按键,用户可以轻松地设置闹钟的时间和铃声。

同时,用户还可以在使用定时器时按下按键,以暂停或重置定时器。

这些功能对于生活和工作都非常有帮助,特别是在需要按时完成任务或者提醒自己的场合。

另外,G-Shock还具备倒计时和秒表功能。

倒计时功能可以帮助用户在特定时间内完成任务,用户可以通过按键轻松设置倒计时时间,并在倒计时结束时进行提示。

秒表功能可以对时间进行精确的计时,用户可以通过按键开始、停止和重置秒表。

这对于一些需要精确计时的运动或比赛来说尤为重要,比如游泳、跑步等运动项目。

此外,G-Shock还具备一些特殊的功能按键,如电子指南针、温度计和高度计等。

通过按键,用户可以轻松地切换这些功能,并进行相应的测量。

电子指南针可以帮助用户在户外环境中确定方向,温度计可以测量周围的气温,而高度计可以测量用户所处的海拔高度。

这些功能在登山、徒步等户外活动中非常有用,帮助用户更好地适应环境。

总而言之,G-Shock的按键功能非常丰富,能够满足用户在不同场合的需求。

无论是日常生活中的时间管理,还是户外运动中的环境适应,G-Shock都能提供便捷的操作和准确的测量。

这些按键功能使得G-Shock成为现代人不可或缺的时尚配饰和实用工具。

电子设计课程设计——电子秒表

电子设计课程设计——电子秒表

课程设计报告(学生版)2010 ~2011 学年第 2学期教学单位华南师范大学物电学院课程名称电子设计竞赛课程设计题目电子秒表指导教师焦新涛学生姓名陈辉明专业名称电子信息工程年级 2008级电子秒表1.设计目的利用单片机定时器/计数器中断设计秒表,从而实现秒、0.1秒的计时。

综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。

通过本次系统设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。

通过本次系统设计,增强自己的动手能力。

认识单片机在日常生活中的应用的广泛性,实用性。

2.设计要求本系统利用单片机的定时器/计数器定时和记数的原理,通过采用proteus仿真软件来模拟实现。

模拟利用AT89C52单片机、LED数码管以及控件来控制秒表的计数以及计数的开启/暂停/继续与复位!其中有三个数码管用来显示数据,一个数码管显示分(两位),一个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒的数码管的数字加一,并且十分之一秒显示清零重新从零计数。

秒的数码管计数从00~59,满59后进一后显示分的数码管加一,并且秒显示清零重新从零计数。

分的数码管计数从00开始。

计分数码管采用两位的数码管,当计数超过范围是所有数码管全部清零重新计数。

3.设计原理3.1主要元件:1个AT89S52芯片、2个独立键盘、3个LED数码管。

3.2工作原理:(1)电子秒表的系统设计是利用单片机的定时器功能,在周期的时间内产生中断来执行既定的程序,单片机AT89S52共有3个定时器,本系统采用了定时器1的工作模式1:此工作模式中,计数寄存器由16位组成,此时TH1、TL1都作为8位计数器使用,工作原理为:TL1计数溢出向TH1进位,TH1计数溢出时置位TF1=1,并向CPU申请中断,最大的计数值为216 =65536 (2)系统采用的晶振频率为f osc =12MHz,机器周期为T cy =1us ,定时范围为1~65536us。

4位简易秒表的设计与制作

4位简易秒表的设计与制作

4位秒表的设计与制作一、任务要求该任务要求设计并制作一个4位秒表,秒表有启动、停止和清零功能,显示时间为0到9999秒。

该任务是综合应用数码管动态显示、单片机定时计数器和中断系统设计一个具有启动、停止、清零和校时功能的,能显示0到9999秒的4位秒表。

二、设计方案提示4位秒表的设计与1位秒表设计基本相似,所不同的是4位秒表要显示4位数据,而且要有校时功能,所以它只是综合了键盘、定时器、中断系统和动态显示的应用。

多位数显示器是用数码管显示4位十进制数,如果采用数码管静态显示方法,4个数码管要占用4个I/O端口,将占用单片机的所有I/O口而无法实现其他功能,因此不能用静态显示方法实现多位数据的显示。

如何用单片机控制数码管实现多位数据的现实,而又不占用太多的I/O口呢?这就要用到--------数码管的动态显示。

4位秒表设计与1位秒表的设计在原理上是一样的,不同的是:4位秒表要显示4位数,利用前面的数码管显示方法需要4个并行I/0口,而启动停止和清零要占用2个I/O线,89C52单片机只有4个并行I/O口,因此这种显示方法不能满足4位秒表的功能。

那么,如何实现4位秒表的设计呢?这就是该任务的关键------数码管动态显示技术三、系统硬件设计参考:4位秒表电路原理图如图3-21所示,有启动停止、清零和校时电路;数码管的位选端分别接P2口的P2.0~P2.3,段选端接P0口,74LS245是驱动电路。

图3-21 4位秒表电路原理图硬件电路设计图3-17 4位数据显示器的硬件原理图图3-17是4位数据显示器的硬件原理图,数码管是共阳连接,P2口输出显示段码,74LS245驱动数码管显示,CE是片选端,低电平有效;4位数码管的公共端分别由P3.0、P3.1、P3.2、P3.3控制。

四、系统软件设计参考程序//功能:4位数码管动态显示“1234”//函数名:delay50ms//函数功能:采用定时器1、工作方式1实现50ms延时,晶振频率12MHz//形式参数:无//返回值:无void delay50ms(){ TH1=0x3c; // 置定时器初值TL1=0xb0;TR1=1; // 启动定时器1while(!TF1); // 查询计数是否溢出,即定时到,TF1=1TF1=0; // 50ms定时时间到,将定时器溢出标志位TF1清零}void main() //主函数{unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92}; //设置数字0~5字型码unsigned char i,w;TMOD=0x10; //设置定时器1工作方式1while(1) {w=0x01; //位选码初值为01Hfor(i=0;i<4;i++){P2=~w; //位选码取反后送位控制口P2口w<<=1; //位选码左移一位,选中下一位LEDP1=led[i]; //显示字型码送P1口delay50ms(); //延时50ms}}}4位秒表流程图如图3-22所示:包括主函数流程、定时器中断函数和显示函数流程图。

用汇编语言编写的秒表计时器-参考模板

用汇编语言编写的秒表计时器-参考模板

实验报告十课程名称:微机原理与接口技术指导老师:李素敏学生姓名:向春霞学号:1243013 专业:通信工程日期:6月地点:理工603实验九矩阵键盘检测一、实验目的和要求1.掌握利用单片机定时器实现定时。

2.熟悉单片机与数码管的接口技术及数码管动态显示的控制过程。

3.熟悉单片机与键盘的接口技术及按键识别过程。

4.学会如何编制含数码管显示,定时器中断及按键控制等多种功能的综合程序,体会大型程序的编制和调试技巧。

二、主要仪器设备电脑,Keil软件三、实验内容1、实验要求:要求其实现的功能如下(其中定时要求采取中断方式):(1)、用6位数码管显示秒表时间,最左边2位显示分,中间2位显示秒,最右边2位显示秒的小数位(0.00~0.99秒),秒与小数位之间要显示小数点。

(2)、两个按键:①计时/停止按键:首次按下从0开始计时,再次按下暂停计时,之后每次按下按键实现‘继续计时、暂停计时,继续计时、暂停计时……’。

(继续计时即从上次暂停时的时间开始继续计时)②复位按键:按下后全部清0,等待下次按下‘计时/停止按键’时重新开始计时。

2.设计思路:(1)、采用内部脉冲定时,实现计时,最低显示位为10ms记一次数显示一次,即0.00—0.99秒。

100个10ms是1秒,所以当低位计满100次,(当50H为10时,把50H单元清零,向51H进1)即得到秒计时,然后把51H单元清零,给52H 单元加1.当52H为10时,清零,给53H加1,当53H为6时秒计时达到60次,则向分计时,即给54H加1,再给53H清零,当54H计满10时,清零,给55H 加1,直到55H为6时给55H清零。

50H,51H放最低位计数52-53H放秒位次数54-55H放分位计数(2)、S2(p3.4)键,用扫描S2:当P3.4为低电平时,让TR0为0,即暂停计数。

当P3.4再次为低电平时继续计数,让TR0=1.(3)、S 3(p3.5)键,T1计数模式实现中断响应,复位按键S3:当F0为0时,给50-55H单元清零;然后按S2开始计数3.源程序:ORG 0000HAJMP MAINORG 000BHLJMP TIME ;定时ORG 001BHLJMP S3 ;暂停ORG 0030HMAIN:CLR AMOV 50H,A ;最低位次数MOV 51H,AMOV 52H,A ; 秒位次数MOV 53H,AMOV 54H,A ;分位计数MOV 55H,ADS1:MOV TMOD,#61H ;定时0模式1,计数1模式2MOV TH0,#0D8H ;初值定时10msMOV TL0,#0F0HMOV TH1,#0FFH ;初值,溢出中断MOV TL1,#0FFHSETB EASETB ET1SETB ET0SETB TR0SETB TR1XS: MOV R1,#50HMOV R2,#0DFHMOV R3,#2MOV R4,#4JNB P3.4,STOPAJMP NEXTSTOP:CPL TR0WAIT:JB P3.4,NEXTSJMP WAITNEXT:MOV A,@R1INC R1MOV DPTR,#DUANMOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV A,R2MOV P0,ACLR P2.7 ;位选置位MOV A,R2RR AMOV R2,ALCALL DELDJNZ R3,NEXT XSD: MOV DPTR,#XDUAN MOV A,@R1MOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV A,R2MOV P0,ACLR P2.7 ;位选置位MOV A,R2RR ALCALL DELAGA:MOV A,@R1INC R1MOV DPTR,#DUANMOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV A,R2MOV P0,ACLR P2.7 ;位选置位MOV A,R2RR AMOV R2,ALCALL DELDJNZ R4,AGALJMP XSTIME:MOV TH0,#0D8H ;定时中断MOV TL0,#0F0HINC 50HMOV A,50HCJNE A,#10,RETUNT ;50H满10给51H单元+1MOV 50H,#00HINC 51HMOV A,51HCJNE A,#10,RETUNT ;51H满10给52H单元+1MOV 51H,#00HINC 52HMOV A,52HCJNE A,#10,RETUNT ;52H满10给53H单元+1MOV 52H,#00HINC 53HMOV A,53HCJNE A,#6,RETUNT ;53H满10给54H单元+1MOV 53H,#00HINC 54HMOV A,54HCJNE A,#10,RETUNT ;54H满10给55H单元+1MOV 54H,#00HINC 55HMOV A,55HCJNE A,#6,RETUNTMOV 55H,#00HRETUNT:RETIS3: CLR TR0CLR AMOV 50H,A ;最低位次数MOV 51H,AMOV 52H,A ; 秒位次数MOV 53H,AMOV 54H,A ;分位计数MOV 55H,ARETIDEL:MOV R6,#2 ;延时1msDEL1:MOV R7,#248NOPDEL2:DJNZ R7,DEL2DJNZ R6,DEL1RETDUAN:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段选地址表XDUAN:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;带小数点的段码END---精心整理,希望对您有所帮助。

stc单片机定时器应用范例

stc单片机定时器应用范例

stc单片机定时器应用范例
STC单片机定时器是单片机中非常重要的一个模块,它可以用于各种定时、计数和延时操作。

下面我将从多个角度为你介绍一些STC单片机定时器的应用范例。

1. 延时控制,STC单片机定时器可以用于控制延时操作,比如控制LED灯的闪烁频率。

通过设置定时器的计数值和工作模式,可以实现不同的延时效果。

2. 定时采集,在一些数据采集系统中,STC单片机定时器可以用于定时采集传感器数据,比如温度、湿度等,并将数据发送到其他设备或者进行处理。

3. 蜂鸣器控制,STC单片机定时器可以用于控制蜂鸣器的鸣叫时长和频率,实现声音信号的发声控制。

4. PWM输出,定时器可以用于产生PWM信号,可以用于控制电机的转速、LED的亮度调节等。

5. 定时中断,定时器可以用于产生定时中断,实现定时任务的
执行,比如定时检测按键状态、定时发送数据等。

6. 计时应用,STC单片机定时器可以用于计时应用,比如秒表、计时器等功能的实现。

总的来说,STC单片机定时器可以应用于各种需要时间控制和
定时操作的场景,通过合理的配置和应用,可以实现丰富的功能和
应用。

希望以上范例能够帮助你更好地理解STC单片机定时器的应用。

单片机独立按键控制秒表

单片机独立按键控制秒表

单片机实训报告项目名称:专业:班级: 企业指导老师:校内指导老师:学号:姓名:地点:时间:二〇一九年月日附件3-1:进度检查及成绩评定表目录摘要 (4)1实验内容要求及目的 (5)1.1、实训内容 (5)1.2、实训要求 (5)1.3、实验目的 (5)1.4、设计方案 (5)2设计程序 (6)2.1、1s定时程序框图 (6)2.2、按键编程流程图 (6)3绘制、调试仿真图 (7)3.1 仿真软件简介 (7)3.2 仿真图 (7)3.3 仿真图调试 (7)3.4调试步骤 (8)4、绘制原理图、PCB图 (9)5硬件电路制作 (10)5.1、51单片机 (10)5.2、78M05 (10)5.3、电路板焊接 (10)5.3.1焊接目的 (10)5.3.2焊接步骤 (10)5.3.3焊接的注意事项 (10)5.4、电路板成果 (11)5.5、调试 (11)摘要这是一篇关于用51单片机定时器做秒表的实验报告。

该秒表可显示00.00~59.59秒的时间,进行相应的单片机硬件电路的设计并进行软件编程利用单片机定时器/计数器中断设计秒表,从而实现秒、分的计时。

综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。

通过本次系统设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握。

本系统利用单片机的定时器/计数器定时和记数的原理,通过采用proteus仿真软件来模拟实现。

模拟利用AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计位!其中有四位数码管用来显示数据,显示时间分、秒。

1实验内容要求及目的1.1、实训内容用AT89C51设计一个秒表,并画出仿真图、原理图以及PCB图,完成电子板的焊接和调试。

1.2、实训要求(1)用单片机AT89C51实现。

(2)以1秒为最小单位进行显示。

(3)绘制原理图、PCB图。

(4)绘制仿真图。

(3)秒表量程为00.00-59.59秒,用LED显示。

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

& INT1按键中断INT0#
和T0中断的综合应用
‐简易秒表计时器
范例1:汇编源代码
范例2:C51源代码
P7 EQU 0F8H ORG 0100H
#60H P6 EQU 0E8H
D1 EQU 0FEH //数码管个位EQU 0FDH MAIN: MOV SP ,#60H //设置堆栈
MOV P2,#0FFH //关P2口LED MOV TMOD,#00H D2 //十位D3 EQU 0FBH // 百位
VARX DATA 30H //计数变量DATA 31H MOV TH0,#4BH
MOV TL0,#0FDH //设置T0MOV R7,#20MOV VARX,#0 //置计数变量0DIG1 //BCD 个位DIG2 DATA 32H //BCD 十位DIG3 DATA 33H //BCD ,SETB ET0SETB EX0SETB IT0//百位ORG 0000H LJMP MAIN SETB EX1SETB IT1
SETB EA //允许相关中断
ORG 0003H
LJMP KY1INT //KY1中断ORG 000BH
LJMP T0INT //T0中断ORG 0013H
KY2INT //KY2LJMP 中断
CONV:
MOV A,VARX //读计数变量MOV A,DIG2 //读十位BCD MOV B,#100DIV AB DIG3A MOVC A,@A+DPTR MOV P7,A P6#D2//MOV DIG3,A MOV A,B MOV B,#10MOV P6,#D2 查表送显示ACALL DELAY //扫描延时A,DIG3//DIV AB
MOV DIG2,A DIG1B MOV 读百位BCD MOVC A,@A+DPTR MOV P7,A
MOV DIG1,B //转换为3位BCD DISP: MOV A,DIG1 //读个位BCD
MOV DPTR,#SEGTBL MOV P6,#D3 //查表送显示ACALL DELAY
CONV //MOVC A,@A+DPTR MOV P7,A
P6,#D1//LJMP 返回读取VARX
MOV 查表送显示
ACALL DELAY //扫描延时
•//软件延时程序段•R1#100T0INT: DJNZ R7,BACK
R7#20DELAY: MOV R1,#100•DL1: MOV R2,#10R2DL2
MOV R7,#20CPL P2.0INC VARX •DL2: DJNZ R2,DL2•DJNZ R1,DL1BACK: RETI
//•RET
KY1INT:
共阳型数码管字符//0‐9的的段码表
ORG 0200H
0C0H 0F9H 0A4H 0B0H
JNB TR0,RUNT0 //若未启动TR0,则启动计数
SEGTBL: DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H,80H,90H
CLR TR0 //否则停止计数RETI
RUNT0: SETB TR0
RETI
KY2INT: MOV VARX,#0 //将VARX 清零
RETI
范例2:C51的程序实现
•#include "stc15.h"
•#include intrins.h
"intrins h"
•typedef unsigned char u8;
•u8 varx;;
•#define D1 0xFE
•#define D2 0xFD
•#define D3 0xFB
•u8 dig1,dig2,dig3;
•u8 count;
8t
•void dly20ms();
•const u8 code Seg8[10] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};•u8 *ptr;
•void main()
•{
•P2 = 0xFF;•varx= 0;
•ptr= Seg8;•count = 20;•TMOD = 0x00;
TH0 19453/256;•=
•TL0 = 19453%256;•ET0 = 1;;
•EX0 = 1;
•IT0 = 1;;
•EX1 = 1;
•IT1 = 1;
•EA = 1;
•while(1)
•{
•dig3 = varx/100;•dig2 = (varx%100)/10;•dig1 = (varx%100)%10;•P7 = *(ptr+dig1);
•P6 = D1;
•dly20ms();
•P7 = *(ptr+dig2);
•P6 = D2;
•dly20ms();
•=*(ptr+dig3);
P7 (ptr dig3);
•P6 = D3;
•dly20ms();
•}

•}
•void ky1int() interrupt 0•{
•if(TR0 == 0 ) TR0 = 1;•else TR0 =0;
•}
•void ky2int() interrupt 2•0;}
{ varx=
•void T0int() interrupt 1•{
()
•if(count‐‐!=0) return;•else
•{
•P20 ^= 1;
•count = 20;•varx++;
•}
•}
•void dly20ms()
•{ int i;
•i= 2000;;
•while(i‐‐!=0) _nop_();
•}
如果不了解单片机内部存储器结构和硬件知识,缺如果不了解单片机内部存储器结构和硬件知识缺乏对程序执行流程和中断原理的理解,想完整编写这样一段C程序实现秒表计时器功能,也并不容易。

程序实现秒表计时器功能也并不容易这就是为什么一开始要花些时间和力气深入学习单片机内部硬件原理的原因。

片机内部硬件原理的原因。

相关文档
最新文档