畢業(yè)設計(論文)集成運放參數(shù)測試儀程序設計_第1頁
畢業(yè)設計(論文)集成運放參數(shù)測試儀程序設計_第2頁
畢業(yè)設計(論文)集成運放參數(shù)測試儀程序設計_第3頁
畢業(yè)設計(論文)集成運放參數(shù)測試儀程序設計_第4頁
畢業(yè)設計(論文)集成運放參數(shù)測試儀程序設計_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、集成運放參數(shù)測試儀程序設計 內容摘要:該課題設計的運算放大器閉環(huán)參數(shù)測試系統(tǒng)是基于 msc-51 單片機控制模塊,并且 由 lcd(liquid crystal display)顯示模塊,鍵盤模塊,數(shù)據(jù)采集和轉換模塊,采用 dds 芯 片(ad9851)實現(xiàn)了 40khz4mhz 的掃頻輸出模塊等五部分組成。采用輔助運放測試方法,可 對運放的輸入失調電壓、輸入失調電流、交流差模開環(huán)電壓增益和交流共模抑制比以及單位增 益帶寬進行測量。在軟件上,用 c 語言來編程實現(xiàn)。其要實現(xiàn)的功能包括:對來自 tlc2543a/d 轉換的數(shù)字信號進行接收、分析、計算和對結果的顯示;通過不同鍵值的接收、分析來控制

2、對 不同對象的測量,并在 lcd 上顯示對應的人機界面;對來自 dds 的高頻信號源的頻率進行控制 來實現(xiàn)對集成運放的帶寬參數(shù)的測試和顯示。而且具有自動量程轉換、自動測量功能和良好的 人機交互性。 關鍵詞:單片機 c 語言 dds lcd 人機交互界面 the instrument for testing the parameters of integrated operation amplifier program design abstract:this system is designed based on c51 microcontroller to measure the close

3、 loop parameters of the operation amplifier. the system conclude five modules: lcd (liquid crystal display) display module, keyboard module, data collection module, conversion module, and the module of generating sweep sine-wave signal with frequency range from 40 khz to 4 mhz, using the dds chip of

4、 ad9851. the system can measure the input offset voltage、the input offset current、the open loop ac differential mode voltage gain、the ac common mode rejection ratio and unit gain bandwidth,using the measure method of assistant amplifier. the data can be display on the lcd which is using of c program

5、. and the function concludes: receiving, analysing and calculating the digital signals from tlc2543a/d then send them to show; accepting different key value on keyboards, analysing and processing it for controlling the measurement of different target and display on the lcd with different computer in

6、terface; controlling the bandwidth of hf signal source from dds chip to measure the integrated transport bandwidth parameters and display the result. whats more c51 microcontroller can control relays to complete auto measurement range switching ,auto measuring and good interface. key words:mcu clang

7、uage dds lcd interface 目 錄 前言 .1 一、系統(tǒng)原理框圖 .1 二、硬件單元電路設計與實現(xiàn) .2 (一)、四個參數(shù)的測試電路.2 ioc v io i vd a cmr k (二)單位增益帶寬測量電路.3 (三)測試的信號源 .3 vdcmr ak、 (四)峰峰值檢測電路的設計.4 (五)a/d 采樣電路 .4 (六)掃頻信號源.4 (七)鍵盤接口電路.5 (八)顯示接口電路.5 三、軟件設計 .6 (一)軟件功能設計.6 (二)系統(tǒng)軟件框圖和程序流程圖.6 (三)軟件模塊設計.7 四、系統(tǒng)測試 .19 (一)程序調試方法 .19 (二)軟件調試 .19 (三)聯(lián)機調

8、試 .20 五、結束語 .20 六、感謝詞 .20 參考文獻 .20 附錄一 .21 附錄二 .22 附錄三 .36 (一)tlc2543 .36 (二)lcd 液晶顯示器.36 附錄四 .38 集成運放參數(shù)測試儀 程序設計 前言 目前國內外市場上各種型號的集成運放參數(shù)測試儀已經(jīng)相當多,而且普遍性都采用“輔助 放大器的測量方法” ,使測試儀的整個系統(tǒng)具有穩(wěn)定性好,精確度高,范圍大的特點,而且測 試儀測試參數(shù)一般包括:正向最大輸出電壓+,負向最大輸出電壓-,正向最大共模輸出 opp v opp v 電壓+,負向最大共模輸出電壓-,正轉換速率+ ,負轉換速率-,靜態(tài)工作電流, icm v icm

9、v r s r s q i 輸入失調電壓,共模抑制比,開環(huán)增益帶寬乘積 bw,輸入失調電流,開環(huán)電壓增益 ioc v cmr kiio ,基極偏置電流等 15 項。 vd a ib i 但這種測試儀有一種共同的特點電路系統(tǒng)復雜,成本高,因此在某些應用領域中不能普遍 使用。在此我們根據(jù) gb344286半導體集成電路運算電壓放大器測試方法的基本原理規(guī)定 的測試方法來設計,主要測試參數(shù)包括:輸入失調電壓,共模抑制比,開環(huán)增益寬帶 ioc v cmr k 乘積 bw,輸入失調電流,開環(huán)電壓增益等 5 個,而且用 msc51 系列單片機作為中央處理 io i vd a 器,這樣大大降低了成本,并且具有

