液晶屏顯示數字電壓表_第1頁
液晶屏顯示數字電壓表_第2頁
液晶屏顯示數字電壓表_第3頁
液晶屏顯示數字電壓表_第4頁
液晶屏顯示數字電壓表_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 中科網1 引言數字電壓表的基本工作原理是利用A/D轉換電路將待測的模擬信號轉換成數字信號,通過相應換算后將測試結果以數字形式顯示出來的一種電壓表。較之于一般的模擬電壓表,數字電壓表具有精度高、測量準確、讀數直觀、使用方便等優(yōu)點。電壓表的數字化測量,關鍵在于如何把隨時連續(xù)變化的模擬量轉化成數字量,完成這種轉換的電路叫模數轉換器(A/D)。數字電壓表的核心部件就是A/D轉換器,由于各種不同的A/D轉換原理構成了各種不同類型的DVM。一般說來,A/D轉換的方式可分為兩類:積分式和逐次逼近式。積分式A/D轉換器是先用積分器將輸入的模擬電壓轉換成時間或頻率,再將其數字化。根據轉化的中間量不同,它又分為

2、U-T(電壓-時間)式和U-F(電壓-頻率)式兩種。逐次逼近式A/D轉換器分為比較式和斜坡電壓式,根據不同的工作原理,比較式又分為逐次比較式及零平衡式等。斜坡電壓式又分為線性斜坡式和階梯斜坡式兩種。在高精度數字電壓表中,常采用由積分式和比較式相結合起來的復合式A/D轉換器。本設計以AT89C51單片機為核心,以逐次比較型A/D轉換器ADC0808、液晶顯示器LCD1602為主體,構造了一款簡易的數字電壓表,能夠測量1路05V直流電壓,最小分辨率0.02V。更多資料請登錄 中科網 2 仿真軟件介紹2.1 仿真軟件簡介2.1.1 Proteus 6 ProfessionalISIS 6 Profe

3、ssiona軟件是它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。它從原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現(xiàn)了從概念到產品的完整設計。是目前將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,

4、并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。ISIS 6 Professiona軟件具有的功能:原理布圖;PCB自動或人工布線;SPICE電路仿真。2.1.2 Keil uVision2Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。Keil C51集成開發(fā)環(huán)境主要由菜單欄、工具欄、源文件編輯窗口、工程窗口和輸出窗口五部分組成。工具欄為一組快捷工具圖標,主要包括基本文件工具欄、建造工具欄和調試工具欄,基本文件工具欄包括新建、打開、拷貝、粘貼

5、等基本操作。建造工具欄主要包括文件編譯、目標文件編譯連接、所有目標文件編譯連接、目標選項和一個目標選擇窗口。調試工具欄位于最后,主要包括一些仿真調試源程序的基本操作,如單步、復位、全速運行等。在工具欄下面,默認有三個窗口。左邊的工程窗口包含一個工程的目標(target)、組(group)和項目文件。右邊為源文件編輯窗口,編輯窗口實質上就是一個文件編輯器,我們可以在這里對源文件進行編輯、修改、粘貼等。下邊的為輸出窗口,源文件編譯之后的結果顯示在輸出窗口中,會出現(xiàn)通過或錯誤(包括錯誤類型及行號)的提示。3 硬件設計3.1單片機控制模塊設計單片機控制模塊的作用是為控制各單元電路的運行并完成數據的換算

6、或處理,主要由單片機、時鐘電路、復位電路組成。3.1.1時鐘電路單片機工作的時間基準是由時鐘電路提供的,在單片機的XTAL1和XYAL2兩個管腳接一只晶振及兩只電容就構成了單片機的時鐘電路,電路中電容器和對振蕩頻率有微調作用,通常取(30±10)pF石英晶體選擇6MHz或12MHz都可以。時鐘電路如圖1所示。 圖1 系統(tǒng)時鐘電路 圖2 系統(tǒng)復位電路3.1.2復位電路單片機的RST管腳為主機提供了一個外部復位信號輸入口。復位信號是高電平有效,高電平有效的持續(xù)時間為2個機器周期以上。單片機的復位方式可由手動復位方式完成。復位電路如圖2所示。3.2逐次逼近式A/D轉換模塊設計逐次逼近型A/

