專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

用單片機做的電子時鐘

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年10月26日   【字體:

     團隊的第一個小項目就是用單片機做個電子時鐘,因為自己的單片機被自己焊接的不夠嚴謹,導致部分地方短路了,所以便換成用仿真軟件(protuce)來做電子時鐘。經(jīng)過兩天的奮斗,終于把這個電子時鐘寫好了,雖然很簡單,但收獲很大,在制作的過程中,遇到了很多問題,但。也收獲了很多!
  
     電路圖如下:


 

 程序用C代碼寫的:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
char code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
//char code wela[]={0xfe,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0x07};
char data huan_[]={0x00,0x00,0x0a,0x00,0x00,0x0a,0x00,0x00};
void delay(uint t) ;
void display(void);
static char counter=0x00;
static char miao=0x00;
static char fen=0x00;
static char shi=0x00;
char temp;
void delay(uint t)
{
 while(t--);
}
void display(void)
{
  uint k;
  for(k=0;k<8;k++)
{
 P0=dula[huan_[k]];
 temp=1;
 temp=temp<<k;
 P3=~temp;
 delay(500);
 P3=0xff;
}
}
void main()
{
   TMOD=0x01;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   EA=1;
   ET0=1;
   TR0=1;
while(1)
{
  display();
}
}
void init_time0(void) interrupt 1
{
   //TMOD=0x01;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
 // EA=1;
  // ET0=1;
   //TR0=1;
   counter++;
   if(counter==20)
     {
      counter=0;miao++;
        if(miao==60)
            {
              miao=0;fen++;
                  if(fen==60)
                      {
                        fen=0;shi++;
                           if(shi==24)
                               {
                                  shi=0;
                                }
                       }
             }
       huan_[1]=miao/10;huan_[0]=miao%10;
       huan_[4]=fen/10;huan_[3]=fen%10;
       huan_[7]=shi/10;huan_[6]=shi%10;
  }    
}


         總體感覺這個電子時鐘其實就是一個C,自己開始的思路一直打不開,后來在http://www.torrancerestoration.com/上找了了些別人寫的,慢慢的有了思路,但也別人的思路給固定住了。于是便有了開始那一大段,繁雜而沉重的代碼,并且開始程序老亂跑,答不到理想值。
       后來在陳老師的指導下,靜下心,慢慢的理清思路所有的問題都慢慢的好解決了!
       經(jīng)驗總結:
         1.按 著需求一步一步的去寫,去設計不要急。
         2 注意細節(jié)的處理
         3還是要多動手。

關閉窗口

相關文章