10、顯示功能,使用方便,體積小,適合搬移,系統(tǒng)穩(wěn)定。 在軟件方面,匯編語言是能直接控制單片機的底層語言,而且在控制硬件和位操作等方面 表現(xiàn)很優(yōu)異,程序運行時效率也很高,但當用匯編語言來編制復雜的數(shù)學運算類型的程序時就 顯得有些不方便。而使用 c51 高級語言開發(fā) msc51 系列單片機比匯編語言優(yōu)越地多,如程序 編寫直觀易懂、便于移植、便于修改和維護、便于進行模塊化程序設計、提高計算精度等。雖 然高級語言在產(chǎn)生代碼方面會比較長些,而且運行速度相對來說會慢些但對于當今作為開發(fā)的 計算機軟件來說優(yōu)化程序的編譯已經(jīng)不是問題。在次我們結合了該設計自身的特點和需要,綜 合分析了以上的優(yōu)、缺點最后決定采用 c

11、 語言來編程,實現(xiàn)這個課題的功能,從而也提高其使 用性。該成品可方便用于小型實驗或個人實驗室等場合。 一、 系統(tǒng)原理框圖 該系統(tǒng)包括軟件和硬件兩個方面,程序被下載到單片機中,自動進行一系列測試工作,而 且可以通過良好的人機界面對其進行選擇、控制。其整體系統(tǒng)原理框圖如圖 1 所示。 運 放 參 數(shù) 測 試 電 路 數(shù)據(jù)采集 測試參數(shù)選擇 高頻信號源 增 益 控 制 單 片 機 lcd 顯示輸出 鍵 盤 輸 入 圖 1 系統(tǒng)原理框圖 二、硬件單元電路設計與實現(xiàn) (一)、四個參數(shù)的測試電路 ioc v io i vd a cmr k 按照 gb344286半導體集成電路運算(電壓)放大器測試方法的基

12、本原理規(guī)定的輔助直 流測試法,可實現(xiàn)運算放大器直流參數(shù)的準確測量。該方案的測試原理如圖 2 所示。 + - + - 被測運放 輔助運放 rf r1 ri ri r2 k1 k2 r r vl rf 數(shù)字電壓表 (4位半以上) 圖 2 gb344286 規(guī)定的運算放大器直流參數(shù)測試方法 它是國標推薦的測試方法也是目前國際普遍采用的一種測試方法,具有穩(wěn)定性好、精度高、 范圍大等特點,可測量各種集成運算放大器的輸入失調電壓、失調電流、共模抑制比、差模開 環(huán)增益等參數(shù),測試方便,測量輸出的電壓范圍合適。而輔助運放對系統(tǒng)增益的穩(wěn)定性有很關 鍵的作用,雖然也會引起自激,但可以通過一定的方法來抑制。 測試這

13、四個參數(shù)的電路可以集成在兩個電路里。首先可以將測試、這兩個參數(shù)的電 ioc v io i 路通過繼電器做成一個電路系統(tǒng),如圖 3 所示。電容 cu 是補償分布電容,用來抑制自激的發(fā) 生,而 cu 的值是通過實驗獲得的:先將數(shù)百皮法的瓷片電容接入電路選定位置,觀察自激信 號的變化,直到取得使自激信號最小的電容值為止。然后將測試、這兩個參數(shù)的電路 vd a cmr k 也集成一個電路系統(tǒng),如圖 4 所示。這樣通過兩個核心測量電路就可以完成所有參數(shù)測試,同 時通過對繼電器的控制實現(xiàn)了測量的自動化,而且大大簡化了電路。 1 2 3 4 5 6 78 k23 r1 r11 1k r12 1k 1 1 3

14、 3 2 2 w1 50k r3 100 r4 100 r51m r6 1m rf220k rf1 20k r7 30k r8 30k 3 2 6 1 5 74 u1 1m 5 4 2 7 1 8 3 6 14 11 10 13 12 9 u2 7650 c4c3 104*2+12v q1 npn d1 diod e 3 2 1 84 u3a tl 082 +12v -12v -12v +12v +12v +12v -12v r13 30k cu cr2 cr1 r 300 1 2 j1 co n2 5 6 7 u3b tl 082 圖 3 輸入失調電壓和輸入失調電流測試電路 r11 1k r

15、121k r13 1k r14 100 r15 43k w2 50k c7 47uc8 1u r3100 r4 100 rf220k r7 30k r8 30k 3 2 6 1 5 74 u1 1m 5 4 2 7 1 8 3 6 14 11 10 13 12 9 u2 7650 c4c3 104*2 rf1 20krl 10k r1 +12v b 1 c 2 e 3 q2npn d4 diod e 1 2 3 4 5 6 78 k21 3 2 1 84 u3a tl 082 3 2 1 84 u4a tl 082 5 6 7 u4b tl 082 +12v -12v -12v +12v d3

