基于AT89C51單片機數(shù)字電壓表的設(shè)計_第1頁
基于AT89C51單片機數(shù)字電壓表的設(shè)計_第2頁
基于AT89C51單片機數(shù)字電壓表的設(shè)計_第3頁
基于AT89C51單片機數(shù)字電壓表的設(shè)計_第4頁
基于AT89C51單片機數(shù)字電壓表的設(shè)計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1題目:基于AT89C51單片機數(shù)字電壓表的設(shè)計目錄TOC\o"1-2"\h\z\u一、 整體設(shè)計思路框圖及原理圖……………1二、 模塊分析…………………21. AT89C51單片機…………22. A/D轉(zhuǎn)換………………….33. 顯示電路………………..4三、 軟件設(shè)計…………………5四、程序清單……………6五、 仿真實驗調(diào)試……………12六、 總結(jié)與體會 …………….13七、 參考文獻 ………………..14整體設(shè)計思路框圖及原理圖數(shù)字電壓表的設(shè)計即將連續(xù)的模擬電壓信號經(jīng)過A/D轉(zhuǎn)換器轉(zhuǎn)換成二進制數(shù)值,再經(jīng)由單片機軟件編程轉(zhuǎn)換成十進制數(shù)值并通過顯示屏顯示。按系統(tǒng)實現(xiàn)要求,決定控制系統(tǒng)采用AT89C51單片機,A/D轉(zhuǎn)換由于仿真軟件里的ADC0809元件有問題,這里用ADC0808代替,它和ADC0809區(qū)別很小。采用ADC0808。數(shù)字電壓表系統(tǒng)整體框圖如下圖1所示。模擬電壓模擬電壓AT89C51單片機ADC0808轉(zhuǎn)換數(shù)據(jù)顯示圖1整體框圖系統(tǒng)通過軟件設(shè)置單片機的內(nèi)部定時器T1產(chǎn)生中斷信號。通過片選選擇8路通道中的一路,將該路電壓送入ADC0808的EOC端口產(chǎn)生高電平,同時將ADC0808的OE端口置為高電平,單片機將轉(zhuǎn)換后結(jié)果存到片內(nèi)RAM。系統(tǒng)調(diào)出轉(zhuǎn)換顯示程序,將轉(zhuǎn)換為二進制的數(shù)據(jù)在轉(zhuǎn)換成十進制數(shù)并輸出到LCD顯示電路,將相應(yīng)電壓顯示出來。原理圖見附錄圖7。模塊分析AT89C51單片機接口分配電路設(shè)計如右圖2所示:圖2單片機接口電路P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在這里P0口作為輸入與輸出分別與ADC0808的輸出端和LCD顯示的輸入端相連,且P0外部被阻值為1K圖2單片機接口電路P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。這里只用到了P2.0~P2.3四個端口,其中P2.1~P2.3都是作為輸出端口控制顯示電路的寄存器選擇、讀寫信號和使能端口。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,在這里用到了P3.3/INT1(外部中斷1)、P3.6/WR(外部數(shù)據(jù)存儲器寫選通)、P3.7/RD(外部數(shù)據(jù)存儲器讀選通)。A/D轉(zhuǎn)換圖3A/D轉(zhuǎn)換電路接口分配電路設(shè)計如圖3所示圖3A/D轉(zhuǎn)換電路IN0~IN7為8路模擬量輸入端,這里只接一路電壓信號,其輸入信號是由直流電源及可調(diào)電阻提供。OUT1~OUT8為8位二進制數(shù)字量輸出端,其另一端連接到AT89C51單片機進行數(shù)值轉(zhuǎn)換。ADDA、ADDB、ADDC為3位片選地址輸入線,用于選通8路模擬輸入中的一路。ALE為地址鎖存允許信號,由單片機P3.6口寫信號與P2.0口相或取反輸入,高電平有效。START為A/D轉(zhuǎn)換啟動脈沖輸入端,由單片機P3.6口寫信號與P2.0口相或取反輸入一個正脈沖使其啟動(脈沖上升沿使0808復(fù)位,下降沿啟動A/D轉(zhuǎn)換)。EOC為A/D轉(zhuǎn)換結(jié)束信號,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平取反給P3.3口(轉(zhuǎn)換期間一直為低電平)。OE為數(shù)據(jù)輸出允許信號,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端由單片機P3.7讀信號與P2.0口相或后取反輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。顯示電路圖4顯示電路接口分配設(shè)計如圖4所示:圖4顯示電路RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。由單片機P2.1口控制R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。由單片機P2.2口控制E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。由單片機P2.3口控制圖5程序流程圖D0~D7為8位雙向數(shù)據(jù)線。由單片機P0口輸入,經(jīng)過阻值為1K?圖5程序流程圖軟件設(shè)計主程序的內(nèi)容包括:起始地址、中斷服務(wù)程序的起始地址、有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序的調(diào)用等。根據(jù)設(shè)計要求,設(shè)計出如圖5所示的主程序流程圖。A/D轉(zhuǎn)換子程序設(shè)計:A/D轉(zhuǎn)換程序的功能是采集數(shù)據(jù),在整個系統(tǒng)設(shè)計中占有很高的地位。當(dāng)系統(tǒng)置好后,單片機掃描轉(zhuǎn)換結(jié)束管腳P3.7的輸入電平狀態(tài),當(dāng)輸入為高電平則轉(zhuǎn)換完成,將轉(zhuǎn)換的數(shù)值顯示輸出。若輸入為低電平,則繼續(xù)掃描。程序流程圖如圖6所示。圖6A程序清單COMEQU50H;指令寄存器DATEQU51H;數(shù)據(jù)寄存器RSEQUP2.1;LCD寄存器選擇信號RWEQUP2.2;LCD讀/寫選擇信號EEQUP2.3;LCD使能信號ORG0000HLJMPMAIN;主程序入口ORG000BHLJMPBT0;T0中斷入口ORG0030H;主程序,初始化MAIN:MOVSP,#60HLCALLINTMOV30H,#30HMOV31H,#30HMOV32H,#0A5HMOV33H,#30HMOV34H,#30HMOVR7,#30HLCALLN1;顯示Voltage=00.00MOVTMOD,#00H;定時器T0設(shè)為方式0MOVTH0,#00h;裝入定時常數(shù)MOVTL0,#00hSETBTR0;啟動T0MOV24h,#03h;裝入T0中斷次數(shù)MOVIE,#82H;開中斷LP:MOVR7,#30H;顯示緩沖區(qū)首地址LCALLDISPLYSJMPLP;循環(huán)顯示DISPLY:MOVCOM,#0CAH;設(shè)置數(shù)據(jù)起始地址(第而行第10位)LCALLPR1MOVR1,#05HMOVR0,#30Hl:MOVDAT,@r0LCALLPR2INCR0DJNZR1,lRET;1.逐字依次輸入方式演示程序段N1:MOVCOM,#01H;清屏LCALLPR1MOVCOM,#06H;設(shè)置輸入方式LCALLPR1MOVCOM,#081H;設(shè)置數(shù)據(jù)起始地址(第一行地二位)LCALLPR1MOVDPTR,#TAB1MOVR2,#0EHMOVR3,#00HWRIN1:MOVA,R3MOVCA,@A+DPTRMOVDAT,ALCALLPR2INCR3DJNZR2,WRIN1MOVCOM,#0C1H;設(shè)置數(shù)據(jù)起始地址(第二行地二位)LCALLPR1MOVDPTR,#TAB2MOVR2,#9MOVR3,#00HWRIN2:MOVA,R3MOVCA,@A+DPTRMOVDAT,ALCALLPR2INCR3DJNZR2,WRIN2RETTAB1:DB"VOLTAGE=";LCD間接控制方式下的初始化子程序INT:LCALLDELAY;調(diào)延時子程序MOVCOM,#38H;設(shè)置工作方式(2行,8位數(shù)據(jù))LCALLPR1MOVCOM,#01H;清屏LCALLPR1MOVCOM,#06H;設(shè)置輸入方式LCALLPR1MOVCOM,#0CH;設(shè)置顯示方式LCALLPR1RETDELAY:MOVR6,#0FH;延時子程序MOVR7,#00HDELAY1:NOPNOPDJNZR7,DELAY1DJNZR6,DELAY1RET;LCD間接控制方式的驅(qū)動子程序如下;1讀BF和AC值PR0:PUSHACCMOVP0,#0FFH;P0置位,準備讀CLRRS;RS=0SETBRW;R/W=1SETBE;E=1LCALLDELAYMOVCOM,P0;讀BF和AC6-4值CLRE;E=0POPACCRET;2寫指令代碼子程序PR1:PUSHACCCLRRS;RS=0SETBRW;R/W=1PR11:MOVP0,#0FFH;P0置位,準備讀SETBE;E=1LCALLDELAYNOPMOVA,P0CLREJBACC.7,PR11;BF=1?CLRRW;R/W=0MOVP0,COMSETBE;E=1CLRE;E=0;E=0POPACCRET;3寫顯示數(shù)據(jù)子程序PR2:PUSHACCCLRRS;RS=0SETBRW;R/W=1PR21:MOVP0,#0FFHSETBE;E=1LCALLDELAYMOVA,P0;讀BF和AC6-4值CLRE;E=0JBACC.7,PR21SETBRSCLRRWMOVP0,DAT;寫入數(shù)據(jù)SETBECLREPOPACCRET;4讀顯示數(shù)據(jù)子程序PR3:PUSHACCCLRRS;RS=0SETBRW;R/W=1PR31:MOVP0,#0FFH;P0置位,準備讀SETBE;E=1LCALLDELAYMOVA,P0;讀BF和AC6-4值CLRE;E=0JBACC.7,PR31SETBRSSETBRW;R/W=1MOVP0,#0FFH;讀數(shù)據(jù)SETBE;E=1MOVDAT,P0CLRE;E=0POPACCRET;定時器T0中斷服務(wù)程序,讀取ADC0809第0通道的A/D轉(zhuǎn)換結(jié)果并化為顯示值BT0:PUSHACC;保護現(xiàn)場PUSHPSWMOVPSW,#08HCLRTR0;停止T0MOVTH0,#00h;重裝定時常數(shù)MOVTL0,#00hMOVDPTR,#0F6FFH;0809端口地址MOVA,#0;0通道MOVX@DPTR,A;啟動0809MOVR7,#0FFH;等待A/D轉(zhuǎn)換完DJNZR7,$MOVXA,@DPTR;讀0809轉(zhuǎn)換結(jié)果MOVB,#03H;將轉(zhuǎn)換的值除以3再累加,存入40H中DIVABADDA,40HMOV40H,AMOVA,B;將除以3后的余數(shù)累加放入41H中ADDA,41HMOV41H,ADEC24h;3次中斷未到則返回MOVA,24HJNZRNT1MOV24h,#03h;重裝中斷次數(shù)MOVA,41H;將累加的余數(shù)再除3后相加DIVABADDA,40HMOV40H,#0;清零累加數(shù)MOV41H,#0RTN:MOVB,#0fh;A/D轉(zhuǎn)換結(jié)果化為顯示值MULAB;(AD*5)/256MOV@R0,AMOVA,BMOVB,@R0MOVR0,AADDA,#246MOVA,R0MOV30H,#00HJNCLOOPADDA,#06HMOV30H,#01HLOOP:MOV31H,A;AD*5的高字節(jié)為整數(shù)部分MOVA,BMOVB,#0AHMULAB;AD*5的低字節(jié)為/256的結(jié)果,為小數(shù)部分MOV33H,B;二進制小數(shù)換為10進制數(shù)MOVB,#0AHMULABMOV34H,BLJMPRTN1RTN1:SETBTR0ORL30H,#30HORL31H,#30HMOV32H,#0A5H;小數(shù)點ORL33H,#30HORL34H,#30HPOPPSWPOPACCRETIEND仿真實驗調(diào)試1.打開WAVE6000軟件,菜單欄選擇“文件”中的“新建文件”,在彈出的窗口中編寫程序,然后保存后綴為“***.asm”的程序。2.菜單欄選擇“項目”中的“編譯”,如果程序無誤即編譯成功,否則修改程序直至編譯成功。3.打開Proteus軟件,新建文件File→NewDesign,同樣在彈出的原理圖編輯窗口中繪制原理圖,然后保存。4.加載程序,選擇Source→Add/RemoveSourceFiles,在彈出的對話框中點擊“New”選擇在WAVE6000軟件中編寫保存的程序如“***.asm”,點擊“OK”即加載成功。5.在Proteus軟件中的左下方點擊圖標仿真調(diào)試開始,即可看到仿真調(diào)試的結(jié)果??偨Y(jié)與體會這雖然是一個數(shù)字電壓表的設(shè)計但是實際上就是一個數(shù)據(jù)采集的程序設(shè)計,只不過這里數(shù)據(jù)采集的是模擬電壓罷了。雖然這個單片機的課題比較簡單,但是從中我還是學(xué)到了許多新東西。在之前的學(xué)習(xí)過程中沒有用到Proteu

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論