數字電壓表(單片機)_第1頁
數字電壓表(單片機)_第2頁
數字電壓表(單片機)_第3頁
數字電壓表(單片機)_第4頁
數字電壓表(單片機)_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

. 摘要:本文介紹一種基于89S52單片機的一種電壓測量電路,該電路采用ICL7135高精度、雙積分A/D轉換電路,測量范圍直流0-2000伏,使用LCD液晶模塊顯示,可以與PC機進行串行通信。正文著重給出了軟硬件系統的各部分電路,介紹了雙積分電路的原理,89S52的特點,ICL7135的功能和應用,LCD1601的功能和應用。該電路設計新穎、功能強大、可擴展性強。關鍵詞:電壓測量,ICL7135,雙積分A/D轉換器,1601液晶模塊Abstract : The introduction of a cost-based 89S52 MCU a voltage measurement circuits, the circuits used ICL7135 high-precision, dual-scoring A/D conversion circuits, measuring scope DC 0-2000 volts, the use of LCD that can be carried out with a PC serial communications. The paper focuses on providing a software and hardware system components circuit, introduced double integral circuit theory, 89S52 features ICL7135 functions and applications, LCD1601 functions and applications. the circuit design innovative, powerful, can be expansionary strong.Key Words : Digital Voltmeter ICL7135 LCD1601 89S521前言數字電壓表(Digital Voltmeter)簡稱DVM,它是采用數字化測量技術,把連續的模擬量(直流輸入電壓)轉換成不連續、離散的數字形式并加以顯示的儀表。傳統的指針式電壓表功能單一、精度低,不能滿足數字化時代的需求,采用單片機的數字電壓表,由精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC進行實時通信。目前,由各種單片A/D 轉換器構成的數字電壓表,已被廣泛用于電子及電工測量、工業自動化儀表、自動測試系統等智能化測量領域,示出強大的生命力。與此同時,由DVM擴展而成的各種通用及專用數字儀器儀表,也把電量及非電量測量技術提高到嶄新水平。本章重點介紹單片A/D 轉換器以及由它們構成的基于單片機的數字電壓表的工作原理。2 系統原理及基本框圖輸入電路A/D轉換89S52單片機LCD顯示通訊模塊如圖2.1所示,模擬電壓經過檔位切換到不同的分壓電路衰減后,經隔離干擾送到A/D轉換器進行A/D轉換,然后送到單片機中進行數據處理。處理后的數據送到LCD中顯示,同時通過串行通訊與上位機通信。 圖2.1系統基本方框圖3硬件設計3.1 輸入電路圖3.1.1量程切換開關 圖3.1.2衰減輸入電路輸入電路的作用是把不同量程的被測的電壓規范到A/D轉換器所要求的電壓值。智能化數字電壓表所采用的單片雙積分型ADC芯片ICL7135,它要求輸入電壓0-2V。本儀表設計是0-1000V電壓,靈敏度高所以可以不加前置放大器,只需衰減器,如圖3.1.2所示9M、900K、90K、和10K電阻構成1/10、1/100、1/1000的衰減器。衰減輸入電路可由開關來選擇不同的衰減率,從而切換檔位。為了能讓CPU自動識別檔位,還要有圖3.1.1的硬件連接。3.2 A/D 轉換電路A/D 轉換器的轉換精度對測量電路極其重要,它的參數關系到測量電路性能。本設計采用雙積A/D 轉換器,它的性能比較穩定,轉換精度高,具有很高的抗干擾能力,電路結構簡單,其缺點是工作速度較低。在對轉換精度要求較高,而對轉換速度要求不高的場合如電壓測量有廣泛的應用。3.2.1雙積A/D 轉換器的工作原理圖3.2.1.1雙積A/D 轉換器圖3.2.1.2雙積A/D 轉換器的波形圖 如圖所示:對輸入模擬電壓和基準電壓進行兩次積分,先對輸入模擬電壓進行積分,將其變換成與輸入模擬電壓成正比的時間間隔 T1,再利用計數器測出此時間間隔,則計數器所計的數字量就正比于輸入的模擬電壓;接著對基準電壓進行同樣的處理。在常用的A/D轉換芯片(如ADC -0809、ICL7135、ICL7109等)中,ICL7135與其余幾種有所不同,它是一種四位半的雙積分A/D轉換器,具有精度高(精度相當于14位二進制數)、價格低廉、抗干擾能力強等優點。本文介紹用單片機并行方式采集ICL7135的數據以實現單片機電壓表和小型智能儀表的設計方案。3.2.1 7135的應用7135是采用CMOS工藝制作的單片4位半A/D轉換器,其所轉換的數字值以多工掃描的方式輸出,只要附加譯碼器,數碼顯示器,驅動器及電阻電容等元件,就可組成一個滿量程為2V的數字電壓表。7135主要特點如下:雙積型A/D轉換器,轉換速度慢。在每次A/D轉換前,內部電 3.2.1.1 ICL7135引腳圖路都自動進行調零操作,可保證零點在常溫下的長期穩定。在20000字(2V滿量程)范圍內,保證轉換精度1字相當于14bitA/D轉換器。 具有自動極性轉換功能。能在但極性參考電壓下對雙極性模擬輸入電壓進行A/D轉換,模擬電壓的范圍為01.9999V。 模擬出入可以是差動信號,輸入電阻極高,輸入電流典型值1PA。 所有輸出端和TTL電路相容。 有過量程(OR)和欠量程(UR)標志信號輸出,可用作自動量程轉換的控制信號。 輸出為動態掃描BCD碼。 對外提供六個輸入,輸出控制信號(R/H,BUSH,ST,POL,OR,UR),因此除用于數字電壓表外,還能與異步接收 /發送器,微處理器或其它控制電路連接使用。 采用28外引線雙列直插式封裝,外引線功能端排列如圖所示。 7135數字部分數字部分主要由計數器、鎖存器、多路開關及控制邏輯電路等組成。7135一次A/D轉換周期分為四個階段:1、自動調零(AZ);2、被測電壓積分(INT);3、基準電壓反積分(DE);4、積分回零(ZI)。具體內部轉換過程這里不做祥細介紹,主要介紹引腳的使用。R/H(25腳)當R/H=“1”(該端懸空時為“1”)時,7135處于連續轉換狀態,每40002個時鐘周期完成一次A/D轉換。若R/H由“1”變“0”,則7135在完成本次A/D轉換后進入保持狀態,此時輸出為最后一次轉換結果,不受輸入電壓變化的影響。因此利用R/H端的功能可以使數據有保持功能。若把R/H端用作啟動功能時,只要在該端輸入一個正脈沖(寬度300ns),轉換器就從AZ階段開始進行A/D轉換。注意:第一次轉換周期中的AZ階段時間為9001-10001個時鐘脈沖,這是由于啟動脈沖和內部計數器狀態不同步造成的。/ST(26腳)每次A/D轉換周期結束后,ST端都輸出5個負脈沖,其輸出時間對應在每個周期開始時的5個位選信號正脈沖的中間,ST負脈沖寬度等于1/2時鐘周期。圖3.2.1.2 ICL7135的波形圖第一個ST負脈沖在上次轉換周期結束后101個時鐘周期產生。因為每個選信號(D5-D1)的正脈沖寬度為200個時鐘周期(只有AZ和DE階段開始時的第一個D5的脈沖寬度為201個CLK 周期),所以ST負脈沖之間相隔也是200個時鐘周期。需要注意的是,若上一周期為保持狀態(R/H=“0”)則ST無脈沖信號輸出。ST信號主要用來控制將轉換結果向外部鎖存器、UARTs或微處理器進行傳送。BUSY(21腳)在雙積分階段(INT+DE),BUSY為高電平,其余時為低電平。因此利用BUSY功能,可以實現A/D轉換結果的遠距離雙線傳送,其還原方法是將BUSY和CLK“與”后來計數器,再減去10001就可得到原來的轉換結果。OR(27腳)當輸入電壓超出量程范圍(20000),OR將會變高。該信號在BUSY信號結束時變高。在DE階段開始時變低。UR(28腳)當輸入電壓等于或低于滿量程的9%(讀數為1800),則一當BUST信號結束,UR將會變高。該信號在INT階段開始時變低。POL(23腳)該信號用來指示輸入電壓的極性。當輸入電壓為正,則POL等于“1”,反之則等于“0”。該信號DE階段開始時變化,并維持一個A/D轉換調期。位驅動信號D5、D4、D3、D2、D1(12、17、18、19、20腳)每一位驅動信號分別輸出一個正脈沖信號,脈沖寬度為200個時鐘周期,其中D5對應萬位選通,以下依次為千、百、十、個位。在正常輸入情況下,D5-D1輸出連續脈沖。當輸入電壓過量程時,D5-D1在AZ階段開始時只分別輸出一個脈沖,然后都處于低電平,直至DE階段開始時才輸出連續脈沖。利用這個特性,可使得顯示器件在過程時產生一亮一暗的直觀現象。 B8、B4、B2、B1(16、15、14、13腳)該四端為轉換結果BCD碼輸出,采用動態掃描輸出方式,即當位選信號D5=“1”時,該四端的信號為萬位數的內容,D4=“1”時為千位數內容,其余依次類推。在個、十、百、千四位數的內容輸出時,BCD碼范圍為0000-1001,對于萬位數只有0和1兩種狀態,所以其輸出的BCD碼為“0000”和“0001”。當輸入電壓過量程時,各位數輸出全部為零,這一點在使用時應注意。 最后還要說明一點,由于數字部分以DGNG端作為接地端,所以所有輸出端輸出電平以DGNG作為相對參考點。基準電壓,基準電壓的輸入必須對于模擬公共端COM是正電壓。 與單片機系統的串行連接在ICL7135與單片機系統進行連接時,使用并行采集方式,要連接BCD碼數據輸出線,可以將ICL7135的/STB信號接至AT89C52的P3.2(INT0)。 ICL7135需要外部的時鐘信號,本設計采用CD4060來對4M信號進行32分頻得到125KHz的時鐘信號。CD4060計數為級進制計數器,在數字集成電路中可實現的分頻次數最高,而且CD4060還包含振蕩電路所需的非門,使用更為方便。圖3.2.1.3 ICL7135與系統的連接圖 圖3.2.1.4 CD4060時鐘發生電路 3.3單片機部分單片機選用的是ATMEL公司新推出的AT89S52,如圖 3.2.1.1所示。該芯片具有低功耗、高性能的特點,是采用CMOS工藝的8位單片機,與AT89C51完全兼容。AT89S52還有以下主要特點: 采用了ATMEL公司的高密度、非易失性存儲器(NV-SRAM)技術; 其片內具有256字節RAM,8KB的可在線編程(ISP)FLASH存儲器; 有2種低功耗節電工作方式:空閑模式和掉電模式 片內含有一個看門狗定時器(WDT),WDT包含一個14位計數器和看門狗定時器復位寄存器(WDTRST),只要對WDTRST按順序先寫入01EH,后寫入0E1H,WDT便啟動,當CPU由于擾動而使程序陷入死循環或“跑飛”狀態時,WDT即可有效地使系統復位,提高了系統的抗干擾性能。3.4液晶顯示部分圖 3.2.1.1 89S52引腳圖顯示接口用來顯示系統的狀態,命令或采集的電壓數據。本系統顯示部分用的是LCD液晶模塊,采用一個161的字符型液晶顯示模塊, 點陣圖形式液晶由 M 行N 列個顯示單元組成,假設 LCD 顯示屏有64行,每行有 128列,每 8列對應 1 個字節的 8 個位,即每行由 16 字節,共 168=128個點組成,屏上 6416 個顯示單元和顯示 RAM 區 1024 個字節相對應,每一字節的內容和屏上相應位置的亮暗對應。一個字符由 68 或 88點陣組成,即要找到和屏上某幾個位置對應的顯示 RAM區的 8 個字節,并且要使每個字節的不同的位為1,其它的為0,為1的點亮,為0的點暗,這樣一來就組成某個字符。但對于內帶字符發生器的控制器來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據在LCD 上開始顯示的行列號及每行的列數找出顯示 RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。3.4.1 1601使用說明圖3.4.1.1 1601引腳圖表3.4.1.1 LCD1601液晶模塊的引腳引腳符號功能說明1GND接地2Vcc5V3VL驅動LCD,一般將此腳接地4RS寄存器選擇 0:指令寄存器(WRITE)Busy flag,位址計數器(READ) 1:數據寄存器(WRITE,READ)5R/WREAD/WRITE選擇 1:READ 0:WTITE6E讀寫使能(下降沿使能)7DB0低4位三態、雙向數據總線續表3.4.1.1 LCD1601液晶模塊的引腳8DB19DB210DB311DB4高4位三態、雙向數據總線另外DB7也是一個Busy flag12DB513DB614DB7寄存器選擇,如表所示:表3.4.1.3 寄存器選擇控制線操作RSR/W操作說明00寫入指令寄存器(清除屏幕等)01讀Busy flag(DB7),以及讀取位址計數器(DB0DB6)值10寫入數據寄存器(顯示各字型等)11從數據寄存器讀取數據Busy flag(DB7):在此位未被清除為“0”時,LCD將無法再處理其他指令要求。(1)顯示地址:內部地址計數器的計數地址:SB7=0(DB0DB6)第一行00、01、02 等,第二行40、41、42 等,可配合檢測DB7=1 (RS=0,R/W=1)讀取目前顯示字的地址,判斷是否需要換行。表3.4.1.4 LCD1601 161 顯示字的地址1234567891011121314151600010203040506074041424344454647(2)外部地址:DB7=1,亦即80H內部計數地址,可以用此方式將字顯示在某一位置。LCD各地址列舉如下表:表3.4.1.5 LCD1601 161 顯示字的外部地址161 16字1行 1601123456789101112131415168081828384858687C0C1C2C3C4C5C6C7表3.4.1.6 LCD1601 的指令組指 令說 明設置碼RS R/WD7D6D5D4D3D2D1D0清除顯示幕000000000*光標回到原點000000001*進入模式設定00000001I/DS顯示幕ON/OFF0000001DCB移位000001S/CR/L*功能設定00001DLNF*字發生器地址設定0001AGC設置顯示地址0001ADD忙碌標志位BF001BF顯示數據10寫入數據讀取數據11讀取數據I/D I/D=1 表示加1, I/D=0 表示減1S S=1 表示顯示幕ON S=0表示OFFD D=1 表示顯示屏幕ON D=0表示顯示屏幕OFFC C=1 表示光標ON C=0表示光標OFFB B=1 表示閃爍ON B=0表示顯示閃爍OFFS/C S/C=1表示顯示屏幕移位 S/C=0光標移位R/L R/L=1表示右移 R/L=0表示左移DL DL=1表示8位 DL=0表示4位F F=1表示510點矩陣 F=0表示57點矩陣N N=1表示2行顯示行 N=0表示1行顯示行BF BF=1:內部正在動作 BF=0:可接收指令或數據碼3.4.2 液晶顯示部分與89S52的接口 如圖所示:用89S52的P2口作為數據線,用P0.1、P0.2、P0.3分別作為LCD的E、R/W、RS。其中E是下降沿觸發的片選信號,R/W是讀寫信號,RS是寄存器選擇信號本模塊設計要點如下:顯示模塊初始化:首先清屏,再設置接口數據位為8位,顯示行數為1行,字型為57點陣,然后設3.4.2.1 液晶與89S52的接口置為整體顯示,取消光標和字體閃爍,最后設置為正向增量方式且不移位。向LCD的顯示緩沖區中送字符,程序中采用2個字符數組,一個顯示字符,另一個顯示電壓數據,要顯示的字符或數據被送到相應的數組中,完成后再統一顯示.首先取一個要顯示的字符或數據送到LCD的顯示緩沖區,程序延時2.5ms,判斷是否夠顯示的個數,不夠則地址加一取下一個要顯示的字符或數據。3.5 通訊模塊圖3.5.1 MAX232引腳功能圖89S52內部已集成通信接口URT,只需擴展一片MAX232芯片將輸出信號轉換成RS-232協議規定的電平標準, MAX232 是 一 種 雙 組 驅 動 器 / 接 收 器 ,每個接收器將EIA/TIA-232-E電平輸入轉換為5VTTL/CMOS電平。 每個驅動器將TTL/CMOS輸入電平轉換 為 EIA/TIA-232-E電平。即EIA接口,就是把5V轉換為-8V到-15V電位0V轉換為8V到15V再經RXD輸出,接收時由RXD輸入,把-8V到-15V電位轉換為5V,8V到15V轉換為0V。MAX232的工作電壓只需5V,內部有振蕩電路產生正負9V電位。4 系統的軟件設計4.1主程序設計ICL7135A/D與單片機連接電路的軟件設計系統的程序流程圖如圖所示。主程序一開始運行則設置堆棧起始地址為70H,設置中斷寄存器,用來對ICL7135的中斷進行計數,每5次后清零,完成一次數據采集工作,然后設置ICL7135的STB端的中斷的優先級。緊接著LCDM1601B進行一次清屏,使其各個指令、數據寄存器的值進行清空,屏幕不顯示任何字符。以前面對1601B的介紹,只要將01H送到數據總線,使RS=0,R/W=0,E有個下降沿的脈沖就可以完成清屏工作。用以下指令實現 MOV P2,#01H ;送到數據DB7-DB0,調用子程序 ENABLE,由于下降沿時,內部數據要送到RAM區,所以要有一個延時子程序,使這個下降沿持續2.5毫秒。內部RAM有指令代碼后就開始對RAM進行清零,所以屏幕原有的字符將被清除。接著對1601進行功能的設定。MOV P2,#01111000B,按表3.4.5來看是設定圖4.1.1 主程序流程圖顯示器按2行顯示,每行8位,57點陣。調用一次子程序ENABLE程序,寫入CPU的指令寄存器中。每次向LCDM中寫入一個指令,就調用一次ENABLE,然后再對顯示器進行閃爍、光標等功能進行設定。顯示器的RAM地址按加方法進行讀寫。再設定第一行字符,也就是Voltage的顯示地址80H。字符Voltage的TABLE表地址送到DPTR中,然后調用遠程查表命令,依次把數據送到P2口,這時再調用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E產生一個下降沿脈沖,將數據送入到數據寄存器中,接下來執行子程序DISPLAY1,它的主要功能是將TABLE表中的字符輸出到LCD中去。調定好顯示字符數即遠程查表的次數,就開始查表了。 例如第一個字符“V”的ASCII碼是56H,就將這個碼送到P2口,再調用使能數據子程序,使RS=1(數據區使能)寫入顯示數據區,R/W=0表示寫,E=來個下降沿延時2.5毫秒,使數據寫入RAM內。完成圖4.1.2 數據地址TABLE表輸出以后,向指令RAM中寫入第2行的起始地址為OCH,再調用顯示采樣數據的子程序。采樣數據存放的數據地址安排如下圖所示,首先將60H中的數顯示在正負號的位置上,按照ASCII碼表,正號不顯示(#20H),負號顯示“”(#2DH)。4.2 A/D中斷程序設計圖4.2.1 中斷子程序流程圖ICL7135每一分鐘完成3次據的采集工作,1/3秒完成后向CPU申請中斷,CPU這時暫停工作,為中斷服務.中斷響應后關中斷,將PSW、ACC壓棧,判斷是否首次中斷,如果是首次中斷,則將正負號標志位置入60H,再把萬位置入61H中,如果不是首次中斷,則跳到NEXT處,如果是第二次中斷,則將千位數置入62H中,如果是第三次中斷,再將百位數置入63H中,第四次中斷則將十位數置入64H中,第五次中斷則將小數點位置入65H中,同時個位置入66H中。同時清除中斷次數寄存器30H中的值,完成中斷后將ACC、PSW出棧,開中斷。消隱的思想:每次電壓采集后,CPU將數據送到LCD顯示,將可能出現以下幾種需要消隱的情況。例如:2000V檔量程:0199.9此時萬位的值0不符合人們的視覺習慣,需要把萬位的值消隱掉,編程是將#20H送入萬位,使其在LCD中不顯示任何字符即可。同樣的情況如下:需要消隱萬位、千位需要消隱萬位、千位、百位2000V檔量程:0019.90001.9需要消隱萬位需要消隱萬位、千位200V檔量程:019.99001.99需要消隱萬位20V檔量程:01.999在采集到數據之后,置數之前判斷檔位,是2V檔不消隱,是其他檔位時再看要消隱的位之前有幾個是零。例如2000V檔量程,-0001.9V,在2次中斷時判斷檔位是2000V檔,第1位是零,消隱第2位千位。4.3通訊模塊程序設計89S52單片機內部有一個全雙工的串行通信口,即串行接收和發送緩沖器(SBUF),這兩個在物理上獨立的接收發送器,既可以接收數據也可以發送數據。但接收緩沖器只能讀出不能寫入,而發送緩沖器則只能寫入不能讀出,它們的地址為99H。這個通信口既可以用于網絡通信,亦可實現串行異步通信,還可以構成同步移位寄存器使用。如果在傳行口的輸入輸出引腳上加上電平轉換器,就可方便地構成標準的RS-232接口。89S52的串行口有4種工作方式,1種同步方式,3種異步方式。本方式選方式1,一幀數據有10位,包括起始位0、8位數據位和1位停止位1。串行口電路在發送時能自動加入起始位和停止位。在接收時,停止位進入SCON中的RB8位。方式1的波特率是可變的,由定時器1的溢出率決定。由定時器1最好工作在方式2上(自動重裝載模式),這樣只需對TH1設置一次即可。數據通過TXD輸出,在8個位輸出完畢后,SCON寄存器的TI位被設為1,CPU只要判斷TI是1,接著發送下一個字節。波特率的設定:定時器T1工作在方式2的初值為:(1.1)為了減小誤差,時鐘振蕩頻率采用11.0592MHz,選用定時器T1工作在方式2作波特率發生器,波特率為300,設SMOD為0,依公式(1.1)得初值為:所以TH1 = TL1 = A0HMOV SCON ,#50H ;URAT工作在方式1上MOV TMOD ,#20H ;TIME1工作在方式2上MOV TH1 , #0A0H ;設置波特率為300本設計的中斷十分重要,為了減少相互間的干擾,保證可靠性,采用查詢方式判斷是否發送完畢。 A6: JBC TI , A5 ;如果發送完畢跳,清標志位,跳到A5。 AJMP A6 ;否則跳到A6,等待 A5: INC R0 5 結束語電壓測量通過不同的接口電路可實現溫度、濕度、壓力等測量,廣泛應用于工業領域。本電路設計別具一格,是一種高精度、低功耗、寬量程、智能化的電壓表。可擴展鍵盤、EEPROM、報警電路,實現電壓異常記錄、報警。參考文獻1 徐愛鈞.智能化測量控制儀表原理與設計(第二版)M.北京:北京航空航天大學出版社,2004.2 吳金戌,沈慶陽,郭庭吉.8051單片機實踐與應用M.北京:清華大學出版社,2002.3 張國勛,縮短ICL7135A/D采樣程序時間的一種方法J. 電子技術應用,1993,第一期.4 高峰,單片微型計算機與接口技術M.北京:科學出版社,2003.

溫馨提示

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

評論

0/150

提交評論