




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、集成運(yùn)放參數(shù)測試儀程序設(shè)計 內(nèi)容摘要:該課題設(shè)計的運(yùn)算放大器閉環(huán)參數(shù)測試系統(tǒng)是基于 msc-51 單片機(jī)控制模塊,并且 由 lcd(liquid crystal display)顯示模塊,鍵盤模塊,數(shù)據(jù)采集和轉(zhuǎn)換模塊,采用 dds 芯 片(ad9851)實(shí)現(xiàn)了 40khz4mhz 的掃頻輸出模塊等五部分組成。采用輔助運(yùn)放測試方法,可 對運(yùn)放的輸入失調(diào)電壓、輸入失調(diào)電流、交流差模開環(huán)電壓增益和交流共模抑制比以及單位增 益帶寬進(jìn)行測量。在軟件上,用 c 語言來編程實(shí)現(xiàn)。其要實(shí)現(xiàn)的功能包括:對來自 tlc2543a/d 轉(zhuǎn)換的數(shù)字信號進(jìn)行接收、分析、計算和對結(jié)果的顯示;通過不同鍵值的接收、分析來控制
2、對 不同對象的測量,并在 lcd 上顯示對應(yīng)的人機(jī)界面;對來自 dds 的高頻信號源的頻率進(jìn)行控制 來實(shí)現(xiàn)對集成運(yùn)放的帶寬參數(shù)的測試和顯示。而且具有自動量程轉(zhuǎn)換、自動測量功能和良好的 人機(jī)交互性。 關(guān)鍵詞:單片機(jī) c 語言 dds lcd 人機(jī)交互界面 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 二、硬件單元電路設(shè)計與實(shí)現(xiàn) .2 (一)、四個參數(shù)的測試電路.2 ioc v io i vd a cmr k (二)單位增益帶寬測量電路.3 (三)測試的信號源 .3 vdcmr ak、 (四)峰峰值檢測電路的設(shè)計.4 (五)a/d 采樣電路 .4 (六)掃頻信號源.4 (七)鍵盤接口電路.5 (八)顯示接口電路.5 三、軟件設(shè)計 .6 (一)軟件功能設(shè)計.6 (二)系統(tǒng)軟件框圖和程序流程圖.6 (三)軟件模塊設(shè)計.7 四、系統(tǒng)測試 .19 (一)程序調(diào)試方法 .19 (二)軟件調(diào)試 .19 (三)聯(lián)機(jī)調(diào)
8、試 .20 五、結(jié)束語 .20 六、感謝詞 .20 參考文獻(xiàn) .20 附錄一 .21 附錄二 .22 附錄三 .36 (一)tlc2543 .36 (二)lcd 液晶顯示器.36 附錄四 .38 集成運(yùn)放參數(shù)測試儀 程序設(shè)計 前言 目前國內(nèi)外市場上各種型號的集成運(yùn)放參數(shù)測試儀已經(jīng)相當(dāng)多,而且普遍性都采用“輔助 放大器的測量方法” ,使測試儀的整個系統(tǒng)具有穩(wěn)定性好,精確度高,范圍大的特點(diǎn),而且測 試儀測試參數(shù)一般包括:正向最大輸出電壓+,負(fù)向最大輸出電壓-,正向最大共模輸出 opp v opp v 電壓+,負(fù)向最大共模輸出電壓-,正轉(zhuǎn)換速率+ ,負(fù)轉(zhuǎn)換速率-,靜態(tài)工作電流, icm v icm
9、v r s r s q i 輸入失調(diào)電壓,共模抑制比,開環(huán)增益帶寬乘積 bw,輸入失調(diào)電流,開環(huán)電壓增益 ioc v cmr kiio ,基極偏置電流等 15 項。 vd a ib i 但這種測試儀有一種共同的特點(diǎn)電路系統(tǒng)復(fù)雜,成本高,因此在某些應(yīng)用領(lǐng)域中不能普遍 使用。在此我們根據(jù) gb344286半導(dǎo)體集成電路運(yùn)算電壓放大器測試方法的基本原理規(guī)定 的測試方法來設(shè)計,主要測試參數(shù)包括:輸入失調(diào)電壓,共模抑制比,開環(huán)增益寬帶 ioc v cmr k 乘積 bw,輸入失調(diào)電流,開環(huán)電壓增益等 5 個,而且用 msc51 系列單片機(jī)作為中央處理 io i vd a 器,這樣大大降低了成本,并且具有
10、顯示功能,使用方便,體積小,適合搬移,系統(tǒng)穩(wěn)定。 在軟件方面,匯編語言是能直接控制單片機(jī)的底層語言,而且在控制硬件和位操作等方面 表現(xiàn)很優(yōu)異,程序運(yùn)行時效率也很高,但當(dāng)用匯編語言來編制復(fù)雜的數(shù)學(xué)運(yùn)算類型的程序時就 顯得有些不方便。而使用 c51 高級語言開發(fā) msc51 系列單片機(jī)比匯編語言優(yōu)越地多,如程序 編寫直觀易懂、便于移植、便于修改和維護(hù)、便于進(jìn)行模塊化程序設(shè)計、提高計算精度等。雖 然高級語言在產(chǎn)生代碼方面會比較長些,而且運(yùn)行速度相對來說會慢些但對于當(dāng)今作為開發(fā)的 計算機(jī)軟件來說優(yōu)化程序的編譯已經(jīng)不是問題。在次我們結(jié)合了該設(shè)計自身的特點(diǎn)和需要,綜 合分析了以上的優(yōu)、缺點(diǎn)最后決定采用 c
11、 語言來編程,實(shí)現(xiàn)這個課題的功能,從而也提高其使 用性。該成品可方便用于小型實(shí)驗或個人實(shí)驗室等場合。 一、 系統(tǒng)原理框圖 該系統(tǒng)包括軟件和硬件兩個方面,程序被下載到單片機(jī)中,自動進(jìn)行一系列測試工作,而 且可以通過良好的人機(jī)界面對其進(jìn)行選擇、控制。其整體系統(tǒng)原理框圖如圖 1 所示。 運(yùn) 放 參 數(shù) 測 試 電 路 數(shù)據(jù)采集 測試參數(shù)選擇 高頻信號源 增 益 控 制 單 片 機(jī) lcd 顯示輸出 鍵 盤 輸 入 圖 1 系統(tǒng)原理框圖 二、硬件單元電路設(shè)計與實(shí)現(xiàn) (一)、四個參數(shù)的測試電路 ioc v io i vd a cmr k 按照 gb344286半導(dǎo)體集成電路運(yùn)算(電壓)放大器測試方法的基
12、本原理規(guī)定的輔助直 流測試法,可實(shí)現(xiàn)運(yùn)算放大器直流參數(shù)的準(zhǔn)確測量。該方案的測試原理如圖 2 所示。 + - + - 被測運(yùn)放 輔助運(yùn)放 rf r1 ri ri r2 k1 k2 r r vl rf 數(shù)字電壓表 (4位半以上) 圖 2 gb344286 規(guī)定的運(yùn)算放大器直流參數(shù)測試方法 它是國標(biāo)推薦的測試方法也是目前國際普遍采用的一種測試方法,具有穩(wěn)定性好、精度高、 范圍大等特點(diǎn),可測量各種集成運(yùn)算放大器的輸入失調(diào)電壓、失調(diào)電流、共模抑制比、差模開 環(huán)增益等參數(shù),測試方便,測量輸出的電壓范圍合適。而輔助運(yùn)放對系統(tǒng)增益的穩(wěn)定性有很關(guān) 鍵的作用,雖然也會引起自激,但可以通過一定的方法來抑制。 測試這
13、四個參數(shù)的電路可以集成在兩個電路里。首先可以將測試、這兩個參數(shù)的電 ioc v io i 路通過繼電器做成一個電路系統(tǒng),如圖 3 所示。電容 cu 是補(bǔ)償分布電容,用來抑制自激的發(fā) 生,而 cu 的值是通過實(shí)驗獲得的:先將數(shù)百皮法的瓷片電容接入電路選定位置,觀察自激信 號的變化,直到取得使自激信號最小的電容值為止。然后將測試、這兩個參數(shù)的電路 vd a cmr k 也集成一個電路系統(tǒng),如圖 4 所示。這樣通過兩個核心測量電路就可以完成所有參數(shù)測試,同 時通過對繼電器的控制實(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 輸入失調(diào)電壓和輸入失調(diào)電流測試電路 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 電壓增益和共模抑制比測試電路 其測試電路和過程如下: 、當(dāng)繼電器 1、4 分別腳接向 3、6 腳時,測得輔助運(yùn)放的輸出電壓記為 vl0 ,則有: l0 fi i io v rr r v 、當(dāng)繼電器 1、4 分別腳接向 2、5 腳時,測得輔助運(yùn)放的輸出電壓記為 vl1,則有: r vv rr r i l0l1 fi i io 、當(dāng)把信號源輸出(電壓為 vs)接到繼電器的第 1 腳時,測得輔助運(yùn)放輸出電壓為 vl0,則 有 )db(lg20
17、i fi lo s vd r rr v v a 、當(dāng)把信號源輸出(電壓為 vs)接到繼電器的第 4 腳時,測得輔助運(yùn)放輸出電壓為 vl0,則 有 )db(lg20 i fi lo s cmr r rr v v k 通過上述方法就可測得所要測試的四個參數(shù)。 (二)單位增益帶寬測量電路 單位增益帶寬測量電路為一個反向比例放大器,從 p1.3 口輸入正弦信號的幅值,改變信 號頻率,當(dāng) p1.3 口的輸入電壓幅值下降到 3db 時的頻率即為單位增益帶寬。 (三)測試的信號源 vdcmr ak、 用文氏電橋電路實(shí)現(xiàn)產(chǎn)生 4v、5hz 的正弦波。它是由 rc 振蕩電路構(gòu)成的低頻正弦信號 發(fā)生器。通過調(diào)節(jié)電
18、路中的電阻和電容值的大小,可以產(chǎn)生不同頻率和幅度的正弦信號,而且 信號比較純。該電路簡單、信號幅度穩(wěn)定,其穩(wěn)定度優(yōu)于 1%。經(jīng)過仿真后發(fā)現(xiàn)該電路只能產(chǎn) 生 400khz 以內(nèi)的信號,但這個頻率范圍已經(jīng)滿足我們的要求。 (四)峰峰值檢測電路的設(shè)計 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、,用于檢測掃頻信號源的峰值。實(shí)際測量表明, 該峰值檢測電路在 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)定度決定,具有較高的頻率輸出范圍,而且可以直接由單片機(jī)的輸出來控制
22、頻率的大 小。經(jīng)過輸出掃頻測試,dds 芯片可以在 10 秒內(nèi)連續(xù)、穩(wěn)定輸出頻率在 40khz4mhz 范圍內(nèi)連 續(xù)變化的正弦波。其電路原理圖如圖 7 所示。 ad9851 采用并行送控制字的方式將頻率控制字送入芯片。頻率控制字 fsw 與最終合成的 信號頻率 0 f 之間的轉(zhuǎn)換公式為: 32 0 2/fswff c 若系統(tǒng)時鐘頻率 c f 為 30mhz,則最大分辨率 0 f =30106232hz=0.007hz。遠(yuǎn)超出本題 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 鍵盤接收電路圖 當(dāng)有按鍵時就觸發(fā)外中斷 0,再通過控制片選端(key_cs)來讀取當(dāng)前按鍵的鍵值,這個信 號是由 74ls138 實(shí)現(xiàn)
26、的,其地址為 c000h;鍵值的編輯則是采用一塊 pld 芯片gal22v100 和 一個雙向選通芯片 74ls245 來實(shí)現(xiàn);數(shù)據(jù)的讀入和其他的數(shù)據(jù)一樣都是通過總線的方式, (74als245 的輸出端 b0 到 b7 與單片機(jī)的 p0 口相連接)。鍵值的四位由低到高分別對應(yīng) p0.0、p0.1、p0.2、p0.3。該鍵盤中各鍵的功能分配如下: key0:屏幕復(fù)位,鍵值為 0; key1:進(jìn)入?yún)?shù)測試界面,鍵值為 1; key2:進(jìn)入幅頻特性測試界面,鍵值為 2。 (八)顯示接口電路 采用 msc-g12864 液晶顯示器。該液晶顯示器的管腳分配和管腳功能使用如表 1 所示,根 據(jù)資料我們在
27、硬件設(shè)計時將其管腳與單片機(jī)的連接如下: 控制線:p2.3 連 cs2,p2.2 連 cs1,p2.1 連 r/w,p2.0 連 r/s,p2.4 連 e; 數(shù)據(jù)線:d0d7 分別與 p0.0p0.7 相連接; 因此液晶顯示器和單片機(jī)的接口電路連接如圖 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 顯示接口電路圖 三、 軟件設(shè)計 (一)軟件功能設(shè)計 軟件系統(tǒng)以界面直觀、利于操作、便于維護(hù)和升級為基礎(chǔ)。而且為了增強(qiáng)系統(tǒng)的抗干擾 性,還增加了軟件陷阱處理,防止軟件的“跑飛”。 對于軟件功能的設(shè)計不僅僅是對程序的簡單設(shè)計,還包括對各電路間接口的設(shè)計,接口 設(shè)計描述的是軟件如何與外界系統(tǒng)進(jìn)行通信,軟件內(nèi)部如何通信、以及軟件和軟件的使用人員 之間如何通信等問題。一個接口意味著一個信息流(例如,數(shù)據(jù)或控制流等) ,因此,在這里 的一個重點(diǎn)就是要實(shí)現(xiàn)如何更好的分配數(shù)據(jù)和控制流,從而實(shí)現(xiàn)整個功
33、能。 (二)系統(tǒng)軟件框圖和程序流程圖 at89c52 是美國 atmel 公司生產(chǎn)的低電壓,高性能 cmos 8 位單片機(jī),片內(nèi)含 8k bytes 的 flash rom 和 256 bytes 的 sram。器件采用 atmel 公司的高密度、非易失性存儲技術(shù)生產(chǎn), 與標(biāo)準(zhǔn) mcs-51 指令系統(tǒng)及 8052 產(chǎn)品引腳兼容。本系統(tǒng)以單片機(jī) at89c52 為主控核心,系統(tǒng)軟 件和硬件的接口框圖如圖 10 所示,程序流程圖如圖 11 所示。與單片機(jī)相連的接口電路還包括 鍵盤接口電路,lcd 接口電路,轉(zhuǎn)換模塊接口電路。 圖 10 系統(tǒng)軟件和硬件的接口框圖 圖 11 程序流程圖 (三)軟件模塊
34、設(shè)計 軟件設(shè)計工作是建立在自頂而下和模塊化的設(shè)計方法之上的。這就是說,軟件應(yīng)在邏輯上 分割為實(shí)現(xiàn)特定功能部分的子程序,既程序編寫的模塊化,這樣無論在設(shè)計、編碼、還是以后 的維護(hù)上都提供了很大的方便。在此我們根據(jù)接口電路的需要可以把該程序分為六個模塊:主 程序模塊、顯示模塊、鍵盤模塊、高頻輸出模塊、轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊。雖然每個模塊之 間都是利用數(shù)據(jù)的傳送將他們聯(lián)系起來,但在功能的實(shí)現(xiàn)上都是獨(dú)立的。 tlc2543 讀入信號 自動測試 計算每路的值 計算參數(shù) uio、uco、avd 、kcmr 并顯示 輸出頻率為 4m400khz 的 波形 計算帶寬增益 鍵值 1 有按鍵 鍵值 0 鍵值 2
35、初始化界面 初始化界面 鍵 盤 輸 入 51 單片機(jī) lcd 顯示 a/d 轉(zhuǎn)換 模塊 測 試 板 主程序模塊 該模塊主要包括 main()函數(shù)。 在將程序進(jìn)行模塊化時當(dāng)然還要將各個子程序聯(lián)系起來,在主程序里就是要實(shí)現(xiàn)它們之間 邏輯關(guān)系的聯(lián)系,而且基于單片機(jī)自身的特點(diǎn),主程序應(yīng)該是一個死循環(huán)的過程,否則程序執(zhí) 行完一次程序后就會跑飛,而不能實(shí)現(xiàn)整體功能,因而使整個系統(tǒng)處于癱瘓狀態(tài),此時只能通 過重新斷電和通電才能使系統(tǒng)重新運(yùn)行,即使這樣該系統(tǒng)還是會再次進(jìn)入癱瘓狀態(tài)。因此只能 利用死循環(huán)來解決這個問題,這也是對單片機(jī)編程的一種常用的方法。 在主程序模塊中,主要實(shí)現(xiàn)的功能為:剛開機(jī)時,對外圍設(shè)備進(jìn)
36、行初始化設(shè)置,然后顯示 主界面,即歡迎界面;等待按鍵,通過按鍵標(biāo)志來判斷是否要調(diào)用按鍵處理函數(shù) keycl()。在 keycl()函數(shù)中包括對不同鍵值的判斷,并調(diào)用數(shù)據(jù)采集、分析、處理、顯示等函數(shù)。因此主函 數(shù)的流程圖如圖 12 所示。該主函數(shù)處于一種死循環(huán)的狀態(tài)。 開始 顯示主界面 有按鍵 否 判斷鍵值,并調(diào)用顯示模塊、 調(diào)用鍵盤模塊子程序、轉(zhuǎn)換 模塊和數(shù)據(jù)處理模塊子程序 結(jié)束 n y 圖 12 主函數(shù)流程圖 主函數(shù)的程序如下所示: /*/ /* 主函數(shù) */ /*/ void main() unsigned char k,adbuf,dabuf,rambuf; idata unsigned
37、 int *para= ad2543(0 x0c); /預(yù)先將要讀取數(shù)據(jù)的通道數(shù)送入 dabuf=0 xff; p3_4=1; /改變繼電器 intlcd(); /* 調(diào)初始化函數(shù) */ clear(); /* 調(diào)清屏函數(shù) */ ea=1; ex0=1; it0=1; flag=0; fw(); /復(fù)位 while(1) /使程序處于死循環(huán) if(flag=1) /當(dāng)有按鍵按下時 keycl(); /調(diào)用鍵盤處理函數(shù)包括對數(shù)據(jù)采集、分析、計算 其中 intlcd()函數(shù),clear()函數(shù)和 fw()函數(shù)將在附錄一里給出。 顯示模塊 顯示模塊主要是負(fù)責(zé)跟液晶顯示器接口的程序模塊,包括液晶的驅(qū)動
38、程序和結(jié)果顯示程 序。該模塊主要是由 xianshi()函數(shù)組成,它的功能是將處理結(jié)果數(shù)據(jù)顯示在 lcd 上。流程圖如 圖 13 所示。其中調(diào)用了寫中文函數(shù) whz(),寫西文函數(shù) wcode()。流程圖如圖 14 所示,以及兩 個判忙函數(shù) busym(),busyr(),兩個寫指令函數(shù) pr1(),pr4(),兩個寫數(shù)據(jù)函數(shù) pr2(), pr5(),該模塊在設(shè)計時主要考慮單片機(jī)和液晶之間的管腳連接,以及液晶自身的地址分配。 在此我們參考了液晶顯示器的使用手冊,分析了在硬件上單片機(jī)的管腳分配情況,因此單片機(jī) 和液晶的接口電路如圖 9。其地址控制說明如圖 15 所示,接口管腳電平說明如表 2
39、所示。 開始 取出要計算 的每一位 調(diào)用寫西文函數(shù)顯 示結(jié)果 結(jié)束 開始 液晶忙 送要顯示的數(shù)據(jù) 結(jié)束 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 腳:芯片使能端,是高電平或下降沿到來時有效,即只有當(dāng)它為高電平或下 降沿來時才能進(jìn)行讀、寫入數(shù)據(jù)或者寫指令操作,當(dāng)該管腳為低電平時為忙狀態(tài),因此結(jié)合硬 件電路的設(shè)計可得到液晶顯示器的地址分配為: #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; /關(guān)顯示 #define para1 0 x40; /*設(shè)置列地址*/ #define start_line0 0 x0c0; /*開始顯示行為第 0 行*/ #define
43、 page 0 xb8 /設(shè)置頁地址 在顯示數(shù)據(jù)之前一定要進(jìn)行對液晶進(jìn)行判忙工作,只有當(dāng)液晶處于空閑狀態(tài)才能對液晶進(jìn) 行寫入操作,因此在開始對液晶進(jìn)行寫入指令和數(shù)據(jù)之前要先調(diào)用兩個判忙函數(shù),一個是 busym()即對左片判忙,還有一個是 busyr()即對右片進(jìn)行判忙。而且只有當(dāng)液晶是處于空 閑和開狀態(tài)的時候,才能進(jìn)行下一個操作,否則將在此進(jìn)入死循環(huán)中。 其中寫指令函數(shù) pr1(),pr4(),主要功能是設(shè)置液晶顯示器的地址;寫數(shù)據(jù)函數(shù) pr2(), pr5()是在地址設(shè)置后將要顯示的數(shù)據(jù)寫入到液晶顯示器中;寫中文函數(shù) whz()是顯示中文字符, 寫西文函數(shù) wcode()是顯示西文字符。以下
44、給出了 xianshi()函數(shù)具體程序,其它的程序在附錄里 給出,這里就不一一詳述。 /*/ /* 顯示結(jié)果 */ /*/ 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ù)轉(zhuǎn)換為整數(shù),便于顯 示 lie=64+j*7; /要顯示的數(shù)據(jù)的行、列 hang=7-i; if (j=5) /要顯示的數(shù)據(jù)共 5 位,有四位小數(shù) wcode(lie,hang,46); /顯示小數(shù)點(diǎn) lie=lie+5; j-; wcode(lie,hang,last); averagei=averagei/10; /求出下位數(shù)據(jù) 鍵盤模塊 該模塊主要包括中斷函數(shù) int1() interrupt 0 和 keycl()函數(shù)。 為了使該系統(tǒng)更具人性化,在硬件上加入了三個按鍵,相應(yīng)地在軟件上也離不開這個模塊。 這三個按鍵分
46、別用來在:初始界面,參數(shù)測試界面和增加功能的帶寬測試界面之間轉(zhuǎn)換。當(dāng)有 鍵按下,就會產(chǎn)生一個下降沿脈沖從而觸發(fā)中斷的發(fā)生。在中斷函數(shù)中調(diào)用一個延時程序?qū)崿F(xiàn) 消抖,如果確定有按鍵按下則將中斷標(biāo)志變量置 1,即 flag=1;在主程序中,通過對這個標(biāo)志 變量的查詢,來決定是否調(diào)用函數(shù) keycl()。在該函數(shù)中具體實(shí)現(xiàn)不同按鍵要顯示的對應(yīng)界面, 并進(jìn)行不同的操作。如果當(dāng)前按下第一個鍵,則調(diào)用復(fù)位函數(shù) fw(),返回到初始的歡迎界面, 顯示“歡迎使用”這四個字;如果按下的是第二個鍵,在液晶的頂部中間顯示要測試的四個參 數(shù) 、然后調(diào)用參數(shù)測試函數(shù) ad2543()讀取不同通道的數(shù)據(jù),并通過對繼電 io
47、c v io i vd a cmr k 器的控制來讀入相同通道中不同參數(shù)所需要的電壓值,然后調(diào)用 sort()函數(shù)去掉采集的數(shù)據(jù)中 的一個最大值和一個最小值,并將獲得的數(shù)據(jù)轉(zhuǎn)換為真實(shí)的電壓值,調(diào)用函數(shù) jisuan()將數(shù)據(jù)進(jìn) 行平均后再計算參數(shù)結(jié)果,最后調(diào)用函數(shù) xianshi()將處理完的結(jié)果顯示出來;如果按下的是第 三個鍵,則顯示頻帶寬度界面,并調(diào)用函數(shù) highsource()輸出高頻信號,頻率的分辨率為 1khz。該模塊的流程圖如圖 16 所示。 開始 結(jié)束 第一個按鍵 n y 調(diào)用主界面 第二個按鍵 采集 ad2543 中 的數(shù)據(jù)并進(jìn)行分 析和顯示 第三個按鍵 控制 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; /清除按鍵標(biāo)志 if (keyv=0) /當(dāng)按下第一個鍵時 fw(); /顯示主界面即復(fù)位 else if(keyv=1) /當(dāng)按下第二個鍵時 zdcs(); /調(diào)用顯示參數(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); /在每次采集之間調(diào)用延時程序 delay(0 x60); /在要選部通道之間延時 /通過改變繼電器獲得所需的不同電壓 if(i=0) /獲得 vlo 當(dāng) i=0 時 jdq0=1; /當(dāng) i=1 時閉合開關(guān)獲得 vli if (i=1) /輸入時信號源當(dāng) 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(); /去掉一個最大值和一個最小值,并轉(zhuǎn)換為真實(shí)的電壓值 jisuan(); /將數(shù)據(jù)進(jìn)行平均,后再進(jìn)行計算參數(shù)結(jié) 果 xianshi(); /顯示獲得的結(jié)果 else if(keyv=2) highsource(); /輸出高頻信號,頻率的分辨率為 1khz flag=0; /清除按鍵標(biāo)志 其中 jdq0,jdq1:繼電器通斷標(biāo)志變量; falg:按鍵標(biāo)志變量,有鍵按下則為 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ù)應(yīng)該是 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):電源端; 這兩個管腳都是當(dāng)頻率取輸入數(shù)據(jù)的六倍時用的; 7(w_clk):數(shù)字載入
52、端,上升沿有效,由單片機(jī)控制,與p1.5相連; 8(fq_ud):頻率刷新端,上升沿有效,由單片機(jī)控制,與p1.6相連; 9(ref_clk):系統(tǒng)時鐘,是外部輸入,直接用10m晶振產(chǎn)生; 10、19(agnd):模擬信號接地端; 11、18(avdd):模擬信號電源端; 21(iout):輸出口,產(chǎn)生的信號源輸出口,必須接負(fù)載后再接入示波器; 22(reset):復(fù)位端,高電平時復(fù)位,當(dāng)該管腳是低電平時處于正常工作,該管腳由單片機(jī) 控制,與p1.7相連。 ad9851芯片具有輸入數(shù)字信號直接輸出對應(yīng)頻率的正弦波的功能的芯片,有以上的管腳 說明可知,數(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; /頻率變化的步進(jìn)值 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 送時鐘脈沖和刷新脈沖 結(jié)束 n y 送頻率字 改變頻率值 圖 17 高頻輸出模塊圖 轉(zhuǎn)換模塊 該模塊主要包括 ad2543()函數(shù),主要實(shí)現(xiàn)采集通道中的數(shù)據(jù),并將模擬信號轉(zhuǎn)換為數(shù)字信 號。 從測試板輸出的信號仍然是模擬信號,而單片機(jī)只能對數(shù)字信號進(jìn)行處理,因此對于單片 機(jī)而言是不可能識別模擬信號的
56、大小,只能判斷有無電壓的輸入,所以測試板中的信號通過峰 峰值檢測后必須經(jīng)過 a/d 轉(zhuǎn)換才能和單片機(jī)相連,被程序讀入并做相應(yīng)的處理。 轉(zhuǎn)換模塊的程序主要是負(fù)責(zé)讀取來自 tlc2543 的數(shù)據(jù),該芯片有 11 路模擬信號輸入通道 (an0an10),兩個參考電壓輸入端(ref+,ref-)和 5 個控制管腳。其接口電路如圖 6 所示。 它們的功能分別為: an0an10:11 路模擬輸入通道 ref+:正參考電壓,輸入端 ref-:負(fù)參考電壓,輸入端,一般直接接地 ioclk:輸入輸出脈沖,當(dāng)讀輸出數(shù)據(jù)時下降沿有效,當(dāng)輸入地址時,上升沿有效,輸入端 data input:地址選擇端,輸入當(dāng)前要轉(zhuǎn)
57、換的模擬信號的通道號,四位串行輸入,輸入端 data out:12 位數(shù)字串行信號輸出口,輸出端 eoc:輸出結(jié)束標(biāo)志,轉(zhuǎn)換結(jié)束后自動置 1,輸出端 cs:片選信號,低電平有效,輸入口 開始 結(jié)束 位操作方式送通 道數(shù) 位操作方式先讀高 8 位,再讀后 4 位 圖 18 轉(zhuǎn)換模塊的程序流程圖 轉(zhuǎn)換模塊的程序流程如圖 18 所示,其工作原理為:轉(zhuǎn)換輸出電平的量程大小為正負(fù)參考 電壓之差,輸入模擬信號的電壓范圍即為正負(fù)參考電壓的大小,一般 ref+大小要小于或等于 v+;當(dāng)要開始 a/d 轉(zhuǎn)換時,先使該芯片有效,即使/cs 信號端為低電平,連續(xù)輸入四個 ioclk,在 ioclk 的上升沿處在 d
58、ata input 端口輸入要轉(zhuǎn)換的通道地址,高位在前,低位在后, 通道地址的范圍為 0 到 10,并且在 ioclk 的第四個脈沖的下降沿到來時,讀入選擇的通道中的 模擬信號并開始轉(zhuǎn)換;調(diào)用延時函數(shù)作為其轉(zhuǎn)換時間,然后單片機(jī)要給 a/d 芯片的 ioclk 端口 連續(xù) 16 個脈沖,在每個脈沖的下降沿到來時讀取 a/d 中的一位數(shù)據(jù),先讀入的數(shù)據(jù)為高位, 在程序中利用左移功能,將前 12 位數(shù)據(jù)保存在變量 ad 中,后 4 位數(shù)據(jù)為無效數(shù)據(jù)舍去,然 后返回到上級函數(shù)。其實(shí)在該函數(shù)中采用送通道數(shù)和讀數(shù)據(jù)在同一個時刻進(jìn)行,事實(shí)上讀的數(shù) 據(jù)是上次送的通道數(shù)的結(jié)果。因此在主函數(shù)中預(yù)先調(diào)用一次 ad2
59、543()函數(shù)作為預(yù)先送通道數(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ù)中每組的最大值和最小值去掉,并轉(zhuǎn)換為真 實(shí)的電壓值,范圍為電壓為 05v。jisuan()函數(shù)是將去掉最大值和最小值后每組數(shù)據(jù)進(jìn)行平均, 然后再參考
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TR 24935:2025 EN Road vehicles - Software update over the air using mobile cellular network
- 江蘇蘇州昆山部分學(xué)校2023~2024學(xué)年高二下冊綜合能力測評數(shù)學(xué)試題學(xué)生卷
- 植物固醇在健康脂肪攝入中的作用考核試卷
- 印刷設(shè)備操作安全操作規(guī)程實(shí)施效果評估考核試卷
- 民族音樂教學(xué)實(shí)踐考核試卷
- 低溫倉儲生態(tài)設(shè)計理念探索考核試卷
- 仿古瓷器培訓(xùn)課件
- 2025年中國PVC密封膠條數(shù)據(jù)監(jiān)測研究報告
- 2025年中國H型鋼生產(chǎn)設(shè)備數(shù)據(jù)監(jiān)測研究報告
- 2025年中國D-氨基葡萄鹽酸鹽數(shù)據(jù)監(jiān)測報告
- 病理科生物安全培訓(xùn)
- 2025年立普妥行業(yè)深度研究分析報告-20241226-185650
- 家庭教育中的創(chuàng)客教育與孩子創(chuàng)新思維
- 葫蘆絲社團(tuán)活動總結(jié)3篇
- 固體廢棄物課程設(shè)計 垃圾填埋場設(shè)計
- 光伏項目運(yùn)維服務(wù)承包合同5篇
- 流產(chǎn)的中西醫(yī)結(jié)合治療
- 陣發(fā)性室上性心動過速 護(hù)理查房
- 湖南省永州市2023-2024學(xué)年高一下學(xué)期7月期末質(zhì)量監(jiān)測數(shù)學(xué)試卷
- 五育并舉-立德樹人始于行潤品育心成于思
- 安全策略優(yōu)化
評論
0/150
提交評論