單片機(jī)原理及應(yīng)用課程設(shè)計(jì)--基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《單片機(jī)原理及應(yīng)用》</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  學(xué) 院:水利與能源動(dòng)力工程學(xué)院 </p><p>  班 級(jí): </p><p>  學(xué) 號(hào): </p>&

2、lt;p>  姓 名: </p><p>  時(shí) 間:2014-1-6 ~ 2014-1-10</p><p><b>  目錄</b></p><p><b>  任務(wù)書1</b></p><p>  第一章 方案設(shè)計(jì)2</p&g

3、t;<p>  第二章 硬件系統(tǒng)設(shè)計(jì)3</p><p>  第三章 軟件設(shè)計(jì)4</p><p>  第四章 系統(tǒng)調(diào)試6</p><p><b>  小 結(jié)8</b></p><p><b>  附錄1:原理圖9</b></p><p>  附錄

4、2:源程序10</p><p><b>  任務(wù)書</b></p><p>  題 目:基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)</p><p><b>  設(shè)計(jì)要求:</b></p><p> ?。?)利用單片機(jī)的定時(shí)器,實(shí)現(xiàn)時(shí)、分、秒顯示及設(shè)定;</p><p> ?。?)顯示采

5、用ZLG7290;</p><p> ?。?)討論本系統(tǒng)計(jì)時(shí)誤差。</p><p><b>  課程設(shè)計(jì)進(jìn)度安排:</b></p><p>  本次課程設(shè)計(jì)為期一周。</p><p><b>  第一章 方案設(shè)計(jì)</b></p><p>  本次課程設(shè)計(jì)任務(wù)是設(shè)計(jì)一個(gè)電子時(shí)

6、鐘。電子時(shí)鐘可以用數(shù)碼管來(lái)顯示時(shí)、分、秒的數(shù)字,其中用小數(shù)點(diǎn)分隔。若采用二十四小時(shí)計(jì)時(shí),“時(shí)”的范圍是0到24;若采用十二小時(shí)計(jì)時(shí),“時(shí)”的范圍則是0到12,但要另外用一個(gè)數(shù)碼管來(lái)顯示“A”或者“P”來(lái)表示上下午。</p><p>  程序設(shè)計(jì)時(shí)可采用三個(gè)寄存器來(lái)存放時(shí)、分、秒的當(dāng)前數(shù)值,每過(guò)一秒,代表秒的寄存器加一,秒滿60則清零,同時(shí)分鐘加一,小時(shí)亦然。若采用二十四小時(shí)計(jì)時(shí),時(shí)滿24清零;若采用十二小時(shí)計(jì)時(shí),

7、時(shí)滿12清零,但要同時(shí)翻轉(zhuǎn)一個(gè)保存上下午狀態(tài)的位變量來(lái)表示上下午狀態(tài)的改變。</p><p>  用按鈕接外部中斷來(lái)控制時(shí)和分鐘的調(diào)整,每按一下秒清零且相應(yīng)數(shù)字加一;同時(shí)保證數(shù)值滿了就清零不進(jìn)位,但要改變上下午狀態(tài)。</p><p>  該方案計(jì)時(shí)有誤差,誤差來(lái)源于單片機(jī)外接的晶振誤差和執(zhí)行指令帶來(lái)的微秒級(jí)延時(shí)。</p><p>  第二章 硬件系統(tǒng)設(shè)計(jì)</

8、p><p>  CPU選AT89C51,該單片機(jī)有3個(gè)并行I/O口,2個(gè)外接中斷源,2個(gè)定時(shí)/計(jì)數(shù)器,可外接24MHz以下的晶振。實(shí)驗(yàn)時(shí),可用定時(shí)/計(jì)數(shù)器1來(lái)計(jì)時(shí)(因?yàn)槎〞r(shí)/計(jì)數(shù)器1的中斷優(yōu)先級(jí)較低,避免了在設(shè)置時(shí)鐘時(shí)進(jìn)入改變秒的中斷,也避免了有時(shí)無(wú)法修改小時(shí)),用外部中斷0來(lái)修改分鐘,用外部中斷1來(lái)修改小時(shí)。外部中斷全部設(shè)為邊沿觸發(fā)方式,因?yàn)?,每按一下按鈕,只需改變相應(yīng)的值一次。</p><p&