16、 diod e +12v -12v +12v +12v -12v r14 30k cu cr2 r 300 1 2 j2 co n2 4v 5h z 圖 4 電壓增益和共模抑制比測試電路 其測試電路和過程如下: 、當繼電器 1、4 分別腳接向 3、6 腳時,測得輔助運放的輸出電壓記為 vl0 ,則有: l0 fi i io v rr r v 、當繼電器 1、4 分別腳接向 2、5 腳時,測得輔助運放的輸出電壓記為 vl1,則有: r vv rr r i l0l1 fi i io 、當把信號源輸出(電壓為 vs)接到繼電器的第 1 腳時,測得輔助運放輸出電壓為 vl0,則 有 )db(lg20

17、i fi lo s vd r rr v v a 、當把信號源輸出(電壓為 vs)接到繼電器的第 4 腳時,測得輔助運放輸出電壓為 vl0,則 有 )db(lg20 i fi lo s cmr r rr v v k 通過上述方法就可測得所要測試的四個參數(shù)。 (二)單位增益帶寬測量電路 單位增益帶寬測量電路為一個反向比例放大器,從 p1.3 口輸入正弦信號的幅值,改變信 號頻率,當 p1.3 口的輸入電壓幅值下降到 3db 時的頻率即為單位增益帶寬。 (三)測試的信號源 vdcmr ak、 用文氏電橋電路實現(xiàn)產(chǎn)生 4v、5hz 的正弦波。它是由 rc 振蕩電路構成的低頻正弦信號 發(fā)生器。通過調節(jié)電

18、路中的電阻和電容值的大小,可以產(chǎn)生不同頻率和幅度的正弦信號,而且 信號比較純。該電路簡單、信號幅度穩(wěn)定,其穩(wěn)定度優(yōu)于 1%。經(jīng)過仿真后發(fā)現(xiàn)該電路只能產(chǎn) 生 400khz 以內的信號,但這個頻率范圍已經(jīng)滿足我們的要求。 (四)峰峰值檢測電路的設計 3 2 6 1 5 74 u2 tl 710 c1 cap c2 cap c3 cap c4 cap r1 10k r2 10k r3 10k r4 10k r5 10k r6 10kd1 diode d2 diode 1 2 j1 con2 vcc input3 2 1 84 u1a op07 圖 5 峰值檢波圖 該電路主要由一個二極管和兩個電容組成

19、,用于檢測掃頻信號源的峰值。實際測量表明, 該峰值檢測電路在 40khz4mhz 具有很好的線性度。該電路如圖 5 所示。 (五)a/d 采樣電路 為保證測量精度,該部分電路采用 12 位串行口tlc2543。電路如圖 6 所示。 ea /vp 31 x1 19 x2 18 re se t 9 rd 17 wr 16 int 0 12 int 1 13 t0 14 t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21

20、 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 al e/p 30 tx d 11 rx d 10 ic1 at 89s51 an 0 1 an 1 2 an 2 3 an 3 4 an 4 5 an 5 6 an 6 7 an 7 8 an 8 9 gnd 10 an 9 11 an 10 12 re f- 13 re f+ 14 /cs 15 da ta o ut 16 da ta input 17 i/o clk 18 eo c 19 vcc 20 ic18 tl c2543 /wr /rd vcc d0 d1 d2 d

21、3 d4 d5 d6 d7 p20 p21 p22 c2 0.1 c6 1 2 3 4 5 6 7 8 9 10 11 12 jp1 tl c2543 in po rt p15 p16 p17 se rial a/d p23 p24 re se t ke y_in t0 c7 c8 jzhe n vcc int 1 p3.3 t0 t1 p10 p11 p12 p13 p14 c3 10u 圖 6 a/d 采樣電路圖 (六)掃頻信號源 采用直接數(shù)字頻率合成芯片(ad9851)來產(chǎn)生掃頻信號。它的頻率穩(wěn)定度完全由有源晶振 的頻率穩(wěn)定度決定,具有較高的頻率輸出范圍,而且可以直接由單片機的輸出來控制

22、頻率的大 小。經(jīng)過輸出掃頻測試,dds 芯片可以在 10 秒內連續(xù)、穩(wěn)定輸出頻率在 40khz4mhz 范圍內連 續(xù)變化的正弦波。其電路原理圖如圖 7 所示。 ad9851 采用并行送控制字的方式將頻率控制字送入芯片。頻率控制字 fsw 與最終合成的 信號頻率 0 f 之間的轉換公式為: 32 0 2/fswff c 若系統(tǒng)時鐘頻率 c f 為 30mhz,則最大分辨率 0 f =30106232hz=0.007hz。遠超出本題 1khz 分 辯力的要求。 d3 1 d2 2 d1 3 d0 lsb 4 pgnd 5 pvcc 6 w_clk 7 fq_ud 8 ref_clk 9 agnd

23、10 avdd 11 rset 12 vout n 13 vout p 14 vinn- 15 vinp+ 16 dacbp 17 avdd 18 agnd 19 ioutb 20 iout 21 reset 22 dvdd 23 dgnd 24 d7 msb slo ad 25 d6 26 d5 27 d4 28 ic1 ad9851 r1 l12 l6 l9 l1 c13 c19 c20c21c10c18 vcc vcc vcc 1 - 2 out 3 + 4 xtal 2 c25 c27 c28 c29 l13 in 1 23 out 4 u2 upc1651 c22c23 l15 l1

24、6 c30 vcc vcc vcc r2 r10 c26 l14 1 2 3 4 5 6 7 8 j2 1 2 3 4 j3 1 1 2 2 j4 1 1 2 2 j5 r9 r8 vcc 圖 7 掃頻信號源圖 (七)鍵盤接口電路 鍵盤的接收部分電路如圖 8 所示: in/cl k 1 in 2 in 3 in 4 in 5 in 6 in 7 in 8 in 9 in 10 in 11 in 13 io 14 io 15 io 16 io 17 io 18 io 19 io 20 io 21 io 22 io 23 u1 gal22v10b25l p(24) 1 2 3 4 5 6 7 8

25、9 pr2 4.7k vcc 12 34 key0 12 34 key1 12 34 key2 a0 2 a1 3 a2 4 a3 5 a4 6 a5 7 a6 8 a7 9 b0 18 b1 17 b2 16 b3 15 b4 14 b5 13 b6 12 b7 11 e 19 dir 1 u2 74als245 vcc vcc d0 d1 d2 d3 d4 d5 d6 d7 key_cs key_int 1 2 3 4 5 6 7 8 j1 i/o 圖 8 鍵盤接收電路圖 當有按鍵時就觸發(fā)外中斷 0,再通過控制片選端(key_cs)來讀取當前按鍵的鍵值,這個信 號是由 74ls138 實現(xiàn)

26、的,其地址為 c000h;鍵值的編輯則是采用一塊 pld 芯片gal22v100 和 一個雙向選通芯片 74ls245 來實現(xiàn);數(shù)據(jù)的讀入和其他的數(shù)據(jù)一樣都是通過總線的方式, (74als245 的輸出端 b0 到 b7 與單片機的 p0 口相連接)。鍵值的四位由低到高分別對應 p0.0、p0.1、p0.2、p0.3。該鍵盤中各鍵的功能分配如下: key0:屏幕復位,鍵值為 0; key1:進入?yún)?shù)測試界面,鍵值為 1; key2:進入幅頻特性測試界面,鍵值為 2。 (八)顯示接口電路 采用 msc-g12864 液晶顯示器。該液晶顯示器的管腳分配和管腳功能使用如表 1 所示,根 據(jù)資料我們在

