求助:求0~99秒倒计时功能的秒表程序和电路图

作者&投稿:宫阎 (若有异议请与网页底部的电邮联系)
数码管秒表 00-99计时 求电路图 和程序~

#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
uint a,b,ss,sg,gs,gg;
sbit P3_0=P3^0;
void delay(uint z)
{
uint x,y;
for (x=z;x>0;x--)
for (y=250;y>0;y--);
}
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
while(1)
{
ss=b/10;
sg=b%10;

gs=a/10;
gg=a%10;

P0=0;
P0=table[gg];
P2=0xfe;
delay(5);
P2=0xff;

P0=table[gs];
P2=0xfd;
delay(5);
P2=0xff;

P0=0;
P0=table[sg];
P2=0xf7;
delay(5);
P2=0xff;

P0=table[ss];
P2=0xef;
delay(5);
P2=0xff;

P0=0x40;
P2=0xfb;
delay(5);
P2=0xff;
if(P3_0==0)
{
delay(5);
if(P3_0==0)
{
TR0=1;
}
while(P3_0!=0);
}
}
}void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
a++;
if(a==16)
{
a=0;
b++;
if(b==100)
b=0;
}
}

00--99的秒表电路。你是要单片机做的还是要数字电路74LS161做的。
S_SET BIT P1.0 ;数字钟秒控制位
M_SET BIT P1.1 ;分钟控制位
H_SET BIT P1.2 ;小时控制位
LED_BIT_1 EQU 30H ; 存放8位数码管的段码
LED_BIT_2 EQU 31H
LED_BIT_3 EQU 32H
LED_BIT_4 EQU 33H
LED_BIT_5 EQU 34H
LED_BIT_6 EQU 35H
LED_BIT_7 EQU 36H
LED_BIT_8 EQU 37H ;


SECOND EQU 60H
MINUTE EQU 61H
HOUR EQU 62H
TCNT EQU 63H
ORG 00H ;初始化程序 ,设置初始密码
SJMP START
ORG 0BH
LJMP INT_T0
START: mov p3,00h
MOV DPTR,#TABLE
MOV HOUR,#0
MOV MINUTE,#0
MOV SECOND,#0
MOV TCNT,#0
MOV TMOD,#01H
MOV TH0,#03ch ;定时50毫秒
MOV TL0,#03ch
MOV IE,#082H
SETB TR0

MOV LED_BIT_1,#00H ;段码存储区清0
MOV LED_BIT_2,#00H
MOV LED_BIT_3,#00H
MOV LED_BIT_4,#00H
MOV LED_BIT_5,#00H
MOV LED_BIT_6,#00H
MOV LED_BIT_7,#79H
MOV LED_BIT_8,#73H
mov r0,11h
mov r1,11h
mov r2,11h

MOV TMOD,#01H
MOV TH0,#0fdh
MOV TL0,#0fdh
MOV IE,#82H
LJMP A1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

A01: LCALL ds3
JNB S_SET,S01
JNB M_SET,S02
JNB H_SET,S03 ;调用时间显示
JB P1.4, A01

ljmp a1

S01: LCALL DLY_S ;去抖动
JB p1.0,A01
INC r0 ;秒值加1
MOV A, r0
CJNE A,#60,J000 ;判断是否加到60秒
MOV r0,#0
LJMP K001
S02: LCALL DLY_S
JB M_SET,A01
K001: INC r1 ;分钟值加1
MOV A, r1
CJNE A,#60,J001 ;判断是否加到60分
MOV r1,#0
LJMP K002
S03: LCALL DLY_S
JB H_SET,A01
K002: INC r2 ;小时值加1
MOV A,r2
CJNE A,#24,J002 ;判断是否加到24小时
MOV r0,#0
MOV r1,#0
MOV r2,#0
LJMP A01
J000: JB p1.0,A01 ;等待按键抬起
LCALL ds3
SJMP J000
J001: JB M_SET,A01
LCALL ds3
SJMP J001
J002: JB H_SET,A01
LCALL ds3
SJMP J002



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

A1:
LCALL DISPLAY
;调用时间显示
clr p3.0
JNB S_SET,S1
JNB M_SET,S2
JNB H_SET,S3
JNB P1.4 ,a01
mov a,r2
cjne a, HOUR,A1111
mov a ,r1
cjne a, MINUTE,A1111
setb p3.0

A1111: JB P1.3, A1
LCALL A0


