版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 數(shù)字電壓表設(shè)計</b></p><p><b> 總體設(shè)計</b></p><p> 1.數(shù)字電壓表的設(shè)計即將連續(xù)的模擬電壓信號經(jīng)過A/D轉(zhuǎn)換器轉(zhuǎn)換成二進(jìn)制數(shù)值,再經(jīng)由單片機(jī)軟件編程轉(zhuǎn)換成十進(jìn)制數(shù)值并通過顯示屏顯示。 </p><p> 2.按系統(tǒng)實(shí)現(xiàn)要求,決定控制系
2、統(tǒng)采用AT89C51單片機(jī),A/D轉(zhuǎn)換由于仿真軟件里的ADC0808.</p><p> 3.采用ADC0808。數(shù)字電壓表系統(tǒng)整體框圖如下圖1所示。</p><p> ( 圖一)整體設(shè)計框圖</p><p> 系統(tǒng)通過軟件設(shè)置單片機(jī)的內(nèi)部定時器T1產(chǎn)生中斷信號。通過片選選擇8路通道中的一路,將該路電壓送入ADC0808的EOC端口產(chǎn)生高電平,同時將ADC08
3、08的OE端口置為高電平,單片機(jī)將轉(zhuǎn)換后結(jié)果存到片內(nèi)RAM。系統(tǒng)調(diào)出轉(zhuǎn)換顯示程序,將轉(zhuǎn)換為二進(jìn)制的數(shù)據(jù)在轉(zhuǎn)換成十進(jìn)制數(shù)并輸出到LCD顯示電路,將相應(yīng)電壓顯示出來。</p><p><b> 模塊分析</b></p><p> 接口分配電路設(shè)計如右圖2所示:</p><p> P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL
4、門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/ 地址的第八位。在這里P0口作為輸入與輸出分別與ADC0808的輸出端和LCD顯示的輸入端相連,且P0外部被阻值為1K?的電阻拉高</p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因
5、此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。這里只用到了P2.0~P2.3四個端口,其中P2.1~P2.3都是作為輸出端口控制顯示電路的寄存器選擇、讀寫信號和使能端口。</p><p>
6、 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p> P3口也可作為AT89C51的一些特殊功能口,在這里用到了P3.3 /INT1(外部中斷1)、 P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)、P3.7 /RD(外部數(shù)據(jù)存儲器
7、讀選通)。</p><p><b> A/D轉(zhuǎn)換</b></p><p> 接口分配電路設(shè)計如圖3所示:</p><p><b> A/D轉(zhuǎn)換電路 </b></p><p> IN0~I(xiàn)N7為8路模擬量輸入端,這里只接一路電壓信號,其輸入信號是由直流電源及可調(diào)電阻提供。 </p>
8、<p> OUT1~OUT8為8位二進(jìn)制數(shù)字量輸出端,其另一端連接到AT89C51單片機(jī)進(jìn)行數(shù)值轉(zhuǎn)換。 </p><p> ADDA、ADDB、ADDC為3位片選地址輸入線,用于選通8路模擬輸入中的一路。</p><p> ALE為地址鎖存允許信號,由單片機(jī)P3.6口寫信號與P2.0口相或取反輸入,高電平有效。 </p><p> START為
9、 A/D轉(zhuǎn)換啟動脈沖輸入端,由單片機(jī)P3.6口寫信號與P2.0口相或取反輸入一個正脈沖使其啟動(脈沖上升沿使0808復(fù)位,下降沿啟動A/D轉(zhuǎn)換)。 </p><p> EOC為 A/D轉(zhuǎn)換結(jié)束信號,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平取反給P3.3口(轉(zhuǎn)換期間一直為低電平)。 </p><p> OE為數(shù)據(jù)輸出允許信號,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端由單片機(jī)P3.7讀信號與P2
10、.0口相或后取反輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。</p><p><b> 顯示電路 </b></p><p> 接口分配設(shè)計如圖4所示:</p><p> RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。由單片機(jī)P2.1口控制</p><p> R/W為讀寫信號線,高電平時進(jìn)
11、行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以</p><p> 寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電</p><p> 平R/W為低電平時可以寫入數(shù)據(jù)。由單片機(jī)P2.2口控制</p><p> E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。由單片機(jī)P2.3口控制</p>
12、<p> D0~D7為8位雙向數(shù)據(jù)線。由單片機(jī)P0口輸入,經(jīng)過阻值為1K?的上拉電阻連接。</p><p><b> 軟件設(shè)計</b></p><p> 主程序的內(nèi)容包括:起始地址、中斷服務(wù)程序的起始地址、有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序的調(diào)用等。根據(jù)設(shè)計要求,設(shè)計出如圖所示的主程序流程圖。</p><p> A/D
13、轉(zhuǎn)換子程序設(shè)計: A/D轉(zhuǎn)換程序的功能是采集數(shù)據(jù),在整個系統(tǒng)設(shè)計中占有很高的地位。當(dāng)系統(tǒng)置好后,單片機(jī)掃描轉(zhuǎn)換結(jié)束管腳P3.7的輸入電平狀態(tài),當(dāng)輸入為高電平則轉(zhuǎn)換完成,將轉(zhuǎn)換的數(shù)值顯示輸出。</p><p> 若輸入為低電平,則繼續(xù)掃描。程序流程圖如圖所示。</p><p> A/D轉(zhuǎn)換子程序流程圖</p><p><b> 程序清單</b&g
14、t;</p><p> COM EQU 50H ; 指令寄存器</p><p> DAT EQU 51H ; 數(shù)據(jù)寄存器</p><p> RS EQU P2.1 ; LCD寄存器選擇信號</p><p> RW EQU P2.2 ; LCD讀/寫選擇信號</p><p> E EQU P2.3 ; LCD使
15、能信號</p><p><b> ORG 0000H</b></p><p> LJMP MAIN ;主程序入口</p><p><b> ORG 000BH</b></p><p> LJMP BT0 ;T0中斷入口</p><p> O
16、RG 0030H ;主程序,初始化</p><p> MAIN: MOV SP,#60H</p><p><b> LCALL INT</b></p><p> MOV 30H,#30H</p><p> MOV 31H,#30H</p><p> MOV 32H,#0A
17、5H</p><p> MOV 33H,#30H</p><p> MOV 34H,#30H</p><p> MOV R7,#30H</p><p> LCALL N1 ;顯示 Voltage = 00.00</p><p> MOV TMOD,#00H ;定時器T0設(shè)為方式0<
18、/p><p> MOV TH0,#00h ;裝入定時常數(shù)</p><p> MOV TL0,#00h</p><p> SETB TR0 ;啟動T0</p><p> MOV 24h, #03h ;裝入T0中斷次數(shù)</p><p> MOV IE,#82H ;開中斷</p&g
19、t;<p> LP: MOV R7,#30H ;顯示緩沖區(qū)首地址</p><p> LCALL DISPLY</p><p> SJMP LP ;循環(huán)顯示</p><p><b> DISPLY:</b></p><p> MOV COM,#0CAH ;設(shè)置
20、數(shù)據(jù)起始地址(第而行第10位)</p><p> LCALL PR1</p><p> MOV R1,#05H</p><p> MOV R0,#30H</p><p> l: MOV DAT,@r0</p><p><b> LCALL PR2</b></p>
21、<p><b> INC R0</b></p><p> DJNZ R1,l</p><p><b> RET</b></p><p> ;1. 逐字依次輸入方式演示程序段</p><p> N1:MOV COM,#01H ;清屏</p><
22、p><b> LCALL PR1</b></p><p> MOV COM,#06H ;設(shè)置輸入方式</p><p><b> LCALL PR1</b></p><p> MOV COM,#081H ;設(shè)置數(shù)據(jù)起始地址(第一行地二位)</p><p><
23、b> LCALL PR1</b></p><p> MOV DPTR,#TAB1</p><p> MOV R2,#0EH</p><p> MOV R3,#00H</p><p><b> WRIN1:</b></p><p><b> MOV A,R3&
24、lt;/b></p><p> MOVC A,@A+DPTR</p><p><b> MOV DAT,A</b></p><p><b> LCALL PR2</b></p><p><b> INC R3</b></p><p> D
25、JNZ R2,WRIN1</p><p> MOV COM,#0C1H ;設(shè)置數(shù)據(jù)起始地址(第二行地二位)</p><p><b> LCALL PR1</b></p><p> MOV DPTR,#TAB2</p><p><b> MOV R2,#9</b></p>
26、;<p> MOV R3,#00H</p><p><b> WRIN2:</b></p><p><b> MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV DAT,A</b></p>
27、;<p><b> LCALL PR2</b></p><p><b> INC R3</b></p><p> DJNZ R2,WRIN2</p><p><b> RET</b></p><p> TAB1: DB "VOLTAGE=
28、 "</p><p> ; LCD間接控制方式下的初始化子程序</p><p><b> INT:</b></p><p> LCALL DELAY ; 調(diào)延時子程序</p><p> MOV COM,#38H ; 設(shè)置工作方式(2行,8位數(shù)據(jù))</p><p><b&
29、gt; LCALL PR1</b></p><p> MOV COM,#01H ; 清屏</p><p><b> LCALL PR1</b></p><p> MOV COM,#06H ; 設(shè)置輸入方式</p><p><b> LCALL PR1</b></p>
30、<p> MOV COM,#0CH ; 設(shè)置顯示方式</p><p><b> LCALL PR1</b></p><p><b> RET</b></p><p> DELAY:MOV R6,#0FH ; 延時子程序</p><p> MOV R7,#00H</p&g
31、t;<p> DELAY1: NOP</p><p><b> NOP</b></p><p> DJNZ R7,DELAY1</p><p> DJNZ R6,DELAY1</p><p><b> RET</b></p><p> ;LCD間接控
32、制方式的驅(qū)動子程序如下</p><p> ;1 讀BF和AC值</p><p> PR0: PUSH ACC</p><p> MOV P0,#0FFH ; P0置位, 準(zhǔn)備讀</p><p> CLR RS ; RS=0</p><p> SETB RW; R/W=1</p><p>
33、; SETB E ; E=1</p><p> LCALL DELAY</p><p> MOV COM,P0 ; 讀BF和AC6-4值</p><p> CLR E ; E=0</p><p><b> POP ACC</b></p><p><b> RET</b&
34、gt;</p><p> ;2 寫指令代碼子程序</p><p> PR1: PUSH ACC</p><p> CLR RS ; RS=0</p><p> SETB RW ; R/W=1</p><p> PR11:MOV P0,#0FFH; P0置位, 準(zhǔn)備讀</p><p
35、> SETB E ; E=1</p><p> LCALL DELAY</p><p><b> NOP</b></p><p><b> MOV A,P0</b></p><p><b> CLR E</b></p><p> JB
36、ACC.7,PR11;BF=1?</p><p> CLR RW; R/W=0</p><p> MOV P0,COM</p><p> SETB E ; E=1</p><p> CLR E ; E=0; E=0</p><p><b> POP ACC</b></p>
37、<p><b> RET</b></p><p> ;3 寫顯示數(shù)據(jù)子程序</p><p> PR2:PUSH ACC</p><p> CLR RS ; RS=0</p><p> SETB RW; R/W=1</p><p> PR21:MOV P0,#0FFH</
38、p><p> SETB E ; E=1</p><p> LCALL DELAY</p><p> MOV A,P0 ; 讀BF和AC6-4值</p><p> CLR E ; E=0</p><p> JB ACC.7,PR21</p><p><b> SETB RS<
39、;/b></p><p><b> CLR RW</b></p><p> MOV P0,DAT; 寫入數(shù)據(jù)</p><p><b> SETB E</b></p><p><b> CLR E</b></p><p><b>
40、 POP ACC</b></p><p><b> RET</b></p><p> ;4 讀顯示數(shù)據(jù)子程序</p><p> PR3:PUSH ACC</p><p> CLR RS ; RS=0</p><p> SETB RW; R/W=1</p><
41、;p> PR31:MOV P0,#0FFH ; P0置位, 準(zhǔn)備讀</p><p> SETB E ; E=1</p><p> LCALL DELAY</p><p> MOV A,P0 ; 讀BF和AC6-4值</p><p> CLR E ; E=0</p><p> JB ACC.7,PR31
42、</p><p><b> SETB RS</b></p><p> SETB RW; R/W=1</p><p> MOV P0,#0FFH ; 讀數(shù)據(jù)</p><p> SETB E ; E=1</p><p> MOV DAT,P0</p><p> CL
43、R E ; E=0</p><p><b> POP ACC</b></p><p><b> RET</b></p><p> ; 定時器T0中斷服務(wù)程序,讀取ADC0809第0通道的A/D轉(zhuǎn)換結(jié)果并化為顯示值</p><p> BT0: PUSH ACC ;保護(hù)
44、現(xiàn)場</p><p> PUSH PSW</p><p> MOV PSW,#08H</p><p> CLR TR0 ;停止T0</p><p> MOV TH0,#00h ;重裝定時常數(shù)</p><p> MOV TL0,#00h</p>
45、<p> MOV DPTR,#0F6FFH ;0809端口地址</p><p> MOV A,#0 ;0通道</p><p> MOVX @DPTR,A ;啟動0809</p><p> MOV R7,#0FFH ;等待A/D轉(zhuǎn)換完</p><p> DJNZ R7,
46、$</p><p> MOVX A,@DPTR ;讀0809轉(zhuǎn)換結(jié)果</p><p> MOV B,#03H ;將轉(zhuǎn)換的值除以3再累加,存入40H中</p><p> DIV AB</p><p> ADD A,40H</p><p> MOV 40H,A</p>
47、;<p> MOV A,B ;將除以3后的余數(shù)累加放入41H中</p><p> ADD A,41H</p><p> MOV 41H,A</p><p> DEC 24h ;3次中斷未到則返回</p><p> MOV A,24H</p><p&
48、gt; JNZ RNT1</p><p> MOV 24h,#03h ;重裝中斷次數(shù)</p><p> MOV A,41H ;將累加的余數(shù)再除3后相加</p><p><b> DIV AB</b></p><p> ADD A,40H</p><p>
49、; MOV 40H,#0 ;清零累加數(shù)</p><p> MOV 41H,#0</p><p> RTN: MOV B,#0fh ;A/D轉(zhuǎn)換結(jié)果化為顯示值</p><p> MUL AB ;(AD*5)/256</p><p><b> MOV @R0,A<
50、;/b></p><p><b> MOV A,B</b></p><p><b> MOV B,@R0</b></p><p><b> MOV R0,A</b></p><p> ADD A,#246</p><p><b>
51、 MOV A,R0</b></p><p> MOV 30H,#00H</p><p><b> JNC LOOP</b></p><p> ADD A,#06H</p><p> MOV 30H,#01H</p><p><b> LOOP:</b>
52、</p><p> MOV 31H,A ;AD*5的高字節(jié)為整數(shù)部分</p><p><b> MOV A,B</b></p><p> MOV B,#0AH</p><p> MUL AB ;AD*5的低字節(jié)為/256的結(jié)果,為小數(shù)部分</p><p>
53、 MOV 33H,B ;二進(jìn)制小數(shù)換為10進(jìn)制數(shù)</p><p> MOV B,#0AH</p><p> MUL AB </p><p><b> MOV 34H,B</b></p><p><b> LJMP RTN1</b></p><p
54、> RTN1: SETB TR0</p><p> ORL 30H,#30H</p><p> ORL 31H,#30H</p><p> MOV 32H,#0A5H ;小數(shù)點(diǎn)</p><p> ORL 33H,#30H</p><p> ORL 34H,#30H</p><
55、p><b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> RETI</b></p><p><b> END</b></p><p><b> 原理圖</b>&l
56、t;/p><p><b> 總結(jié)與體會</b></p><p> 這雖然是一個數(shù)字電壓表的設(shè)計但是實(shí)際上就是一個數(shù)據(jù)采集的程序設(shè)計,只不過這里數(shù)據(jù)采集的是模擬電壓罷了,通過設(shè)計把在學(xué)校學(xué)習(xí)的很多課程集合在一起,加深了對課程之間的聯(lián)系,靈活的運(yùn)用。開闊了思維。</p><p> 總的來說結(jié)果還是完成了設(shè)計任務(wù),雖然整個過程有點(diǎn)不在狀態(tài),但還是溫
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表設(shè)計-課程設(shè)計
- 課程設(shè)計---數(shù)字電壓表設(shè)計
- 數(shù)字電壓表設(shè)計課程設(shè)計
- 數(shù)字電壓表設(shè)計-課程設(shè)計
- 簡易數(shù)字電壓表課程設(shè)計
- 數(shù)字電壓表課程設(shè)計 (2)
- 數(shù)字電壓表課程設(shè)計.doc
- 數(shù)字電壓表課程設(shè)計報告
- 數(shù)字電壓表的課程設(shè)計
- 數(shù)字電壓表課程設(shè)計.doc
- 課程設(shè)計報告--數(shù)字電壓表
評論
0/150
提交評論