51单片机 秒表设计

供稿:hz-xin.com     日期:2025-01-13
基于51单片机的电子秒表设计



// 51单片机 秒表,显示时间为0000—9999秒,启动、停止,(停止后再次启动复位)

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar bai,shi;

uint a1,a2;

sbit D1=P3^0;

sbit D2=P3^1;

sbit D3=P3^2;

sbit D4=P3^3;

sbit key=P3^5;

sbit key1=P3^7;

bit   j ;

uint  y ;

void main()

{

TMOD=0x01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

EA=1;

ET0=1;

TR0=1;

bai=0;

shi=0;

while(1)

{

if(key==0)

{

j=0;

}

if(key1==0) 

{

j=1; a2=0;

}

}

}

void timer0()interrupt 1

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

a1++;

y++;

if(a1==100) 

{

a1=0;

if(j==1)  a2++;

if(a2>=10000) a2=0; 

}

D1 = 1; D2 = 1; D3 = 1; D4 = 1;

if(y==1)

{

P1=table[a2%10000/1000];  

D4=0;

}

if(y==2)

{

P1=table[a2%1000/100];   

D3=0;

}

if(y==3)

{

P1=table[a2%100/10];   

D2=0;

}

if(y==4)

{

P1=table[a2%10];      

D1=0;

y=0;

}

}



遇到懒学生了,这个不就是一个定时器加显示吗,有什么难的,自己翻翻微机原理书就可以做 了,也就四五十行汇编语言就行了,用C就更加简单,具体的方法:用定时器定时0.2ms,定时到了就给固定的一个变量加1,然后判断这个变量是不是到了500,到了就清零然后把秒的变量加1,就是1s了,(分和时也是如此,秒为60,秒清零,分加1);主程序就只管显示和按键,按键随便用中断还是查询,我建议你查询,因为程序简单,显示程序就是查个表,自己把数码显示的断码表编好就可以了,把秒的数值查表对应显示,完了就查询按键,按键累加,值为0是没按,1是按1次,2是按2次,3是按3次,同时清零,很简单的



找我可以

设计一个单片机编程,两位的简易秒表,记时单位60-50s,用两位的数码管_百...
这是一个基于单片机的简易秒表设计,采用两位数码管显示,记时范围为60-50秒。程序的核心在于如何精确计时并在数码管上显示。程序中定义了一个全局变量sec来记录当前的秒数,并通过一个静态变量t来实现每毫秒计时的功能。具体实现上,首先初始化定时器0,设置工作模式、溢出值,并开启中断和定时器。在主...

设计一个单片机秒表,该秒表可显示0.0~59.9秒的时间
TMOD=0x10;\/\/设置定时器1为工作方式1 TH1=(65536-10000)\/256;TL1=(65536-10000)%256;EA=1;\/\/开总中断 ET1=1;\/\/开定时器1中断 TR1=1;\/\/启动定时器1 while(1){ display(bai,shi,ge);} } void exter0() interrupt 3 \/\/ 定时器1中断 { TH1=(65536-10000)\/256;TL1=(65536-10000...

设计一个单片机秒表,该秒表可显示0.0到59.9秒的时间
if (Buffer[0]==10) \/\/ 百分秒进位 { TIME+=1;Buffer[0]=0;} }

利用51单片机设计一个秒表 (一定要按要求做到0.01秒)
wait_key(); TR0 = 0;wait_key(); m[0] = m[1] = m[2] = m[3] = 0;} } void time0() interrupt 1 { counet++;counet %= 40;if(!counet) { m[0]++; m[0] %= 10;if(!m[0]) { m[1]++; m[1] %= 10;if(!m[1]) { m[2]++; m[2] %= 10;if...

你好,请教一下怎么用单片机知识、汇编语言设计一个秒表计时器...
首先,建议初学者定义三个8位寄存器,如R2、R3、R4,分别用于计分、秒和百分之一秒的计数。在程序初始化阶段,需要设置相应的定时器模式和外部中断模式,并开启中断功能。接下来,使用定时器产生一个10毫秒的中断信号,用于启动计数过程。通过外部中断控制计时器的启动和停止,可以设置一个标志位,每按键...

51单片机秒表设计,高手请进
基于89C51单片机的电子秒表设计,需要借助外部晶振和复位电路,搭配两个数码管与两个按键。系统通过按键控制秒表的启动和停止,以及设定倒计时时间(例如10秒、20秒或60秒),启动倒计时功能。用户可以通过按键选择这两种功能之一。程序代码主要分为两部分,分别对应秒表计时和倒计时功能。秒表计时部分,当按下...

基于C51单片机的秒表设计。要求:1.用2位数码管显示秒数。 2. 有启动...
4.1单片机的最小应用系统 11 4.1.1 单片机的时钟电路 12 4.1.2 复位电路和复位状态 12 4.1.3总线结构 14 4.2此设计显示电路 15 第五章程序设计 15 第六章 原理图和印制板图的设计 16 ( 一 ) 原 理 图 的 设 计 和 网 络 表 的 生 成 16 4、新建声光触控PCB图。导入生成的...

用51单片机设计一个秒表,计时范围从00:00-59:59.
4];void dischg(){disdat[3]=sec%10;disdat[2]=sec\/10;disdat[1]=min%10;disdat[0]=min\/10;}void ext0() interrupt 0{key++;key%=3;}void t0isr() interrupt 1\/\/秒计时{TH0=0x3c;TL0=0xb0;time++;if(time==20){time=0;sec++;if(sec>59){sec=0;min++;if(min>59)...

单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。

单片机怎么设计一个0-9的一位数秒表,用定时器实现 c语言程序及其注释...
void interserve(void ) interrupt 1 using 1 { TR0=0; \/\/关闭定时器T0 int_time ++; \/\/每来一次中断,中断次数int_time自加1 if(int_time==20) \/\/够20次中断,即1秒钟进行一次检测结果采样 { int_time=0; \/\/中断次数清0 second++; \/\/秒加1 if(second==60)...