7、D轉換器屬于直接型A/D轉換器,它能把輸入的模擬電壓直接轉換為輸出的數字代碼,而不需要經過中間變量。主要由比較器、環(huán)形分配器、控制門、寄存器與D/A轉換器組成。3.2.1 ADC0808簡介1ADC0808引腳功能圖3 引腳圖IN0IN7:8路模擬量輸入。A、B、C:3位地址輸入,2個地址輸入端的不同組合選擇八路模擬量輸入。ALE:地址鎖存啟動信號,在ALE的上升沿,將A、B、C上的通道地址鎖存到內部的地址鎖存器。D0D7:八位數據輸出線,A/D轉換結果由這8根線傳送給單片機。OE:允許輸出信號。當OE=1時,即為高電平,允許輸出鎖存器輸出數據。START:啟動信號輸入端,START為正脈沖,

8、其上升沿清除ADC0808的內部的各寄存器,其下降沿啟動A/D開始轉換。EOC:轉換完成信號,當EOC上升為高電平時,表明內部A/D轉換已完成。2ADC0808內部結構圖逐次逼近型A/D轉換器ADC0808由八路模擬開關、地址鎖存與譯碼器、比較器、D/A轉換器、寄存器、控制電路和三態(tài)輸出鎖存器等組成。其內部結構如圖4所示。圖4 ADC0808內部結構3.2.2 A/D轉換電路設計集成摸數轉換芯片ADC0808實現(xiàn)的A/D轉換電路如圖5所示,被測信號由ADC0808模擬輸入端輸入,完成A/D轉換后送入單片機,經相應處理后送出顯示。圖5 ADC0808與單片機的連接3.3顯示模塊設計3.3.1 L

9、CD顯示模塊LCD顯示器分為字段顯示和字符顯示兩種。其中字段顯示與LED顯示相似,只要送對應的信號到相應的管腳就能顯示。字符顯示是根據需要顯示基本字符。本設計采用的是字符型顯示。系統(tǒng)中采用LCD1602作為顯示器件輸出信息。與傳統(tǒng)的LED數碼管顯示器件相比,液晶顯示模塊具有體積小、功耗低、顯示內容豐富等優(yōu)點,而且不需要外加驅動電路,現(xiàn)在液晶顯示模塊已經是單片機應用設計中最常用的顯示器件了。LCD1602可以顯示2行16個漢字。3.3.2 LCD1602的引腳功能LCD1602模塊的引腳如圖6所示,其引腳功能如下:RS:數據和指令選擇控制端,RS=0命令狀態(tài);RS=1數據。R/W:讀寫控制線,R

10、/W=0寫操作;R/W=1讀操作。A:背光控制正電源,K:背光控制地。E:數據讀寫操作控制位,E線向LCD模塊發(fā)送一個脈沖,LCD模塊與單片機間將進行一次數據交換。DB0DB7:數據線,可以用8位連接,也可以只用高4位連接,節(jié)約單片機資源。VDD:電源端 ,VEE:亮度控制端(1-5V),VSS:接地端。VSS VDD VO RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A KLCD 模 塊1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16圖6 LCD1602模塊3.3.3 LCD1602的顯示操作1四種基本操作LCD有四種基本操作

11、,具體如表1所示。表1 LCD與單片機之間有四種基本操作RSR/W操作00寫命令操作(初始化,光標定位等)01讀狀態(tài)操作(讀忙標志位)10寫數據操作(要顯示內容)11讀數據操作(可以把顯示存儲區(qū)中的數據反讀出來)(1)讀狀態(tài)字:執(zhí)行讀狀態(tài)字操作,如表3-1滿足RS=0,R/W=1。根據管腳功能,當為有效電平時,狀態(tài)命令字可從LCD模塊傳輸到數據總線。同時可以保持一段時間,從而實現(xiàn)讀狀態(tài)字的功能。讀狀態(tài)字流程如圖7所示。圖7 讀入狀態(tài)字流程圖(2)命令字表2所示為命令字,其主要介紹了指令名稱、控制信號及控制代碼。其指令名稱是指要實現(xiàn)的功能;控制代號是采用的十六進制的數值表示的。1)清零操作是指輸

