單片機萬歷大學(xué)方案設(shè)計課程方案_第1頁
單片機萬歷大學(xué)方案設(shè)計課程方案_第2頁
單片機萬歷大學(xué)方案設(shè)計課程方案_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、電子萬年歷是一種非常廣泛日常計時工具,對現(xiàn)代社會越來越流行。它可以對年、月、日、時、分、秒進行計時等很多種功能,而且 DS1302的使用壽命長,誤差小。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、 日、時、分、秒等信息,還具有時間校準(zhǔn)等功能。本設(shè)計是基于 51 系列的單片機進行的電子萬年歷設(shè)計,可以顯示年月日時分秒 信息,具有可調(diào)整日期和時間功能。在設(shè)計的同時對單片機的理論基礎(chǔ)和外圍 擴展知識進行了比較全面準(zhǔn)備。在硬件與軟件設(shè)計時,沒有良好的基礎(chǔ)知識和 實踐經(jīng)驗會受到很大限制,每項功能實現(xiàn)時需要那種硬件,程序該如何編寫, 算法如何實現(xiàn)等,沒有一定的基礎(chǔ)就不可能很好的實現(xiàn)。在編寫程

2、序過程中發(fā) 現(xiàn)以現(xiàn)有的相關(guān)知識要獨自完成編寫任務(wù)困難重重,在老師和同學(xué)的幫助下才 完成了程序部分的編寫。萬年歷的設(shè)計過程在硬件與軟件方面進行同步設(shè)計。硬件部分主要由 AT89C51 單片機,LED顯示電路,以及調(diào)時按鍵電路等組成。在單片機的選擇上本人使 用了 AT89C51單片機,該單片機適合于許多較為復(fù)雜控制應(yīng)用場合。軟件方面 主要包括日歷程序、時間調(diào)整程序,顯示程序等。程序采用高級語言 C 進行編 寫,以便更簡單地實現(xiàn)調(diào)整時間。所有程序編寫完成后,在確定沒有問題后, 在 Proteus 軟件中嵌入單片機內(nèi)進行仿真。最后總在老師同學(xué)的幫助以及自己 的努力下完成了此次電子萬年歷的設(shè)計。二、系統(tǒng)

3、功能說明1、設(shè)計要求 :1、具有年、月、日、星期、時、分、秒等功能;2、具備年、月、日、星期、時、分、秒調(diào)整校準(zhǔn)功能;2、單片機芯片的選擇方案和論證:采用 89C51 芯片作為硬件核心,數(shù)碼管顯示,為使用戶更清楚更明白,萬年歷 的日期和時間是分開顯示,同時分別對應(yīng)兩個 74LS138 芯片用于控制數(shù)碼管顯 示,還有 74LS373 譯碼器芯片, 74LS21 芯片是用于控制鍵盤的功能。如圖所 示:16 15 14 13 12 11 10 974LA怎罠耳$ 瑪aND74LS138的八個輸出引腳,任何時刻要么全為高電平 1也就是芯片處于不工作 狀態(tài),要么只有一個為低電平