27、硬件設計時將其管腳與單片機的連接如下: 控制線:p2.3 連 cs2,p2.2 連 cs1,p2.1 連 r/w,p2.0 連 r/s,p2.4 連 e; 數(shù)據(jù)線:d0d7 分別與 p0.0p0.7 相連接; 因此液晶顯示器和單片機的接口電路連接如圖 9 所示。 表 1 液晶顯示器管腳分配 20191817161514131211 slkslavoutrstbcs2cs1db7db6db5db4 10987654321 db3db2db1db0er/wrsvovddvss 4 5 6 u3b 74hc00 rst 11 12 13 u3d 74hc00 e /cs1 /cs2 r/s r/w

28、/rst ea/vp 31 x1 19 x2 18 reset 9 rd 17 wr 16 int0 12 int1 13 t0 14 t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 ale /p 30 txd 11 rxd 10 ic1 at89s51 /oe 1 d0 2 d1 3 d2 4 d

29、3 5 d4 6 d5 7 d6 8 d7 9 gnd 10 le 11 o7 12 o6 13 o5 14 o4 15 o3 16 o2 17 o1 18 o0 19 vcc 20 ic2 74ls573 /oe 1 d0 2 d1 3 d2 4 d3 5 d4 6 d5 7 d6 8 d7 9 gnd 10 le 11 o7 12 o6 13 o5 14 o4 15 o3 16 o2 17 o1 18 o0 19 vcc 20 ic8 74ls573 /wr /rd vcc vcc d0 d1 d2 d3 d4 d5 d6 d7 d0 d1 d2 d3 d4 d5 d6 d7 d0 d1

30、d2 d3 d4 d5 d6 d7 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 high 8bit a dress lo ck a 1 b 2 c 3 e1 4 e2 5 e3 6 y0 15 y1 14 y2 13 y3 12 y4 11 y5 10 y6 9 y7 7 ic20 74hc138 vcc 7524 cs tl c0820 cs 1 2 3 ic21a 74ls02 4 5 6 ic21b 74ls02 8 9 10 ic21c 74ls02 11 12 13 ic21d 74ls02 /wr 628128 adh

31、 8 628128 adh 8 key_cs /rd key_rd lcd_wr c6 p15 p16 p17 p24 reset key_int 0 c8 jz hen vcc int1 p3.3 t0 t1 p10 p11 p12 p13 p14 12 ic28a 74ls04 r24 33/2w vccq1 bd140 r7 10k p3.4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 lcd2 msc-g12864 d0 d1 d2 d3 d4 d5 d6 d7 e r/w r/s vo vcc gnd /cs2 /cs1 vo

32、ut /rst le d+ le d- c7 w2 15k vcc vo 1 2 3 jmp vout 圖 9 顯示接口電路圖 三、 軟件設計 (一)軟件功能設計 軟件系統(tǒng)以界面直觀、利于操作、便于維護和升級為基礎。而且為了增強系統(tǒng)的抗干擾 性,還增加了軟件陷阱處理,防止軟件的“跑飛”。 對于軟件功能的設計不僅僅是對程序的簡單設計,還包括對各電路間接口的設計,接口 設計描述的是軟件如何與外界系統(tǒng)進行通信,軟件內部如何通信、以及軟件和軟件的使用人員 之間如何通信等問題。一個接口意味著一個信息流(例如,數(shù)據(jù)或控制流等) ,因此,在這里 的一個重點就是要實現(xiàn)如何更好的分配數(shù)據(jù)和控制流,從而實現(xiàn)整個功

