新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用單片機(jī)做的電子時(shí)鐘

用單片機(jī)做的電子時(shí)鐘

作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
團(tuán)隊(duì)的第一個(gè)小項(xiàng)目就是用單片機(jī)做個(gè)電子時(shí)鐘,因?yàn)樽约旱膯纹瑱C(jī)被自己焊接的不夠嚴(yán)謹(jǐn),導(dǎo)致部分地方短路了,所以便換成用仿真軟件(protuce)來做電子時(shí)鐘。經(jīng)過兩天的奮斗,終于把這個(gè)電子時(shí)鐘寫好了,雖然很簡單,但收獲很大,在制作的過程中,遇到了很多問題,但。也收獲了很多!


電路圖如下:


本文引用地址:http://m.butianyuan.cn/article/201611/323493.htm

程序用C代碼寫的:
#include
#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<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;
}
}


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



關(guān)鍵詞: 單片機(jī)電子時(shí)

評(píng)論


技術(shù)專區(qū)

關(guān)閉