(廣東省高級(jí)技工學(xué)校,廣東 博羅 516100)
易于激發(fā)興趣的電子鐘制作
王 戰(zhàn)
(廣東省高級(jí)技工學(xué)校,廣東 博羅 516100)
當(dāng)前學(xué)習(xí)單片機(jī)的學(xué)生相當(dāng)多,為激發(fā)初學(xué)者學(xué)習(xí)單片機(jī)的興趣,本文介紹一款很有趣味性的小型電子鐘的設(shè)計(jì)和制作過程,非常適合電子制作愛好者們業(yè)余仿作,以鍛煉動(dòng)手能力和操作技能、激發(fā)和培養(yǎng)學(xué)習(xí)興趣和實(shí)踐熱情。
激發(fā);單片機(jī);電子鐘
“教、學(xué)、做”,突出“做”。通過“做”,讓學(xué)生對(duì)學(xué)習(xí)專業(yè)技術(shù)感興趣,通過“做”,讓學(xué)生提高動(dòng)手能力。如何提高學(xué)生學(xué)習(xí)的積極性,提高學(xué)生的動(dòng)手實(shí)操能力,現(xiàn)介紹一種易操作,又能激發(fā)學(xué)生興趣的電子鐘制作方法,給無線電愛好的同學(xué)參考。
本范例是采用單片機(jī)內(nèi)部時(shí)鐘信號(hào)作為觸發(fā)源的一款簡易型電子鐘,采用8位數(shù)碼管顯示,其電路簡單,具備電子鐘的基本功能。可惜的就是存在時(shí)間誤差較大及無停電走時(shí)及記憶功能。
如圖1 所示為單片機(jī)內(nèi)部觸發(fā)源數(shù)碼管顯示簡易電子鐘Protues虛擬電路圖。其中電路主要由 74245芯片驅(qū)動(dòng)的8位共陽數(shù)碼管顯示電路、3位獨(dú)立簡易型按鍵和蜂鳴器驅(qū)動(dòng)電路組成。
注:本電路對(duì)晶振頻率有著嚴(yán)格的要求,本范例編程時(shí)是按12MHz晶振來設(shè)計(jì)的。
本范例是使用定時(shí)器T0以50ms中斷1次同時(shí)以20次中斷作為1秒鐘來實(shí)現(xiàn)時(shí)間單位的控制。子程序模塊除了顯示、蜂鳴器控制常規(guī)程序模塊以外,主要包含50ms及1s單位時(shí)間中斷程序模塊、時(shí)分秒進(jìn)位處理程序模塊、時(shí)、分和秒時(shí)間設(shè)置模塊。
1.1 控制程序
主程序中是通過控制模式代碼寄存器GN變化于0~3間分別代表時(shí)間顯示模式、小時(shí)設(shè)置模式、分鐘設(shè)置模式和秒鐘設(shè)置模式。在主程序中控制掃描計(jì)數(shù)器“biao”每掃描1輪(約8位數(shù)碼管掃描顯示1輪的時(shí)間)加1,并達(dá)到30時(shí)清零,用以在時(shí)間設(shè)置時(shí)控制對(duì)應(yīng)數(shù)據(jù)閃爍顯示。
請(qǐng)認(rèn)真閱讀“//”后的中文注釋達(dá)成對(duì)每行語句含義的初步認(rèn)識(shí)。
圖1 單片機(jī)內(nèi)部觸發(fā)源數(shù)碼管顯示簡易電子鐘Protues虛擬電路圖
#include <reg51.h>
#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;
以上電子鐘制作制作方案,是我院實(shí)施“教、學(xué)、做”一體化教學(xué)模式,創(chuàng)新教育教學(xué)環(huán)境和培養(yǎng)學(xué)生的動(dòng)手實(shí)操能力,在機(jī)電一體化專業(yè)開展的工學(xué)結(jié)合實(shí)踐操作模式課程。
[1]李廣第,朱月秀,王秀山.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2001.
TP36
A