33、能。 (二)系統(tǒng)軟件框圖和程序流程圖 at89c52 是美國 atmel 公司生產(chǎn)的低電壓,高性能 cmos 8 位單片機,片內含 8k bytes 的 flash rom 和 256 bytes 的 sram。器件采用 atmel 公司的高密度、非易失性存儲技術生產(chǎn), 與標準 mcs-51 指令系統(tǒng)及 8052 產(chǎn)品引腳兼容。本系統(tǒng)以單片機 at89c52 為主控核心,系統(tǒng)軟 件和硬件的接口框圖如圖 10 所示,程序流程圖如圖 11 所示。與單片機相連的接口電路還包括 鍵盤接口電路,lcd 接口電路,轉換模塊接口電路。 圖 10 系統(tǒng)軟件和硬件的接口框圖 圖 11 程序流程圖 (三)軟件模塊

34、設計 軟件設計工作是建立在自頂而下和模塊化的設計方法之上的。這就是說,軟件應在邏輯上 分割為實現(xiàn)特定功能部分的子程序,既程序編寫的模塊化,這樣無論在設計、編碼、還是以后 的維護上都提供了很大的方便。在此我們根據(jù)接口電路的需要可以把該程序分為六個模塊:主 程序模塊、顯示模塊、鍵盤模塊、高頻輸出模塊、轉換模塊、數(shù)據(jù)處理模塊。雖然每個模塊之 間都是利用數(shù)據(jù)的傳送將他們聯(lián)系起來,但在功能的實現(xiàn)上都是獨立的。 tlc2543 讀入信號 自動測試 計算每路的值 計算參數(shù) uio、uco、avd 、kcmr 并顯示 輸出頻率為 4m400khz 的 波形 計算帶寬增益 鍵值 1 有按鍵 鍵值 0 鍵值 2

35、初始化界面 初始化界面 鍵 盤 輸 入 51 單片機 lcd 顯示 a/d 轉換 模塊 測 試 板 主程序模塊 該模塊主要包括 main()函數(shù)。 在將程序進行模塊化時當然還要將各個子程序聯(lián)系起來,在主程序里就是要實現(xiàn)它們之間 邏輯關系的聯(lián)系,而且基于單片機自身的特點,主程序應該是一個死循環(huán)的過程,否則程序執(zhí) 行完一次程序后就會跑飛,而不能實現(xiàn)整體功能,因而使整個系統(tǒng)處于癱瘓狀態(tài),此時只能通 過重新斷電和通電才能使系統(tǒng)重新運行,即使這樣該系統(tǒng)還是會再次進入癱瘓狀態(tài)。因此只能 利用死循環(huán)來解決這個問題,這也是對單片機編程的一種常用的方法。 在主程序模塊中,主要實現(xiàn)的功能為:剛開機時,對外圍設備進

36、行初始化設置,然后顯示 主界面,即歡迎界面;等待按鍵,通過按鍵標志來判斷是否要調用按鍵處理函數(shù) keycl()。在 keycl()函數(shù)中包括對不同鍵值的判斷,并調用數(shù)據(jù)采集、分析、處理、顯示等函數(shù)。因此主函 數(shù)的流程圖如圖 12 所示。該主函數(shù)處于一種死循環(huán)的狀態(tài)。 開始 顯示主界面 有按鍵 否 判斷鍵值,并調用顯示模塊、 調用鍵盤模塊子程序、轉換 模塊和數(shù)據(jù)處理模塊子程序 結束 n y 圖 12 主函數(shù)流程圖 主函數(shù)的程序如下所示: /*/ /* 主函數(shù) */ /*/ void main() unsigned char k,adbuf,dabuf,rambuf; idata unsigned

37、 int *para= ad2543(0 x0c); /預先將要讀取數(shù)據(jù)的通道數(shù)送入 dabuf=0 xff; p3_4=1; /改變繼電器 intlcd(); /* 調初始化函數(shù) */ clear(); /* 調清屏函數(shù) */ ea=1; ex0=1; it0=1; flag=0; fw(); /復位 while(1) /使程序處于死循環(huán) if(flag=1) /當有按鍵按下時 keycl(); /調用鍵盤處理函數(shù)包括對數(shù)據(jù)采集、分析、計算 其中 intlcd()函數(shù),clear()函數(shù)和 fw()函數(shù)將在附錄一里給出。 顯示模塊 顯示模塊主要是負責跟液晶顯示器接口的程序模塊,包括液晶的驅動

38、程序和結果顯示程 序。該模塊主要是由 xianshi()函數(shù)組成,它的功能是將處理結果數(shù)據(jù)顯示在 lcd 上。流程圖如 圖 13 所示。其中調用了寫中文函數(shù) whz(),寫西文函數(shù) wcode()。流程圖如圖 14 所示,以及兩 個判忙函數(shù) busym(),busyr(),兩個寫指令函數(shù) pr1(),pr4(),兩個寫數(shù)據(jù)函數(shù) pr2(), pr5(),該模塊在設計時主要考慮單片機和液晶之間的管腳連接,以及液晶自身的地址分配。 在此我們參考了液晶顯示器的使用手冊,分析了在硬件上單片機的管腳分配情況,因此單片機 和液晶的接口電路如圖 9。其地址控制說明如圖 15 所示,接口管腳電平說明如表 2

39、所示。 開始 取出要計算 的每一位 調用寫西文函數(shù)顯 示結果 結束 開始 液晶忙 送要顯示的數(shù)據(jù) 結束 n y 圖 13 顯示模塊流程圖 圖 14 寫中、西文函數(shù)流程圖 圖 15 地址控制說明圖 表 2: lcd 管腳電平說明表 pin no.symbolleveldescription 1vss0vground 2vdd5.0vsupply voltage for logic 3vo-input voltage for lcd 4rsh/lh:date signal, l:instruction signal 5r/wh/lh:read mode, l:write mode 6eh,h-lc

