单片机的多功能秒表对于初学者进阶来说,是个不错的项目
下面是仿真原理图:
硬件仿真电路
带有有开始,停止,加一按钮,还有清零功能等等
单片机源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code smgdm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
- 0x07,0x7f,0x6f};
- uchar c1=0,miao=0,ms=0,mg=0,fen,fens=0,feng=0,k1=0;
- uchar temp,num;
- sbit fmq=P2^6;
- sbit led=P2^5;
- sbit P03=P0^3;
- void delay(uint t)
- {
- uint x,y;
- for(x=0;x<t;x++)
- for(y=0;y<112;y++) ;
- }
- uchar jsm()
- {
- uchar key;
- if((P2&0X1F)==0X1F) return(0xff);
- delay(10);
- if((P2&0X1F)==0X1F) return(0xff);
- key=(P2&0X1F);
- while(((P2&0X1F)!=0X1F)) ;
- return(key);
- }
- void xs(uchar mg,ms,feng,fens)
- {
- P3=0XFE;
- P1=smgdm[fens];
- delay(10);
- P3=0XFD;
- P1=smgdm[feng];
- delay(10);
- P3=0XFB;
- P1=smgdm[ms];
- delay(10);
- P3=0XF7;
- P1=smgdm[mg];
- delay(10);
- }
- void main()
- {
- TMOD=0X01;
- TH0=0X3C;
- TL0=0XB0;
- TR0=0;
- ET0=1;
- EA=1;
- P0=0X00;
- led=1;
- fmq=1;
- while(1)
- {
-
- k1=jsm();
- switch(k1)
- {
- case 0x1e:miao++;break;
- case 0x1d:fen++;break;
- case 0x1b:TR0=0;break;
- case 0x17:TR0=1;break;
- case 0x0f:miao=0;fen=0;break;
- }
- xs( mg,ms,feng,fens);
-
- }
-
- }
- void t0zd() interrupt 1
- {
- TH0=0X3C;
- TL0=0XB0;
- c1++;
- if(c1==20)
- {
- c1=0;
- P03=~P03;
- miao++;
- if(miao==60)
- {
- miao=0;
- led=0;
- delay(1000);
- fmq=0;
- fen++;
- if(fen==60)
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
基于单片机多功能秒表.zip
(70.71 KB, 下载次数: 52)
|