LJMP A1
S1: LCALL DLY_S ;去抖动
JB S_SET,A1
INC SECOND ;秒值加1
MOV A, SECOND
CJNE A,#60,J00 ;判断是否加到60秒
MOV SECOND,#0
LJMP K01
S2: LCALL DLY_S
JB M_SET,A1
K01: INC MINUTE ;分钟值加1
MOV A, MINUTE
CJNE A,#60,J01 ;判断是否加到60分
MOV MINUTE,#0
LJMP K02
S3: LCALL DLY_S
JB H_SET,A1
K02: INC HOUR ;小时值加1
MOV A,HOUR
CJNE A,#24,J02 ;判断是否加到24小时
MOV HOUR,#0
MOV MINUTE,#0
MOV SECOND,#0
LJMP A1
J00: JB S_SET,A1 ;等待按键抬起
LCALL DISPLAY
SJMP J00
J01: JB M_SET,A1
LCALL DISPLAY
SJMP J01
J02: JB H_SET,A1
LCALL DISPLAY
SJMP J02

INT_T0: MOV TH0,#3ch ;定时器中断服务程序
MOV TL0,#3ch ;对秒,分钟和小时的计数
INC TCNT
MOV A,TCNT
CJNE A,#20,RETUNE ;计时1秒
INC SECOND
MOV TCNT,#0
MOV A,SECOND
CJNE A,#60,RETUNE
INC MINUTE
MOV SECOND,#0
MOV A,MINUTE
CJNE A,#60,RETUNE
INC HOUR
MOV MINUTE,#0
MOV A,HOUR
CJNE A,#24,RETUNE
MOV HOUR,#0
MOV MINUTE,#0
MOV SECOND,#0
MOV TCNT,#0
RETUNE: RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DIS3闹铃设置子程序
DS3: MOV A,r0 ;显示毫秒
MOV B,#10
DIV AB
CLR P2.6
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.6
MOV A,B
CLR P2.7
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.7
CLR P2.5
MOV P0,#40H ;显示分隔符
LCALL DLY_S
SETB P2.5
MOV A,r1 ;显示分钟
MOV B,#10
DIV AB
CLR P2.3
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.3
MOV A,B
CLR P2.4
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.4
CLR P2.2
MOV P0,#40H ;显示分隔符
LCALL DLY_S
SETB P2.2
MOV A,r2 ;显示shi
MOV B,#10
DIV AB
CLR P2.0
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.0
MOV A,B
CLR P2.1
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DIS3
DISPLAY: ;显示时间控制子程序
MOV A,SECOND ;显示秒
MOV B,#10
DIV AB
CLR P2.6
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.6
MOV A,B
CLR P2.7
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.7
CLR P2.5
MOV P0,#40H ;显示分隔符
LCALL DLY_S
SETB P2.5
MOV A,MINUTE ;显示分钟
MOV B,#10
DIV AB
CLR P2.3
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.3
MOV A,B
CLR P2.4
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.4
CLR P2.2
MOV P0,#40H ;显示分隔符
LCALL DLY_S
SETB P2.2
MOV A,HOUR ;显示小时
MOV B,#10
DIV AB
CLR P2.0
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.0
MOV A,B
CLR P2.1
MOVC A,@A+DPTR
MOV P0,A
LCALL DLY_S
SETB P2.1
&nbs

用89s51吧,89c51落伍了

466301158加我。


求基于C51的99秒99倒计时牌程序,要求注释详细,附电路图。
AJMP START ORG 000BH AJMP T0_INT START:MOV SP, #60H MOV TMOD, #01H MOV TH0, #0B1H ;B1E0H = 45536 MOV TL0, #0E0H MOV IE, #82H SETB TR0 MOV R2, #50 MOV R3, #0 ;--- MAIN:LCALL DISPLAY SJMP MAIN ;--- T0_INT:MOV TH0, #0B1H ;B1...

求助:求0~99秒倒计时功能的秒表程序和电路图
用89s51吧,89c51落伍了

用数字电路做0-99分钟倒计时计时器,问题是到0的时候没有终止,而是到了...
把到0时的使能端设置为不使能状态。

