|
這是我花了好久時(shí)間做的一個(gè)電子時(shí)鐘,沒(méi)有按照老師的要求去做,而是按照我自己的思路做的。完全是自己的原創(chuàng),沒(méi)有抄襲,里面有很多不足的地方,希望大神能修改了與我分享。
飛機(jī)里面包含硬件系統(tǒng)和軟件系統(tǒng),使用的是51單片機(jī)。
仿真電路圖:
0.png (14.33 KB, 下載次數(shù): 289)
下載附件
2016-5-16 17:24 上傳
0.png (50.57 KB, 下載次數(shù): 270)
下載附件
2016-5-16 17:23 上傳
所有資料下載:
時(shí)鐘計(jì)時(shí).rar
(57.11 KB, 下載次數(shù): 280)
2016-5-16 13:07 上傳
點(diǎn)擊文件名下載附件
源碼 下載積分: 黑幣 -5
電子時(shí)鐘程序源碼:
- /************* 頭文件與宏定義 ************/
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- /************* 數(shù)組與位碼 ************/
- uchar code DSY_CODE[]=
- {
- 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,
- };//第11個(gè)為-
- uchar code Scan_BITs[]=
- {
- 0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80
- };
- uchar data Buffer_Counts[8];
- uchar KeyNO=16;
- uchar Key_N;
- uint Count_H=23; //小時(shí)
- //uint Count_A; //顯示-
- uint Count_M=59; //分鐘
- //uint Count_B; //顯示-
- uint Count_S=00; //秒
- uint TCNT;
- /************* 延時(shí)程序 ************/
- void DelayMS(uint x)
- {
- uchar t;
- while(x--)
- {
- for(t=0;t<120;t++);
- }
- }
- /************* 鍵處理 ************/
- void Keys_Scan()
- {
- uchar Tmp;
- P1 = 0xff;
- DelayMS(1);
- Tmp = P1 ^ 0xff;
- while(P1!=0xff) {}
- switch(Tmp)
- {
- case 1:KeyNO=0;break;
- case 2:KeyNO=1;break;
- case 4:KeyNO=2;break;
- case 8:KeyNO=3;break;
- case 16:KeyNO=4;break;
- }
- }
- /************* 段碼顯示 ************/
- void Show_Counts()
- {
- uint i;
- Buffer_Counts[0] = Count_H / 10;
- Buffer_Counts[1] = Count_H % 10;//小時(shí)
-
- Buffer_Counts[2] =10;
- Buffer_Counts[3] = Count_M / 10;
- Buffer_Counts[4] = Count_M % 10;//分鐘
-
- Buffer_Counts[5] =10;
- Buffer_Counts[6] = Count_S / 10;
- Buffer_Counts[7] = Count_S % 10;//秒
- for(i=0;i<8;i++)
- {
- P2 = ~Scan_BITs[i];
- P0 = ~DSY_CODE[Buffer_Counts[i]];
- DelayMS(1);
- }
- }
- /************* 時(shí)間到進(jìn)位 ************/
- void TIME_INT0() interrupt 1
- { TH0=(65536-5000)/256;
- TL0=(65536-5000)%256;
- TCNT ++;
- if(TCNT==20)
- {
- Count_S++;
- TCNT=0;
- if(Count_S==60)
- {
- Count_M++;
- Count_S=0;
- if(Count_M==60)
- {
- Count_H++;
- Count_M=0;
- if(Count_H==24)
- {
- Count_H=0;
- Count_M=0;
- Count_S=0;
- TCNT=0;
- }
- }
- }
- }
- }
- /************* 主函數(shù) ************/
- void main()
- {
- TMOD = 0x01;
- TH0 = (65536-5000)/256;
- TL0 = (65536-5000)%256;
- EA=1;
- ET0=1;
- TR0 = 0;
- while(1)
- { if(P1 != 0xff)
- {Keys_Scan();}
- switch(KeyNO)
- {
- case 0:
- if(Key_N>2)
- Key_N=0;
- else if(Key_N==0)
- TR0=~TR0;
- else
- Key_N++;
- break;
- case 1:
- if(~TR0)Count_H++;
-
- {
- if(Count_H==24)
- Count_H=0;
- Count_M=0;
- Count_S=0;
- }break;
- case 2:
- if(~TR0)Count_M++;
- {
- if(Count_M==60)
- Count_M=0;
- Count_S=0;
- }
- break;
- case 3:
- if(~TR0)Count_S++;
- {
- if(Count_S==60)Count_S=0;
- }break;
- case 4: if(Key_N==0)
- Count_H=0;
- Count_M=0;
- Count_S=0;
- break;
- }
- KeyNO=5;
- Show_Counts();
- }
- }
- /*void main()
- {
- while(1)
- {
- TMOD=0x01;
- TH0=(65536-5000)/256;
- TL0=(65536-5000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- Show_Counts();
- switch(P1)
- {
- case 1: Count_H++;
- case 2: Count_M++;
- case 4: Count_S++;
- }
- }
- } */
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|