国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單片機AT89C51 的數(shù)字電壓表顯示

2022-05-11 07:32李澤滔
智能計算機與應(yīng)用 2022年2期
關(guān)鍵詞:子程序模擬量數(shù)碼管

蒙 歡, 李澤滔

(貴州大學 電氣工程學院, 貴陽 550025)

0 引 言

實驗是科學探究的重要形式,測量是科學實驗的重要環(huán)節(jié)。 隨著電子科學技術(shù)的不斷發(fā)展,電子測量技術(shù)也越來越普遍,對測量儀器的各方面性能要求也越來越高。 數(shù)字電壓表(Digital Voltmeter,DVM)采用數(shù)字化測量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。 與傳統(tǒng)的模擬式電壓表相比,具有顯示清晰直觀、測量范圍廣、擴展能力強等優(yōu)點。此外,與傳統(tǒng)的儀表盤電壓表相比,數(shù)字電壓表避免了視覺誤差的缺點。

1 電壓表總體設(shè)計及原理

1.1 數(shù)字電壓表的設(shè)計要求

本文所設(shè)計的電壓表不同于其它電壓表,其主要用于實驗室的電壓測試,顯示精度為小數(shù)點后三位。 設(shè)計時應(yīng)滿足以下要求:

(1)電壓采集電路輸出電壓要求:對輸入量程的要求即是電壓采集電路的要求。 如果采集的電壓高于5 V(高于量程限制),數(shù)碼管顯示電壓表將始終顯示5 V。 因此,為了不引起混淆,需要滿足電壓采集電路的輸出電壓在0~5 V 之內(nèi)。

(2)成本及功耗要求:由于電壓采集電路的輸出電壓不是用來直接測量的,且由于轉(zhuǎn)換精度的存在,故經(jīng)A/D 轉(zhuǎn)換器轉(zhuǎn)換得到的電壓值與元件實際電壓值是有區(qū)別的。 為了程序的簡潔性,且又具有一定的精度,選擇8 位(即ADC0808)A/D 轉(zhuǎn)換器。

1.2 數(shù)字電壓表的總體設(shè)計

電壓采集電路采集元件的電壓值,得到的量為模擬量,將此模擬量經(jīng)A/D 轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字量,該數(shù)字量經(jīng)過單片機處理,從而顯示在數(shù)碼管上。電路設(shè)計的總體框圖如圖1 所示。

圖1 電路設(shè)計總體框圖Fig.1 Overall block diagram of the circuit design

2 系統(tǒng)硬件設(shè)計

在系統(tǒng)的電路組成中,著重討論A/D 轉(zhuǎn)換電路,以及單片機最小系統(tǒng)電路與數(shù)碼管顯示電路的原理及作用。

2.1 A/D 轉(zhuǎn)換電路

A/D 轉(zhuǎn)換的電路如圖2 所示。 RV1 為滑動變阻器,通過調(diào)節(jié)該滑動變阻器可以改變模擬量輸入電壓的值。 該模擬量電壓值經(jīng)A/D 轉(zhuǎn)換電路轉(zhuǎn)換為數(shù)字量(OUT1 ~OUT8 為數(shù)字量輸出端)輸出,最后在數(shù)碼管上顯示。

圖2 A/D 轉(zhuǎn)換電路圖Fig.2 A/D converting circuit diagram

需要注意的是,ADDC、ADDB、ADDA 為3 位地址輸入線,ADDC 為最高位,ADDA 為最低位。 通過該3位地址輸入線,可以在8 路模擬量輸入通道(IN0~IN7)中選擇正確的輸入通道。 選擇規(guī)則為:讓上述3 位地址輸入線上的二進制編碼值對應(yīng)模擬量輸入通道的下標值。 如,3 位地址輸入線分別取0、0、1 時(注意:0、1代表數(shù)字電路中對應(yīng)的低電位,高電位。 可自行設(shè)定一個范圍,然后劃分),所對應(yīng)的十進制值為1,故接通IN1 通道。 此外,在圖2 中,還需注意以下問題:

(1)給START 引腳(即A/D 轉(zhuǎn)換開始脈沖輸入引腳)加一個100 ns 寬的起動正脈沖,以確保AD 正常復(fù)位與啟動。 其中,脈沖上升沿使AD 轉(zhuǎn)換器復(fù)位,下降沿啟動A/D 轉(zhuǎn)換。

(2)ALE 為地址鎖存允許信號,高電平有效。 當此信號有效時,ADDC、ADDB、ADDA 3 位地址信號被鎖存,譯碼選通對應(yīng)模擬通道。

2.2 單片機最小系統(tǒng)電路

單片機的最小系統(tǒng)是使單片機能滿足單片機基本應(yīng)用的最簡單,且又是必不可少的基本電路。 單片機最小系統(tǒng)電路由51 單片機、時鐘振蕩電路、復(fù)位電路、電源電路、程序加載口組成。 其電路如圖3 所示。