40、hip enable signal 7db0h/ldata bit 0 8db1h/ldata bit 1 9db2h/ldata bit 2 10db3h/ldata bit 3 11db4h/ldata bit 4 12db5h/ldata bit 5 13db6h/ldata bit 6 14db7h/ldata bit 7 15cs1hchip select signal for ks0108b(1) 16cs2hchip select signal for ks0108b(2) 17rstblreset signal 18vout-5voutput voltage for lcd 1

41、9sla4.2vside light anode 20slk0vside light cathode 由液晶顯示器的資料可知 lcd 是由兩片ks0108b組成,且在液晶顯示器上片選 cs1,cs2 都 是高電平有效,e 腳:芯片使能端,是高電平或下降沿到來時有效,即只有當它為高電平或下 降沿來時才能進行讀、寫入數(shù)據(jù)或者寫指令操作,當該管腳為低電平時為忙狀態(tài),因此結合硬 件電路的設計可得到液晶顯示器的地址分配為: #define cwadd2 xbyte0 xb400 /*第二片寫狀態(tài)地址*/ #define cradd2 xbyte0 xf600 /*第二片讀狀態(tài)地址*/ #define d

42、wadd2 xbyte0 xb500 /*第二片寫數(shù)據(jù)地址*/ #define cwadd1 xbyte0 xb800 /*第一片寫狀態(tài)地址*/ #define cradd1 xbyte0 xfa00 /*第一片讀狀態(tài)地址*/ #define dwadd1 xbyte0 xb900 /*第一片寫數(shù)據(jù)地址*/ #define display_on 0 x3f; /開顯示 #define display_off 0 x3e; /關顯示 #define para1 0 x40; /*設置列地址*/ #define start_line0 0 x0c0; /*開始顯示行為第 0 行*/ #define

43、 page 0 xb8 /設置頁地址 在顯示數(shù)據(jù)之前一定要進行對液晶進行判忙工作,只有當液晶處于空閑狀態(tài)才能對液晶進 行寫入操作,因此在開始對液晶進行寫入指令和數(shù)據(jù)之前要先調用兩個判忙函數(shù),一個是 busym()即對左片判忙,還有一個是 busyr()即對右片進行判忙。而且只有當液晶是處于空 閑和開狀態(tài)的時候,才能進行下一個操作,否則將在此進入死循環(huán)中。 其中寫指令函數(shù) pr1(),pr4(),主要功能是設置液晶顯示器的地址;寫數(shù)據(jù)函數(shù) pr2(), pr5()是在地址設置后將要顯示的數(shù)據(jù)寫入到液晶顯示器中;寫中文函數(shù) whz()是顯示中文字符, 寫西文函數(shù) wcode()是顯示西文字符。以下