9、gt;  顯示數(shù)碼管可以用ZLG7290。它可以方便地驅(qū)動(dòng)8個(gè)8段的共陰極LED數(shù)碼管,顯示時(shí)只需向緩沖區(qū)中放入要顯示的值即可,并且能夠自動(dòng)刷新,不需要像常規(guī)辦法一樣先通過(guò)查表找到段碼再循環(huán)點(diǎn)亮。因此,使用這種方法顯示時(shí)鐘可是程序簡(jiǎn)潔易懂。</p><p>  連接時(shí)只需依次將8951的、、分別與7290的、、相連,8951的外部中斷、分別接外部按鈕即可。</p><p>  實(shí)驗(yàn)時(shí)選擇6

10、MHz的晶振。</p><p><b>  第三章 軟件設(shè)計(jì)</b></p><p>  選用R5、R6、R7作為存放時(shí)、分、秒的寄存器,可尋址位07H存放上下午的狀態(tài)。在6MHz的晶振下,選用定時(shí)/計(jì)數(shù)器1在方式1下工作,定時(shí)0.1s,初值設(shè)定:=15535,即3CB0H。因?yàn)槊看沃荒芏〞r(shí)0.1s,所以要使用一個(gè)專用的寄存器R4來(lái)判定定時(shí)是否到了1s。</p

11、><p>  主程序的任務(wù)僅為設(shè)定初始化并等待中斷到來(lái)。</p><p>  在定時(shí)/計(jì)數(shù)器1的中斷服務(wù)子程序里,要先判斷1s的定時(shí)是否完成,未完成則直接結(jié)束,完成的話則秒加一,如果秒溢出則考慮分和時(shí)的改變。改變后則調(diào)用顯示子程序刷新顯示。</p><p>  在外部中斷0的中斷服務(wù)子程序里,將分加一,并判斷溢出(溢出后僅置零而不復(fù)位),最后調(diào)用顯示子程序刷新顯示。&l

12、t;/p><p>  外部中斷1的中斷服務(wù)子程序與外部中斷0類似,只不過(guò)要注意改變上下午的狀態(tài)。</p><p>  下頁(yè)圖分別為主程序、定時(shí)/計(jì)數(shù)器中斷子程序、外部中斷0子程序、外部中斷1子程序的流程圖</p><p><b>  第四章 系統(tǒng)調(diào)試</b></p><p>  在課程設(shè)計(jì)過(guò)程中,我主要遇到如下方面的問(wèn)題:

13、</p><p>  1、剛開始時(shí)我將調(diào)用顯示的程序段放入主函數(shù),但效果不理想。因?yàn)?,在調(diào)用顯示子函數(shù)時(shí),需要先關(guān)閉中斷,但如果正好這時(shí)要修改時(shí)鐘的值,會(huì)導(dǎo)致請(qǐng)求無(wú)法得到解決。</p><p>  2、最初編譯時(shí)遇到“標(biāo)號(hào)重復(fù)”的錯(cuò)誤。仔細(xì)檢查后發(fā)現(xiàn),“START”“LOOP”等標(biāo)號(hào)已在“LEDDISP_ASM.INC”里使用過(guò),修改自己的標(biāo)號(hào)則能編譯通過(guò)。</p><

