当前位置:首页 » 编程语言 » 数字秒表c语言设计
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数字秒表c语言设计

发布时间: 2023-02-01 04:45:35

A. STC单片机的秒表设计c语言怎么写,要求第一次按下STOP开始计时,当再次按下STOP时,秒表为计

STOP按下一次K++;
if(CLEAR==0) {K=0;T=0;} 这个要写在计时器中断程序里
if(K==0)不计时
if(K==1)启动计时器开始计时 设计时时间为T
if(K==2)计数器停止计时 这三行写在主程序死循环里

再加上显示程序就可以了

B. 用C语言设计秒表程序

int main()
{ char m;
struct tm time;
time.hours=time.minutes=time.seconds=0;
printf("Now, press 's' key to begin the clock...\n");
m=getch();
if(m=='s'||m=='S')
while(1)
{
while(!kbhit()) {
update(&time);
display(&time);}
m=getch();
if(m=='s'||m=='S')break;
else{ printf("Only 's' or 'S' can be inputed!!");}
}
}
把main函数改成这样看看行不行

C. 求大神帮忙写个51单片机数字式秒表c语言编程

完全别人给写是不可能的,除非你花钱。或者正好有合适你的已有程序,网上找个相似的改改。大神都很忙的

D. 用51单片机C语言版设计秒表倒计时

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
MOV R1,#9
MOV R2,#0
MOV R3,#99
CLR 00H
CLR 01H
LOOP:
JB K1,LP01
JNB K1,$
CLR 01H
INC R3
CJNE R3,#100,LOOP0
MOV R3,#0
SJMP LOOP0
LP01:
JB K2,LP02
JNB K2,$
CLR 01H
CJNE R3,#0,LP011
MOV R3,#99
SJMP LOOP0
LP011:
DEC R3
SJMP LOOP0
LP02:
JB K3,LOOP
JNB K3,$
SETB 01H
SJMP LOOP
LOOP0:
MOV A,R3
MOV B,#10
DIV AB
MOV R0,B
MOV R1,A
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
MOV DPTR,#TABLE
T0C:
CPL 00H
JB 00H,T001
MOV P3,#0FDH
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
SJMP T002
T001:
MOV P3,#0FEH
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
T002:
JNB 01H,T0E
INC R2
MOV A,R2
CJNE A,#100,T0E
MOV R2,#0
MOV A,R0
JZ T003
DEC R0
SJMP T0E
T003:
MOV A,R1
JZ T004
DEC R1
MOV R0,#9
T0E:
RETI
T004:
CLR 01H
MOV R4,#16
T005:
CPL P0.0
LCALL DELAY
DJNZ R4,T005
RETI
DELAY:
MOV R6,#200
DLY:
MOV R7,#250
DJNZ R7,$
DJNZ R6,DLY
RET
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6FH ;56789
END

E. 秒表计时程序要求(需要用C语言实现)

这里的分段计时,我使用空格键实现的,F2比较麻烦。程序开始,输入回车开始计时,中途输入空格可以开始新的计时,最后输入回车完成计时。

文件存在程序目录下的timeout.txt

真麻烦,下次这种求助才给10分,绝对不做。。。

//////////////////////////

我的代码就是在VS2010下写的。。。怎么会无法编译。。。你要建一个空工程,然后加入C++源文件。

/////////////////////////////

请新建一个空工程,不要新建Win32Console那个工程!

#include<stdio.h>

#include<conio.h>

#include<windows.h>

#include<stdlib.h>

structtm//定义时间结构体,包括时分秒和10毫秒

{

inthours,minutes,seconds;

inthscd;

}time,tmp,total;//time用以计时显示,tmp用以存储上一阶段时间,total记总时间

intcnt;

FILE*fout;

//每次调用update函数,相当于时间过了10ms

voipdate(structtm*t)

{

(*t).hscd++;//10ms单位时间加1

cnt++;

if((*t).hscd==100)//计时满1s,进位

{

(*t).hscd=0;

(*t).seconds++;

}

if((*t).seconds==60)//计时满一分,进位

{

(*t).seconds=0;

(*t).minutes++;

}

if((*t).minutes==60)//计时满一小时,进位

{

(*t).minutes=0;

(*t).hours++;

}

if((*t).hours==24)(*t).hours=0;

//delay();

Sleep(10);//Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms

}

voiddisplay(structtm*t)

{

//此处输出计时结果, 为回车不换行,既一直在同一行更新时间

printf("%d:",(*t).hours);

printf("%d:",(*t).minutes);

printf("%d:",(*t).seconds);

printf("%d ",(*t).hscd);

//printf("Now,press'e'keytostoptheclock...");

}

voidtime_init()//初始化时间

{

time.hours=time.minutes=time.seconds=time.hscd=0;

}

voidget_total()//计算总时间

{

total.hscd=cnt%100;

cnt/=100;

total.seconds=cnt%60;

cnt/=60;

total.minutes=cnt%60;

cnt/=60;

total.hours=cnt;

}

intmain()

