您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机的4位数码管秒表
原理图:源程序:/*************************************************************标题:定时器中断精确到00.01的秒表效果:能清零重新开始,暂停,继续计时,能精确到0.01秒作者:皖绩小挺说明:使用12M晶振,四位数码管,3个按键****************************************************************/#includereg52.h#defineuintunsignedint#defineucharunsignedcharuinttemp,tt,qian,bai,shi,ge;sbitsmg_q=P1^0;sbitsmg_b=P1^1;sbitsmg_s=P1^2;sbitsmg_g=P1^3;sbitkey1=P3^7;sbitkey2=P3^6;sbitkey3=P3^5;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharcodetable1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点voidkeyscan();voiddisplay(uintshi,uintge);voiddelay(uintz);voidinit();/**************************************************************主函数******************************************************************/voidmain(){init();//初始化子程序while(1){if(tt==1){tt=0;temp++;if(temp==10000){temp=0;}qian=temp/1000;bai=temp%1000/100;shi=temp%100/10;ge=temp%10;}keyscan();display(shi,ge);}}/*********************************************************************延时***********************************************************************/voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}/*********************************************************************按键控制***********************************************************************/voidkeyscan(){if(key1==0)//清零并重新开始计时{temp=0;TR0=1;}if(key2==0)//暂停计时{TR0=0;}if(key3==0)//继续计时{TR0=1;}}/*********************************************************************显示***********************************************************************/voiddisplay(uintshi,uintge){smg_q=0;P0=table[qian];delay(1);smg_q=1;P0=0xff;smg_b=0;P0=table1[bai];delay(1);smg_b=1;P0=0xff;smg_s=0;P0=table[shi];delay(1);smg_s=1;P0=0xff;smg_g=0;P0=table[ge];delay(1);smg_g=1;P0=0xff;}/*********************************************************************初始化***********************************************************************/voidinit(){smg_q=1;smg_b=1;smg_s=1;smg_g=1;temp=0;TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;EA=1;ET0=1;TR0=1;}/*********************************************************************中断***********************************************************************/voidt0()interrupt1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;tt++;}
本文标题:基于51单片机的4位数码管秒表
链接地址:https://www.777doc.com/doc-5895073 .html