44、給出了 xianshi()函數(shù)具體程序,其它的程序在附錄里 給出,這里就不一一詳述。 /*/ /* 顯示結果 */ /*/ void xianshi(void) float k; int j; unsigned char i,last,hang,lie; for(i=64;i=100;i+=6) wcode(i,4,47); j=4; /求出每一位數(shù),便于在 lcd 上顯示 for(i=0;i0;j-) /要顯示的數(shù)據(jù)共 5 位從最后一位開始顯示 k=averagei-(int)averagei; /獲得最后一位小數(shù) if (k0.000000) k=0.000000; averagei=(i

45、nt)averagei; last=k*10; / 將獲得的最后一個小數(shù)轉換為整數(shù),便于顯 示 lie=64+j*7; /要顯示的數(shù)據(jù)的行、列 hang=7-i; if (j=5) /要顯示的數(shù)據(jù)共 5 位,有四位小數(shù) wcode(lie,hang,46); /顯示小數(shù)點 lie=lie+5; j-; wcode(lie,hang,last); averagei=averagei/10; /求出下位數(shù)據(jù) 鍵盤模塊 該模塊主要包括中斷函數(shù) int1() interrupt 0 和 keycl()函數(shù)。 為了使該系統(tǒng)更具人性化,在硬件上加入了三個按鍵,相應地在軟件上也離不開這個模塊。 這三個按鍵分

46、別用來在:初始界面,參數(shù)測試界面和增加功能的帶寬測試界面之間轉換。當有 鍵按下,就會產(chǎn)生一個下降沿脈沖從而觸發(fā)中斷的發(fā)生。在中斷函數(shù)中調用一個延時程序實現(xiàn) 消抖,如果確定有按鍵按下則將中斷標志變量置 1,即 flag=1;在主程序中,通過對這個標志 變量的查詢,來決定是否調用函數(shù) keycl()。在該函數(shù)中具體實現(xiàn)不同按鍵要顯示的對應界面, 并進行不同的操作。如果當前按下第一個鍵,則調用復位函數(shù) fw(),返回到初始的歡迎界面, 顯示“歡迎使用”這四個字;如果按下的是第二個鍵,在液晶的頂部中間顯示要測試的四個參 數(shù) 、然后調用參數(shù)測試函數(shù) ad2543()讀取不同通道的數(shù)據(jù),并通過對繼電 io

47、c v io i vd a cmr k 器的控制來讀入相同通道中不同參數(shù)所需要的電壓值,然后調用 sort()函數(shù)去掉采集的數(shù)據(jù)中 的一個最大值和一個最小值,并將獲得的數(shù)據(jù)轉換為真實的電壓值,調用函數(shù) jisuan()將數(shù)據(jù)進 行平均后再計算參數(shù)結果,最后調用函數(shù) xianshi()將處理完的結果顯示出來;如果按下的是第 三個鍵,則顯示頻帶寬度界面,并調用函數(shù) highsource()輸出高頻信號,頻率的分辨率為 1khz。該模塊的流程圖如圖 16 所示。 開始 結束 第一個按鍵 n y 調用主界面 第二個按鍵 采集 ad2543 中 的數(shù)據(jù)并進行分 析和顯示 第三個按鍵 控制 ad9851

48、產(chǎn) 生信號源 y y n n 圖 16 鍵盤模塊程序流程 /*/ /* 鍵盤中斷 */ /*/ void int1() interrupt 0 delay(100); if (p32=0) /消抖 keyv=keyaddr; flag=1; /*/ /* 按鍵處理函數(shù) */ /*/ void keycl(void) unsigned char i,j,k; flag=0; /清除按鍵標志 if (keyv=0) /當按下第一個鍵時 fw(); /顯示主界面即復位 else if(keyv=1) /當按下第二個鍵時 zdcs(); /調用顯示參數(shù)測試界面 k=0 x0c; /選擇通道 0 for

49、(i=0;i5;i+) /需要 5 個數(shù)據(jù) /采集數(shù)據(jù)時要采集 8 組 for(j=0;j8;j+) ad0ij=ad2543(k); delay(0 x30); /在每次采集之間調用延時程序 delay(0 x60); /在要選部通道之間延時 /通過改變繼電器獲得所需的不同電壓 if(i=0) /獲得 vlo 當 i=0 時 jdq0=1; /當 i=1 時閉合開關獲得 vli if (i=1) /輸入時信號源當 i=2 時換通道獲得 vlo 用來計算 avd jdq0=0; jdq1=0; k=k+0 x10; if (i=2) /i=3 時獲得 vlo 是用來計算 dcmr jdq1=1

50、; if (i=3) /更換通道 獲得信號源電壓 jdq1=0; k=k+0 x10; /通道數(shù)加 1 /因為輸入通道數(shù)時只有前面的四位數(shù)有效 sort(); /去掉一個最大值和一個最小值,并轉換為真實的電壓值 jisuan(); /將數(shù)據(jù)進行平均,后再進行計算參數(shù)結 果 xianshi(); /顯示獲得的結果 else if(keyv=2) highsource(); /輸出高頻信號,頻率的分辨率為 1khz flag=0; /清除按鍵標志 其中 jdq0,jdq1:繼電器通斷標志變量; falg:按鍵標志變量,有鍵按下則為 1,否則為 0; keyv:存放不同按鍵的鍵值; ad0ij:存放

51、來自通道的電壓信號的數(shù)據(jù),idata unsigned int ad058存放參數(shù)測試所需 要的 5 組數(shù)據(jù),又把每個所需要的數(shù)據(jù)采集的 8 次,因此每組數(shù)據(jù)中包括 8 個數(shù)據(jù),這樣真正 采集的數(shù)據(jù)應該是 40 個。 高頻輸出模塊 void highsource()函數(shù)是控制 dds 產(chǎn)生正弦波的,產(chǎn)生的正弦波的分辨率為 1khz。以下 是 ad9851 的部分管腳功能說明: 41,2825(d0d7):是8位的數(shù)據(jù)輸入口,其中d0(4腳)是低位,d7(25腳)是高位; 5(pgnd):接地端; 6(pvcc):電源端; 這兩個管腳都是當頻率取輸入數(shù)據(jù)的六倍時用的; 7(w_clk):數(shù)字載入

52、端,上升沿有效,由單片機控制,與p1.5相連; 8(fq_ud):頻率刷新端,上升沿有效,由單片機控制,與p1.6相連; 9(ref_clk):系統(tǒng)時鐘,是外部輸入,直接用10m晶振產(chǎn)生; 10、19(agnd):模擬信號接地端; 11、18(avdd):模擬信號電源端; 21(iout):輸出口,產(chǎn)生的信號源輸出口,必須接負載后再接入示波器; 22(reset):復位端,高電平時復位,當該管腳是低電平時處于正常工作,該管腳由單片機 控制,與p1.7相連。 ad9851芯片具有輸入數(shù)字信號直接輸出對應頻率的正弦波的功能的芯片,有以上的管腳 說明可知,數(shù)據(jù)輸入端只有8個口即d0d7,但ad985

53、1允許輸入的數(shù)據(jù)范圍為40位,因此在 程序中要用串并合用的方法,每次送入8位數(shù)據(jù),并送w_clk端一個脈沖,使芯片接受送入的 數(shù)據(jù),共送5次,先送入的為高電位,送完后將fq_ud信號置1,使送入得數(shù)據(jù)有效,產(chǎn)生所需 要頻率的正弦波。該模塊的程序流程如圖17所示。highsource()函數(shù)如下所示: /*/ /* 產(chǎn)生高頻信號 */ /*/ void highsource() unsigned char i, j; idata unsigned long step; idata unsigned long addr=0 x22222222; /頻率的最大值約為4m idata unsigned

54、 char zanc5=0 x00,0 x22,0 x22,0 x22,0 x22; unsigned char *p= /高頻信號源地址 unsigned char *p1= unsigned int k; step=0 x01000000; /頻率變化的步進值 fq_up=0; w_clk=0; reset=1; j+; /延時作用 j+; reset=0; for(k=1;k0 x0f78;k+) /產(chǎn)生信號源,由于指針之間不能直接付值所以 用 /zanc變量作為它的中間變量 p= p1= for(i=1;i5;i+) zanci=*p1; p1+; for(i=0;i5;i+) *p=

55、zanci; w_clk=1; /送頻率控制字,先高位,后低位 j+; j+; w_clk=0; fq_up=1; /產(chǎn)生一個上升沿 j+; fq_up=0; delay(100); if (addrstep) step=0 x10000; addr-=step; /改變頻率值 開始 頻率值 為 0 送時鐘脈沖和刷新脈沖 結束 n y 送頻率字 改變頻率值 圖 17 高頻輸出模塊圖 轉換模塊 該模塊主要包括 ad2543()函數(shù),主要實現(xiàn)采集通道中的數(shù)據(jù),并將模擬信號轉換為數(shù)字信 號。 從測試板輸出的信號仍然是模擬信號,而單片機只能對數(shù)字信號進行處理,因此對于單片 機而言是不可能識別模擬信號的

56、大小,只能判斷有無電壓的輸入,所以測試板中的信號通過峰 峰值檢測后必須經(jīng)過 a/d 轉換才能和單片機相連,被程序讀入并做相應的處理。 轉換模塊的程序主要是負責讀取來自 tlc2543 的數(shù)據(jù),該芯片有 11 路模擬信號輸入通道 (an0an10),兩個參考電壓輸入端(ref+,ref-)和 5 個控制管腳。其接口電路如圖 6 所示。 它們的功能分別為: an0an10:11 路模擬輸入通道 ref+:正參考電壓,輸入端 ref-:負參考電壓,輸入端,一般直接接地 ioclk:輸入輸出脈沖,當讀輸出數(shù)據(jù)時下降沿有效,當輸入地址時,上升沿有效,輸入端 data input:地址選擇端,輸入當前要轉

57、換的模擬信號的通道號,四位串行輸入,輸入端 data out:12 位數(shù)字串行信號輸出口,輸出端 eoc:輸出結束標志,轉換結束后自動置 1,輸出端 cs:片選信號,低電平有效,輸入口 開始 結束 位操作方式送通 道數(shù) 位操作方式先讀高 8 位,再讀后 4 位 圖 18 轉換模塊的程序流程圖 轉換模塊的程序流程如圖 18 所示,其工作原理為:轉換輸出電平的量程大小為正負參考 電壓之差,輸入模擬信號的電壓范圍即為正負參考電壓的大小,一般 ref+大小要小于或等于 v+;當要開始 a/d 轉換時,先使該芯片有效,即使/cs 信號端為低電平,連續(xù)輸入四個 ioclk,在 ioclk 的上升沿處在 d

58、ata input 端口輸入要轉換的通道地址,高位在前,低位在后, 通道地址的范圍為 0 到 10,并且在 ioclk 的第四個脈沖的下降沿到來時,讀入選擇的通道中的 模擬信號并開始轉換;調用延時函數(shù)作為其轉換時間,然后單片機要給 a/d 芯片的 ioclk 端口 連續(xù) 16 個脈沖,在每個脈沖的下降沿到來時讀取 a/d 中的一位數(shù)據(jù),先讀入的數(shù)據(jù)為高位, 在程序中利用左移功能,將前 12 位數(shù)據(jù)保存在變量 ad 中,后 4 位數(shù)據(jù)為無效數(shù)據(jù)舍去,然 后返回到上級函數(shù)。其實在該函數(shù)中采用送通道數(shù)和讀數(shù)據(jù)在同一個時刻進行,事實上讀的數(shù) 據(jù)是上次送的通道數(shù)的結果。因此在主函數(shù)中預先調用一次 ad2

59、543()函數(shù)作為預先送通道數(shù)的 操作。ad2543()函數(shù)如下所示: /*/ /* 讀取 ad2543 中的數(shù)據(jù) */ /*/ unsigned int ad2543(unsigned char tin) /tin 是通道數(shù) unsigned int ad; unsigned char i,j; cs=1; for(i=0;i10;i+) ; cs=0; cjn=tin; for(i=0;i8;i+) /通過循環(huán)將獲得的數(shù)據(jù)保存在 cjn 中 cj=dout; din=cj7; cjn=cjn1; cj0=cj; sclk=1; j+; /脈沖高電平保持時間 sclk=0; ad=cjn*1

60、6; /先讀出來的是高 8 位 cjn=tin; /還是原來的通道 for(i=0;i8;i+) cj=dout; din=cj7; cjn=cjn1; cj0=cj; sclk=1; j+ ; sclk=0; ad=ad+cjn/16; /只需要后讀入數(shù)據(jù)中低 4 位 cs=1; /片選無效 return(ad); 數(shù)據(jù)處理模塊 該模塊主要包括 sort()函數(shù)和 jisuan()函數(shù)。 其中 sort()函數(shù)主要是將獲得的 5 組 40 個數(shù)據(jù)中每組的最大值和最小值去掉,并轉換為真 實的電壓值,范圍為電壓為 05v。jisuan()函數(shù)是將去掉最大值和最小值后每組數(shù)據(jù)進行平均, 然后再參考

溫馨提示

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

評論

0/150

提交評論