单片机:麻烦写个程序,用C语言编写,实现秒表功能,如图

单片机:麻烦写个程序,用C语言编写,实现秒表功能,如图,第1张

#include <reg51.H>

#define uc unsigned char

uc code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} //共阴极0到9

uc ms50,s//定义变量:50毫秒,秒

void timer0(void) interrupt 1 using 0

{

TH0 = 0x3c//定时器赋予初值,定时0.05秒

TL0 = 0xb0

ms50++

if(ms50==20)/嫌派蠢/定时1秒

{

ms50=0s++

P0=table[s/10]//分解出十位芹陪

P2=table[s%10]//分解出个?

}

if(s==60)s=0//超过1分钟,恢复为0秒

}

void main(void)

{

ms50=0

s=0

TMOD = 1//0000 0001,也就是T0(低四位有效),定时(第三位),方式1(最低位01)

TH0 = 0x3c//定时器赋予初值,定时0.05秒

TL0 = 0xb0

EA = 1 //总中断允许

ET0 = 1//定时中断0,允许羡碰

TR0 = 1//启动定时器

while(1)

}

这个行闹程序可以实现秒的计时,按键控制开始、暂停、清零功能,更多功能自己在贺兆看清程序的基档拍罩础上进行改进。

#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=20i>0i--)

for(j=248j>0j--)

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]

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12510807.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存