根據(jù)硬件電路的不同,單片機的時鐘連接方式可分為內(nèi)部時鐘方式與外部時鐘方式。 時鐘振蕩電路的本質(zhì)就相當于一個振蕩器,其作用是使單片機內(nèi)部觸發(fā)器的狀態(tài)發(fā)生改變。 因此,單片機內(nèi)部的所有電路,在完成一個任務(wù)后將進入下一個狀態(tài),確保系統(tǒng)正常運行。

如圖3 所示,左上角為時鐘振蕩電路(屬于內(nèi)部時鐘電路),晶振1 的取值將決定程序運行的時鐘周期。 左下角的電路為復(fù)位電路,與單片機的9 引腳(復(fù)位引腳)相連。 當單片機的9 引腳輸入連續(xù)兩個機器周期(一個機器周期等于十二個時鐘周期)以上高電平時為有效,用來完成單片機的復(fù)位初始化操作,使單片機從頭開始執(zhí)行程序。 對于本文所設(shè)計的復(fù)位電路,通電時9 引腳為高電平,程序從頭開始執(zhí)行。 在運行的過程中,如果需要再次復(fù)位,再次按下復(fù)位電路的按鍵,可再次使程序從頭開始執(zhí)行。

圖3 單片機最小系統(tǒng)電路圖Fig.3 Circuit diagram of MCU minimum system

2.3 數(shù)碼管顯示電路

數(shù)碼管顯示電路如圖4 所示,數(shù)碼管顯示分為靜態(tài)顯示與動態(tài)顯示。 靜態(tài)顯示方式是由微型機一次輸出顯示后,保持該顯示結(jié)果,直到下次接收到新的顯示模型為止。 動態(tài)顯示方式,是指微型機定時地對顯示器件掃描。 在這種方式中,顯示器件分時工作,每次只能有一個器件顯示。 這兩種顯示方式有著本質(zhì)的區(qū)別,靜態(tài)顯示的特點是占用CPU 時間少,顯示便于監(jiān)測和控制,顯示字形穩(wěn)定,而動態(tài)數(shù)碼管的顯示,效果相對靜態(tài)顯示亮度差少許,但成本較低。本文所設(shè)計的數(shù)碼管顯示為動態(tài)顯示方式。

圖4 數(shù)碼管顯示電路圖Fig.4 Digital tube display circuit diagram

1 是上拉電阻,單片機P0 口內(nèi)部并無上拉電阻,因此使用時,需加外部上拉電阻,增強輸出能力。

3 系統(tǒng)軟件設(shè)計

本文設(shè)計的核心程序為:主程序、A/D 轉(zhuǎn)換子程序、數(shù)碼管顯示子程序。 其中,主程序完成數(shù)據(jù)的采集與顯示;A/D 轉(zhuǎn)換子程序完成數(shù)據(jù)的轉(zhuǎn)換(即把模擬量轉(zhuǎn)換為數(shù)字量輸出);數(shù)碼管顯示子程序完成數(shù)字電壓量的顯示。

3.1 主程序

主程序的設(shè)計流程如圖5 所示。 通過對A/D 轉(zhuǎn)換輸出的數(shù)字量進行處理、分離等一系列操作,最終顯示采集的電壓值。 由于定時器在進行計數(shù)或定時的過程中會產(chǎn)生溢出,因此要對定時器作初始化處理,同時也便于設(shè)置其工作模式。 主程序是系統(tǒng)軟件設(shè)計的重點,其將決定數(shù)字電壓表的顯示量程、精度、靈敏度等。 因此,在主程序的設(shè)計中應(yīng)注意以下幾點:

圖5 主程序流程圖Fig.5 Main program flow chart

(1)對于程序中使用的變量或者函數(shù)應(yīng)先聲明與定義,不然會報錯,導(dǎo)致最終電壓值無法顯示。

(2)定時/計數(shù)器的工作方式有4 種(0、1、2、3)。 對于前3 種工作方式,定時器都可以用來定時與計數(shù),但其計算公式并不相同。 本文設(shè)置的工作方式為方式1。

(3)需要設(shè)置定時器中斷處理函數(shù)。 當定時器/計數(shù)器設(shè)置為定時方式時,可以看成是對機器周期信號進行計數(shù),且由于機器周期時間是固定的,所以定時時間等于計數(shù)值乘機器周期的值。 當計數(shù)產(chǎn)生“溢出”(計數(shù)器每位均為“1”時,再計數(shù)一次,就會使計數(shù)器回0,稱為“溢出”)時,則會向CPU 發(fā)出中斷請求,故需要設(shè)置中斷處理函數(shù)。

3.2 A/D 轉(zhuǎn)換子程序

MCS-51 和ADC 接口通常可以采用查詢、中斷或延時方法。

(1)查詢方式。 采用查詢方式傳送數(shù)據(jù)時,先將轉(zhuǎn)換結(jié)束信號經(jīng)三態(tài)門送到CPU 數(shù)據(jù)總線或I/O 接口的某一位上;微型機向AD 轉(zhuǎn)換器發(fā)出啟動信號后,便開始查詢AD 轉(zhuǎn)換是否結(jié)束,一旦查詢到AD 轉(zhuǎn)換結(jié)束,則讀出結(jié)果數(shù)據(jù)。

