基于單片機C語言電子時鐘完整版(鬧鐘,整點報時)_第1頁
基于單片機C語言電子時鐘完整版(鬧鐘,整點報時)_第2頁
基于單片機C語言電子時鐘完整版(鬧鐘,整點報時)_第3頁
基于單片機C語言電子時鐘完整版(鬧鐘,整點報時)_第4頁
基于單片機C語言電子時鐘完整版(鬧鐘,整點報時)_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 單片機技術課程設計說明書 數 字 電 子 鐘 系 、 部: 電氣與信息工程學院 學生姓名: 指導教師: 職稱 專 業: 班 級: 完成時間: 2013-06-07 摘 要電子鐘在生活中應用非常廣泛,而一種簡單方便的數字電子鐘則更能受到人們的歡迎。所以設計一個簡易數字電子鐘很有必要。本電子鐘采用ATMEL公司的AT89S52單片機為核心,使用12MHz 晶振與單片機AT89S52 相連接,通過軟件編程的方法實現以24小時為一個周期,同時8位7段LED數碼管(兩個四位一體數碼管)顯示小時、分鐘和秒的要求,并在計時過程中具有定時功能,當時間到達提前定好的時間進行蜂鳴報時。該電子鐘設有四個按鍵KEY

2、1、KEY2、KEY3、KEY4和KEU5鍵,進行相應的操作就可實現校時、定時、復位功能。具有時間顯示、整點報時、校正等功能。走時準確、顯示直觀、運行穩定等優點。具有極高的推廣應用價值。關鍵詞 電子鐘;AT89S52;硬件設計;軟件設計ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip

3、AT89S52 of ATMELs as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and se

4、conds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time displa

5、y, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value. Key words Electronic clock;;AT89S52;Hardware Design;Software Design目 錄1 設計課題任務、功能要求說明及方案介紹 11.1 設計課題任務 11.2 功能要求說明 11.3 設計總體方案介紹及原理

6、說明 12 設計課題硬件系統的設計 22.1 設計課題硬件系統各模塊功能簡要介紹 22.2 設計課題電路原理圖、PCB圖、元器件布局圖 22.3 設計課題元器件清單 53 設計課題軟件系統的設計 63.1 設計課題使用單片機資源的情況 63.2 設計課題軟件系統各模塊功能簡要介紹 63.3 設計課題軟件系統程序流程框圖 63.4 設計課題軟件系統程序清單104 設計結論、仿真結果、誤差分析、教學建議 214.1 設計課題的設計結論及使用說明214.2 設計課題的仿真結果214.3 設計課題的誤差分析224.4 設計體會224.5 教學建議22結 束 語 23參考文獻 24致 謝 25附 錄 2

7、61 設計課題任務、功能要求說明及方案介紹1.1 設計課題任務設計一個具有特定功能的電子鐘。具有時間顯示,并有時間設定,時間調整功能。1.2 功能要求說明設計一個具有特定功能的電子鐘。該電子鐘上電或按鍵復位后能自動顯示系統提示符“d.1004-22”, 進入時鐘準備狀態;第一次按電子鐘啟動/調整鍵,電子鐘從12時0分0秒開始運行,進入時鐘運行狀態;按電子鐘KEY1鍵,則電子鐘進入時鐘調整狀態,此時可利用各調整鍵調整時間,調整結束后可按KEY1鍵再次進入時鐘運行狀態。1.3 設計課題總體方案介紹及工作原理說明本電子鐘主要由單片機、鍵盤、顯示接口電路和復位電路構成,設計課題的總體方案如圖1所示:

8、圖1-1 總體設計方案圖本電子鐘的所有的軟件、參數均存放在AT89S52的Flash ROM和內部RAM中,減少了芯片的使用數量簡化了整體電路也降低了整機的工作電流。鍵盤采用動態掃描方式。利用單片機定時器及計數器產生定時效果通過編程形成數字鐘效果,再利用數碼管動態掃描顯示單片機內部處理的數據,同時通過端口讀入當前外部控制狀態來改變程序的不同狀態,實現不同功能。2 設計課題硬件系統的設計2.1 設計課題硬件系統各模塊功能簡要介紹本設計的硬件系統主要采用以下基本模塊來實現,單片機最小系統模塊,輸入模塊、輸出模塊、電源模塊。(1)單片機最小系統模塊:包括低功耗、高性能CMOS8位微控制器AT89S5

