王戰(zhàn)
摘 要:當前學習單片機的學生相當多,為激發(fā)初學者學習單片機的興趣,本文介紹一款很有趣味性的小型電子鐘的設(shè)計和制作過程,非常適合電子制作愛好者們業(yè)余仿作,以鍛煉動手能力和操作技能、激發(fā)和培養(yǎng)學習興趣和實踐熱情。
關(guān)鍵詞:激發(fā);單片機;電子鐘
中圖分類號:TP36 文獻標識碼:A
“教、學、做”,突出“做”。通過“做”,讓學生對學習專業(yè)技術(shù)感興趣,通過“做”,讓學生提高動手能力。如何提高學生學習的積極性,提高學生的動手實操能力,現(xiàn)介紹一種易操作,又能激發(fā)學生興趣的電子鐘制作方法,給無線電愛好的同學參考。
本范例是采用單片機內(nèi)部時鐘信號作為觸發(fā)源的一款簡易型電子鐘,采用8位數(shù)碼管顯示,其電路簡單,具備電子鐘的基本功能。可惜的就是存在時間誤差較大及無停電走時及記憶功能。
1 控制電路組成及其工作原理
如圖1 所示為單片機內(nèi)部觸發(fā)源數(shù)碼管顯示簡易電子鐘Protues虛擬電路圖。其中電路主要由 74245芯片驅(qū)動的8位共陽數(shù)碼管顯示電路、3位獨立簡易型按鍵和蜂鳴器驅(qū)動電路組成。
注:本電路對晶振頻率有著嚴格的要求,本范例編程時是按12MHz晶振來設(shè)計的。
本范例是使用定時器T0以50ms中斷1次同時以20次中斷作為1秒鐘來實現(xiàn)時間單位的控制。子程序模塊除了顯示、蜂鳴器控制常規(guī)程序模塊以外,主要包含50ms及1s單位時間中斷程序模塊、時分秒進位處理程序模塊、時、分和秒時間設(shè)置模塊。
1.1 控制程序
主程序中是通過控制模式代碼寄存器GN變化于0~3間分別代表時間顯示模式、小時設(shè)置模式、分鐘設(shè)置模式和秒鐘設(shè)置模式。在主程序中控制掃描計數(shù)器“biao”每掃描1輪(約8位數(shù)碼管掃描顯示1輪的時間)加1,并達到30時清零,用以在時間設(shè)置時控制對應(yīng)數(shù)據(jù)閃爍顯示。
請認真閱讀“//”后的中文注釋達成對每行語句含義的初步認識。
#include
#define uchar unsigned char
#define uint unsigned int
#define WM_OUT P2
#define DM_OUT P0
sbit SET=P1^7; sbit jia=P1^5;sbit jian=P1^6;
sbit BEEP=P3^7;
uchar GN=0;
uchar biao;
uchar shi,fen,miao,count_50ms;
void delay(uint ms)
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xbf};
uchar code wm[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar time[8];
void Beep()
void disp(uchar *p)
void chuli()
{
if(miao==60)
{
fen++;
miao=0;
if(fen==60)
{
shi++;
fen=0;
if(shi==24)shi=0;
}
}
time[0]=shi/10;
time[1]=shi%10;
time[2]=17;
time[3]=fen/10;
time[4]=fen%10;
time[5]=17;
time[6]=miao/10;
time[7]=miao%10;
}
void shi_hm()
{
if(!jia)
{
Beep();
if(++shi==24)shi=0;
while(!jia)disp(time);
}
if(!jian)
{
Beep();
if(--shi==255)shi=23;
while(!jian)disp(time);
}
if(biao>15){time[0]=16;time[1]=16;}
disp(time);
}
void fen_hm()
{
if(!jia)
{
Beep();
if(++fen==60)fen=0;
while(!jia)disp(time);
}
if(!jian)
{
Beep();
if(--fen==255)fen=59;
while(!jian)disp(time);
}
if(biao>15){time[3]=16;time[4]=
16;}
disp(time);
}
void miao_hm()
{
if(!jia)
{
Beep();
if(++miao==60)miao=0;
while(!jia)disp(time);
}
if(!jian)
{
Beep();
if(--miao==255)miao=59;
while(!jian)disp(time);
}
if(biao>15){time[6]=16;time[7]=
16;}
disp(time);
}
void main()
{ TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)/256;
IE=0X82;
TR0=1;
while(1)
{biao=(biao+1)%30;
if(!SET)
{GN=(GN+1)%4;
Beep();
while(!SET)disp(time);
}
chuli();
if(GN==0)disp(time);
else if(GN==1)shi_hm();
else if(GN==2)fen_hm();
else if(GN==3)miao_hm();
}
}
void timer0()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)/256;
if(++count_50ms==20)
{
miao++;count_50ms=0;
}
}
以上電子鐘制作制作方案,是我院實施“教、學、做”一體化教學模式,創(chuàng)新教育教學環(huán)境和培養(yǎng)學生的動手實操能力,在機電一體化專業(yè)開展的工學結(jié)合實踐操作模式課程。
參考文獻
[1]李廣第,朱月秀,王秀山.單片機基礎(chǔ)[M].北京:北京航空航天大學出版社,2001.endprint
}
void miao_hm()
{
if(!jia)
{
Beep();
if(++miao==60)miao=0;
while(!jia)disp(time);
}
if(!jian)
{
Beep();
if(--miao==255)miao=59;
while(!jian)disp(time);
}
if(biao>15){time[6]=16;time[7]=
16;}
disp(time);
}
void main()
{ TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)/256;
IE=0X82;
TR0=1;
while(1)
{biao=(biao+1)%30;
if(!SET)
{GN=(GN+1)%4;
Beep();
while(!SET)disp(time);
}
chuli();
if(GN==0)disp(time);
else if(GN==1)shi_hm();
else if(GN==2)fen_hm();
else if(GN==3)miao_hm();
}
}
void timer0()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)/256;
if(++count_50ms==20)
{
miao++;count_50ms=0;
}
}
以上電子鐘制作制作方案,是我院實施“教、學、做”一體化教學模式,創(chuàng)新教育教學環(huán)境和培養(yǎng)學生的動手實操能力,在機電一體化專業(yè)開展的工學結(jié)合實踐操作模式課程。
參考文獻
[1]李廣第,朱月秀,王秀山.單片機基礎(chǔ)[M].北京:北京航空航天大學出版社,2001.endprint
}
void miao_hm()
{
if(!jia)
{
Beep();
if(++miao==60)miao=0;
while(!jia)disp(time);
}
if(!jian)
{
Beep();
if(--miao==255)miao=59;
while(!jian)disp(time);
}
if(biao>15){time[6]=16;time[7]=
16;}
disp(time);
}
void main()
{ TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)/256;
IE=0X82;
TR0=1;
while(1)
{biao=(biao+1)%30;
if(!SET)
{GN=(GN+1)%4;
Beep();
while(!SET)disp(time);
}
chuli();
if(GN==0)disp(time);
else if(GN==1)shi_hm();
else if(GN==2)fen_hm();
else if(GN==3)miao_hm();
}
}
void timer0()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)/256;
if(++count_50ms==20)
{
miao++;count_50ms=0;
}
}
以上電子鐘制作制作方案,是我院實施“教、學、做”一體化教學模式,創(chuàng)新教育教學環(huán)境和培養(yǎng)學生的動手實操能力,在機電一體化專業(yè)開展的工學結(jié)合實踐操作模式課程。
參考文獻
[1]李廣第,朱月秀,王秀山.單片機基礎(chǔ)[M].北京:北京航空航天大學出版社,2001.endprint