12、入某命令字后即能將整個屏幕顯示的內容全部清除;2)歸home位:將光標送到初始位;其中的號為任意,高低電平均可;3)輸入方式:設光標移動方向并指定整體顯示,是否移動。I/D=0:減量方式,S=1:移位方式,S=0:不移位;4)顯示狀態(tài):D指設置整體顯示開關;C指設置光標顯示開關;B指設置光標的字符閃耀;5)光標畫面滾動:R/L指右移或左移;S/C指移動總體或光標;6)功能設置:DL接口數位,L指顯示行數,F(xiàn)顯示字型;如DL=1:8位=0,4位N=1:2行=0:1行,G=1:5×10=0:5×7(點陣);7)CGRAM地址設制:相當于一個數據庫,可以在其中選擇所需要的符號;8

13、)DDRAM地址設制:顯示定位;9)讀BF和AC:B為最高位忙的標志,F(xiàn)為標志位;10)寫數據:將數據按要求寫入到對應的單元;11)讀數據:讀相應單元內的數據;表2 命令字指令名稱控制信號控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸HOME位000000001*輸入方式設制00000001I/DS顯示狀態(tài)設制0000001DCB無標畫面滾動000001S/CRL*功能設置00001DLNF*CGRAM地址設制0001A5A4A3A2A1A0DDRAM地址設制001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數據10數

14、 據讀數據11數 據(3)寫命令字由表2可知當RS=0,R/W=0時,才可以通過單片機或用戶指令把數據寫到LCD模塊,此時就對LCD進行調制??刹捎貌樵兎绞剑合茸x入狀態(tài)字,再判斷忙標志位,最后寫命令字。圖8所示為寫命令字的流程圖。圖8 寫命令字流程圖1)定義光標位置顯示數據的某位,就是把顯示數據寫在相應的DDRAM地址中,DDRAM地址占7位。Set DDRAM address命令如表3所示。光標定位,寫入一個顯示字符后,DDRAM地址會自動加1或減1,加或減由輸入方式設置。表3 Set DDRAM address命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5

15、AC4AC3AC2AC1AC0第1行DDRAM地址與第2行DDRAM地址并不連續(xù),如表3-4所示。表4 DDRAM地址row12345141516line180H81H82H83H84H8dH8eH8fHline20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH2)LCD初始化從通電開始延時,先經過判忙后再進行功能設置,過一段時間后可以設制顯示狀態(tài)(如設制行、位或陣列)再經過延時清屏后才可以設置輸入方式,具體實現(xiàn)過程如圖9所示。圖9 LCD初始化流程圖2LCD顯示程序設計LCD顯示程序的設計一般先要確定LCD的初始化、光標定位、確定顯示字符后,顯示流程如圖10顯示。圖10 LC

16、D顯示程序流程圖4系統(tǒng)軟件設計根據需要,可將系統(tǒng)軟件按照功能劃分為4個模塊,分別是主程序模塊、A/D轉換模塊、液晶顯示模塊、中斷服務程序模塊(改變顯示的小數點位置),各模塊的功能關系如圖11所示。編寫系統(tǒng)軟件時,可首先編寫各模塊的底層驅動程序,而后是系統(tǒng)聯(lián)機調試,編寫上層主程序。系統(tǒng)主程序液晶管顯示A/D轉換中斷服務.圖11 系統(tǒng)軟件框圖4.1主程序設計圖12 主程序流程圖主程序主要負責初始化工作:設置定時器、寄存器的初值,啟動A/D轉換,讀取轉換結果,處理量程轉換響應,控制液晶實時顯示等,其流程圖如圖12所示。4.2 A/D轉換程序A/D轉換程序的功能是采集數據,在整個系統(tǒng)設計中占有很高的地

17、位。當系統(tǒng)設置好后,單片機掃描轉換結束管腳P2.6的輸入電平狀態(tài),當輸入為高電平則轉換完成,將轉換的數值轉換并顯示輸出。若輸入為低電平,則繼續(xù)掃描。程序流程圖如圖13所示。圖13 A/D轉換程序流程圖程序如下:#define START P3_4 /ATART,ALE接口。0->1->0:啟動AD轉換。#define EOC P3_3 /轉換完畢由0變1.#define OUTPORT P2 /AD轉換函數,返回轉換結果。unsigned int uiADTransform()unsigned int uiResult;START=1; /啟動AD轉換。START=0;while(

