单片机
返回首页

C51单片机毫秒级秒表程序

2025-09-28 来源:bilibili

最近在学c51,在网站上没怎么搜到现成的代码,b站上的视频也是没找到什么有用的,我就自己写了一个,已经通过实验是可以跑的,各位大佬对我写的有什么问题可以指点下。


#include <reg52.h>


typedef unsigned int u16;


typedef unsigned char u8;




sbit LSA=P2^2;


sbit LSB=P2^3;


sbit LSC=P2^4;//数码管的位选




u8 code table[]={0x3f,0x06,0x5b,


        0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //不带小数点的共阴极数码管段选


u8 code table1[]={0xbf,0x86,  


        0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //带小数点的供阴极数码管段选




static u16 xi;//全局变量通过1ms的定时中断


u8 timer[]={0,0,0,0,0,0,0,0};//存取时间


void Timer0Init()//中断


{


TMOD|=0X10;


TH1=0XFC;


TL1=0X18;


ET1=1;


EA=1;


TR1=1;/


}




void delayms(u8 x)   //延时函数




{  


    u8 i,j;  


    for(i=x;i>0;i--)  


        for(j=110;j>0;j--);  


}




void DigDisplay()//数码管显示函数


{


u8 i;


for(i=0;i<8;i++)


{


switch(i)


{


case(0):


LSA=0;LSB=0;LSC=0; break;


case(1):


LSA=1;LSB=0;LSC=0; break;


case(2):


LSA=0;LSB=1;LSC=0; break;


case(3):


LSA=1;LSB=1;LSC=0; break;


case(4):


LSA=0;LSB=0;LSC=1; break;


case(5):


LSA=1;LSB=0;LSC=1; break;


case(6):


LSA=0;LSB=1;LSC=1; break;


case(7):


LSA=1;LSB=1;LSC=1; break;


}


if((i==2)||(i==4)||(i==6))


{


P0=table1[timer[i]];


}


else


P0=table[timer[i]];


delayms(5); 


P0=0x00;//ÏûÒþ


}


}




void chuli()//处理函数通过定时器每1ms的中断得到一个自增数


{


if(xi=10)


{


timer[0]++;


xi =0;


}


if(timer[0]==10)


{


timer[0]=0;


timer[1]++;


}


if(timer[1]==10)


{


timer[1]=0;


timer[2]++;


}                  //ms


if(timer[2]==10)


{


timer[2]=0;


timer[3]++;


}


if(timer[3]==6)


{


timer[3]=0;


timer[4]++;


}                     //s


if(timer[4]==10)


{


timer[4]=0;


timer[5]++;


}


if(timer[5]==6)


{


timer[5]=0;


timer[6]++;


}                    //min


if(timer[6]==10)


{


timer[6]=0;


timer[7]++;



if(timer[7]==10)


{


timer[7]=0;





}




void main()//主函数


{


Timer0Init(); //定时器中断


while(1)


{


chuli();


DigDisplay();


}


}



void Timer0() interrupt 3


{




TH1=0XFC;


TL1=0X18;


xi++;


}


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外遥控音量控制

  • LM317过压保护

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章