51单片机 简易秒表计时器(100秒) 小数点后四位

时间:2025-03-07 14:58:07
  • #include <reg52.h>
  • #define time_delay 100 //time-delay = 延时
  • typedef unsigned char u8;
  • typedef unsigned int u16;
  • u8 Time; //Time = 时间
  • u16 Millisecond,Second=0; //Millisecond = 毫秒 Second =
  • u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  • u8 code smgwei[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};
  • sbit key=P3^1;
  • void delay(u16 i)
  • {
  • while(i--);
  • }
  • void Time0init()
  • {
  • TMOD=0x01;
  • TH0=(65536-50)/256;
  • TL0=(65536-50)%256;
  • ET0=1;
  • EA=1;
  • TR0=1;
  • }
  • void display()
  • {
  • //显示毫秒部分
  • P2=smgwei[0];
  • P0=smgduan[Millisecond%10];
  • delay(time_delay);
  • P0=0x00;
  • P2=smgwei[1];
  • P0=smgduan[Millisecond/10%10];
  • delay(time_delay);
  • P0=0x00;
  • P2=smgwei[2];
  • P0=smgduan[Millisecond/100%10];
  • delay(time_delay);
  • P0=0x00;
  • P2=smgwei[3];
  • P0=smgduan[Millisecond/1000%10];
  • delay(time_delay);
  • P0=0x00;
  • P2=smgwei[4];
  • P0=0x40;
  • delay(time_delay);
  • P0=0x00;
  • //显示秒部分
  • P2=smgwei[5];
  • P0=smgduan[Second%10];
  • delay(time_delay);
  • P0=0x00;
  • P2=smgwei[6];
  • P0=smgduan[Second/10%10];
  • delay(time_delay);
  • P0=0x00;
  • P2=smgwei[7];
  • P0=smgduan[Second/100%10];
  • delay(time_delay);
  • P0=0x00;
  • }
  • void main()
  • {
  • Time0init();
  • while(1)
  • {
  • display();
  • }
  • }
  • void Time0() interrupt 1
  • {
  • TH0=(65536-50)/256;
  • TL0=(65536-50)%256;
  • Time++;
  • {
  • if(Time==2)
  • {
  • Millisecond++;
  • Time=0;
  • }
  • if(Millisecond>=10000)
  • {
  • Millisecond=0;
  • Second++;
  • }
  • if(Second==100)
  • {
  • Second=0;
  • }
  • }
  • }