用定时器设计一个最大99的两位数倒计时秒表(C语言)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用定时器设计一个最大99的两位数倒计时秒表(C语言)相关的知识,希望对你有一定的参考价值。

参考技术A #include <dos.h>
#include <stdio.h>
#include "Windows.h"
void main(void)

for (int i=99; i>0; i--)

printf("The remnants seconds:%d s.\n", i);
Sleep(1000);

本回答被提问者采纳
参考技术B ......
main()

num=99;
display(9,9); //初值显示99
TMOD=0x01;
TH0=-50000/256;
TL0=-50000%256;
EA=1;
ET0=1;
TR0=1;
while(1)

if(t==20) //1S钟减1

a=0;
num--;
a=num/10;
b=num%10;
if(num==0)
num=99;


display(a,b);


void time()interrupt 1

TH0=-50000/256;
TL0=-50000%256;
t++;

void display(uchar a,uchar b) //显示数码管

dula=1; //段选
P0=table[a];
dula=0;
P0=0xff; //消隐
wela=1; //位选
P0=0xfe;
wela=0;
delay1ms(); //延时1ms

dula=1;
P0=table[b];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay1ms();

void delay1ms()

............

主要部分都写了,剩下延时程序和一些参数定义和函数申明自己写下吧。

good luck!

用定时器实现10s秒表的计时功能,精确到小数点后一位,即能够有0.1s显示,有开始,暂停,清零的功能(C语

加一些扩展

参考技术A /* 名称:10s 的秒表
说明:首次按键计时开始,再次按键暂停,第三次按键清零。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit K1=P3^7;

uchar
i,Second_Counts,Key_Flag_Idx;
bit Key_State;
uchar
DSY_CODE[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;
//延时
void DelayMS(uint ms)

uchar t;
while(ms--) for(t=0;t<120;t++);

//处理按键事件
void Key_Event_Handle()

if(Key_State==0)

Key_Flag_Idx=(Key_Flag_Idx+1)%3;
switch(Key_Flag_Idx)

case 1: EA=1;ET0=1;TR0=1;break;
case 2: EA=0;ET0=0;TR0=0;break;
case 0: P0=0x3f;P2=0x3f;i=0;Second_Counts=0;



//主程序
void main()

P0=0x3f; //显示 00
P2=0x3f;
i=0;
Second_Counts=0;
Key_Flag_Idx=0; //按键次数(取值 0,1,2,3)
Key_State=1; //按键状态
TMOD=0x01; //定时器 0 方式 1
TH0=(65536-50000)/256; //定时器 0:15ms
TL0=(65536-50000)%256;
while(1)

if(Key_State!=K1)

DelayMS(10);
Key_State=K1;
Key_Event_Handle();



//T0 中断函数
void DSY_Refresh() interrupt 1

TH0=(65536-50000)/256; //恢复定时器 0 初值
TL0=(65536-50000)%256;
if(++i==2) //50ms*2=0.1s 转换状态

i=0;
Second_Counts++;
P0=DSY_CODE[Second_Counts/10];
P2=DSY_CODE[Second_Counts%10];
if(Second_Counts==100) Second_Counts=0; //满 100(10s)后显示 00


图片上传不了……

以上是关于用定时器设计一个最大99的两位数倒计时秒表(C语言)的主要内容,如果未能解决你的问题,请参考以下文章

用定时器实现10s秒表的计时功能,精确到小数点后一位,即能够有0.1s显示,有开始,暂停,清零的功能(C语

课程设计数字秒表设计 求高手解答。

基于51单片机的反向计时秒表protues仿真设计(源码+仿真+论文)

如何用VB6编写一个计时器(如秒表的)高分

[FPGA]Verilog 60s秒表计时器(最大可计时间长达9min)

单片机定时器秒表不跳