這個單片機小制作的功能很全:有比賽剩余時間 加分減分和歸零,交換場地,暫停開始按鈕,代碼在附件,仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
QQ截圖20181118154138.jpg (214.12 KB, 下載次數: 36)
下載附件
仿真圖
2018-11-18 15:41 上傳
0.png (10.37 KB, 下載次數: 47)
下載附件
2018-11-18 17:35 上傳
單片機源程序如下:
- #include <reg51.h>
- #define DUAN P0
- #define WEI P2
- #define uchar unsigned char
- #define uint unsigned int
-
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- sbit key0=P3^0; //歸零
- sbit key1=P3^1; // 歸12
- sbit key2=P3^2; //分鐘加一
- sbit key3=P3^3; //暫停/開始
- sbit beep=P3^7;
- uint addnum;
- uchar miaonum,fennum;
- uchar b;
-
- void delay(unsigned int num) //時間函數
- {
- unsigned i,j;
- for(i=num;i>0;i--)
- for(j=120;j>0;j--);
- }
- void main()
- {
- TMOD=0x02;
- TL0=TH0=6;
- ET0=1;
- EA=1;
- TR0=0;
- beep=0;
- b=10;
- fennum=12;
- miaonum=0;
- while(1)
- {
- P2=0xff;
- WEI=0xef;
- DUAN=table[miaonum/10];
- delay(5);
- P2=0xff;
- WEI=0xdf;
- DUAN=table[miaonum%10];
- delay(5);
- P2=0xff;
- WEI=0Xf7;
- DUAN=0X40;
- delay(5);
- P2=0xff;
- WEI=0xfd;
- DUAN=table[fennum/10];
- delay(5);
- P2=0xff;
- WEI=0xfb;
- DUAN=table[fennum%10];
- delay(5);
-
- if(!key0) //清零
- {
- delay(10);
- if(!key0)
- {
- fennum=0;
- miaonum=0;
- }
- while(!key0);
- }
-
- if(!key1) //分鐘歸10
- {
- delay(10);
- if(!key1)
- {
- fennum=10;
- }
- while(!key1);
- }
-
- if(!key2) //分鐘加1
- {
- delay(10);
- if(!key2)
- {
- fennum++;
- }
- while(!key2);
- }
-
-
- if(!key3) //暫停/開始
- {
- delay(10);
- if(!key3)
- {
- TR0=~TR0;
- while(!key3);
- }
- }
- }
- }
-
-
- void timer0() interrupt 1
- {
-
- addnum++;
- if(addnum==400)
- {
- if(fennum!=0)
- {
- if(miaonum==0)
-
- miaonum=59,fennum--,addnum=0;
- else
- miaonum--;
- addnum=0;
- }
-
- if(fennum==0)
- {
- if(miaonum==0)
-
- miaonum=0;
-
- else
- miaonum--;
- addnum=0;
- }
- if(fennum==0)
- {
- if(miaonum==0)
- {
-
- if(b==0)
-
- beep=0;
- else
- beep=1,b--;
-
- }
- }
-
- }
- }
-
復制代碼
所有資料51hei提供下載:
簡易籃球計分器.zip
(29.22 KB, 下載次數: 74)
2018-11-18 15:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|