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