張玲麗(武漢職業(yè)技術(shù)學(xué)院 電子信息工程學(xué)院,湖北 武漢 430074)
基于單片機(jī)的LCD數(shù)字電流表的設(shè)計(jì)與實(shí)現(xiàn)
張玲麗
(武漢職業(yè)技術(shù)學(xué)院電子信息工程學(xué)院,湖北武漢 430074)
本文中數(shù)字電流表的控制系統(tǒng)采用AT89S51單片機(jī),A/D轉(zhuǎn)換器采用ADC0809為主要硬件,實(shí)現(xiàn)數(shù)字電流表的硬件電路與軟件設(shè)計(jì)。該系統(tǒng)的數(shù)字電流表電路簡(jiǎn)單,所用的元件較少,成本低,調(diào)節(jié)工作可實(shí)現(xiàn)自動(dòng)化。數(shù)字電流表可以測(cè)量0~200 mA的8路輸入電流值,并在LCD液晶顯示屏上顯示出來。
單片機(jī);數(shù)字電流表;A/D轉(zhuǎn)換器;液晶顯示屏
在現(xiàn)實(shí)中,根據(jù)測(cè)試系統(tǒng)的要求,往往需要采集被測(cè)對(duì)象的各種參數(shù),如電壓、電流等,這些參數(shù)的采集是至關(guān)重要的,它們直接影響到整個(gè)測(cè)試系統(tǒng)的測(cè)試精度。在有些應(yīng)用中,需要對(duì)電流進(jìn)行檢測(cè),必須先將其電流信號(hào)轉(zhuǎn)換為電壓信號(hào),然后才能實(shí)現(xiàn)A/D轉(zhuǎn)換。常用的轉(zhuǎn)換方法是在電路中加入精密電阻,由此將電流信號(hào)轉(zhuǎn)換為電壓信號(hào)[1]。這種方法的優(yōu)點(diǎn)是測(cè)量簡(jiǎn)單方便,但是這種方法當(dāng)電流很小時(shí),從電阻上取得的電壓值可能很小,影響測(cè)量精度,因而很難選擇一個(gè)合適的阻值;其次,所得到的電流檢測(cè)信號(hào)只有通過放大以后才能進(jìn)入電路中的比較器,從而增加了電路設(shè)計(jì)調(diào)試時(shí)的復(fù)雜度。因此,需要采用電流/電壓轉(zhuǎn)換芯片,并結(jié)合單片機(jī)以實(shí)現(xiàn)對(duì)電流信號(hào)的檢測(cè)。本文中采用精密電阻,克服了常規(guī)測(cè)量電流方法存在的測(cè)量范圍小、測(cè)量誤差大等缺點(diǎn),可提高測(cè)量精度,同時(shí)采用單片機(jī)可實(shí)現(xiàn)自動(dòng)檢測(cè)。
本設(shè)計(jì)旨在設(shè)計(jì)一款測(cè)量范圍在 0~200 mA、顯示精度在小數(shù)點(diǎn)前一位的基于 AT89S51單片機(jī)帶液晶顯示功能的電流表,經(jīng)查閱多種相關(guān)資料,確定本設(shè)計(jì)的總體框圖如圖1所示。
圖1所示電路工作過程:將需要檢測(cè)的電流信號(hào)經(jīng)過I/V變換變?yōu)殡妷盒盘?hào),將其輸出的電壓信號(hào)連接到ADC0809進(jìn)行 A/D轉(zhuǎn)換,電壓信號(hào)經(jīng)過采樣后,輸出到單片機(jī),單片機(jī)控制中斷的過程以及數(shù)據(jù)的讀取過程,最后通過控制液晶顯示所讀取的數(shù)據(jù)。
1.1I/V變換電路部分
對(duì)本設(shè)計(jì)來說,由于精度要求并不高,故用有源 I/V即可滿足要求,有源 I/V變換是利用有源器件——運(yùn)算放大器和電阻電容組成的,如圖2所示。
圖2 有源I/V變換
該有源I/V變換電路利用同相放大電路,把電阻R1上的輸入電壓變成標(biāo)準(zhǔn)輸出電壓。該同相放大電路的放大倍數(shù)為:
若取 R1=20 Ω,R2=100 kΩ,R3=100 kΩ,R4=25 kΩ,R5=10 kΩ,則當(dāng)輸入電流為0~200 mA時(shí),對(duì)應(yīng)于0~5 V的電壓輸出。
1.2A/D轉(zhuǎn)換模塊
基于成本、功耗、分辨率、模擬電壓轉(zhuǎn)換范圍等因素,此處選擇ADC0809芯片。ADC0809與8051單片機(jī)的硬件接口有3種形式,分別是查詢方式、中斷方式和延時(shí)等待方式。A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。在本設(shè)計(jì)中,選擇中斷方式,即把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。
1.3單片機(jī)模塊
該電流表可測(cè)量0~200 mA的直流電壓,通過電位器調(diào)節(jié)產(chǎn)生,顯示位數(shù)3位[2],工作電壓5 V。通過 A/D轉(zhuǎn)換芯片ADC0809把模擬信號(hào)轉(zhuǎn)換為數(shù)字量傳送到單片機(jī)的P3口,并在P2口把轉(zhuǎn)換的結(jié)果顯示出來。在仿真軟件 Protesus[3]里選擇元器件后連接電流表總圖,如圖3所示。
本設(shè)計(jì)選用的AT89S51是ATMEL公司推出的高性能8位微控制器,由于 ADC0809無片內(nèi)時(shí)鐘,時(shí)鐘信號(hào)可由 AT89S51的 ALE信號(hào)經(jīng)D觸發(fā)器二分頻后獲得。ALE引腳的脈沖頻率是8051時(shí)鐘頻率的1/6。本設(shè)計(jì)中單片機(jī)時(shí)鐘頻率采用6 MHz,則ALE輸出的頻率是1 MHz,二分頻后為500 kHz,符合ADC0809對(duì)頻率的要求。
1.4顯示部分
圖3 基于AT89S51的數(shù)字電流表電路圖
本電流表的顯示[4]選擇 LCDl602型 LCD,它具有電流小、功耗低、體積小、字跡清晰、美觀、方便、使用壽命長(zhǎng)、無電磁輻射等優(yōu)點(diǎn)。從圖 3中可看出其與 AT89S51 的P0口相連,其DO~D7為8位雙向數(shù)據(jù)線,VSS為地電源,VDD接 5 V正向電源,VEE為液晶顯示器對(duì)比度調(diào)整端,接正向電源時(shí)對(duì)比度最弱,而接地電源時(shí)對(duì)比度最高。該引腳通過一只1 kΩ的電位器來調(diào)整其對(duì)比度。RS為寄存器選擇引腳,RS為高電平時(shí)選用數(shù)據(jù)寄存器;RS為低電平時(shí)選用指令寄存器。RW為可讀寫信號(hào)引腳,RW高電平時(shí)為讀操作;RW低電平時(shí)為寫操作。當(dāng)RS和RW共同為低電平時(shí)則寫入指令或者顯示地址;當(dāng)RS為低電平、RW為高電平時(shí)為讀忙信號(hào);當(dāng)RS為高電平、RW為低電平時(shí)為寫人數(shù)據(jù)。E為使能端,當(dāng)E由高電平跳變?yōu)榈碗娖綍r(shí),LCD液晶模塊開始執(zhí)行命令。
本電流表的主程序流程包括:系統(tǒng)初始化、中斷處理程序、數(shù)值轉(zhuǎn)換程序、顯示處理程序。較關(guān)鍵的是數(shù)據(jù)采集部分和顯示部分。
2.1數(shù)據(jù)采集部分
本部分程序設(shè)計(jì)的思想如下:首先由ADC0809采集數(shù)據(jù),采集完成后單片機(jī)通過中斷將數(shù)據(jù)讀入,然后將所得十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),將此十進(jìn)制數(shù)的百、十、個(gè)位分別取出,在預(yù)先設(shè)置好的表中查出其所對(duì)應(yīng)的顯示指令并顯示出來。以下為數(shù)值轉(zhuǎn)換的主代碼[5]。
codes=PORT;//將中斷值賦予codes
codes1=(codes&0xf0)>>4;//取出codes的高 4位
codes0=codes&0x0f;//取出codes的低4位
code_d=codes1*16+codes0;//將 codes轉(zhuǎn)化為十進(jìn)制數(shù)
bai=code_d/100;//將code_d的百位取出
shi=code_d/10%10;//將code_d的十位取出
ge=code_d%10;//將code_d的個(gè)位取出
2.2數(shù)值顯示程序
這部分程序首先要將單位mA顯示出來,因?yàn)檫@單位是不變的。要把測(cè)得的數(shù)值在液晶屏上顯示出來時(shí),此處調(diào)用一個(gè)getchar函數(shù)。在這個(gè)函數(shù)中,用了一個(gè)do{}while語句。在此語句的一開頭首先測(cè)試液晶模塊是否空閑,若不空閑則等待其空閑,當(dāng)液晶空閑時(shí),執(zhí)行嵌套switch/case語句。由于要顯示三個(gè)數(shù)字,所以設(shè)定了一個(gè)變量 i,當(dāng)i=0時(shí)顯示百位,當(dāng)i=1時(shí)顯示十位,當(dāng) i=2時(shí)顯示個(gè)位。顯示數(shù)字時(shí)可選擇查表法。先建立三個(gè)表,每一位對(duì)應(yīng)一個(gè)表。以下為顯示十位的例子。
顯示完成后,進(jìn)行適當(dāng)?shù)难訒r(shí)以保證顯示的穩(wěn)定性。
在本次設(shè)計(jì)中,通過使用 Proteus繪制電路圖,用 C語言編寫程序,程序運(yùn)行完畢后,電壓表的顯示屏上就可以顯示出電流數(shù)值來。調(diào)節(jié)電位器,顯示數(shù)值就會(huì)發(fā)生變化。電壓表的最小顯示值是0 mA,最大顯示值是200 mA,這與設(shè)計(jì)目的一致,1 s內(nèi)大約可以測(cè)量 2次電壓值。
[1]柳金龍.淺談數(shù)字電壓表的特點(diǎn)[J].中國計(jì)量,2004(8):43-44.
[2]王韜.3位半積分式 A/D轉(zhuǎn)換DC電壓表[J].電子設(shè)計(jì)工程:電子世界,2002(2):44-45.
[3]周潤景,張麗娜.劉映群.PROTEUS入門使用教程[M].北京:機(jī)械工業(yè)出版社,2007.
[4]馬俊,劉曉林.智能鍵盤字符輸入及LCD顯示系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2009,17(1):66-68.
[5]馬忠梅,籍順心,張凱,等.單片機(jī)的 C語言應(yīng)用程序設(shè)計(jì)(第 3版)[M].北京:北京航空航天大學(xué)出版社,2003.
A design and implementation of LCD digital voltmeter based on the single chip microcomputer
Zhang Lingli
(College of Electronic Information Engineering,Wuhan Polytechnic,Wuhan 430074,China)
In this paper,a hardware and software design of an ammeter was given.This system is based on AT89S51.The ammeter contained an A/D converter using ADC0809 as main hardware.Its characteristics were significant,such as simple,less components,low cost.It adjusted its work automatically.The digital ammeter can measure 0~200 mA 8-way input current values,and displayed on the LCD screen.
single chip microcomputer;digital ammeter;A/D converter;liquid crystal display
TM932
A
1674-7720(2015)05-0032-03
(2014-09-12)
張玲麗(1980-),女,碩士研究生,講師,主要研究方向:通信技術(shù)。