|
標(biāo)題:?jiǎn)纹瑱C(jī)秒表實(shí)驗(yàn)
內(nèi)容:這是前兩個(gè)星期做的秒表的文件,
單片機(jī)c語言版,里面的功能可以實(shí)現(xiàn)三分鐘的計(jì)時(shí),
有三個(gè)按鍵,一個(gè)按鍵按下,可以停止計(jì)數(shù),
一個(gè)按下可以開始計(jì)數(shù),一個(gè)按下可以復(fù)位。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
圖片.png (94.68 KB, 下載次數(shù): 36)
下載附件
2018-11-26 09:56 上傳
0.png (15.67 KB, 下載次數(shù): 37)
下載附件
2018-11-26 15:17 上傳
單片機(jī)源程序如下:
- #include"reg52.h"
- #define uchar unsigned char
- sbit s1=P3^2;
- sbit s2=P3^3;
- sbit s3=P3^4;
- uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar time=0; //記錄中斷次數(shù)
- uchar second;
- void delay()
- { uchar i,j;
- for(i=0;i<20;i++)
- for(j=0;j<20;j++);}
- main()
- {TMOD=0x01;
- ET0=1;
- EA=1;
- second=0;
- while(1)
- { P2=0xfe;
- P0=seg[second/100];
- delay();
- P2=0xfd;
- P0=seg[second/10%10];
- delay();
- P2=0xfb;
- P0=seg[second%10];
- delay();
- if(s1==0){TH0=0xee;TL0=0x00;TR0=1;}
- if(s2==0)TR0=0;
- if(s3==0){second=0;
- P2=0xfe; //選擇第一個(gè)數(shù)碼管點(diǎn)亮
- P0=seg[second/100]; //顯示秒位0
- delay();
- P2=0xfd; //選擇第二個(gè)數(shù)碼管點(diǎn)亮
- P0=seg[second/10%10]; //顯示0.1秒位0
- delay();
- P2=0xfb; //選擇第三個(gè)數(shù)碼管點(diǎn)亮
- P0=seg[second%10]; //顯示0.01秒位0
- delay();
- }
- while(P3&0x20==0x00);//消除抖動(dòng)
- while(P3&0x10==0x00);//消除抖動(dòng)
- while(P3&0x08==0x00);}}//消除抖動(dòng)
- void t0() interrupt 1 using 1
- {
- TH0=0xee;
- TL0=0x00;
- time++;
- if(time==200) //中斷200次,共計(jì)時(shí)200*5ms=1000ms=1s
- {time=0;
- second++;
- P2=0xfe; //選擇第一個(gè)數(shù)碼管點(diǎn)亮
- P0=seg[second/100]; //顯示秒位0
- delay();
- P2=0xfd; //選擇第二個(gè)數(shù)碼管點(diǎn)亮
- P0=seg[second/10%10]; //顯示0.1秒位0
- delay();
- P2=0xfb; //選擇第三個(gè)數(shù)碼管點(diǎn)亮
- P0=seg[second%10]; //顯示0.01秒位0
- delay();
- }
- if(second==180)
- {TR0=0;
- second=180; }
- else TR0=1;}
復(fù)制代碼
所有資料51hei提供下載:
秒表.zip
(60.14 KB, 下載次數(shù): 35)
2018-11-26 09:52 上傳
點(diǎn)擊文件名下載附件
壓縮的 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|