

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課程名稱: 單片機原理與接口技術(shù)課程設(shè)計</p><p> 設(shè)計題目: 多位數(shù)碼管循環(huán)顯示 </p><p> 院 系: 機電工程學(xué)院 </p><p> 班 級: 2010級電氣工程及其自動化專業(yè) </p><p> 一:設(shè)計方案描述與論證&l
2、t;/p><p> 本次課程設(shè)計將會設(shè)計一個多位數(shù)碼管顯示的系統(tǒng),在系統(tǒng)中用到的主要原件有PIC16F877A單片機一個,數(shù)碼管四個。在單片機最小系統(tǒng)焊接完成以后,選擇將數(shù)碼管的位選接在單片機的RB1,RB2,RB3,RB4口(由于RB0為INT外部觸發(fā)中斷的輸入引腳,故在此沒有占用),將數(shù)碼管的段選接在單片機D口。設(shè)置方向寄存器,B口的位1,位2,位3,位4設(shè)置為輸出,D口設(shè)置為全輸出。當RB1,RB2,RB3,
3、RB4都輸出1時,就可以點亮四個數(shù)碼管。在D口輸出需要顯示的數(shù)即可在數(shù)碼管顯示出數(shù)字。在顯示延時后對數(shù)進行自動加1即可完成對0~9999的循環(huán)顯示。</p><p><b> 二:硬件設(shè)計部分</b></p><p><b> 硬件電路</b></p><p><b> 工作原理</b><
4、/p><p> B口的1,2,3,4位為為選位,D口為段選,方向寄存器TRISB寫B(tài)‘00011110’,TRISD寫01H,即是B口1,2,3,4和D口都為輸出。PROTB輸出1時就可以把四個數(shù)碼管點亮,需要輸出的數(shù)寫入D口即可。</p><p><b> 三;軟件設(shè)計部分</b></p><p><b> 程序流程框圖</
5、b></p><p><b> 主程序</b></p><p> 十位進一 百位進一千位進一</p><p> 查表程序延時程序</p><p><b> 源程序:</b></p><p> list
6、 p=16f877A ; list directive to define processor</p><p> #include <p16f877A.inc> ; processor specific variable definitions</p><p> __CONFIG _CP_OFF & _WDT_OFF &
7、amp; _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _DEBUG_ON & _CPD_OFF </p><p> ;***** VARIABLE DEFINITIONS</p><p> w_temp EQU 0x71 ; variable used for
8、context saving </p><p> status_temp EQU 0x72 ; variable used for context saving</p><p> GE EQU 0x40</p><p> SHI EQU 0x41</p><p> BAI EQ
9、U 0x42</p><p> QIAN EQU 0X43</p><p> JIANGE EQU 0x44</p><p><b> .</b></p><p> ;*************************************************************
10、*********</p><p> ORG 0x000 ; processor reset vector</p><p> clrf PCLATH
11、
12、 </p><p> goto MAIN ; go t
13、o beginning of program</p><p> ORG 0x004 ; interrupt vector location</p><p> movwf w_temp ; save off current W register contents</p><p> movfSTATUS,
14、w ; move status register into W register</p><p> movwfstatus_temp ; save off contents of STATUS register</p><p> ; isr code can go here or be located as a call subroutine elsew
15、here</p><p> movf status_temp,w ; retrieve copy of STATUS register</p><p> movwfSTATUS ; restore pre-isr STATUS register contents</p><p> swapf w_temp,f</
16、p><p> swapf w_temp,w ; restore pre-isr W register contents</p><p> retfie ; return from interrupt</p><p><b> MAIN</b></p><p>
17、 ; remaining code goes here</p><p> BSFSTATUS,RP0</p><p> CLRFTRISD</p><p> BCF TRISB,1</p><p> BCFTRISB,2</p><p> BCFTRISB,3</p><
18、p> BCFTRISB,4</p><p> BCFSTATUS,RP0</p><p> BSFPORTB,1</p><p> BSFPORTB,2</p><p> BSFPORTB,3</p><p> BSFPORTB,4</p><p>
19、LOOP1MOVLW00H</p><p><b> MOVWFGE</b></p><p><b> MOVLW00H</b></p><p><b> MOVWFSHI</b></p><p><b> MOVLW00H</b>&l
20、t;/p><p><b> MOVWFBAI</b></p><p><b> MOVLW00H</b></p><p> MOVWFQIAN</p><p> LOOP2 CLRFJIANGE</p><p><b> INCFGE,F<
21、/b></p><p><b> MOVLW.10</b></p><p> SUBWFGE,W</p><p> BTFSCSTATUS,2</p><p><b> CALLGE1</b></p><p><b> MOVLW.10&l
22、t;/b></p><p> SUBWFSHI,W</p><p> BTFSCSTATUS,2</p><p><b> CALLSHI1</b></p><p><b> MOVLW.10</b></p><p> SUBWFBAI,W</
23、p><p> BTFSCSTATUS,2</p><p><b> CALLBAI1</b></p><p><b> MOVLW.10</b></p><p> SUBWFQIAN,W</p><p> BTFSCSTATUS,2</p>&l
24、t;p> GOTOLOOP1</p><p> LOOPMOVFGE,W</p><p> CALLCHABIAO</p><p> MOVWFPORTD</p><p> BCFPORTB,1</p><p> CALLDELAY</p><p> BSF
25、PORTB,1</p><p> MOVFSHI,W</p><p> CALLCHABIAO</p><p> MOVWFPORTD</p><p> BCFPORTB,2</p><p> CALLDELAY</p><p> BSFPORTB,2</p&
26、gt;<p> MOVFBAI,W</p><p> CALLCHABIAO</p><p> MOVWFPORTD</p><p> BCFPORTB,3</p><p> CALLDELAY</p><p> BSFPORTB,3</p><p>
27、 MOVFQIAN,W</p><p> CALLCHABIAO</p><p> MOVWFPORTD</p><p> BCFPORTB,4</p><p> CALLDELAY</p><p> BSFPORTB,4</p><p> INCFSZ JIANG
28、E,F</p><p><b> GOTOLOOP</b></p><p> GOTOLOOP2</p><p> DELAYDECFSZ30H,F</p><p> GOTODELAY</p><p><b> RETURN</b></p>
29、<p> CHABIAOADDWFPCL,F</p><p> RETLW0xC0</p><p> RETLW0xF9</p><p> RETLW0xA4</p><p> RETLW0xB0</p><p> RETLW0x99</p><p> R
30、ETLW0x92</p><p> RETLW0x82</p><p> RETLW0xF8</p><p> RETLW0x80</p><p> RETLW0x90</p><p> GE1CLRFGE</p><p> INCFSHI,F</p>
31、<p><b> RETURN</b></p><p> SHI1CLRFSHI</p><p> INCFBAI,F</p><p><b> RETURN</b></p><p> BAI1CLRFBAI</p><p> INCFQI
32、AN,F</p><p><b> RETURN</b></p><p> END ; directive 'end of program'</p><p><b> 四:結(jié)果評價</b></p><p> 本設(shè)計的硬件結(jié)構(gòu)簡單,程
33、序比較容易,但功能也是很單一。再設(shè)計中應(yīng)多用一些單片機的其他功能,對系統(tǒng)進行一些擴充和完善,比如加上復(fù)位、停止按鈕等。</p><p> 在本次的課程設(shè)計中,通過對實際硬件的設(shè)計和焊接,對程序的編寫和最后的運行,讓我們把理論和實際結(jié)合起來,加深了我們對理論知識的理解和實際動手能力。對于我們來說,這是一次非常有意義的課程,它將會讓我的一生都受益無窮。</p><p><b>
34、五:參考文獻</b></p><p> 1. 劉和平.PIC18Fxx單片機程序設(shè)計及應(yīng)用[M].北京航天航空大學(xué) 出版社,2005</p><p> 2. 王有緒.單片機接口技術(shù)及應(yīng)用系統(tǒng)設(shè)計[M].高等教育出版 社,2000</p><p> 3. 李學(xué)海.PIC單片機實用教程—基礎(chǔ)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計---單只數(shù)碼管循環(huán)顯示設(shè)計
- 兩位數(shù)碼管顯示課程設(shè)計
- 兩位數(shù)碼管顯示設(shè)計-課程設(shè)計
- 數(shù)碼管顯示課程設(shè)計報告
- plc數(shù)碼管顯示課程設(shè)計
- 兩位數(shù)碼管顯示設(shè)計-課程設(shè)計報告
- 數(shù)碼管學(xué)號滾動顯示課程設(shè)計
- 單片機課程設(shè)計--兩位數(shù)碼管顯示設(shè)計
- 兩位數(shù)碼管顯示課程設(shè)計說明書
- 兩位數(shù)碼管顯示設(shè)計課程設(shè)計說明書
- eda課程設(shè)計--八位數(shù)碼管掃描顯示電路的設(shè)計
- 8位數(shù)碼管秒表計時顯示
- plc課程設(shè)計---七段數(shù)碼管數(shù)字顯示
- 4位dip開關(guān)控制數(shù)碼管顯示系統(tǒng)設(shè)計課程設(shè)計
- eda技術(shù)課程設(shè)計--數(shù)碼管顯示數(shù)字鐘設(shè)計
- 數(shù)碼管按鍵顯示
- led數(shù)碼管顯示
- ds1302時鐘數(shù)碼管課程設(shè)計--用數(shù)碼管顯示實時日歷時鐘的設(shè)計
- 數(shù)字電子技術(shù)數(shù)碼管課程設(shè)計---數(shù)碼管設(shè)計及原理分析
- led數(shù)碼管顯示控制
評論
0/150
提交評論