摘 要 20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快。 單片機(jī)模塊中最常見的是電子時(shí)鐘,電子時(shí)鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無(wú)機(jī)械裝置,具有更更長(zhǎng)的使用壽命,因此得到了廣泛的使用。 本課題主要研究的是基于單片機(jī)的電子時(shí)鐘設(shè)計(jì),采用AT89C51單片機(jī)作為系統(tǒng)的主控芯片,外接LED顯示電路,按鍵電路,晶振電路,復(fù)位電路模塊構(gòu)成一個(gè)簡(jiǎn)單的電子時(shí)鐘。通過(guò)按鍵電路能對(duì)時(shí)、分、秒分別進(jìn)行設(shè)置和實(shí)時(shí)調(diào)整,并將結(jié)果顯示在數(shù)碼管上。 1
目 錄 1 引 言 3 2 單片機(jī)介紹 4 3 電子時(shí)鐘硬件設(shè)計(jì) 4 3.1系統(tǒng)方案的確定 4 3.2功能分析 4 3.3電子時(shí)鐘設(shè)計(jì)原理 5 3.3.1鍵盤控制電路 5 3.3.2晶振電路 6 3.3.3復(fù)位電路 7 3.3.4數(shù)碼顯示電路 7 4.電子時(shí)鐘的軟件設(shè)計(jì) 8 4.1程序設(shè)計(jì)內(nèi)容 8 4.2源程序 9
1
1 引 言在單片機(jī)技術(shù)日趨成熟的今天,其靈活的硬件電路和軟件電路的設(shè)計(jì),讓單片機(jī)得到廣泛的應(yīng)用,幾乎是從小的電子產(chǎn)品,到大的工業(yè)控制,單片機(jī)都起到了舉足輕重的作用。單片機(jī)小的系統(tǒng)結(jié)構(gòu)幾乎是所有具有可編程硬件的一個(gè)縮影,可謂是“麻雀雖小,肝膽俱全”,單片機(jī)的學(xué)習(xí)和研究是對(duì)微機(jī)系統(tǒng)學(xué)習(xí)和研究的簡(jiǎn)捷途徑;趩纹瑱C(jī)的定時(shí)和控制裝置在許多行業(yè)有著廣泛的應(yīng)用,而電子時(shí)鐘是其中最基本的,也是最具有代表性的一個(gè)例子[1] ,用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí)、分、秒數(shù)字顯示的計(jì)時(shí)裝置。因?yàn)闄C(jī)具有體積小、功耗低、功能強(qiáng)、性價(jià)比高、易于推廣應(yīng)用的優(yōu)點(diǎn),在自動(dòng)化裝置、智能儀器表、過(guò)程控制、通信、家用電器等許多領(lǐng)域得到日益廣泛的應(yīng)用[2],因此具有很大的研究?jī)r(jià)值。
2 單片機(jī)介紹單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)[3]。由于單片機(jī)的這種結(jié)構(gòu)形式及它所采取的半導(dǎo)體工藝[4],使其具有很多顯著的特點(diǎn),因而在各個(gè)領(lǐng)域都得到了迅猛的發(fā)展。單片機(jī)主要有如下特點(diǎn)[5]:(1)性價(jià)比高;(2)集成度高、體積小、可靠性強(qiáng)。機(jī)把各功能部件集成在一塊芯片上,內(nèi)部采用總線結(jié)構(gòu),減少了各芯片之間的連線,大大提高了單片機(jī)的可靠性與抗干擾能力。另外,其體積小,對(duì)于強(qiáng)磁場(chǎng)環(huán)境易于采取屏蔽措施,適合在惡劣環(huán)境下工作;(3)控制功能強(qiáng);(4)功耗小、電壓低、便于生產(chǎn)的攜式產(chǎn)品。;(5)外部總線采用串行總線連接,以此縮小了體積;(6)單片機(jī)的系統(tǒng)擴(kuò)展和系統(tǒng)配置典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng)。 3 電子時(shí)鐘硬件設(shè)計(jì)3.1 系統(tǒng)方案的確定 硬件電路是一個(gè)系統(tǒng)的重要部分,在本次設(shè)計(jì)中主要是以AT89C51為核心控制器,外加一些控制電路來(lái)實(shí)現(xiàn)電子時(shí)鐘的基本功能。單片機(jī)芯片作為控制系統(tǒng)的核心部件,它除了具備微機(jī)CPU的數(shù)值計(jì)算功能外,還具有靈活強(qiáng)大的控制功能,以便實(shí)時(shí)檢測(cè)系統(tǒng)的輸入量、控制系統(tǒng)的輸出量,實(shí)現(xiàn)自動(dòng)控制[6],外圍控制電路主要包括晶振電路模塊、復(fù)位電路模塊、按鍵電路模塊以及數(shù)碼管顯示電路模塊,通過(guò)這些控制電路的連接構(gòu)成完整的電路,其結(jié)構(gòu)框圖如圖1所示。   圖1 電子時(shí)鐘系統(tǒng)結(jié)構(gòu)圖 3.2功能分析1.準(zhǔn)確計(jì)時(shí),以數(shù)字形式顯示時(shí)、分、秒的時(shí)間;2. 小時(shí)的計(jì)時(shí)為24小時(shí)制,分和秒的計(jì)時(shí)要求為60進(jìn)位;3. 八位數(shù)碼管 顯示HH-MM-SS(時(shí)分秒),按鍵“模式鍵”依次選擇調(diào)整“時(shí)”,“分”,“秒”, 按鍵“加鍵”依次加1,按鍵“減鍵”依次減1 ;4.晶振電路起到減小誤差,提高精確度的作用;5.復(fù)位電路是對(duì)單片機(jī)的初始化操作。 3.3電子時(shí)鐘設(shè)計(jì)原理電子時(shí)鐘的實(shí)現(xiàn)一般有兩種方法:其一是直接用單片機(jī)的定時(shí)計(jì)數(shù)器產(chǎn)生固定時(shí)間,這種方法的優(yōu)點(diǎn)是可以省去一些外圍的芯片,其缺點(diǎn)是只能適用于一些要求不是十分精確、不作長(zhǎng)期保留的場(chǎng)合;而對(duì)于要求較高的場(chǎng)合,則必須選用專用的芯片[7],本設(shè)計(jì)采用的是第一種方法。 直接用單片機(jī)的定時(shí)計(jì)數(shù)器產(chǎn)生固定時(shí)間,這種方法的工作原理是利用單片機(jī)芯片的定時(shí)器產(chǎn)生固定時(shí)間,模擬時(shí)鐘的時(shí)、分、秒;谶@一原理構(gòu)成的電子時(shí)鐘系統(tǒng)主要由以下幾部分組成:89C51單片機(jī)控制器電路,按鍵開關(guān)電路,8位數(shù)碼管顯示電路,復(fù)位電路,晶振電路五部分構(gòu)成。其工作原理電路圖如圖2所示。 
圖2 電子時(shí)鐘設(shè)計(jì)原理圖 3.3.1鍵盤控制電路電子時(shí)鐘最基本的功能除了能正常顯示時(shí)間外,還需要對(duì)時(shí)間進(jìn)行設(shè)置和調(diào)整,所以要配以相應(yīng)的鍵盤控制電路。該設(shè)計(jì)的鍵盤控制電路主要包括8個(gè)按鍵: P1.0控制系統(tǒng)時(shí)間暫停,P1.4控制系統(tǒng)時(shí)間繼續(xù);P1.1、P1.2、P1.3作為增加時(shí)分秒調(diào)整時(shí)按鍵,P1.5、P1.6、P1.7作為增加時(shí)分秒調(diào)整時(shí)按鍵。鍵盤控制電路的硬件連接圖如圖3所示。 圖3 鍵盤控制電路 3.3.2晶振電路晶振的全稱叫晶體振蕩器,它在單片機(jī)系統(tǒng)里作用非常大,主要作用是產(chǎn)生單片機(jī)所需的時(shí)鐘頻率,單片機(jī)執(zhí)行程序所需的時(shí)間完全取決于單片機(jī)晶振所提供的時(shí)鐘頻率,時(shí)鐘頻率越高,那么單片機(jī)運(yùn)行速度就越快[8]。在通常工作條件下,普通的晶振頻率絕對(duì)精度可達(dá)百萬(wàn)分之五十。高級(jí)的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。晶振電路如圖4所示。 圖4 晶振電路 3.3.3復(fù)位電路復(fù)位是單片機(jī)的初始化操作。單片機(jī)啟動(dòng)運(yùn)行時(shí),都需要先復(fù)位,其作用是使CPU和系統(tǒng)中其他部件處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。因而,復(fù)位是一個(gè)很重要的操作方式。 當(dāng)MCS-5l系列單片機(jī)的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作:07H寫入堆棧指針SP,P0口—P3口均置1,程序計(jì)數(shù)器PC和其他特殊功能寄存器SFR全部清零。只要RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)[9]。 單片機(jī)的復(fù)位方式有上電自動(dòng)復(fù)位和手工復(fù)位兩種,本設(shè)計(jì)采用的是手動(dòng)復(fù)位方式,其電路圖如圖5所示。 圖5 復(fù)位電路 3.3.4數(shù)碼顯示電路發(fā)光二極管顯示器驅(qū)動(dòng)(點(diǎn)亮)的方法有兩種。一種是靜態(tài)驅(qū)動(dòng)法,即給欲點(diǎn)亮的LED通以恒定的定流。這種驅(qū)動(dòng)方法要有寄存器,譯碼器,驅(qū)動(dòng)電路等邏輯部件。當(dāng)需要顯示的位數(shù)增加時(shí),所需的邏輯部件及連線也相應(yīng)增加,成本也增加。另一種是動(dòng)態(tài)驅(qū)動(dòng)方法,這種方法是給欲點(diǎn)亮的LED通過(guò)通以電流,此時(shí)LED的亮度是通斷的平均亮度。為保證亮度,通過(guò)LED的脈沖電流應(yīng)數(shù)倍于其額定電流值。利用動(dòng)態(tài)驅(qū)動(dòng)法可以減少需要的邏輯部件和連線,單片機(jī)應(yīng)用系統(tǒng)中常采用動(dòng)態(tài)驅(qū)動(dòng)法[10]。數(shù)碼管有兩種接法即共陽(yáng)極接法和共陰極接法。所謂共陽(yáng)共陰,是針對(duì)數(shù)碼管的公共腳而言的。一個(gè)1位典型的數(shù)碼管,一般有10個(gè)腳,8個(gè)段碼(7段加1個(gè)小數(shù)點(diǎn)),剩下兩個(gè)腳接在一起。共陽(yáng)指的是公共腳是正極(陽(yáng)極),所有的段碼實(shí)際上是負(fù)極,當(dāng)某一個(gè)或某幾個(gè)段碼位接低電平,公共腳接高電平時(shí),對(duì)應(yīng)的段碼位就能點(diǎn)亮,進(jìn)而組合形成我們看到的數(shù)字或字母。共陰剛好相反,也就是公共腳是負(fù)極(陰極),段碼位是陽(yáng)極,當(dāng)公共腳接地,段碼位接高電平時(shí),對(duì)應(yīng)段碼位點(diǎn)亮,本次設(shè)計(jì)選擇共陰極數(shù)碼管,其中有6位顯示“時(shí)”,“分”,“秒”,剩下兩位顯示“—”數(shù)碼管A~DP接單片機(jī)P0端口用于段選,1~9接單片機(jī)P2端口用于位選。各個(gè)段碼實(shí)際上是一個(gè)發(fā)光二極管,既然是發(fā)光二極管,就有正負(fù)極,為了防止驅(qū)動(dòng)數(shù)碼管電流過(guò)大而損壞,各端口接1K電阻。8位共陰極LED數(shù)碼顯示電路如圖6所示。  圖6 八位8段共陰極LED數(shù)碼顯示 4.電子時(shí)鐘的軟件設(shè)計(jì)4.1程序設(shè)計(jì)內(nèi)容單片機(jī)軟件設(shè)計(jì)主要包括執(zhí)行軟件(完成各種實(shí)質(zhì)性功能)的設(shè)計(jì)和監(jiān)控軟件的設(shè)計(jì)。設(shè)計(jì)步驟如下所示。 1. 采用模塊化程序結(jié)構(gòu)設(shè)計(jì)軟件,首先將整個(gè)軟件分成若干功能模塊; 2. 根據(jù)流程圖,編寫源程序; 3. 上機(jī)調(diào)試各模塊程序; 4. 與硬件一起聯(lián)調(diào),最后完成全部調(diào)試工作。 4.2源程序
- #include<reg52.h>
- /*共陰數(shù)碼管編碼*/
- unsigned char code tab1[]={
- 0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f};
- /*共陽(yáng)數(shù)碼管編碼
- unsigned char code tab1[]={
- 0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e};
- */
- /*位選編碼*/
- unsigned char code tab2[]={
- 0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f};
- sbit duanxuan=P1^0;
-
- /*按鍵位定義*/
- sbit key0=P1^0;
- sbit key1=P1^1;
- sbit key2=P1^2;
- sbit key3=P1^3;
- sbit key4=P1^4;
- sbit key5=P1^5;
- sbit key6=P1^6;
- sbit key7=P1^7;
- /*秒、分、時(shí)的初始化*/
- unsigned char tt=0;
- unsigned char miao=0;
- unsigned char fen=0;
- unsigned char shi=0;
- /*延時(shí)函數(shù)*/
- void delay(unsigned char t)
- {
- unsigned i;
- while(t--)
- for(i=0;i<75;i++);
- }
- /*定時(shí)器0初始化函數(shù)*/
- void chushihua()
- {
- TMOD=0x01;
- EA=1;
- ET0=1;
- TH0=(65535-50000)/256;
- TL0=(65535-50000)%256;
- TR0=1;
- }
- /*時(shí)分秒處理函數(shù)*/
- void timedeal()
- {
- if(miao==60)
- {
- miao=0;
- fen++;
- if(fen==60)
- {
- fen=0;
- shi++;
- if(shi==24)
- {
- shi=0;
- }
- }
-
- }
- }
- /*顯示函數(shù)*/
- void display()
- {
- P2=tab2[0];
- P0=tab1[miao%10];
- delay(1);
- P0=0x00;//消影
-
- P2=tab2[1];
- P0=tab1[miao/10];
- delay(1);
- P0=0x00;//消影
-
- P2=tab2[2];
- P0=0x40;
- delay(1);
- P0=0x00;//消影
-
- P2=tab2[3];
- P0=tab1[fen%10];
- delay(1);
- P0=0x00;//消影
-
- P2=tab2[4];
- P0=tab1[fen/10];
- delay(1);
- P0=0x00;//消影
-
- P2=tab2[5];
- P0=0x40;
- delay(1);
- P0=0x00;//消影
-
-
- P2=tab2[6];
- P0=tab1[shi%10];
- delay(1);
- P0=0x00;//消影
-
- P2=tab2[7];
- P0=tab1[shi/10];
- delay(1);
- P0=0x00;//消影
-
- }
- /*按鍵設(shè)定函數(shù)*/
- void sheding()
- {
- if(key0==0)
- {
- delay(10);
- if(key0==0)
- {
- EA=0;
- }
- }
- if(key1==0)
- {
- delay(10);
- if(key1==0)
- {
- miao++;
- if(miao==60)
- miao=0;
- while(!key1);
- }
- }
- if(key2==0)
- {
- delay(10);
- if(key2==0)
- {
- fen++;
- if(fen==60)
- fen=0;
- while(!key2);
- }
- }
- if(key3==0)
- {
- delay(10);
- if(key3==0)
- {
- shi++;
- if(shi==24)
- shi=0;
- while(!key3);
- }
- }
- if(key5==0)
- {
- delay(10);
- if(key5==0)
- {
- miao--;
- if(miao==0)
- miao=59;
- while(!key5);
- }
- }
- if(key6==0)
- {
- delay(10);
- if(key6==0)
- {
- fen--;
- if(fen==0)
- fen=59;
- while(!key6);
- }
- }
- if(key7==0)
- {
- delay(10);
- if(key7==0)
- {
- shi--;
- if(shi==0)
- shi=23;
- while(!key7);
- }
- }
- if(key4==0)
- {
- delay(10);
- if(key4==0)
- {
- EA=1;
- }
- }
- }
- /*主函數(shù)*/
- void main()
- {
- chushihua();
- while(1)
- {
- sheding();
- timedeal();
- display();
- }
- }
- /*定時(shí)器0中斷函數(shù)*/
- void time0() interrupt 1
- {
- TH0=(65535-50000)/256;
- TL0=(65535-50000)%256;
- tt++;
- if(tt==20)
- {
- tt=0;
- miao++;
- }
- }
復(fù)制代碼
Word格式文檔51黑下載地址:
基于51單片機(jī)的電子時(shí)鐘設(shè)計(jì).doc
(136.5 KB, 下載次數(shù): 207)
2018-4-21 19:12 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|