18、EOC=0); /等待轉換結束。uiResult=OUTPORT; /出入轉換結果。uiResult=(100*uiResult)/51; /處理運算結果。return uiResult; 5 系統(tǒng)仿真首先采用Keil Vision編譯器進行源程序編譯及仿真調試,調試好程序后將目標文件導入Proteus進行軟件調試。在Proteus ISIS編輯窗口中單擊開始仿真按鈕,4位LED數碼管顯示相應的電壓值。調試結果如圖14所示。圖14 仿真結果圖6 結論本設計以AT89C51單片機為控制核心,通過集成摸數轉換芯片ADC0808將被測信號轉換成數字信號,經單片機內部程序處理后,由液晶顯示器LCD16

19、02顯示測量結果。仿真測試表明,系統(tǒng)性能良好,測量讀數穩(wěn)定易讀、更新速度合理,直流電壓測量范圍為0.005.00V,最小分辨率為0.02V,滿足任務書指標要求。但是,該系統(tǒng)也存在一定程度的不足,例如:1、輸入電壓易發(fā)生干擾不穩(wěn)定,且驅動能力可能存在不足,需在被測信號的輸入端加上一部分驅動電路,比如將量程轉換電路改成帶放大能力的自動量程轉換電路,將幅值較小的信號經適當放大后再測量,可顯著提高精度;2、輸出量可用平均值算法來改善,使測量準確度更高。3、若能將測量的電壓值實時保存,使用時將更方便。4、ADC0808可實現(xiàn)對8個通道的輸入信號輪流轉換,本設計僅僅使用了其中一個通道,造成了較大的資源浪費

20、。若能對電路稍加改進,實現(xiàn)對多路信號的輪流測量并自動保存相應結果,其應用價值將會更大。參考文獻1 徐愛鈞.智能化測量控制儀表原理 M.北京:北京航空航天大學出版社,20042 吳金戌,沈慶陽,郭庭吉.8051單片機實踐與應用M.北京:清華大學出版社,20023 黃智偉.全國大學生電子設計競賽訓練教程M.北京:電子工業(yè)出版社,20044 汪德彪.MCS-51單片機原理及接口技術M. 第1版.北京:電子工業(yè)出版社,2003附錄源程序:#include "includes.h"#define TIME0H 0x3C#define TIME0L 0xB0 /全局變量unsigned

21、 char uc_Clock=0;/定時器0中斷計數bit b_DATransform=0; /把電壓顯示在LCD上void vShowVoltage(unsigned int uiNumber)unsigned char ucaNumber3,ucCount;if(uiNumber>999)uiNumber=999;ucaNumber0=uiNumber/100;/把計算數字的每個位存入數組。ucaNumber1=(uiNumber-100*(int)ucaNumber0)/10;ucaNumber2=uiNumber-100*(int)ucaNumber0-10*ucaNumber1

22、;for(ucCount=0;ucCount<3;ucCount+)vShowOneChar(ucaNumberucCount+48);/從首位到末位逐一輸出。if(ucCount=0)vShowOneChar('.');/*主函數*void main()/<<<<<<<<<<<設置定時器0>>>>>>>>>>>>>>>>>TMOD=0x01;/定時器0,模式1。TH0=TIME0H;TL0=TIME0L;

23、TR0=1;/啟動定時器。ET0=1;/開定時器中斷。EA=1;/開總中斷vdInitialize();vWriteCMD(0x84); /寫入顯示起始地址(第二行第一個位置)vShowChar("Voltage:");vWriteCMD(0xC9);vShowChar("(V)");while(1)if(b_DATransform=1)b_DATransform=0;vWriteCMD(0xC4);vShowVoltage(uiADTransform();/<<<<<<<定時器0中斷函數>>>

24、>>>>>>>>void Time0() interrupt 1if(uc_Clock=0)uc_Clock=5;b_DATransform=1;elseuc_Clock-;TH0=TIME0H; /恢復定時器0。TL0=TIME0L;/<<<<<<<<<<<<<<<<<<<AD轉換函數>>>>>>>>>>>>>>>>>>>

25、;#include <at89x51.h>#define START P3_4 /ATART,ALE接口。0->1->0:啟動AD轉換。#define EOC P3_3 /轉換完畢由0變1.#define OUTPORT P2 /AD轉換函數,返回轉換結果。*/轉換結果是3位數,小數點在百位與十位之間*unsigned int uiADTransform()unsigned int uiResult;START=1; /啟動AD轉換。START=0;while(EOC=0); /等待轉換結束。uiResult=OUTPORT; /出入轉換結果。uiResult=(100

26、*uiResult)/51; /處理運算結果。return uiResult;/*驅動程序*/<<<<<<<<<<<<頭文件及宏定義>>>>>>>>>>#include "SMC1602.h"/<<<<<<<<<<<<<<<<把1個命令寫入LCD>>>>>>>>>>void vWriteCM