(2)中斷方式。 中斷方式,是將轉(zhuǎn)換結(jié)束標志信號接到微型機系統(tǒng)的中斷申請引腳(如IRQ2)或允許中斷的I/O 接口的相應(yīng)引腳上(如8051 的INT0)。 當轉(zhuǎn)換結(jié)束時,即提出中斷申請,微型機響應(yīng)后,在中斷服務(wù)程序中讀取數(shù)據(jù)。

(3)延時方式。 軟件延時具體做法是:微型機啟動AD 轉(zhuǎn)換后,根據(jù)轉(zhuǎn)換芯片完成轉(zhuǎn)換所需要的時間,調(diào)用一段軟件延時程序(為保險起見,通常延時時間稍大于AD 轉(zhuǎn)換過程所需的時間)。 延時程序執(zhí)行完以后,AD 轉(zhuǎn)換已完成, 即可讀出結(jié)果數(shù)據(jù)。

本系統(tǒng)采用查詢方法,一旦轉(zhuǎn)換結(jié)束,立即讀取結(jié)果,并經(jīng)數(shù)碼管顯示。

3.3 數(shù)碼管顯示子程序

數(shù)碼管顯示子程序流程如圖6 所示。 本設(shè)計采用數(shù)碼管的動態(tài)顯示,故需要引入1 ms 的延時函數(shù)。 數(shù)碼管的連接分為共陽極與共陰極方式。 共陽極是將數(shù)碼管的八段連接在一起,一般在共陽極加高電平;共陰極與共陽極連接方式相同,只是公共陰極一般接地。 連接在一起的公共端稱為段碼,其中之一的一個片段稱為位碼。 對顯示的數(shù)字(段碼顯示)進行編碼,有助于編程的實現(xiàn)。

圖6 數(shù)碼管顯示子程序流程圖Fig.6 Flow chart of the digital tube display

需要注意的是,雖然共陽極與共陰極的顯示數(shù)字(段碼顯示)編碼不同,但可以把這些編碼值放在一個寄存器里面。 當需要顯示某一特定字型時,取出相應(yīng)的編碼即可。 其次,本文所用數(shù)碼管是共陽極數(shù)碼管,也就是位選端高電平時,數(shù)碼管被選中,然后輸入段碼(比如數(shù)字0 的段碼),數(shù)碼管就有顯示(此時顯示數(shù)字0,簡稱段碼顯示)。

4 實驗結(jié)果及分析

本文設(shè)計的數(shù)碼管顯示電壓表,能夠高精度地顯示所測元件的電壓值,并且靈敏度較高。 只要稍微滑動變阻器,其數(shù)碼管顯示的電壓值便隨之變化,基本上沒時間間隔誤差。 最后的總仿真結(jié)果如圖7 所示。從圖中可以看出,電壓表上的電壓為2.25 V,而數(shù)碼管上顯示的電壓為2.254 V,相對誤差為0.17%,能夠較好地逼近真實值。 還應(yīng)注意單片機AT89C51 和AT89C52 是通用的,可以隨便替換,但只是AT89C52容量大些,AT89C51 容量小些。 ADC0808 是ADC0809的簡化版,是8 位并行的AD 芯片,也就是模擬量轉(zhuǎn)數(shù)字量芯片。 8 位AD 轉(zhuǎn)換器輸出數(shù)據(jù)是0~255。

圖7 總仿真圖Fig.7 Total simulation diagram

5 結(jié)束語

通過Proteus 仿真平臺、Keil 軟件以及單片機相關(guān)知識,結(jié)合A/D 轉(zhuǎn)換原理,本文設(shè)計了一種基于AT89C51 單片機的數(shù)碼管顯示電壓表。 該電壓表能夠在0~5 V 之內(nèi)顯示不同的電壓,具有精度高,靈敏度高的特點,同時也克服了傳統(tǒng)儀表指針式電壓表讀數(shù)不穩(wěn)定的缺點。 雖然,顯示的范圍較小,但是對于一般的電學實驗來說,其實用性較好。

猜你喜歡
子程序模擬量數(shù)碼管
物理項目教學設(shè)計,用單片機控制四位數(shù)碼管顯示
藍橋杯樹莓派模擬題解析三:“電子測距儀”
Arduino編程
MC9S08FL16單片機數(shù)碼管靜態(tài)顯示分析
模擬量液位計在液壓站節(jié)能中的應(yīng)用
應(yīng)用子程序車削梯形螺紋方法
基于單片機的一種新型角度傳感器的設(shè)計
在數(shù)控車床上加工軟軸零件
數(shù)控車床加工螺紋編程方法探討
金昌市| 乐安县| 南澳县| 和平区| 洪江市| 福清市| 静宁县| 册亨县| 亳州市| 灵川县| 武邑县| 乡城县| 屯门区| 凌海市| 常熟市| 滁州市| 遂溪县| 巫山县| 青川县| 娄底市| 内江市| 延安市| 涞水县| 石嘴山市| 昂仁县| 大化| 福泉市| 浮梁县| 竹溪县| 集安市| 延庆县| 荔浦县| 乌拉特前旗| 读书| 淳安县| 临泉县| 清丰县| 樟树市| 漠河县| 新河县| 堆龙德庆县|