版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計</b></p><p><b> 摘要:</b></p><p> 本文介紹的是數(shù)字電壓表的發(fā)展背景和利用單片機,A/D轉(zhuǎn)換芯片結(jié)合的方法設(shè)計一個直流數(shù)字電壓表。它的具體功能是:最高量程為200V,分三個檔位量程,即2V,20V,200V,可以通過調(diào)檔開關(guān)來實現(xiàn)各個檔位。當測得電壓的數(shù)值小于1V時,系統(tǒng)
2、會自動的將電壓數(shù)值轉(zhuǎn)換為以mV為電壓單位的電壓值。并且通過按鍵的方法能夠測得后五秒的平均電壓值。</p><p><b> 目錄</b></p><p> 一.數(shù)字電壓表簡介:3</p><p> 二.數(shù)字電壓設(shè)計兩種方案簡介:4</p><p> 1.由數(shù)字電路及芯片構(gòu)建。4</p><
3、;p> 2.由單片機系統(tǒng)及A/D轉(zhuǎn)換芯片構(gòu)建。5</p><p> 三.單片機簡介及本設(shè)計單片機的選擇5</p><p> 1.常用單片機的特點比較及本設(shè)計單片機的選擇5</p><p> 2.本設(shè)計使用的單片機的簡介6</p><p> 四.各種顯示器件的介紹和選擇7</p><p> 1
4、.常用顯示器件簡介7</p><p> 2.1602液晶的參數(shù)資料8</p><p> 五.模數(shù)(A/D)轉(zhuǎn)換芯片的選擇10</p><p> 1.常用的A/D芯片簡介10</p><p> 2.模數(shù)(A/D)芯片TLC2543的資料11</p><p><b> 六.總體設(shè)計13<
5、;/b></p><p> 七.硬件電路系統(tǒng)模塊的設(shè)計14</p><p> 八.系統(tǒng)軟件的設(shè)計18</p><p> 1.匯編語言和C語言的特點及選擇18</p><p> 2.主程序設(shè)計18</p><p> 九.系統(tǒng)的調(diào)試29</p><p> 1.硬件調(diào)試
6、29</p><p> 2.軟件調(diào)試30</p><p><b> 十.總結(jié)30</b></p><p><b> 參考文獻31</b></p><p> 一.數(shù)字電壓表簡介:</p><p> 數(shù)字電壓表出現(xiàn)在50年代初,60年代末發(fā)起來的電壓測量儀表,簡
7、稱DVM,它采用的是數(shù)字化測量技術(shù),把連續(xù)的模擬量,也就是連續(xù)的電壓值轉(zhuǎn)變?yōu)椴贿B續(xù)的數(shù)字量,加以數(shù)字處理然后再通過顯示器件顯示。這種電子測量的儀表之所以出現(xiàn),一方面是由于電子計算機的應用逐漸推廣到系統(tǒng)的自動控制信實驗研究的領(lǐng)域,提出了將各種被觀察量或被控制量轉(zhuǎn)換成數(shù)碼的要求,即為了實時控制及數(shù)據(jù)處理的需要;另一方面,也是電子計算機的發(fā)展,帶動了脈沖數(shù)字電路技術(shù)的進步,為數(shù)字化儀表的出現(xiàn)提供了條件。所以,數(shù)字化測理儀表的產(chǎn)生與發(fā)展與電子計
8、算機的發(fā)展是密切相關(guān)的;同時,為革新電子測量中的煩鎖和陳舊方式也催促了它的飛速發(fā)展,如今,它又成為向智能化儀表發(fā)展的必要橋梁。</p><p> 如今,數(shù)字電壓表已絕大部分已取代了傳統(tǒng)的模擬指針式電壓表。因為傳統(tǒng)的模擬指針式電壓表功能單一,精度低,讀數(shù)的時候也非常不方便,很容易出錯。而采用單片機的數(shù)字電壓表由于測量精度高,速度快,讀數(shù)時也非常的方便,抗干擾能力強,可擴展性強等優(yōu)點已被廣泛的應用于電子及電工的測量
9、,工業(yè)自動化儀表,自動測試系統(tǒng)等智能化測量領(lǐng)域。顯示出強大的生命力。</p><p> 數(shù)字電壓表最初是伺服步進電子管比較式,其優(yōu)點是準確度比較高,但是采樣速度慢,重量達幾十公斤,體積大。繼之出現(xiàn)了斜波式電壓表,它的速度方面稍有提高,但是準確度低,穩(wěn)定性差,再后來出現(xiàn)了比較式儀表改進逐次漸近式結(jié)構(gòu),它不僅保持了比較式準確度高的優(yōu)點,而且速度也有了很大的提高,但它有一缺點是抗干擾能力差,很容易受到外界各種因素的影
10、響。隨后,在斜波式的基礎(chǔ)上雙引伸出階梯波式,它的唯一的進步是成本降低了,可是準確寬,速以及抗干擾能力都未能提高。而現(xiàn)在,數(shù)字電壓表的發(fā)展已經(jīng)是非常的成熟,就原理來講,它從原來的一,二種已發(fā)展到多種,在功能上講,則從測單一參數(shù)發(fā)展到能測多種參數(shù);從制作元件來看,發(fā)展到了集成電路,準確度已經(jīng)有了很大的提高,精度高達1NV;讀數(shù)每秒幾萬次,而相對以前,它的價格也有了降低了很多。</p><p> 目前實現(xiàn)電壓數(shù)字化測
11、量的方法仍然模-數(shù)(A/D)轉(zhuǎn)換的方法。而數(shù)字電壓表種類繁多,型號新異,目前國際仍未有統(tǒng)一的分類方法。而常用的分類方法有如下幾種:</p><p> 按用途來分:有直流數(shù)字電壓表,交、直流數(shù)字電壓表,交直流萬用表等。</p><p> 按顯示位數(shù)來分:有4位,5位,6位,7位,8位等。</p><p> 按測量速度來分:有低準確度,中準確度,高準確度等。<
12、;/p><p> 按測量速度來分:有低速,中速,高速,超高速等。</p><p> 但在日常生活中,數(shù)字電壓表一般是按照原理不同進行分類的,目前大致分為以下幾類:比較式,電壓——時間變換式,積分式等。</p><p> 在電量的測量中,電壓、電流和頻率是最基本的三個被測量。其中,電壓量的測量最為經(jīng)常。而且隨著電子技術(shù)的發(fā)展,更是經(jīng)常需要測量高精度的電壓,所以數(shù)字電
13、壓表就成為一種必不可少的測量儀器。另外,由于數(shù)字式儀器具有讀數(shù)準確方便、精度高、誤差小、靈敏度高和分辨率高、測量速度快等特點而倍受用戶青睞,數(shù)字式電壓表就是基于這種需求而發(fā)展起來的,是一種必不可少的電子測量儀表。</p><p> 二.數(shù)字電壓設(shè)計兩種方案簡介:</p><p> 設(shè)計數(shù)字電壓表有多種的設(shè)計方法,方案是多種多樣的,由于大規(guī)模集成電路數(shù)字芯片的高速發(fā)展,各種數(shù)字芯片品種多
14、樣,導致對模擬數(shù)據(jù)的采集部分的不一致性,進而又使對數(shù)據(jù)的處理及顯示的方式的多樣性。又由于在現(xiàn)實的工作生活中,電壓表的測量測程范圍是比較大的,所以必須要對輸入電壓作分壓處理,而各個數(shù)據(jù)處理芯片的處理電壓范圍不同,則各種方案的分段也不同。下面介紹兩種數(shù)字電壓表的設(shè)計方案。</p><p> 1.由數(shù)字電路及芯片構(gòu)建。 </p><p> 這種設(shè)計方案是由模擬電路與數(shù)字電路兩大部分組成,模擬
15、部分包括輸入放大器、A/D轉(zhuǎn)換器和基準電壓源;數(shù)字部分包括計數(shù)器、譯碼器、邏輯控制器、振蕩器和顯示器。其中,A/D轉(zhuǎn)換器是它的核心器件,它將輸入的模擬量轉(zhuǎn)換成數(shù)字量。模擬電路和數(shù)字電路是相互聯(lián)系的,由邏輯控制電路產(chǎn)生控制信號,按規(guī)定的時序?qū)/D轉(zhuǎn)換器中個組模擬開關(guān)接通或斷開,保證A/D轉(zhuǎn)換正常進行。A/D轉(zhuǎn)換結(jié)果通過計數(shù)譯碼電路變換成段碼,最后驅(qū)動顯示器顯示出相應的數(shù)值。此方案設(shè)計其優(yōu)點是,設(shè)計成本低,能夠滿足一般的電壓測量。但設(shè)計不
16、靈活,都是采用純硬件電路。很難將其在原有的基礎(chǔ)上進行擴展。</p><p> 2.由單片機系統(tǒng)及A/D轉(zhuǎn)換芯片構(gòu)建。</p><p> 這種方案是利用單片機系統(tǒng)與模數(shù)轉(zhuǎn)換芯片、顯示模塊等的結(jié)合構(gòu)建數(shù)字電壓表。由于單片機的發(fā)展已經(jīng)成熟,利用單片機系統(tǒng)的軟硬件結(jié)合,可以組裝出許多的應用電路來。此方案的原理是模數(shù)(A/D)轉(zhuǎn)換芯片的基準電壓端,被測量電壓輸入端分別輸入基準電壓和被測電壓。模數(shù)
17、(A/D)轉(zhuǎn)換芯片將被測量電壓輸入端所采集到的模擬電壓信號轉(zhuǎn)換成相應的數(shù)字信號,然后通過對單片機系統(tǒng)進行軟件編程,使單片機系統(tǒng)能按規(guī)定的時序來采集這些數(shù)字信號,通過一定的算法計算出被測量電壓的值。最后單片機系統(tǒng)將計算好了的被測電壓值按一定的時序送入顯示電路模塊加以顯示。</p><p> 此方案不僅能夠繼承上一種方案的各種優(yōu)點,還能改進上一種設(shè)計方案設(shè)計不靈活,難與在原基礎(chǔ)上進行功能擴展等不足。</p&g
18、t;<p> 三.單片機簡介及本設(shè)計單片機的選擇</p><p> 1.常用單片機的特點比較及本設(shè)計單片機的選擇</p><p> 綜合上一章提到的兩種設(shè)計方案的各方面優(yōu)點及其在現(xiàn)在的所設(shè)計電壓表的實用性,我們選擇第二種電壓表設(shè)計方案,即由單片機系統(tǒng)及數(shù)字芯片構(gòu)建的方法來我們本次設(shè)計。</p><p> 在這一設(shè)計中,我們涉及到了一個關(guān)鍵系統(tǒng)模
19、塊——單片機系統(tǒng)模塊,而目前單片機的種類是很繁多的,主要有主流的8位單片機和高性能的32位單片機,結(jié)合本設(shè)計各方面因素,8位單片機對于本設(shè)計已經(jīng)是綽綽有余了,但將用哪一種類8的單片機呢。在這里,不得不先簡單的介紹一下幾種常用的8單片機。</p><p> 單片機是指一個集成在一塊芯片上的完整計算機系統(tǒng),具有一個完整計算機所需要的大部分部件:CPU,內(nèi)存,總線系統(tǒng)等。而目前常用的單片機的8位有51系列單片機,AV
20、R單片機,PIC單片機。</p><p> 應用最廣的8位單片機還是intel的51系列單片機。51系列單片機的特點是:硬件結(jié)構(gòu)合理,指令系統(tǒng)規(guī)范,加之生產(chǎn)歷史悠久,世界有許多芯片公司都買了51的芯片核心專利技術(shù),并在其基礎(chǔ)上擴充其性能,使得芯片的運行速度變得更快,性價比更高。</p><p> AVR單片機是atmel公司推出較新的單片機,它的顯著特點是:高性能,低功能,高速度,指令
21、單周期為主,但性格方面比51單片機要高。有專門的I/O方向寄存器。雖然有轉(zhuǎn)強的驅(qū)動電壓,但I/O口使用不比51單片機方便。</p><p> PIC單片機系列是美國微芯公司的產(chǎn)品,也是市面上增長最快的單片機之一,屬精簡指令集單片機,其特點是:高速度,高性能,但在性格方面比51單片機要高,也有專門的I/O方向寄存器,I/O口使用不比51單片機方便。</p><p> 綜合以上各種單片機的
22、基本性能及本設(shè)計的滿足需要,我們將選擇51系列單片機。</p><p> 2.本設(shè)計使用的單片機的簡介</p><p> 本設(shè)計中選用是51系列的AT89C52,它是低電壓、低功耗、高性能的CMOS8位單片機,片內(nèi)含8KB的可反復擦寫的只讀程序存儲器和256B的隨機存取數(shù)據(jù)存儲器,32個I/O口線,3個16位定時/計數(shù)器,片內(nèi)振蕩器及時鐘電路,并與MCS-51系列單片機兼容。在設(shè)計中,
23、單片機起著連接硬件電路與程序運行及存儲數(shù)據(jù)的任務,一方面,它將A/D轉(zhuǎn)換器、顯示器和語音芯片等通過I/O口地址線和數(shù)據(jù)線連接起來;另一方面,它將用戶下載的程序通過控制總線控制數(shù)據(jù)的輸入輸出,從而實現(xiàn)冊電壓的功能。</p><p> 四.各種顯示器件的介紹和選擇</p><p> 1.常用顯示器件簡介</p><p> 本次設(shè)計中有顯示模塊,而常用的顯示器件比較
24、多,有數(shù)碼管,LED點陣,1602液晶,12864液晶等。</p><p> 數(shù)碼管是最常用的一種顯示器件,它是由幾個發(fā)光二極管組成的8字段顯示器件,其特點是價格非常的便宜,使用也非常的方便,顯示效果非常的清楚。小電流下可以驅(qū)動每光,發(fā)光響應時間極短,體積小,重量輕,抗沖擊性能好,壽命長。但數(shù)碼管只能是顯示0——9的數(shù)據(jù)。不能夠顯示字符。這也是數(shù)碼管的不足之處。</p><p> LE
25、D點陣顯示器件是由好多個發(fā)光二極管組成的。具有高亮度,功耗低,視角大,壽命長,耐濕,冷,熱等特點,LED點陣顯示器件可以顯示數(shù)字,英文字符,中文字符等。但用LED點陣顯示的軟件程序設(shè)計比較麻煩。</p><p> 1602液晶是工業(yè)字符型液晶,能夠同時顯示16*2即32個字符。1602液晶模塊內(nèi)部的字符發(fā)生存儲器已經(jīng)存儲了160個不同的點陣字符圖形,這些字這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和
26、日文假名等,每一個字符都有一個固定的代碼。使用時直接編寫軟件程序按一定的時序驅(qū)動即可。它的特點是顯示字跡清楚,價格相對便宜。</p><p> 12864液晶也是一種工業(yè)字符型液晶,它不僅能夠顯示1602液晶所可以顯示的字符,數(shù)字等信息,而且還可以顯示8*4個中文漢字和一些簡單的圖片,顯示信息也非常的清楚。使用時也直接編寫軟件程序按一定的時序驅(qū)動即可。不過它的價格比1602液晶貴了很多。</p>
27、<p> 在本設(shè)計中,我們只需要顯示最后電壓的數(shù)字值和電壓的單位,綜合上面各種顯示器件的特點:數(shù)碼管只能顯示數(shù)字,不能顯示單位字符,不符合本設(shè)計的要求。而點陣顯示器件驅(qū)動顯示軟件程序編寫麻煩,占用的引腳相對也較多。也不是理解的顯示器件。所以在本設(shè)計中,我們考慮用液晶顯示器件,雖然12864液晶比1602液晶的功能強,不過在價格方面卻貴了好多。而1602液晶也足夠滿足本設(shè)計的需要。因此,在本設(shè)計實驗我們選擇1602液晶顯示器件
28、。</p><p> 2.1602液晶的參數(shù)資料</p><p> 我們選擇了1602液晶做為本設(shè)計的顯示模塊的顯示器件。以下是1602液晶的各方面參數(shù):</p><p><b> 1.接口信號說明:</b></p><p><b> 2.基本操作時序:</b></p><
29、;p> 讀狀態(tài):輸入:RS=0,RW=1,E=1。輸出:D0-D7為狀態(tài)字</p><p> 寫狀態(tài):輸入:RS=0,RW=0,D0-D7為指令碼,E為高脈沖。輸出:無</p><p> 讀數(shù)據(jù):輸入:RS=1,RW=1,E=1。輸出:D0-D7為數(shù)據(jù)。</p><p> 寫數(shù)據(jù):輸入:RS=1,RW=0,D0-D7為數(shù)據(jù),E為高脈沖。輸出:無<
30、/p><p><b> 3.狀態(tài)字說明</b></p><p><b> 4.指令的說明。</b></p><p><b> 顯示模式設(shè)置</b></p><p> 顯示開/關(guān)及光標設(shè)置</p><p><b> 數(shù)據(jù)控制:</b&
31、gt;</p><p> 五.模數(shù)(A/D)轉(zhuǎn)換芯片的選擇</p><p> 在本設(shè)計中,模數(shù)(A/D)轉(zhuǎn)換模塊是一個重要的模塊,它關(guān)系到最后數(shù)電壓表電壓值的精確度。所以,A/D芯片的選擇是設(shè)計過程中一個很重要的環(huán)節(jié)。</p><p> 1.常用的A/D芯片簡介</p><p> 常用的A/D芯片有AD0809,AD0832,TLC2
32、543C等幾種。下面簡單介紹一下這三種芯片。</p><p> AD0809是8位逐次逼近型A/D轉(zhuǎn)換器,它是由一個8路的模擬開關(guān)、一個地址鎖存譯碼器、一個A/D 轉(zhuǎn)換器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道,允許8 路模擬量分時輸入,共用A/D 轉(zhuǎn)換器進行轉(zhuǎn)換。些A/D轉(zhuǎn)換器是的特點是8位精度,屬于并行口,如果輸入的模擬量變化大快,必須在輸入之前增加采樣電路。</p><p&
33、gt; AD0832也是8位逐次逼近型A/D轉(zhuǎn)換器,可支持致命傷個單端輸入通道和一個差分輸入通道。它易于和微處理器接口或獨立使用;可滿量程工作;可用地址邏輯多路器選通各輸入通道。</p><p> TLC2543C是12位開關(guān)電容逐次逼近A/D轉(zhuǎn)換,每個器件有三個控制輸入端,片選,輸入/輸出時鐘以及地址輸入端。它可以從主機高速傳輸轉(zhuǎn)換數(shù)據(jù)。它有高速的轉(zhuǎn)換,通用的控制能力,具有簡化比率轉(zhuǎn)換,刻度以及模擬電路與邏
34、輯電路和電源噪聲隔離,耐高溫等特點。</p><p> 綜合上述幾種A/D轉(zhuǎn)換芯片的特點,前兩種芯片的性能和精度都不如第三種芯片。在本設(shè)計中,我們的目標是設(shè)計高精度的電壓表,因此在此,我們選擇精度為12位的TLC2543芯片。</p><p> 2.模數(shù)(A/D)芯片TLC2543的資料</p><p> 綜合本設(shè)計的各方面考慮,我們選了TLC2543模數(shù)轉(zhuǎn)換
35、芯片。下面就介紹此芯片的各方面資料。</p><p> TLC2543芯片的封裝引腳圖和引腳說明如下:</p><p><b> 引腳說明:</b></p><p><b> 。</b></p><p> 各引腳的使用詳細介紹。</p><p> AIN0-AIN1
36、0這11個模擬信號輸入由內(nèi)部多路選器選擇。對4.1MHZ的I/O clk,驅(qū)動源阻抗必須小于或等于50歐并且能夠?qū)⒛M電壓由60PF的電容來限制其斜率。</p><p> 在CS端的一個由高低低變化將復位內(nèi)部計數(shù)器并控制使能data out,data input和I/O clk。一個由低至高的變化將在一個設(shè)置時間內(nèi)禁止data input和I/O clk.</p><p> 串行數(shù)據(jù)輸
37、入端data input是一個4位的串行地址選擇下一個即將被轉(zhuǎn)換的所需的模擬輸入或測試電壓。串行數(shù)據(jù)以MSB為前導并在I/O clk的前4個上升沿被移入。在4個地址位被讀入地址寄存器后,I/O clk 將剩下的幾位依次輸入。</p><p> Data out在CS為高時處于高阻抗狀態(tài),而當CS為低時處于激活狀態(tài)。CS一旦有效,按照前一次轉(zhuǎn)換結(jié)果的MSB/LSB值將data out從高阻抗狀態(tài)轉(zhuǎn)變成相應的邏輯
38、電平,I/O clk 的下一個下降沿將根據(jù)下一個MSB/LSB將data out驅(qū)動成相應的邏輯電平,剩下的各位依次移出。</p><p> EOC在最后的I/O clk 下降沿之后,從高電平變?yōu)榈碗娖讲⒈3值椭钡睫D(zhuǎn)換完成及數(shù)據(jù)準備傳輸。</p><p> GND端是內(nèi)部電路的地回路端,除加有說明外,所有電壓測量都相對于GND</p><p> I/O clk
39、端串行輸入并完成以下四個功能:第一,在I/O clk的前8個上升沿,它將8個輸入數(shù)據(jù)信鍵入輸入數(shù)據(jù)寄存器。在第4個上升沿之后為多路器的地址。第二,在I/O clk的第4個下降沿,在選定的多路器的輸入端上的模擬輸入電壓開始和電容器充電并繼續(xù)到I/O clk的最后一個下降沿。第三,它將前一次轉(zhuǎn)換的數(shù)據(jù)的其余11位移出data out端。在I/O clk的下降沿時數(shù)據(jù)變化。第四,在I/O clk的最后一個下降沿它將轉(zhuǎn)換的控制信號傳送到內(nèi)部的狀
40、態(tài)控制位。</p><p> REF+端通常接VCC,最大輸入電壓范圍取決于加于本端與加于REF-端的電壓差。</p><p> REF-端通常接地。</p><p><b> 六.總體設(shè)計</b></p><p><b> 1.技術(shù)要求:</b></p><p>
41、 最高量程為:200V。</p><p> 分為三檔量程:2V,20V,200V。可以通過調(diào)檔開關(guān)實現(xiàn)各檔位。最高精度為0.01mv。</p><p> 被測電壓的電壓值小于1V時,有自動換以MV為單位顯示。</p><p> 通過按鍵可以顯示5秒的平均電壓的電壓值。</p><p><b> 2.設(shè)計方案:</b&g
42、t;</p><p> 根據(jù)上述,我們選擇單片機與A/D轉(zhuǎn)換芯片結(jié)合的方法實現(xiàn)本設(shè)計。使用的基本元器件是:AT89C51單片機,TLC2543模數(shù)轉(zhuǎn)換芯片,1602液晶顯示器,開關(guān),按鍵,電容,電阻,晶振,標準電源等等。</p><p> 設(shè)計的基本框圖如下:</p><p> 七.硬件電路系統(tǒng)模塊的設(shè)計</p><p> 根據(jù)上述選
43、擇的各元器件,各電路模塊的電路圖如下描述。</p><p><b> 1.單片機系統(tǒng)</b></p><p> 單片機最小系統(tǒng)包括晶振電路,復位電路,電源。其原理圖如下:</p><p> 此模塊中,單片機的晶振是12MHZ,C1和C2的電容是10UF,C3可選1-10UF。R1電阻為1K。</p><p><
44、;b> 2.輸入電路</b></p><p> 由于輸入電路的電壓比基準電壓(2V)高很多,因此在輸入電路必須加電壓衰減器。衰減電路可由開關(guān)來選擇不同的衰減率,從而切換檔位。</p><p> 則完整輸入電路如下:</p><p> 通過計算,可知設(shè)計衰減器用的電阻R2,R3和R4分別為:9M,900K,100K控制檔位的開關(guān)是雙開關(guān)的,目
45、地是能夠使單片機CPU自動識別檔位,即可用相應的檔位的數(shù)據(jù)轉(zhuǎn)換的算法計算出正確的電壓值。被測電壓輸入端、整理過的模擬電壓輸入端,開關(guān)與單片機的連接如圖所示。</p><p> 3.A/D轉(zhuǎn)換芯片與單片機的連接</p><p> 此設(shè)計中選擇的是A/D轉(zhuǎn)換芯片的通道0,A/D芯片的數(shù)據(jù)輸入口連接單片機的P1.3口,數(shù)據(jù)輸出口連接單片機的P1.4口,芯片使能端連接單片機的P1.5口,脈沖端
46、連接單片機的P1.6口。模塊連接如下圖所示。</p><p> 4.1602液晶與單片機連接</p><p> 此模塊液晶的RS,RW和E端分別連接單片機的P1.2,P1.1和P1.0口;液晶的數(shù)據(jù)各端口連接單片機的P0口。具體如下圖所示。</p><p> 鍵盤與單片機的連接如下。</p><p> 此鍵盤的一端與單片機的P2.0口
47、連接,另一端接地。原理圖如下所示。</p><p> 該鍵盤的功能:當鍵盤被按下時,即可計算后5秒的平均電壓值。</p><p><b> 八.系統(tǒng)軟件的設(shè)計</b></p><p> 1.匯編語言和C語言的特點及選擇</p><p> 本設(shè)計是硬件電路和軟件編程相結(jié)合的設(shè)計方案,選擇合適的編程語言是一個重要的環(huán)
48、節(jié)。在單片機的應用系統(tǒng)程序設(shè)計時,常用的是匯編語言和C語言。匯編語言的特點是占用內(nèi)存單元少,執(zhí)行效率高。執(zhí)行速度快。但它依賴于計算機硬件,程序可讀性和可移植性比較差。而C語言雖然執(zhí)行效率沒有匯編語言高,但語言簡潔,使用方便,靈活,運算豐富,表達化類型多樣化,數(shù)據(jù)結(jié)構(gòu)類型豐富,具有結(jié)構(gòu)化的控制語句,程序設(shè)計自由度大,有很好的可重用性,可移植性等特點。</p><p> 由于現(xiàn)在單片機的發(fā)展已經(jīng)達到了很高的水平,內(nèi)
49、部的各種資源相當?shù)呢S富,CPU的處理速度非常的快。用C語言來控制單片機無疑是一個理想的選擇。所以在本設(shè)計中采用C語言編寫軟件程序。</p><p><b> 2.主程序設(shè)計</b></p><p> 主程序設(shè)計包括以下方面:</p><p> 按照硬件電路對單片機位定義。</p><p><b> 編寫
50、延時模塊程序。</b></p><p> 編寫驅(qū)動1602液晶顯示模塊程序。</p><p> 編寫驅(qū)動A/D轉(zhuǎn)換模塊程序。</p><p> 編寫鍵盤掃描模塊程序。</p><p> 主程序的總體流程如下圖:</p><p><b> 全部軟件程序如下:</b></p
51、><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define key_state0 0 //鍵盤掃描的各個狀態(tài)</p><p> #def
52、ine key_state1 1</p><p> #define key_state2 2</p><p> #define key_state3 3</p><p> sbit rs=P1^2;//1602液晶寫命令/數(shù)據(jù)標志,0時寫命令</p><p> sbit rw=P1^1;//1602液晶寫入/讀出標志,0時寫入數(shù)據(jù)&l
53、t;/p><p> sbit ep=P1^0;</p><p> sbit input=P1^4;</p><p> sbit output=P1^3;</p><p> sbit cs=P1^5;</p><p> sbit clk=P1^6;</p><p> sbit key=P2
54、^0;</p><p> sbit flag_1=P2^1;//定義電壓表檔位相關(guān)標志</p><p> sbit flag_2=P2^2;</p><p> sbit flag_3=P2^3;</p><p> sbit flag_4=P2^4;</p><p> uchar code tab0[]=&qu
55、ot;V "; //顯示的單位及有關(guān)的字符</p><p> uchar code tab1[]="MV";</p><p> uchar code tab2[]="Power:";</p><p> uchar code tab3[]="Aver_V:";//平均電壓值標志符</p&
56、gt;<p><b> uchar t;</b></p><p> void delay(int z)//延時函數(shù)</p><p><b> {</b></p><p><b> int x,y;</b></p><p> for(x=z;x>0;
57、x--)</p><p> for(y=10;y>0;y--);</p><p><b> }</b></p><p> void write_com(uchar com)//往1602液晶寫命令函數(shù)</p><p><b> {</b></p><p><
58、;b> rs=0;</b></p><p><b> P0=com;</b></p><p><b> delay(5);</b></p><p><b> ep=1;</b></p><p><b> delay(5);</b>
59、;</p><p><b> ep=0;</b></p><p><b> }</b></p><p> void write_dat(uchar dat)//往1602液晶寫數(shù)據(jù)函數(shù)</p><p><b> {</b></p><p><
60、;b> rs=1;</b></p><p><b> P0=dat;</b></p><p><b> delay(5);</b></p><p><b> ep=1;</b></p><p><b> delay(5);</b&g
61、t;</p><p><b> ep=0;</b></p><p><b> }</b></p><p> void init_1602()//對1602液晶的初始化函數(shù)</p><p><b> {</b></p><p><b>
62、 rs=0;</b></p><p><b> rw=0;</b></p><p> write_com(0x38);</p><p><b> delay(1);</b></p><p> write_com(0x0c);</p><p><b&g
63、t; delay(1);</b></p><p> write_com(0x06);</p><p><b> delay(1);</b></p><p> write_com(0x01);</p><p><b> delay(1);</b></p><p
64、><b> }</b></p><p> void init_timer0()//定時計數(shù)器0初值化函數(shù),</p><p><b> {</b></p><p> TMOD=0x01;//方式一</p><p> TH0=(65536-50000)/256;//每50ms中斷一次&l
65、t;/p><p> TL0=(65536-50000)%256;</p><p> IE=0x82;//打開中斷</p><p> TR0=0;//定時器首先不可工作</p><p><b> }</b></p><p> void display(uchar x,uchar y,uint
66、dat)//顯示電壓值的函數(shù),x行y列開始顯示</p><p><b> {</b></p><p><b> uint add;</b></p><p> uchar i,a[5];</p><p><b> switch(x)</b></p><
67、p><b> {</b></p><p> case 0:add=0x80;break;</p><p> case 1:add=0x80+0x40;break;</p><p><b> }</b></p><p> add=add+y;</p><p>
68、 write_com(add);</p><p> for(i=0;i<5;i++)</p><p><b> {</b></p><p> a[i]=dat%10;</p><p> dat=dat/10;</p><p><b> }</b></p&
69、gt;<p> write_dat(a[4]+0x30);</p><p> write_dat(a[3]+0x30);</p><p> write_dat(a[2]+0x30);</p><p> write_dat('.');</p><p> write_dat(a[1]+0x30);</
70、p><p> write_dat(a[0]+0x30);</p><p><b> }</b></p><p> void display_zifu(uchar x,uchar y,uchar *str)//顯示字符函數(shù),x行y列開始顯示</p><p><b> {</b></p>
71、<p><b> uint add;</b></p><p><b> switch(x)</b></p><p><b> {</b></p><p> case 0:add=0x80;break;</p><p> case 1:add=0x80+0
72、x40;break;</p><p><b> }</b></p><p> add=add+y;</p><p> write_com(add);</p><p> while(*str!='\0')</p><p><b> {</b></
73、p><p> write_dat(*str);</p><p><b> str++;</b></p><p><b> }</b></p><p><b> }</b></p><p> uint read_AD(uchar con_way)//
74、讀取AD轉(zhuǎn)換值操作函數(shù)</p><p><b> {</b></p><p> uint dat=0;</p><p><b> uchar i;</b></p><p><b> cs=0;</b></p><p><b> clk
75、=0;</b></p><p> con_way<<=4;</p><p> for(i=0;i<12;i++)</p><p><b> {</b></p><p> con_way<<=1;/*選擇0通道,在輸入該控制數(shù)據(jù)的同時輸出前一次AD轉(zhuǎn)結(jié)果*/</p&g
76、t;<p><b> input=CY;</b></p><p><b> dat<<=1;</b></p><p> if(output)/*輸出AD轉(zhuǎn)換結(jié)果*/</p><p> dat=dat|0x01;</p><p><b> delay(2)
77、;</b></p><p><b> clk=1;</b></p><p><b> delay(5);</b></p><p><b> clk=0;</b></p><p><b> }</b></p><p&g
78、t;<b> cs=1;</b></p><p> return dat;</p><p><b> }</b></p><p> uint read_value()</p><p><b> {</b></p><p> long floa
79、t dq;</p><p> long float dat_v;</p><p> dq=read_AD(0);//把讀取得的AD轉(zhuǎn)換值給變量dq</p><p> if(!flag_3)</p><p> dat_v=(200*dq)/4096*100;//二檔,量程為200V</p><p> else
80、if(!flag_2)</p><p> dat_v=(20*dq)/4096*100;//二檔,量程為20V</p><p> else if(!flag_1)</p><p> dat_v=(2*dq)/4096*100;//一檔,量程2V</p><p> return dat_v;</p><p>&l
81、t;b> }</b></p><p> void read_key()//鍵盤掃描函數(shù)</p><p><b> {</b></p><p> static uchar key_state=0;</p><p> switch(key_state)</p><p>&l
82、t;b> {</b></p><p> case key_state0:</p><p> if(key==0)</p><p> key_state=key_state1;</p><p><b> break;</b></p><p> case key_stat
83、e1:</p><p> if(key==0)</p><p><b> {</b></p><p><b> TR0=1;</b></p><p> display_zifu(1,0,tab3);</p><p> key_state=key_state2;<
84、;/p><p><b> }</b></p><p><b> else</b></p><p> key_state=key_state0;</p><p><b> break;</b></p><p> case key_state2:<
85、;/p><p><b> if(key)</b></p><p> key_state=key_state0;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b
86、></p><p> void main()</p><p><b> {</b></p><p> long float dat;</p><p> long float dat_aver,dat1,dat2,dat3,dat4,dat5;//定義5個隨機電壓值變量</p><p>
87、; uchar flag;//后五秒取隨機電壓的標志</p><p> init_timer0();</p><p> init_1602();</p><p> delay(10);</p><p><b> while(1)</b></p><p><b> {</
88、b></p><p> dat=read_value();</p><p> if(dat>=100)//當電壓值大于1V時,用V顯示,否則用mV顯示</p><p><b> {</b></p><p> display_zifu(0,1,tab2);</p><p> d
89、isplay(0,7,dat);</p><p> display_zifu(0,13,tab0);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> di
90、splay_zifu(0,1,tab2);</p><p> display(0,7,dat*1000);</p><p> display_zifu(0,13,tab1);</p><p><b> }</b></p><p> read_key(); //當鍵盤按下時,計算后五秒的平均電壓值</p&
91、gt;<p><b> if(t==20)</b></p><p><b> {</b></p><p><b> t=0;</b></p><p><b> flag++;</b></p><p><b> }</
92、b></p><p> if(flag==1)</p><p><b> dat1=dat;</b></p><p> if(flag==2)</p><p><b> dat2=dat;</b></p><p> if(flag==3)</p>
93、<p><b> dat3=dat;</b></p><p> if(flag==4)</p><p><b> dat4=dat;</b></p><p> if(flag==5)</p><p><b> {</b></p><p&
94、gt;<b> dat5=dat;</b></p><p> dat_aver=(dat1+dat2+dat3+dat4+dat5)/5;</p><p> display(1,7,dat_aver);</p><p> display_zifu(1,13,tab0);</p><p> dat_aver=0;
95、</p><p><b> }</b></p><p> if(flag==8)</p><p><b> {</b></p><p><b> flag=0;</b></p><p> write_com(0x01);</p>
96、<p><b> TR0=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void timer0() interrupt 1//定時器
97、中斷函數(shù)</p><p><b> {</b></p><p> TH0=(65536-50000)/256;//重新放入初始值</p><p> TL0=(65536-50000)%256;</p><p><b> t++;</b></p><p><b&g
98、t; }</b></p><p><b> 九.系統(tǒng)的調(diào)試</b></p><p> 完成了系統(tǒng)的硬件設(shè)計,制作和軟件編程之后,要使系統(tǒng)能夠按設(shè)計意圖正常運行,必須進行系統(tǒng)調(diào)試。調(diào)試分了硬件和軟件調(diào)試。</p><p><b> 硬件調(diào)試</b></p><p> 硬件調(diào)試的主
99、要任務是排除硬件故障,其中包括設(shè)計的錯誤和工藝性故障等。</p><p> 檢查所設(shè)計的硬件電路板所有的器件和引腳是否正確,尤其是電源的連接是否正確;檢查各總線是否有短路的故障。檢查開關(guān)/按鍵是否正常,是否連接正確,為了保護芯片,應先對各IC座電位進行檢查,確認無誤后再插入芯片。</p><p> 將40芯片的仿真插頭插入單片機插座進行調(diào)試,檢查各接口是否滿足設(shè)計的要求,有正常的程序測
100、試硬件電路的好壞。</p><p><b> 軟件調(diào)試</b></p><p> 軟件調(diào)試的任務是利用開發(fā)工具進行在線仿真調(diào)試,發(fā)現(xiàn)和糾正程序的錯誤,同時也能發(fā)現(xiàn)硬件的故障。軟件調(diào)試是一個模塊一個模塊進行的。首先單獨調(diào)試各子程序是否能夠按照預期的功能,接口電路的控制是否正常。最后調(diào)試整個程序。尤其注意的是各模塊間能否正確的傳遞參數(shù)。</p><
101、p> 檢查液晶顯示模塊程序。在主程序中調(diào)用display()和dislay_zifu()函數(shù),觀察在1602液晶上是否能夠顯示相應的字符。如果不能,則在相關(guān)的子程序中設(shè)計斷點,反復調(diào)試直到能夠顯示。</p><p> 檢查按鍵模塊程序。本設(shè)計的按鍵模塊程序是用狀態(tài)機的方法,可以在key_state1狀態(tài)下加一個任務,如顯示一個字符在液晶上。觀察是否正確顯示。</p><p>
102、檢查A/D轉(zhuǎn)換模塊程序??梢栽谟布娐返妮斎攵溯斎胍阎膸讉€電壓,分別觀察液晶上是否顯示相應的電壓值。</p><p> 檢查數(shù)據(jù)的轉(zhuǎn)換模塊程序??梢該軇佑布娐返臋n位開關(guān),輸入相應的電壓,觀察液晶顯示的電壓值是否一致。如果一致。則數(shù)據(jù)轉(zhuǎn)換的算法正確的。</p><p> 總調(diào)試。當相應的各模塊環(huán)節(jié)都正確后,可程序下載到單片機。接上電源運行。再檢查所有功能,觀察是否能預期的一樣。如果一
103、樣,說明設(shè)計成功完成。</p><p><b> 十.總結(jié)</b></p><p> 由于本設(shè)計使用的是高效的51系列單片機作為核心的測量系統(tǒng),以及高精度,高速度,高抗干擾的A/D轉(zhuǎn)換器。使得本直流電壓表具體精度高,靈敏度強,性能可靠,電路簡單,成本低的特點。因為平時所需要測量的被測電壓的電壓值不是一個定值,多多少少都有一些微小的變化。因此本設(shè)計為之增加了可測5秒
104、內(nèi)平均電壓的電壓值。大大的提高了測量的準確性。使直流電壓表有著較高的智能水平。</p><p> 此設(shè)計是單片機應用系統(tǒng)的開發(fā)性實驗。通過此設(shè)計可知在單片機系統(tǒng)開發(fā)過程應注意以下事項。</p><p> 1)硬件的選擇。選擇適合設(shè)計目地的元器件是一個重要的方設(shè)計環(huán)節(jié)。不能以元器件是否是最高性能作為選擇元器件的標準。往往高性能器件的價格也是較高的。應根據(jù)項目設(shè)計的需要選擇元器件,能夠滿足
105、設(shè)計需要作為標準選擇元器件。</p><p> 2)因為單片機系統(tǒng)設(shè)計是硬件和軟件相結(jié)合的設(shè)計,所以系統(tǒng)和硬件和軟件必須緊密配合,協(xié)調(diào)一致。應不斷調(diào)整硬軟件設(shè)計,以提高系統(tǒng)工作效率。</p><p> 單片機的應用如今已經(jīng)是在工業(yè),電子等方面展示出了它的優(yōu)越性,利用單片機在設(shè)計電路逐漸成了趨勢,它與外圍電路再加上軟件程序就可以構(gòu)建任意的產(chǎn)品,使得本設(shè)計成為現(xiàn)實。隨著單片機的日益發(fā)展,它
106、必將在未來顯示出更大的活力,為電子設(shè)計更多精彩。對于數(shù)字電壓表而言,功能將會越來越強大。</p><p><b> 參考文獻</b></p><p> 陳洪中。數(shù)字電壓表。水利電力出版社,1989</p><p> 周立功.單片機實驗與實踐.北京:北京航空航天大學出版社</p><p> 吳國經(jīng).單片機應用技術(shù).
107、北京:中國電力出版社,2003.</p><p> 閻石.數(shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,2006</p><p> 譚浩強.C程序設(shè)計.北京:清華大學出版社,2005年.</p><p> 侯振鵬.嵌入式C語言程序設(shè)計.北京:人民郵電出版社,2006.</p><p> 李光飛 李良兒.單片機C程序設(shè)計.北京:北京航空航天大
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電壓表畢業(yè)設(shè)計
- 數(shù)字電壓表畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-數(shù)字電壓表
- 畢業(yè)設(shè)計---數(shù)字電壓表
- 數(shù)字電壓表畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---數(shù)字電壓表的設(shè)計 (2)
- 數(shù)字電壓表設(shè)計畢業(yè)設(shè)計
- 直流數(shù)字電壓表畢業(yè)設(shè)計
- 數(shù)字電壓表的設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---數(shù)字電壓表的設(shè)計
- 畢業(yè)設(shè)計---簡易數(shù)字電壓表設(shè)計
- 畢業(yè)設(shè)計---簡易數(shù)字電壓表的設(shè)計
- 畢業(yè)設(shè)計177數(shù)字電壓表的設(shè)計
- 畢業(yè)設(shè)計177數(shù)字電壓表的設(shè)計
- 畢業(yè)設(shè)計177數(shù)字電壓表的設(shè)計.doc
- 畢業(yè)設(shè)計177數(shù)字電壓表的設(shè)計.doc
- 單片機的數(shù)字電壓表畢業(yè)設(shè)計
- 三位半數(shù)字電壓表畢業(yè)設(shè)計
- 三位半數(shù)字電壓表畢業(yè)設(shè)計
- 簡易電壓表畢業(yè)設(shè)計
評論
0/150
提交評論