9、2;復位電路;晶振電路。本本模塊AT89S52系統控制核心,單片機系統復位由復位電路完成,單片機內部有一個高增益、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端位位引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容。這樣就構成一個穩定的自激振蕩器。 (2)輸入模塊:本模塊共用到了4個按鍵,1個電源開關,一個復位鍵,單片機運行期間,利用按鍵完成復位操作。3個按鍵獨立式鍵盤,KEY1鍵控制電子鐘的啟動,KEY2鍵為加1鍵,KEY3鍵為減1鍵,KEY1鍵第三次控制電子鐘的調整狀態。且KEY1、KEY2、KEY3、任一鍵都獨自連一個I/O(P1.0、P1.1、P1.2、P1.3)口

10、線,說明它們可以獨立實現相應的電子鐘功能。(3)輸出模塊:本次設計顯示為8位,采用兩個四位一體數碼管(共陽極)作為顯示窗口,既可以節約成本又能簡化電路。數碼管用8個PNP三極管驅動。(4)電源模塊:現在市面上銷售的編程器有很多都是由PC機的USB口直接供電為了降低本設計的成本及節省設計時間,沒有另外設計編程器,而直接購買了市場上的USB供電及下載器。2.2 設計課題電路原理圖、PCB圖、元器件布局圖 圖2-1 電路原理圖 總設計原理圖見附錄A原理總設計圖見附錄附錄BPCB圖見附錄C2.3 設計課題元器件清單 表2-1 設計所用元器件清單名稱數量參數電容2個33pF數碼管2個4位一體電阻1個20

11、0下載口1個WE普通插座1個40PIN電阻16個470按鍵4個三極管9個PNPUSB供電線1根晶振1個12MHz極性電容1個22F芯片1塊AT89S52發光二極管9個LED六角開關1個SW-PB3 設計課題軟件系統的設計3.1 設計課題使用單片機資源的情況設計課題使用單片機資源的情況如下:P0口輸出數碼管段選信號,P2口輸出數碼管位選信號;晶振12MHz;調整選擇鍵KEY1:P1.0;通過選擇鍵選擇調整位,選中位閃爍;增加鍵KEY2:P1.1;按一次使選中位加1;減少鍵KEY3:P1.2;按一次使選中位減1;此數字鐘可實現基本的走時和顯示時間時、分、秒;時間的調整;鬧鐘的設定和調整;鬧鐘的開啟

12、和關閉功能,具體如下:(1)實現基本的走時和顯示時間的時、分、秒,上電自動顯示初始時間12-00-00,且控制鬧鐘狀態的的藍色led燈為亮的狀態。(2)當第一次按下第一個彈性按鍵時進入時間的調節狀態,此時實現對顯示時間的小時調節,按下第二個按鍵時實現小時的加一調節,按下第三個按鍵時實現小時的減一調節。(3)當第二次按下第一個彈性按鍵時進入顯示時間的分鐘調節狀態,按下第二個按鍵時實現分鐘的加一調節,按下第三個按鍵時實現分鐘的減一調節。(4)當第三次按下第一個彈性按鍵時進入鬧鐘的小時調節狀態,按下第二個按鍵時實現鬧鐘小時的加一調節,按下第三個按鍵時實現鬧鐘小時的減一調節。(5)當第四次按下第一個彈

13、性按鍵時進入鬧鐘的分鐘調節狀態,按下第二個按鍵時實現鬧鐘分鐘的加一調節,按下第三個按鍵時實現鬧鐘分鐘的減一調節。(6)當第五次按下第一個彈性按鍵時返回正常的顯示時間走時狀態。(7)當同時按下第二和第三個彈性按鍵時,關閉鬧鐘,且此時藍色led燈為滅,及定時時間到蜂鳴器并不響,若再次同時按下第二和第三個彈性按鍵,則開啟鬧鐘,且此時藍色led燈為亮,定時時間到蜂鳴器發出滴滴的鬧鈴聲,同時按下第二和第三個彈性按鍵即可關閉鬧鈴。鬧鈴狀態默認為開啟。 3.2 設計課題軟件系統個模塊功能簡要介紹 本設計的軟件系統主要采用以下基本模塊來實現,主程序、中斷服務程序、鍵盤輸入程序模塊、數碼管及其驅動模塊和延時模塊