14、p>  3、最初使用CY標(biāo)志位來(lái)存放上下午的標(biāo)志,結(jié)果導(dǎo)致該功能經(jīng)常出錯(cuò)。仔細(xì)分析后使用可位尋址單元代替,解決了這一問(wèn)題。</p><p>  4、修改時(shí)鐘的值的時(shí)候按一下按鈕會(huì)導(dǎo)致相應(yīng)的數(shù)字家很多次,這是開關(guān)的抖動(dòng)噪聲造成的,可以采用硬件或者軟件的消抖實(shí)現(xiàn)。</p><p>  5、若晶振選擇錯(cuò)誤,如選擇了12MHz的晶振,則會(huì)導(dǎo)致計(jì)時(shí)時(shí)間變快整整一倍。</p>&l

15、t;p>  部分最終運(yùn)行結(jié)果如下頁(yè)圖:</p><p><b>  小 結(jié)</b></p><p>  我們經(jīng)歷了一個(gè)學(xué)期的單片機(jī)原理及應(yīng)用的學(xué)習(xí),但是除了實(shí)驗(yàn)外并沒(méi)有多少實(shí)踐的機(jī)會(huì)。課程設(shè)計(jì)與理論課程和實(shí)驗(yàn)有著很大的區(qū)別,它是一個(gè)綜合性很強(qiáng)的課程環(huán)節(jié),也是我們所必須經(jīng)歷的一個(gè)學(xué)習(xí)階段。在課程設(shè)計(jì)中,我們?cè)趯W(xué)會(huì)理論知識(shí)的同時(shí),還會(huì)加深自己對(duì)這門課程的理解。在這

16、門課程設(shè)計(jì)當(dāng)中,我們能結(jié)合到一些其他課程,能鞏固一些軟件的運(yùn)用。通過(guò)知識(shí)的互相結(jié)合,相互滲透,來(lái)得到我們所需的數(shù)據(jù)、結(jié)論以及使我們掌握更多的知識(shí)。</p><p>  這次單片機(jī)原理及應(yīng)用課程設(shè)計(jì)過(guò)程中,我發(fā)現(xiàn)做編程首要的就是邏輯能力,我們要在最開始就規(guī)劃出程序的流程。編程時(shí),一定要細(xì)心,盡量避免一些語(yǔ)法錯(cuò)誤。最后,還需要一顆耐心,不斷地調(diào)試、完善自己的程序。</p><p>  最重要的

17、,這門課教會(huì)了我“做什么”要比“怎么做”難得多。做任何事都要有一個(gè)目標(biāo),從一開始就要有一個(gè)明確的方向,這樣才有意義。最后還要感謝吳老師的指導(dǎo)和同學(xué)們的幫助,讓我順利完成了課程設(shè)計(jì)。</p><p><b>  附錄1:原理圖</b></p><p>  說(shuō)明:本原理圖由“Protel 99 SE”軟件繪制。</p><p><b> 

18、 附錄2:源程序</b></p><p>  ; 定義器件地址及存放單元/變量單元/I2C引腳</p><p>  ZLG7290 EQU 70H ;ZLG7290的器件地址</p><p>  SLA DATA 63H ;器件的從地址</p><p>  SUBA D

19、ATA 64H ;器件的子地址</p><p>  ACK BIT 10H ;應(yīng)答標(biāo)志位</p><p>  NUMBYTE DATA 62H ;讀/寫的字節(jié)數(shù)變量</p><p>  MTD EQU 6EH ;發(fā)送數(shù)據(jù)緩沖器</p><p>  DISBU

20、F EQU 66H ;66H~6DH為顯示緩沖區(qū),66H對(duì)應(yīng)最右一位</p><p>  SDA BIT P3.0</p><p>  SCL BIT P3.1</p><p>  RST BIT P3.6</p><p>  ORG 0000H<

21、/p><p>  AJMP START1</p><p>  ORG 0003H</p><p>  AJMP INT0_INT</p><p>  ORG 0013H</p><p>  AJMP INT1_INT</p><p>  ORG 001BH</p&