99秒倒计时电路图
P0=tab[dl];p21=1;delay(2);p21=0;} void timer0(void) interrupt 1 \/\/定时器中断 { uchar t;

『求助』用51单片机定时器实现99秒表倒计时
K1 EQU P1.0K2 EQU P1.1K3 EQU P1.2ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB ET0SETB TR0 SETB EAMOV R0,#9MOV R1,#9MOV R2,#0MOV R3,#99CLR 00HCLR 01HLOOP:JB...

单片机编程制作电子秒表能显示分(0-99),秒(0-59)
、位选(决定多位数码管中哪一位显示)、段选(决定数码管显示的数字),另外还有锁存器(教材P36,可通过控制锁存端来改变数据输出的状态)。上周单片机实验课的内容是编一个秒表,在4位数码管中分别显示分和秒还有分秒,即最多可显示“9:59.9”。这里我用两个键实现了秒表的启动\/暂停和清零功能,...

设计一个智力竞赛抢答器可同时供8人参加比赛,他们的编号分别是0、1...
电路具有回答问题时间控制功能。要求回答问题的时间小于等于100秒(显示为0~99),时间显示采用倒计时方式。当达到限定时间时,发出声响以示警告。如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00。 展开 ...

如何用单片机做一个简单的倒计时器
51单片机实现数码管99秒倒计时,其实很简单,就是使用定时器中断来实现。目的就是学习怎样用单片机实现倒计时,从而实现一些延时控制类的东西,99秒只是一个例子,你完全可以做出任意倒计时如10秒倒计时程序。定时器定时时间计算公式:初值X=M(最大计时)-计数值。初值,换算成十六进制,高位给TH0,低位...

写程序,99秒倒计时,按下按键停止,流水灯开始点亮,再次按下后流水灯...
你可以简单地认为单片机只能输出5v或者0v的电压 分别对应1和0,那么led灯的另一端接地或者接5v,如果你 的单片机输出5v接到led灯,led灯另一端接地 , 那就产生电压了,电路就导通了,灯就亮了 ,反之也是这个道理。时间方面可以写大致的延时,或者用定时器,这样就比较精确了,你学会了这个就可以说...

单片机99秒倒计时
display(0,hour\/10);display(1,hour%10);\/\/display(2,3);display(3,min\/10);display(4,min%10);\/\/display(5,6);display(6,sec\/10);display(7,sec%10);flag=0;} } } void display(uchar digit,uchar num){ P2=0x00;P1=n[num];P2=m[digit];delay(1);} void initial(void){ ...

无锡市19674525692: 51单片机0~90秒表的汇编程序 -
酆熊息斯: 这个图看不清,给你一个我做过的0~99秒秒表的程序吧.ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB ET0 SETB EA MOV R0,#...

无锡市19674525692: 小弟初学单片机技术,想用AT89S52单片机来做一个秒表,要求可以实现0到99.99的计时.需要哪 -
酆熊息斯: 系统主要是最小系统和显示电路组成.最小系统网上很多.显示就用引脚接数码管好了.静态显示用373芯片.138进行片选.难点主要是计时时间,0.01秒光靠定时器不行,要加循环计数.

无锡市19674525692: 有谁可以用c语言编一个 0到59秒循环的秒表的程序 -
酆熊息斯: #include <windows.h>#include <stdio.h>#include<stdlib.h> int main() { A_group:int i = 0; while (1) { system("CLS"); printf("%02d\n", i++); Sleep(1000); if (i==60) { goto A_group; } } system("pause"); } 纯手打 希望采纳,程序已测试可直接用!

无锡市19674525692: 数码管秒表 00 - 99计时 求电路图 和程序
酆熊息斯: #include <reg52.h>#define uchar unsigned char #define uint unsigned int uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint a,b,ss,sg,gs,gg; sbit P3_0=P3^0; void delay(uint z) { uint x,y; for (x=z;x>0;x--) for (y=250;y>0;y--); ...

无锡市19674525692: 用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一.另设计一个“开始”按键和一 -
酆熊息斯: 因为分数低,只好给你说我的思路 因为是秒表,当然用定时器,我常用的是定时器0,工作方式1 TMOD=0X01;给一个溢满值3CB020次为一秒 if(counter> 19) {second++;conunter= 0;} 而后,动态显示,懂吧,用调用延迟 然后快加,每10ms快速加1,关了定时器0,换定时器1?至于暂停,也是一个中断吧,保持现状,就是变量值不改变,而后当然调用显示函数.再按下按键跳出循环.不知道行不行,参考而已

无锡市19674525692: 求大神做一个单片机汇编程序max7219的秒表程序0~99每秒加一 有图 -
酆熊息斯: 你好! 7219 驱动两位数码管完成 99 秒计时,通过按键控制开始和复位

无锡市19674525692: 51单片机编程秒表问题 -
酆熊息斯: 循环过程大致如下 void main() { //假设AB按钮为导通低电平 int num=0; int flag=1; while(1)//主循环 等待A按下 { while(flag)//等待A按下 { if(A连接的IO口为低电平) //A按下 { flag=0; } } if(B连接的IO口为低电平) //B按下 { flag=1; } if(num<100) { 显示num值; } else { num=0; 显示num值; } num++; } }

无锡市19674525692: 夜景显示秒表C程序 -
酆熊息斯: //此程序实现计时秒表功能,时钟显示范围00.00~99.99 秒,分辨度:0.01 秒#include "p18f458.h" unsigned char s[4]; //定义0.01 秒、0.1 秒、1 秒、10 秒计时器 unsigned char k,data,sreg; unsigned int i; const table[11]={0xc0 ,0xf9,0xa4,0xb0,...

无锡市19674525692: 『求助』用51单片机定时器实现99秒表倒计时功能 -
酆熊息斯: K1 EQU P1.0 K2 EQU P1.1 K3 EQU P1.2 ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB ET0 SETB TR0 SETB EA MOV R0,#9 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网