14、。主程序:主要是用于對輸入信號的處理、輸出信號的控制和對各個功能程序模塊的運用及其控制。中斷服務程序:主要是用于電子鐘的準確運行、數據輸入過程中的閃爍。鍵盤輸入程序模塊:主要是用于確定按鍵并得到特定的鍵碼值。數碼管及其驅動模塊:主要是用于驅動數碼管及利用數碼管顯示時間。延時模塊:程序中有兩種延時子程序,一種是短延時用于判鍵按下等,一種是 長延時。3.3 設計課題軟件系統程序流程框圖系統軟件采用匯編語言按模塊化方式進行設計,然后通過Keil軟件開發平臺將程序轉變成十六進制程序語言,接著使用Proteous 進行仿真,讀出顯示數據。主程序流程框圖如3-1所示;時間處理子程序流程框圖3-2所示;中斷

15、服務程序程序如3=3所示; 圖3-1 主程序流程框圖 圖3-2 時間處理子程序流程框圖 圖3-3 中斷子程序3.4 設計課題軟件系統程序清單;-;項目名稱:數字電子鐘;項目功能:本電子鐘實現24小時制,8位數碼管顯示時分秒,顯示格式:12-59-00 通過4只按鍵來調整時間,調整選擇鍵KEY1:P1.0;通過選擇鍵選 擇調整位,選中位閃爍,增加鍵KEY2:P1.1;按一次使選中位加1。 減少鍵KEY3:P1.2;按一次使選中位減1,bear:P3.1;到了整點和鬧 鐘就會響, 如果長按KEY1第一次切換到正常時鐘顯示,按第二次切換到時的調整, 按第三次切換到分的調整,同時led:P1.2就會閃

16、爍, 按第四次和第五次分別切換到鬧鐘的時分的調整 ,可進行調 時、調分快進快減,并停止閃爍。如果選中位是秒, 則按增加鍵或減少鍵可實現,但無調時快進和快減功能。P0口輸出數 碼管段選信號,P2口輸出數碼管位選信號;晶振12MHz。編程作者: 林熾逸完成時間: 2013年06月8日程序請清單如下:#include <reg51.h>#include<absacc.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit KEY1=P11; /切換鍵sbit KE

17、Y2=P12; /minute ,hour調整加1定義sbit KEY3=P17; /minute ,hour調整減1定義sbit bear=P31; /鬧鈴sbit led=P12; /鬧鐘,整時燈閃爍code unsigned char tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xc8,0x8e,0xff,0x21; /段碼控制char code weikong_code=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar ms8=2,2,10,4,0,0,1,14;uch

18、ar StrTab8;uchar minute=59,hour=12,second=0; / 正常 時鐘秒,分,時 定義uchar minute1=00,hour1=00; second1=00;/ 鬧鐘 時鐘秒,分,時 定義uchar flag=0, flag1=0; /切換標志 uchar num=0;uint count=0; /定時器計數,定時50ms,count滿20,秒加1/*子函數聲明*/void xianshishuzu(); /顯示數組子程序void alarm(); /鬧鐘子程序/* 延時子程序*/ void delay(uint z) uint x,y;for(x=0;x

19、<z;x+)for(y=0;y<110;y+);/*時間處理子程序*/void time_pro(void) if(second=60)second=0;minute+;if(minute=60)minute=0;hour+;if(hour=24)hour=0;/*顯示時鐘子函數*/ void dispaly(uchar w8) unsigned int i,j,aa; aa=0xfe; /位選初值1111 1110for(i=0;i<8;i+) /依次將數組w中八個數取出,并顯示 P2=aa; /位選j=wi; /取出要顯示的數碼P0=tabj; /取出段選編碼aa=_cr

20、ol_(aa,1); /位選信號循環右移?delay(1); /顯示延時P0=0xff; /消影 /*顯示時鐘數組子程序*/void xianshishuzu() StrTab1=second/10; /秒個位 StrTab0=second%10; /秒十位 StrTab2=10; /間隔符 - StrTab4=minute/10; /分個位 StrTab3=minute%10; /分十位 StrTab5=10; /間隔符 - StrTab7=hour/10; /時個位 StrTab6=hour%10; /時十位 /*鍵盤掃描子程序*/ void keycan() if(KEY1=0) /按一