27、D(unsigned char ucCommand) vDelay();/先延時。LCDE=1;/然后把改為寫入命令狀態(tài)。LCDRS=0;LCDRW=0;LCDPORT=ucCommand;/再輸出命令。LCDE=0;/最后執(zhí)行命令。/<<<<<<<<<<<<<把1個數據寫入LCD>>>>>>>>>void vWriteData(unsigned char ucData) vDelay(); /先延時。 LCDE=1; /然后把改為寫入數據狀態(tài)。LCDRS=1;L

28、CDRW=0;LCDPORT=ucData; /再輸出數據。LCDE=0; /最后顯示數據。void vShowOneChar(unsigned char ucChar)switch(ucChar)case ' ': vWriteData(0x20);break;case '!': vWriteData(0x21);break;case '"': vWriteData(0x22);break;case '#': vWriteData(0x23);break;case '$': vWriteData(0x2

29、4);break;case '%': vWriteData(0x25);break;case '&': vWriteData(0x26);break;case '>': vWriteData(0x27);break;case '(': vWriteData(0x28);break;case ')': vWriteData(0x29);break;case '*': vWriteData(0x20);break;case '+': vWriteData(0x2A);bre

30、ak;case '-': vWriteData(0x2D);break;case '/': vWriteData(0x2F);break;case '=': vWriteData(0x3D);break;case '<': vWriteData(0x3E);break;case '?': vWriteData(0x3F);break;case '.': vWriteData(0x2E);break;case ':': vWriteData(0x3A);break;case &#

31、39;0': vWriteData(0x30);break;case '1': vWriteData(0x31);break;case '2': vWriteData(0x32);break;case '3': vWriteData(0x33);break;case '4': vWriteData(0x34);break;case '5': vWriteData(0x35);break;case '6': vWriteData(0x36);break;case '7': vW

32、riteData(0x37);break;case '8': vWriteData(0x38);break;case '9': vWriteData(0x39);break;case 'A': vWriteData(0x41);break;case 'B': vWriteData(0x42);break;case 'C': vWriteData(0x43);break;case 'D': vWriteData(0x44);break;case 'E': vWriteData(0x45

33、);break;case 'F': vWriteData(0x46);break;case 'G': vWriteData(0x47);break;case 'H': vWriteData(0x48);break;case 'I': vWriteData(0x49);break;case 'J': vWriteData(0x4A);break;case 'K': vWriteData(0x4B);break;case 'L': vWriteData(0x4C);break;case

34、'M': vWriteData(0x4D);break;case 'N': vWriteData(0x4E);break;case 'O': vWriteData(0x4F);break;case 'P': vWriteData(0x50);break;case 'Q': vWriteData(0x51);break;case 'R': vWriteData(0x52);break;case 'S': vWriteData(0x53);break;case 'T':

35、vWriteData(0x54);break;case 'U': vWriteData(0x55);break;case 'V': vWriteData(0x56);break;case 'W': vWriteData(0x57);break;case 'X': vWriteData(0x58);break;case 'Y': vWriteData(0x59);break;case 'Z': vWriteData(0x5A);break;case 'a': vWriteData(0x61);break;case 'b': vWriteData(0x62);break;case 'c': vWriteData(0x63);break;case 'd': vWriteData(0x64);break;case 'e': vWriteData(0x65);break;case 'f': vWriteData(0x66);break;case 'g': vWriteData(0x67);br

溫馨提示

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

評論

0/150

提交評論