{

charm;

time_init();

cnt=0;

fout=fopen("timeout.txt","w");

printf("Now,pressEnterkeytobegintheclock... ");

while(1)

{

m=getch();

if(m!=' ')//读入一个输入,如果是回车,那么跳出次循环

printf("InputError! ");

else

break;

}

printf("Whilecounting,! ");

while(1)

{

if(kbhit())//此处检查是否有键盘输入

{

m=getch();

if(m==' ')//如果等于回车,那么计时结束,跳出循环

break;

elseif(m=='')//如果等于空格,显示此次计时,初始化计时器

{

tmp=time;//记录上一段计时器结果

fprintf(fout,"%d:%d:%d:%d ",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);//写入文件

time_init();

printf(" ");

}

else

{

printf("InputError! ");

}

}

update(&time);//更新计时器

display(&time);//显示计时器时间

}

tmp=time;//输出最后一次即使结果,写入文件

fprintf(fout,"%d:%d:%d:%d ",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);

get_total();//计算总的时间,显示,并写入文件

printf(" totaltime:%d:%d:%d:%d ",total.hours,total.minutes,total.seconds,total.hscd);

fprintf(fout,"totaltime:%d:%d:%d:%d ",total.hours,total.minutes,total.seconds,total.hscd);

fclose(fout);

getch();

}

F. C语言怎么写一个简易秒表

用到time.h文件
里面有个clock();函数,返回一个clock_t类型的数字,表示从程序运行开始,CPU的"滴答"数
而在time.h里有个常量CLOCKS_PER_SEC表示每秒钟有多少个"滴答".
这样,(((float)clock())/CLOCKS_PER_SEC)*1000这样的表达式就能得到从程序运行开始到现在的经过的时间.
程序的大致思路是这样的,程序按下1的时候记下当时的程序运行时间.
从这时起,每时刻捡取程序运行时间,然后减去先前的值,就可以得到已经计时的时间了.
只要让用户按下0结束计时就好了
在conio.h文件里,有个函数kbhit()是个非阻塞函数,用来检查键盘缓冲里有没有按键按下,若有,则返回1,若没有,则返回0,以此来作为判断,若返回1,则捡取按键,测试它是不是0或者1,若返回0,则表示用户没有动作,继续原来的工作,即继续计时或等待命令.

G. 用C语言编写秒表的程序(单片机控制的时钟设计)

这个程序可以实现秒的计时,按键控制开始、暂停、清零功能,更多功能自己在看清程序的基础上进行改进。
#include <reg51.H>
sbit P3_5 =P3^5;
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt;
void main(void)
{
unsigned char i,j;
TMOD=0x02;
ET0=1;
EA=1;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
keycnt=0;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
break;
}
while(P3_5==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P1=dispcode[second/10];
P2=dispcode[second%10];
}
}

H. 单片机怎么设计一个0-9的一位数秒表,用定时器实现 c语言程序及其注释

#include
#define
uchar
unsigned
char
uchar
distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar
times,num;
void
t0isr()
interrupt
1
{
TH0=(65536-50000)/256;
//重置初值
TL0=(65536-50000)%256;
times++;
if(times>=20)
//1秒是否到
{
times=0;
num--;
//1秒到后,计数值减1
P0=distab[num];
//显示
if(num==0)num=9;
//到0后再赋值为9
}
}
main()
{
TMOD=0x01;
//定时器0为16为定时
TH0=(65536-50000)/256;
//50毫米中断一次
TL0=(65536-50000)%256;
ET0=1;
EA=1;
num=9;
times=0;
TR0=1;
while(1);
}

I. C语言秒表程序

下面程序你试下,延时函数自己加一下,几毫秒到几十毫秒#include&quot;reg51.h&quot;unsignedchari,j,m,xa[4];unsignedchartable1[]={0x01,0x02,0x04,0x08};unsignedchartable2[]={0x3fev0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};main(){TMOD=0x01;TF0=1;TR0=1;IE=0x82;EX0=1;m=0;while(1){for(j=0;j&lt;4;j++){P0=table1[j];x=a[j];P1=table2[x];delay();&#47;&#47;这里加个几毫秒的延时,函数体自己写下}}}timer1()interrupt1{TH0=0x3C;TL0=0xB0;i++;if(i==20){i=0;m++;a[3]=m&#47;1000;a[2]=m&#47;100%10;a[1]=m&#47;10%10;a[0]=m%10;}}

J. 设计要求用AT89C51设计一个2位的LED数码显示作为“秒表”用C语言编写

#include<reg51.h>#define uchar unsigned charsbit la=P2^6;sbit wela=P2^7;unsigned char j,k,c1,c0,m,n=255;unsigned char pp;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(unsigned char i){ for(j=i;j>0;j--) for(k=125;k>0;k--);}void display(uchar a,uchar b){ P0=table[a]; la=1; la=0; P0=0xef; wela=1; wela=0; delay(5); P0=table[b]; la=1; la=0; P0=0xdf; wela=1; wela=0; delay(5);}void main(){ TMOD=0x01; TR0=1; TH0=(65536-46080)/256; TL0=(65536-46080)%256; //ET0=1; // EA=1; while(1) { if(TF0==1) { TF0=0; pp++; TH0=(65536-46080)/256; TL0=(65536-46080)%256; } if(pp==20) { pp=0; m++; n--; P1=n; if(m==60) { m=0; } } c0=m%10; c1=m/10; display(c1,c0); }}