21、次,正常顯示,按第二次,時調整,按第三次,分調這整, delay(10); /按鍵1去抖以及動作 if(KEY1=0) /確認按鍵是否按下 flag+; /切換標志 while(!KEY1); /釋放按鍵 if(flag=1) if(KEY2=0) delay(10);if(KEY2=0) hour+;if(hour=24)hour=0; /正常時間 小時 加1 while(!KEY2) /釋放按鍵 dispaly(StrTab); if(KEY3=0) delay(10); if(KEY3=0) hour-;if(hour=0)hour=23; dispaly(StrTab); /正常時間小

22、時 減1 while(!KEY3) dispaly(StrTab); if(flag=2) if(KEY2=0) /按鍵去抖以及動作 delay(10); if(KEY2=0) minute+;if(minute=60)minute=0; /分加1 while(!KEY2) dispaly(StrTab); if(flag=3) / 秒表的加1 if(KEY3=0) delay(10); if(KEY3=0) second+;if(second=0)second=59; /秒加1 while(!KEY3)dispaly(StrTab); if(flag=3) /鬧鐘對時 if(KEY2=0)

23、delay(10); if(KEY2=0) hour1+;if(hour1=24)hour1=0; /鬧鐘時間 小時 加1 while(!KEY2) alarm(); if(KEY3=0) delay(10); if(KEY3=0) hour1-;if(hour1=0)hour1=23; /鬧鐘時間 小時 減 while(!KEY3) alarm(); if(flag=4) if(KEY2=0) /按鍵去抖以及動作 delay(10); if(KEY2=0) minute1+;if(minute1=60)minute1=0; /鬧鐘分加1 while(!KEY2)alarm(); if(KEY

24、3=0) /按鍵去抖以及動作 delay(10); if(KEY3=0) minute1-;if(minute1=0)minute1=59; /鬧鐘分減1 while(!KEY3) alarm(); /*蜂鳴器子程序*/void beng() bear=1;P3=0xfd;delay(100);bear=0;P3=0XFf;delay(100);/*整點報警子程序*/void zhengdian (void)uchar i=0;if(second=0)&(minute=0)/整點報時 for(i=0;i<10;i+) TR0=1; beng();dispaly(ms); /*定時

25、鬧鐘*/ void alarm() uint i; if(hour=hour1&&second1=minute1&&(second>=second1&&second<second1+5)|(minute=0&&second<1) for(i=0;i<3;i+) beng(); StrTab1=second1/10; /鬧鐘秒個位 StrTab0=second1%10; /秒十位 StrTab2=10; /間隔符 - StrTab4=minute1/10; /分個位 StrTab3=minute1%10; /

26、分十位 StrTab5=10; /間隔符 - StrTab7=hour1/10; /時個位 StrTab6=hour1%10; /時十位 TR0=0; dispaly(StrTab); xianshishuzu();/*中斷子程序*/ void time_() interrupt 1 /中斷程序 count+; TH0=(65536-50000)/256; /0.5ms重新送初值 TL0=(65536-50000)%256;if(count=20) /定時器計數,定時50ms,count滿20,秒加1 second+; count=0; if(second=60) /秒值等于60,秒清零,分加

27、1 second=0;minute+;if(minute=60) /分值等于60,分清零,時加1 minute=0; hour+; if(hour=24) /時值等于24,時清零,返回,全部歸零 hour=0; xianshishuzu(); /*主函數*/ void main() P1=0XFF;TMOD = 0x11; /time0為定時器,方式1TH0=(65536-50000)/256;/預置計數初值,50ms TL0=(65536-50000)%256;EA=1; /總中斷開ET0=1; /允許定時器0中斷TR0=1; /開啟定時器0 while(1) /主循環 if(flag=0)

28、 TR0=0; dispaly(ms); if(P1!=0XFF) keycan(); if(flag>0) if(flag=1|flag=2) TR0=1; dispaly(StrTab); zhengdian (); if(flag=3|flag=4) TR0=0;alarm(); if(flag=5) dispaly(StrTab); if(flag=6) TR0=0; flag=0; dispaly(ms); 4 設計結論、仿真結果、誤差分析、教學建議4.1 設計課題的設計結論及使用說明本設計為基于單片機的電子鐘的設計。剛開始,我們很多地方理不清頭緒,無從下手,但通過認真研究設計課題,找書上網查資料買元件,確定基本設計方案,對所用芯片功能進行查找、調試,然后畫電路圖制PCB板、打孔、溶銅、焊接等

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論