22、gt;<p>  AJMP T1_INT ;各程序段入口地址</p><p>  ORG 0100H</p><p>  START1: MOV R4,#10</p><p>  MOV R5,#0</p><p>  MOV R6,#0</p><p>  MOV

23、 R7,#0 ;寄存器賦初值</p><p>  MOV SP,#70H ;堆棧的選擇避開緩沖區(qū)</p><p>  MOV TMOD,#10H</p><p>  MOV TL1,#0B0H</p><p>  MOV TH1,#3CH</p><p>  SETB

24、EX0</p><p>  SETB EX1</p><p>  SETB ET1</p><p>  SETB IT0</p><p>  SETB IT1</p><p>  SETB EA ;各類中斷的設(shè)置</p><p>  LCA

25、LL RE7290</p><p>  MOV R0,#DISBUF</p><p>  MOV A,#1FH</p><p>  MOV R2,#08H</p><p>  MLOOP: MOV @R0,A</p><p><b>  INC R0</b>&

26、lt;/p><p>  DJNZ R2,MLOOP</p><p>  CLR 07H</p><p>  MOV 66H,#0AH ;數(shù)碼管復(fù)位,填入熄滅碼</p><p>  SETB TR1</p><p><b>  SJMP $</b></

27、p><p>  T1_INT: MOV TL1,#0B0H</p><p>  MOV TH1,#3CH ;重設(shè)初值</p><p>  DJNZ R4,T1_EXT ;判定時(shí)是否滿1s</p><p>  INC R7</p><p>  MOV

28、 R4,#10</p><p>  CJNE R7,#60,LOOP11</p><p>  MOV R7,#0</p><p>  INC R6</p><p>  CJNE R6,#60,LOOP11</p><p>  MOV R6,#0</p><p>

29、;  INC R5</p><p>  CJNE R5,#12,LOOP11</p><p>  MOV R5,#0 ;時(shí)分秒的計(jì)算</p><p>  CPL 07H</p><p>  JB 07H,APCHANG</p><p>  MOV

30、 66H,#0AH</p><p>  SJMP LOOP11</p><p>  APCHANG: MOV 66H,#16H ;上下午的變換</p><p>  LOOP11: MOV B,#10</p><p>  MOV A,R7</p><p>  DIV

31、 AB ;分離十位和個(gè)位</p><p>  MOV 68H,B</p><p>  MOV 69H,A</p><p>  MOV B,#10</p><p>  MOV A,R6</p><p>  DIV AB</p><p&g

32、t;  SETB B.7 ;顯示分隔用的小數(shù)點(diǎn)</p><p>  MOV 6AH,B</p><p>  MOV 6BH,A</p><p>  MOV B,#10</p><p>  MOV A,R5</p><p><b>  DIV

33、AB</b></p><p>  SETB B.7</p><p>  MOV 6CH,B</p><p>  MOV 6DH,A</p><p><b>  CLR EA</b></p><p>  LCALL LEDDISP ;調(diào)用顯示

34、子程序</p><p><b>  SETB EA</b></p><p>  T1_EXT: RETI</p><p>  INT0_INT: CLR EA</p><p>  MOV R7,#0</p><p>  INC R6</p><

35、p>  CJNE R6,#60,E0_EXT</p><p>  MOV R6,#0</p><p>  E0_EXT: LCALL LEDDISP</p><p>  SETB EA</p><p><b>  RETI</b></p><p>  INT1_IN

36、T: CLR EA</p><p>  MOV R7,#0</p><p>  INC R5</p><p>  CJNE R5,#12,E1_EXT</p><p>  MOV R5,#0</p><p>  CPL 07H</p><p>  JB

37、 07H,APCHANG1</p><p>  MOV 66H,#0AH</p><p>  SJMP E1_EXT</p><p>  APCHANG1: MOV 66H,#16H</p><p>  E1_EXT: LCALL LEDDISP</p><p>  SETB

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論