4、 0,其余7個輸出引腳全為高電平1。如果出現(xiàn)兩 個輸出引腳同時為0的情況,說明該芯片已經(jīng)損壞。Al J-b -IIDIQi<>MG5MlKfl人輩*1 Wtffi 構(gòu)曲 JTMlEi20V( 101*19UK1>1U|>H132417D7Q25ibQ7in15Q?H'Uhfb'D48BQ4Q12QS10ntic 7、:廿職腳隔74LS373原理圖當(dāng)74LS373用作地址鎖存器時,應(yīng)使 OE為低電平,此時鎖存使能端 G為高電平 時,輸出Q1Q8狀態(tài)與輸入端D1D8狀態(tài)相同;當(dāng)G發(fā)生負(fù)的跳變時,輸入端D1D8數(shù)據(jù)鎖入Q1Q8 51單片機的ALE信號可以直接與

5、74LS373的G連接。在MCS-51單片機系統(tǒng)中,常采用74LS373作為地址鎖存器使用,其連接方法如 上圖所示。其中輸入端1D8D接至單片機的P0 口,輸出端提供的是低8位地 址,G端接至單片機的地址鎖存允許信號 ALE輸出允許端OE接地,表示輸出 三態(tài)門一直打開。電子畢業(yè)設(shè)計 任意功能99元一價4僅售99元的畢業(yè)設(shè)計成品相火加預(yù)定中#QQ 群:65072,可以實現(xiàn)以下功能(陸續(xù)增加中):祕h也單片機萬年歷儀2. 52單片機密碼鎖儀X 51單片機電子琴儀4. 51單片機溫度檢測系統(tǒng)*5. 51單片機頻舉計心6. 51單片機電圧表債顯示模塊選擇方案:采用LED數(shù)碼管動態(tài)掃描丄ED數(shù)碼管價格適

6、中,對于顯示數(shù)字最合適,而且采用 動態(tài)掃描法與單片機連接時,占用的單片機口線少。使用多個數(shù)碼管顯示 LED數(shù)碼管是利用二極管發(fā)光顯示數(shù)字和字母,具有亮度大、接口設(shè)計比較容易,價格相對較便宜等優(yōu)點,所以采用了 LED數(shù)碼管作為顯示A B C DEFGHCOM數(shù)碼管電路3、鍵盤的選擇采用獨立式按鍵電路。每個鍵單獨占有一根I/O接口線,每個I/O 口的工作狀態(tài)互不影響,此類鍵盤采用端口直接掃描方式。而且在本次實驗課設(shè)用的鍵盤 很少,所以采用獨立式按鍵比較實用。JE I I 1P 7 ”P 1 . 6憶P 1 - 5P 1 - 4勿升P 1 . 3一P 1 . 2P 1. 1P 1 . 04、實現(xiàn)定時

7、:直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、時、分、 秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大5、電路設(shè)計最終方案決定綜上各方案所述,對此次作品的方案選定:采用AT89S51作為主控制系統(tǒng)。LED 數(shù)碼管動態(tài)掃描作為顯示。兩個 74LS138和一個74LS21芯片。,曲若型囤L串+ IW 回區(qū)II"1h 衛(wèi)“ijOL 訪 kpl*" Sour ch D-flbK LLbrirsr TarsiluLn Ej;i L>H23 ISIS PrafcsinAl (ADiKatin«)74LS2I 74L513S 7

8、4LS372A1W51 BUTTON MlhlRE$l2H SPEAKER SWITCH |74L5Z1I|?000記凸OD-O I-DS*imo mo thCOI° * t I I |» I II I I uAHimilNG: 00:Q2 15 K,旬開始® « e * i®5.ISE LZ.-Tl 5* *益二歹i圖-5 LED動態(tài)掃描顯示實驗心得:經(jīng)過了兩個星期的學(xué)習(xí)和實驗,我終于完成了單片機萬年歷課程設(shè)計。從 開始接到課設(shè)要求到萬年歷的實現(xiàn),再到報告的完成,每走一步對我來說都是 新的嘗試與挑戰(zhàn),這也是我在大學(xué)期間獨立完成的最大的項目。在

9、這段時間 里,我學(xué)到了很多知識也有很多感受,我開始了獨立的學(xué)習(xí)和實驗,查看相關(guān) 的資料和書籍,讓自己頭腦中模糊的概念逐漸清晰,使自己非常稚嫩作品一步 步完善起來,每一次改進都是我學(xué)習(xí)的收獲。這次報告的書寫也會使我終身受益,我感受到做報告是要用心去做的一件 事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能 力,沒有自己的研究,就不會有所突破。通過本次單片機課設(shè),獲得了豐富的理論知識,極大地提高了實踐能力,單片機領(lǐng)域這對我今后進一步學(xué)習(xí)計算機 方面的知識有極大的幫助。參考文獻1李建忠單片機原理及應(yīng)用西安電子科技大學(xué)出版2006.022張俊謨.單片機中級教程.北京航空航天大學(xué)出版

10、 2006.033余發(fā)山.單片機原理及及應(yīng)用技術(shù).中國礦業(yè)大學(xué)出版社 2003.124楊凌霄.微型計算機原理及應(yīng)用.中國礦業(yè)大學(xué)出版社2004.08 何立民.單片機應(yīng)用技術(shù)選編北京航空航天大學(xué)出版社 2000.08萬光毅.單片機實驗與實踐教程北京航空航天大學(xué)出版社 2005.017周航慈.單片機程序設(shè)計基礎(chǔ).北京航空航天大學(xué)出版社1991.118黃遵熹.單片機原理接口與應(yīng)用.西北工業(yè)大學(xué)出版社1997.059楊振江,杜鐵軍,李群.流行單片機實用子程序及應(yīng)用實例 M .西安:西 安電子科技大學(xué)出版社,200210楊子文 編 單片機原理及應(yīng)用 西安電子科技大學(xué)出版社200611王法能編單片機原理及

11、應(yīng)用 科學(xué)出版社2004附源代碼:#in clude<reg51.h> sbit p1_0=P1A0 。 sbit p1_1=P1A1。sbit p1_2=P1A2。sbit p1_3=P1A3。 sbit p1_4=P1A4 。 sbit p3_2=P3A2。un sig ned char code zimal13=0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F, 0x40,0x80,0x00,。/*共陰極字形代碼,顯示0-9字形碼,最后三個代碼分別表示-',.熄滅*/un sig ned int year,m on t

12、h,day,hour,m inu te,sec ond void delay(> 。/延時函數(shù)。void xia nshi( un sig ned int h,min,s>。/定義變量年,月,日,時,分,秒。 /void ymdxia nshi( un sig ned int year,m on th,day> void fengmin g(>。in t leap( un sig ned int year> un sig ned int h,m,s=5。un sig ned int mode=1,td=0,yw=0 void mai n(> /記錄定時時間。

13、狀態(tài)。顯示時間函數(shù)。/ 顯示年月曰。蜂鳴器函數(shù)。判斷閏年函數(shù)。/* 初始化年,月,日,時,分,秒 */TMOD=Ox1Q /定時器1。模式1。TL1=0xb0。TH1=0x3c。定時時間為 50ms打開定時器 1定時器 1 溢出中斷允許位 外部中斷 0 允許外部中斷 0 觸發(fā)方式為邊沿觸發(fā)TR1=1。ET1=1。EX0=1。IT0=1 。EA=1。/while(1> / 主循環(huán)。if(hour=h&&minute=m&&second=s> fengming(> if(mode%2=0> ymdxianshi(year,month,day&

14、gt;else。 / 定時時間到 , 蜂鳴器響。 / 顯示年月日if(td%3=2> xianshi(h,m,s> else xianshi(hour,minute,second>定時狀態(tài)。/。 / 正常顯示時間狀態(tài)。 void delay(> / unsigned int i 。for(i=0 。i<400。i+>。void ymdxianshi(unsigned int year,month,day> / int i,j 。i+ 。if(td%2=1&&yw%8=0&&i%2=0> / 點亮年的第一個 P2=0

15、x7f 。延時函數(shù)。年月日的顯示與調(diào)整P0=zimal12 。for(j=0 。 j<2000 。 j+> 。elseP2=0x7f。P0=zimalyear/1000 。 delay(> 。if(td%2=1&&yw%8=1&&i%2=0> / 點亮年的第二個 P2=0xbf。P0=zimal12 。for(j=0 。 j<1800 。 j+> 。elseP2=0xbf 。P0=zimalyear%1000/100 。 delay(> 。if(td%2=1&&yw%8=2&&i%2=0&

16、gt;/ 點亮年的第三個 P2=0xdf 。P0=zimal12 。for(j=0 。j<1800。j+>。 elseP2=0xdf 。P0=zimalyear%100/10。delay(> 。if(td%2=1&&yw%8=3&&i%2=0> / 點亮年的第四個 P2=0xef。P0=zimal12 。for(j=0 。 j<1800 。 j+> 。 else / 顯示年P(guān)2=0xef。P0=zimalyear%10 。delay(> 。 if(td%2=1&&yw%8=4&&i%2=0

17、>/ 顯示月點亮 P2=0xf7。P0=zimal12 。P2=0xfb 。P0=zimal12 。for(j=0 。 j<1800 。 j+> 。elseP2=0xf7。P0=zimalmonth/10 。delay(> 。P2=0xfb 。P0=zimalmonth%10 。 delay(> 。P2=0xef 。 / 顯示點 P0=zimal11 。for(j=0 。 j<100 。 j+> 。P2=0xfb 。P0=zimal11 。for(j=0 。 j<100 。 j+> 。 if(td%2=1&&yw%8=5&a

18、mp;&i%2=0>/ 顯示日的第一個 P2=0xfd 。P0=zimal12 。for(j=0 。j<1800。j+>。elseP2=0xfd。 P0=zimalday/10 。delay(> 。 if(td%2=1&&yw%8=6&&i%2=0>/ 顯示日的第二個P2=0xfe 。P0=zimal12 。 for(j=0 。 j<1800 。 j+> 。elseP2=0xfe。 P0=zimalday%10 。 delay(> 。void xianshi(unsigned int h,min,s>

19、 /顯示時間函數(shù)。 unsigned int i,j。i+。if(td%3!=0&&yw%6=0&&i%2=0> P2=0x7f。/ 顯示時的第一個。P0=zimal12 。 for(j=0 。 j<2000 。 j+> 。elseP2=0x7f 。P0=zimalh/10 。 delay(> 。 if(td%3!=0&&yw%6=1&&i%2=0>/ 顯示時的第二個 P2=0xbf 。P0=zimal12 。for(j=0。 j<2000 。 j+> 。elseP2=0xbf 。P0=z

20、imalh%10 。delay(> 。/ 顯示 -P2=0xdf 。P0=zimal10 。 delay(> 。if(td%3!=0&&yw%6=2&&i%2=0> / 顯示分的第一個。P2=0xef 。P0=zimal12。for(j=0 。j<2000。j+>。elseP2=0xef。/ 顯示分的第二個。P0=zimalmin/10 。delay(> 。 if(td%3!=0&&yw%6=3&&i%2=0>P2=0xf7。P0=zimal12 。 for(j=0 。 j<2000

21、 。 j+> 。elseP2=0xf7。P0=zimalmin%10 。 delay(> 。P2=0xfb 。/ 顯示 -P0=zimal10 。delay(> 。if(td%3!=0&&yw%6=4&&i%2=0> / 顯示秒的第一個。P2=0xfd 。P0=zimal12。for(j=0 。j<2000。j+>。elseP2=0xfd 。P0=zimals/10 。 delay(> 。 if(td%3!=0&&yw%6=5&&i%2=0> / 顯示秒的第二個 P2=0xfe。P0

22、=zimal12 。 for(j=0 。 j<2000 。 j+> 。elseP2=0xfe。 P0=zimals%10 。 delay(> 。 unsigned int i 。void ex0(>interrupt 0 /外部中斷零。if(p1_3=0>delay(>。if(p1_3=0> mode+ 。 td=0 。 if(p1_1=0>delay(>。if(p1_1=0>yw+ 。if(p1_0=0>delay(>。if(p1_0=0>td+。if(mode%2=0>/ if(td%2=1> for

23、(i=0/移位。/修改調(diào)整時間狀態(tài)。調(diào)整日期。 i<10 。 i+> 。 if(p1_2=0>delay(>。if(p1_2=0> /移位。 if(yw%8=0>year+=1000。/ 調(diào)整對應(yīng)位的數(shù)值。if(yw%8=1>year+=100。if(year%100/10=0>year=1000。 if(yw%8=2>year+=10 。 if(year/10%10=0>year-=100。 if(yw%8=3> year+。 if(year%10=0>year-=10 。 if(yw%8=4>month+ 。if

24、(yw%8=6>day+。if(day%10=0>day-=10。 if(yw%8=5>day+=10。天。年 2 月 29 天。/ if(year>=2500>year=0 if(month>12>month=1 。 switch(month> /case 4:case 6:。 / 年份小于 2500。 / 月份小于 12。日期限制case 9:case 11:if(day>30>day=1break 。 /4,6,9,11 月 30case 2 :if (leap(year>> /閏while(day>29>

25、;day=1else/ 非閏年 28 天。while(day>28>day=1break 。default:if(day>31>day=1。 /1,3,5,7,8,10,12 月 31 天。/else if(td%3=1> / 調(diào)整時間。else if(td%3=1>ET1=0。/ 時鐘中斷for (i=0。 i<10 。 i+> 。if(p1_2=0>delay(>。if(p1_2=0>if(yw%6=1>hour+ 。 if(hour%10=0> hour-=10 。 if(yw%6=0>hour+=10 。if(yw%6=3>minute+ 。 if(minute%10=0>minute-=10 。 if(yw%6=2>minute+=10 。for(i=0 。 i<10 。 i+> 。if(p1_2=0> / 定時。if(yw%6=1>h+ 。 if(h%10=0> h-=10。if(yw%6=0>h+=10 if(yw%6=3&g

溫馨提示

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

最新文檔

評論

0/150

提交評論