欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)分檔RLC測(cè)量?jī)x制作課程設(shè)計(jì)報(bào)告 [打印本頁]

作者: 51黑電子迷    時(shí)間: 2017-7-30 20:26
標(biāo)題: 單片機(jī)分檔RLC測(cè)量?jī)x制作課程設(shè)計(jì)報(bào)告

目錄

一、方案設(shè)計(jì)單片機(jī)源程序如下:

1.1 方案論證與設(shè)計(jì)
1.2 系統(tǒng)原理框圖
1.3 主要電路設(shè)計(jì)與參數(shù)計(jì)算
1.4 總體電路圖
二、測(cè)試步驟
三、測(cè)試數(shù)據(jù)及實(shí)驗(yàn)結(jié)果
四、結(jié)論
4.1 本方案特點(diǎn)及存在的問題
4.2 功能擴(kuò)展
五、學(xué)習(xí)心得
六、本作品使用說明
七、完整電路圖及印制板圖
八、附錄
成員分工
程序
元件清單


一、方案設(shè)計(jì)1.1 方案論證與設(shè)計(jì)
基于單片機(jī)的RLC檢測(cè)儀,是指以單片機(jī)為核心,實(shí)現(xiàn)對(duì)電阻、電感和電容的值的測(cè)量。測(cè)量阻抗參數(shù)最常用的方法有伏安法、電橋法和諧振法。
伏安法又稱為電壓電流法,該方法是利用電壓表和電流表分別測(cè)出元件的電壓值和電流值,從而計(jì)算出元器件的值。該方法一般只能用于頻率較低的情況,而且還需要把電阻器、電容器和電感器看成是理想的元器件。可想而知,這樣的測(cè)量方法,誤差肯定比較大,而且測(cè)量也不方便,受到的限制比較多,但是,也有它的好處,那就是使用比較簡(jiǎn)單。
電橋法是利用電橋平衡的原理。電橋平衡的條件是:一對(duì)相對(duì)橋臂阻抗的乘積必須等于另一對(duì)相對(duì)橋臂阻抗的乘積。直流電橋法用于精確地測(cè)量電阻的阻值,但是要適當(dāng)?shù)倪x擇比率臂的倍率和標(biāo)準(zhǔn)電阻的阻值;比較電橋測(cè)量電容或電感,就是通過與已知電容或電感比較來測(cè)定未知電容或電感,但是相鄰兩臂要采用純電阻。此種測(cè)量方法,精度比較高,使用不同電橋可得到寬頻率范圍,價(jià)格低,但需要手動(dòng)平衡,測(cè)試速度比較慢。
諧振法是利用LC串聯(lián)電路和并聯(lián)電路的諧振特性來進(jìn)行測(cè)量的方法。當(dāng)外加信號(hào)源的角頻率等于回路的固有角頻率時(shí),LC串聯(lián)或并聯(lián)諧振電路發(fā)生諧振,可以求出電感和電容的值。利用這種方法,前提是需要把電路調(diào)到諧振,而且精度不高,但是可一測(cè)得很高的Q值。
測(cè)量這些參量的方法有很多經(jīng)典的方法,現(xiàn)在比較容易的一個(gè)方法就是阻抗的數(shù)字化測(cè)量。數(shù)字化測(cè)量是將測(cè)量的模擬量轉(zhuǎn)化為數(shù)字量,我們的設(shè)計(jì)最基本的思路就是RLC的數(shù)字化測(cè)量,可以把它們轉(zhuǎn)換為電壓、電流及頻率等。在我們小組的設(shè)計(jì)中,被測(cè)電阻、電容、電感作為諧振電路的一部分,用單片機(jī)測(cè)得電路發(fā)出的矩形波的頻率,然后根據(jù)公式計(jì)算出電阻、電感和電容。運(yùn)用的方法就是諧振法。而我們小組選擇的測(cè)量電路,是用555定時(shí)器組成的基本振蕩電路來測(cè)量電阻和電容,三點(diǎn)式振蕩電路構(gòu)成的LC諧振電路來測(cè)量電感。
1.2 系統(tǒng)原理框圖
圖1-2 系統(tǒng)原理框圖
測(cè)量電阻和電容,是以555芯片為核心,外加幾個(gè)電阻、電容組成RC振蕩電路,利用電容的充放電過程,使這個(gè)電路輸出高低矩形波,我們就是利用這一點(diǎn),使電阻和電容的參數(shù)值數(shù)字化的。測(cè)電感的時(shí)候,由于555沒有電路可以測(cè)電感,所以我們就選擇了三點(diǎn)式振蕩電路,它利用電容電感的三點(diǎn)式接法,就可以構(gòu)成LC振蕩電路。諧振時(shí),電路輸出矩形波。波形產(chǎn)生了,就把矩形波信號(hào)送給單片機(jī),通過單片機(jī)的定時(shí)/計(jì)數(shù)端測(cè)量出矩形波的頻率,這樣就把阻抗轉(zhuǎn)換為頻率了,再通過公式就可以計(jì)算出阻抗的參數(shù)值了。
這個(gè)測(cè)量方法是目前比較好的一個(gè)選擇了,首先,數(shù)字化測(cè)量的準(zhǔn)確度高,測(cè)量速度快,又是數(shù)字顯示,簡(jiǎn)單明了;其次,把阻抗轉(zhuǎn)換為頻率,頻率相對(duì)來說,是一個(gè)比較容易測(cè)量出的量,尤其在單片機(jī)里,這一點(diǎn)就使整個(gè)設(shè)計(jì)輕松了不少;再者,選用的兩個(gè)芯片555和三點(diǎn)式振蕩電路,所用的測(cè)量電路都是它們最基本的電路,電路圖比較簡(jiǎn)單,也很容易理解,測(cè)量范圍也很廣,還有最重要的一點(diǎn)是,電路比較穩(wěn)定,受外界影響比較小,都可以穩(wěn)定的輸出矩形波。總的來說,這個(gè)測(cè)量方法幾乎集合了其他測(cè)量方法的所用優(yōu)點(diǎn),是一個(gè)比較好方法。
1.3 主要電路設(shè)計(jì)與參數(shù)計(jì)算
電阻的測(cè)量采用“脈沖計(jì)數(shù)法”,如圖1-3-1所示,由555電路構(gòu)成,多諧振蕩電路,通過計(jì)算振蕩輸出的頻率來計(jì)算被測(cè)電阻的大小。

圖1-3-1 電阻測(cè)量模塊
555接成多諧振蕩器的形式131,其振蕩周期為:
                                                                  (式1-3-1)

(式1-3-2)

電路分為3檔:
電容的測(cè)量同樣采用“脈沖計(jì)數(shù)法”,如圖1-3-2所示,由555電路構(gòu)成多諧振蕩電路,通過計(jì)算振蕩輸出的頻率來計(jì)算被測(cè)電容的大小。
測(cè)量范圍:中檔100pF~5000pF,高檔5000pF~0.15Uf。
圖1-3-2 電容測(cè)量模塊
555接成多諧振蕩器的形式,其振蕩周期為:
                                                          (式1-3-3)
                                                          (式1-3-4)
電感測(cè)量電路如圖1-3-3所示,電感的測(cè)量是采用電容三點(diǎn)式振蕩電路來實(shí)現(xiàn)的。三點(diǎn)式電路是指:LC回路中與發(fā)射極相連的兩個(gè)電抗元件必須是同性質(zhì)的,另外一個(gè)電抗元件必須為異性質(zhì)的,而與發(fā)射極相連的兩個(gè)電抗元件同為電容時(shí)的三點(diǎn)式電路,成為電容三點(diǎn)式電路。有:
                                                                 (式1-3-5)
                                                                 (式1-3-6)

測(cè)量范圍:1mH~1000mH。
圖1-3-3 電感測(cè)量模塊
1.4 總體電路圖
圖1-4-1 總體電路原理圖
圖1-4-2 總體電路原理圖
二、測(cè)試步驟
在測(cè)試過程中,我們使用proteus仿真軟件搭建電路,將用keil軟件生成的程序hex文件導(dǎo)入單片機(jī),對(duì)所設(shè)計(jì)的RLC進(jìn)行了功能測(cè)試。仿真電路如圖2所示:
圖2 proteus仿真電路圖
三、測(cè)試數(shù)據(jù)及實(shí)驗(yàn)結(jié)果
    對(duì)低檔電阻50Ω仿真測(cè)試結(jié)果如圖3-1所示:
圖3-1  50Ω電阻仿真測(cè)試結(jié)果圖
對(duì)中檔電阻5kΩ仿真測(cè)試結(jié)果如圖3-2所示:
圖3-2  5kΩ電阻仿真測(cè)試結(jié)果圖
對(duì)高檔電阻500kΩ仿真測(cè)試結(jié)果如圖3-3所示:
圖3-3  500kΩ電阻仿真測(cè)試結(jié)果圖
對(duì)中檔電容2000pF仿真測(cè)試結(jié)果如圖3-4所示:
圖3-4  2000pF電容仿真測(cè)試結(jié)果圖
對(duì)高檔電容0.1uF仿真測(cè)試結(jié)果如圖3-5所示:
圖3-5  0.1uF電容仿真測(cè)試結(jié)果圖
對(duì)電感800mH仿真測(cè)試結(jié)果如圖3-6所示:
圖3-6 800mH電感仿真測(cè)試結(jié)果圖
仿真測(cè)試數(shù)據(jù)分析表如下:
表3-1  測(cè)試數(shù)據(jù)分析表
元件種類
檔位
元件原值
元件測(cè)量值
絕對(duì)誤差
相對(duì)誤差(%)
電阻
低檔
10Ω
10Ω
0
0.000
20Ω
20Ω
0
0.000
50Ω
50Ω
0
0.000
80Ω
80Ω
0
0.000
中檔
200Ω
196Ω
4
2.000
1kΩ
987Ω
13
1.300
5kΩ
4955Ω
45
0.900
8kΩ
7936Ω
64
0.800
高檔
20kΩ
19954Ω
46
0.230
100kΩ
99848Ω
152
0.152
500kΩ
500247Ω
247
0.049
900kΩ
900333Ω
333
0.037
電容
中檔
500pF
533pF
33
6.600
1000pF
1038pF
38
3.800
2000pF
2054pF
54
2.700
5000pF
5051pF
51
1.020
高檔
0.01uF
10020pF
20
0.200
0.05uF
50104pF
104
0.208
0.1uF
100208pF
208
0.208
0.15uF
160333pF
10333
6.889
電感
/
500mH
594mH
94
18.800
800mH
817mH
17
2.125
1000mH
900mH
100
10.000
四、結(jié)論
4.1 本方案特點(diǎn)及存在的問題
我們小組選取的該測(cè)量方法是比較好的一個(gè)選擇,首先,數(shù)字化測(cè)量的準(zhǔn)確度高,測(cè)量速度快,又是數(shù)字顯示,簡(jiǎn)單明了;其次,把阻抗轉(zhuǎn)換為頻率,頻率相對(duì)來說,是一個(gè)比較容易測(cè)量出的量,尤其在單片機(jī)里,這一點(diǎn)就使整個(gè)設(shè)計(jì)輕松了不少;再者,選用的兩個(gè)芯片555和三點(diǎn)式振蕩電路,所用的測(cè)量電路都是它們最基本的電路,電路圖比較簡(jiǎn)單,也很容易理解,測(cè)量范圍也很廣,還有最重要的一點(diǎn)是,電路比較穩(wěn)定,受外界影響比較小,都可以穩(wěn)定的輸出矩形波。總的來說,這個(gè)測(cè)量方法幾乎集合了其他測(cè)量方法的所用優(yōu)點(diǎn),是一個(gè)比較好的方法。
但本方案仍在存在部分問題:
從表3-1表格可以看出,測(cè)量時(shí)部分電容值時(shí)誤差較大。測(cè)量電阻和電容時(shí),電路是由555芯片和外接的電阻電容組成的。555是根據(jù)電源的精度和外圍阻容元件的精度來決定輸出頻率精度的,如果外圍精度很高且溫度變化不大,那么555的精度是足夠的,但是以目前的情況來看,部分電容值有5%以上的偏差,這就直接導(dǎo)致了測(cè)量電路的精確性不是很好,所以就造成了現(xiàn)在上面這種狀況。其實(shí)555定時(shí)器還有一個(gè)很大的缺點(diǎn),那就是不能產(chǎn)生頻率很低的信號(hào),所以我們的測(cè)量范圍比較小,這和555本身的內(nèi)部結(jié)構(gòu)有關(guān),這里就不討論了。
還有一點(diǎn)就是,我們的測(cè)量電路必須要保證起振,并且振蕩電路要穩(wěn)定,否則也會(huì)增加誤差,這也是把元件參數(shù)轉(zhuǎn)換成頻率后測(cè)量的方法的一個(gè)不足之處。可以根據(jù)實(shí)際電路中的電阻或電容,多測(cè)一些數(shù)據(jù),并求這些數(shù)據(jù)的平均誤差,再把這個(gè)誤差加到程序中,那么再測(cè)數(shù)據(jù),誤差就會(huì)小很多,這樣就做了誤差的修正。
4.2 功能擴(kuò)展
    除了我們?cè)须娐纺軌驅(qū)崿F(xiàn)的功能以外,我們希望還能夠?qū)崿F(xiàn)電感分組測(cè)量的功能,修改程序中的計(jì)算參數(shù),使得降低對(duì)較高和較低電感值測(cè)量時(shí)的誤差。
五、學(xué)習(xí)心得
在這一次課程設(shè)計(jì)的暑期實(shí)習(xí)過程中,我們的小組成員收獲良多。從最開始的龍文杰老師和易安林老師的電子工藝基礎(chǔ)課程,到焊接練習(xí)、PCB圖繪制練習(xí),我們一步一步掌握了相應(yīng)的技巧,為之后的課程設(shè)計(jì)實(shí)習(xí)打下了基礎(chǔ)。
我們的課程設(shè)計(jì)內(nèi)容是RLC測(cè)量?jī)x,在這次課程設(shè)計(jì)的過程中,硬件方面,從在電腦上制作原理圖、印刷版圖、仿真,到實(shí)物的焊接、調(diào)試,在此過程中每個(gè)環(huán)節(jié)都遇到了許多大大小小的問題。原理圖的繪制時(shí),由于原來的原理圖庫的元件不全,我們又下載了很多原理圖庫,在封裝時(shí),首先調(diào)整線寬、孔環(huán)大小、焊盤大小等規(guī)則大小,再根據(jù)老師規(guī)定的設(shè)計(jì)規(guī)則一個(gè)個(gè)來調(diào)整元件的封裝,此過程需要極大的耐心及足夠的細(xì)心。在proteus仿真的過程中,我們一步一步地檢查電路的問題及程序的問題。我們也經(jīng)歷過煩躁的時(shí)期,但都一一克服,耐心地解決所遇到的每一個(gè)bug。印刷了板子后,我們將它腐蝕、刮銅、刷松香,并仔細(xì)地對(duì)照原理圖焊接每一個(gè)元件。之后就迎來了無比艱難的調(diào)試環(huán)節(jié),我們接通電源后發(fā)現(xiàn)顯示屏并沒有顯示,但我們并沒有氣餒,而是拿著萬用表,一個(gè)一個(gè)模塊地測(cè)量,測(cè)量各個(gè)引腳之間的電阻、電壓,并且記下電壓降,與仿真環(huán)節(jié)中的值相比較,之后再一點(diǎn)點(diǎn)調(diào)整電路,將模塊輸出的方波波形調(diào)了出來。顯示屏顯示出實(shí)數(shù)的那一瞬間,成就感油然而生。
這次課程設(shè)計(jì)既鍛煉了我們收集整理資料、設(shè)計(jì)電路圖的能力,又考驗(yàn)了我們繪制PCB圖時(shí)需要的耐心與細(xì)心,也在隨之而來的焊接過程中鍛煉了我們的動(dòng)手能力。在這次實(shí)習(xí)中,我們真正做到了從無到有,從理論到實(shí)踐,這并不是一個(gè)容易的過程,期間困難無數(shù),但我們堅(jiān)持初衷,所有小組成員團(tuán)結(jié)協(xié)作、全力以赴,終于把電路調(diào)試成功。
在此,我們要感謝我們的指導(dǎo)老師,我們組設(shè)計(jì)的電路當(dāng)中的參數(shù)十分復(fù)雜,需要各種各樣值的電容和電阻,老師非常耐心地幫我們收集元件,還領(lǐng)我們到庫房尋找需要的元件。在之后的電路調(diào)試過程中,她也仔細(xì)地查看了我們的電路板,并給我們指出問題,我們才能夠更加精確地對(duì)板子進(jìn)行修復(fù)。在這次課程設(shè)計(jì)過程中,同學(xué)們互幫互助,共同研究學(xué)習(xí),在大家的幫助下,我們才能使該RLC測(cè)量?jī)x工作更加精確,功能更加完善。
六、本作品使用說明
這是一個(gè)分檔RLC測(cè)量?jī)x。本系統(tǒng)在調(diào)試方面經(jīng)過長(zhǎng)時(shí)間的測(cè)試操作,穩(wěn)定性能得到了認(rèn)可。同時(shí)此系統(tǒng)通過軟件設(shè)計(jì),減少誤差的存在,并采用標(biāo)準(zhǔn)的電阻、電容器和電感進(jìn)行校準(zhǔn),大大提高了系統(tǒng)的精度。該設(shè)計(jì)采用555震蕩和LC三點(diǎn)式振蕩來實(shí)現(xiàn)對(duì)參數(shù)R,L,C的測(cè)量的方法,滿足總體設(shè)計(jì)的技術(shù)指標(biāo)與功能要求,具有較好的應(yīng)用價(jià)值。
使用方法:
圖6 RLC測(cè)量?jī)x使用說明圖
七、完整電路圖及印制板圖
圖7-1 完整電路原理圖
圖7-2 完整電路PCB圖
圖7-3 印刷板圖
圖7-4 課程設(shè)計(jì)作品正面圖
圖7-4 課程設(shè)計(jì)作品背面圖
以下是RLC測(cè)量?jī)x對(duì)部分電阻、電容、電感的測(cè)量結(jié)果圖:
圖7-5 2kΩ電阻測(cè)量結(jié)果圖
圖7-6 5kΩ電阻測(cè)量結(jié)果圖
圖7-7 33kΩ電阻測(cè)量結(jié)果圖
圖7-8 100kΩ電阻測(cè)量結(jié)果圖
圖7-9 200kΩ電阻測(cè)量結(jié)果圖
圖7-10 330pF電容測(cè)量結(jié)果圖
圖7-11 102電容測(cè)量結(jié)果圖
圖7-12 103電容測(cè)量結(jié)果圖
圖7-13 104電容測(cè)量結(jié)果圖
圖7-14  9.4mH電感測(cè)量結(jié)果圖
圖7-15  14.1mH電感測(cè)量結(jié)果圖
RLC測(cè)量?jī)x測(cè)量數(shù)據(jù)分析表如下:
表7-1 測(cè)量數(shù)據(jù)分析表
元件種類
檔位
元件原值
萬用表測(cè)量值
RLC測(cè)量?jī)x測(cè)量值
相對(duì)誤差(%)
電阻
中檔
2kΩ
1984Ω
1930Ω
2.70
5kΩ
5070Ω
5078Ω
0.16
高檔
33kΩ
32880Ω
32910Ω
0.09
100kΩ
100500Ω
99574Ω
0.92
200kΩ
200400Ω
198133Ω
1.13
電容
中檔
330pF
/
323 pF
2.10
1000pF
1059pF
5.90
高檔
10000pF
/
9816pF
1.84
100000pF
100208pF
0.21
電感
/
9.4mH
/
9mH
4.20
14.1mH
13mH
7.80

元件清單
元件
數(shù)量
STC89C51芯片
1
74HC132芯片
1
555觸發(fā)器
2
LCD1602顯示器
1
6腳開關(guān)
17
4腳開關(guān)
1
單刀雙擲開關(guān)
2
電位計(jì)
2
12MHz晶振
1
NPN管
1
排阻
1
50Ω電阻
1
330Ω電阻
1
1kΩ電阻
1
10kΩ電阻
3
20kΩ電阻
4
21kΩ電阻
1
100kΩ電阻
1
3.3nF電容
1
1nF電容
1
0.1uF電容
4
30pF電容
2
0.22uF電容
1
0.47uF電容
1
管座
若干

八、附錄程序

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. sbit RS=P2^6;
  6. sbit RW=P2^5;
  7. sbit E=P2^7;
  8. sbit R=P1^0;
  9. sbit C=P1^1;
  10. sbit L=P1^2;
  11. sbit A1=P1^3;
  12. sbit A0=P1^4;
  13. sbit Low=P1^5;
  14. sbit Mid=P1^6;
  15. sbit High=P1^7;

  16. #define LCD_data  P0                                                                     
  17. uchar   code  table1[10]={"R=      R"};
  18. uchar   code  table2[10]={"C=      pF"};
  19. uchar   code  table3[10]={"L=      mH"};

  20. uchar code f_table[88]={13,14,15,16,17,              18,              19,              20,              21,              22,              23,              24,              25,              26,              27,              28,              29,              30,              31,              32,              33,              34,              35,              36,              37,              38,              39,              40,              41,              42,              43,              44,              45,              46,              47,              48,              49,              50,              51,              52,              53,              54,              55,              56,              57,              58,              59,              60,              61,              62,              63,              64,              65,              66,              67,              68,              69,              70,              71,              72,              73,              74,              75,              76,              77,              78,              79,              80,              81,              82,              83,              84,              85,              86,              87,              88,              89,              90,              91,              92,              93,              94,              95,              96,              97,              98,              99,              100};
  21. uchar code f_correct[88]={9,10,              11,              12,              12,              12,              13,              14,              15,              16,              17,              18,              18,              18,              19,              20,              21,              21,              22,              23,              24,              25,              25,              26,              26,              27,              28,              29,              29,              30,              30,              31,              32,              33,              33,              34,              35,              35,              36,              37,              38,              38,              39,              40,              41,              41,              42,              42,              43,              44,              45,              45,              46,              47,              48,              49,              49,              50,              51,              51,              52,              53,              54,              54,              55,              55,              56,              57,              57,              58,              59,              60,              60,              62,              62,              63,              64,              64,              65,              66,              66,              67,              67,              68,              69,              70,              71,              71,};

  22. uchar a7,a6,a5,a4,a3,a2,a1;
  23. uchar flag;
  24. unsigned long cnt,cnt1;
  25. uchar f_cnt;


  26. /********************************/

  27. void delay_us(); //18us
  28. void delay_ms(uint);
  29. void lcd_init();
  30. void lcd_write_com(uchar com);
  31. void lcd_write_dat(uchar dat);
  32. void lcd_init();
  33. void lcd_display(uchar add,uchar dat);
  34. /***********************************/

  35. void delay_us()
  36. {
  37.               uchar x;
  38.               for(x=0;x<5;x++);
  39. }

  40. void delay_ms(uint z)
  41. {
  42.               uint x,y;
  43.               for(x=0;x<z;x++)
  44.                             for(y=0;y<123;y++);
  45. }
  46. void lcd_write_com(uchar com)
  47. {
  48.   E=0;
  49.   RS=0;
  50.   RW=0;
  51.   delay_us();
  52.   LCD_data=com;
  53.   E=1;                 //高脈沖寫入數(shù)據(jù)
  54.   delay_us();
  55.   E=0;
  56. }
  57. void lcd_write_dat(uchar dat)
  58. {
  59.   E=0;
  60.   RS=1;
  61.   RW=0;
  62.   delay_us();
  63.   LCD_data=dat;
  64.   E=1;                 //高脈沖寫入數(shù)據(jù)
  65.   delay_us();
  66.   E=0;
  67. }
  68. void lcd_init()                              //lcd初始化
  69. {
  70.               delay_ms(15);
  71.               lcd_write_com(0x38);
  72.               delay_ms(10);
  73.               lcd_write_com(0x0c);
  74.               lcd_write_com(0x06);
  75.               lcd_write_com(0x01);
  76.               delay_ms(2);
  77.             
  78.             
  79. }
  80. void timer_init(void)  //定時(shí)器初始化
  81. {
  82.               TMOD=0X51;
  83.         PT0=1;     /*中斷優(yōu)先*/
  84.               TH0=0x3c;
  85.               TL0=0xb0;
  86.               TH1=0;
  87.               TL1=0;
  88.               ET0=1;
  89.               ET1=1;
  90.               TR0=1;
  91.               TR1=1;
  92.               EA=1;            
  93. }
  94. void lcd_display(uchar add,uchar dat)                 //lcd顯示(地址,數(shù)據(jù))
  95. {

  96.               lcd_write_com(add);
  97.             
  98.               lcd_write_dat(dat);
  99.               delay_us();

  100. }
  101. void real_display(void)
  102. {
  103.             if(!R)
  104.                                           {
  105.                                           A1=A0=0;            
  106.                               lcd_display(0x80,table1[0]);
  107.                                           lcd_display(0x80+1,table1[1]);
  108.                                           lcd_display(0x80+8,table1[8]);
  109.                                           lcd_display(0x80+9,table1[9]);
  110.                                             }
  111.                                           else if(!C)
  112.                                           {
  113.                                           A0=0;A1=1;
  114.                                           lcd_display(0x80,table2[0]);
  115.                                           lcd_display(0x80+1,table2[1]);
  116.                                           lcd_display(0x80+8,table2[8]);
  117.                                           lcd_display(0x80+9,table2[9]);
  118.                                           }
  119.                                           else if(!L)
  120.                                           {
  121.                                           A0=1;A1=0;
  122.                                           lcd_display(0x80,table3[0]);
  123.                                           lcd_display(0x80+1,table3[1]);
  124.                                           lcd_display(0x80+8,table3[8]);
  125.                                           lcd_display(0x80+9,table3[9]);
  126.                                           }
  127.                                           if(a6)
  128.                                             lcd_display(0x80+2,0x30+a6);
  129.                                           else
  130.                                           lcd_display(0x80+2,' ');


  131.                                           if(a6||a5)
  132.                                           lcd_display(0x80+3,0x30+a5);
  133.                                           else
  134.                                                         lcd_display(0x80+3,' ');


  135.                                           if(a6||a5||a4)
  136.                                           lcd_display(0x80+4,0x30+a4);            
  137.                                           else
  138.                                lcd_display(0x80+4,' ');


  139.                                           if(a6||a5||a4||a3)
  140.                                           lcd_display(0x80+5,0x30+a3);            
  141.                                           else
  142.                                 lcd_display(0x80+5,' ');


  143.                                           if(a6||a5||a4||a3||a2)
  144.                                           lcd_display(0x80+6,0x30+a2);
  145.                                           else
  146.                                           lcd_display(0x80+6,' ');

  147.                                          
  148.                                           lcd_display(0x80+7,0x30+a1);
  149.                            

  150. }

  151. void correct(void)                                          //誤差修正函數(shù)
  152. {
  153.               uchar i,k;
  154.               unsigned long wucha;
  155.               if(cnt<100000)                               //100KHz以內(nèi)的修正
  156.               {
  157.                             if(cnt>980&&cnt<2100)     cnt-=1;
  158.                             if(cnt>=2100&&cnt<3900)   cnt-=2;
  159.                             if(cnt>=3900&&cnt<4800)   cnt-=3;
  160.                             if(cnt>=4800&&cnt<5700)   cnt-=4;
  161.                             if(cnt>=5700&&cnt<8000)   cnt-=5;
  162.                             if(cnt>=8000&&cnt<9100)                cnt-=6;
  163.                             if(cnt>=9100&&cnt<10900)  cnt-=7;
  164.                             if(cnt>=10900&&cnt<11900) cnt-=8;
  165.                             if(cnt>=11900&&cnt<13000) cnt-=9;
  166.                             if(cnt>=13000&&cnt<=100000)
  167.                             {
  168.                                           k=cnt/1000;
  169.                                           for(i=0;i<88;i++)
  170.                                           {
  171.                                                         if(k==f_table[i])
  172.                                                         {
  173.                                                                       cnt-=f_correct[i];
  174.                                                         }
  175.                                           }
  176.                             }
  177.                            
  178.                            
  179.               }
  180.               if(cnt>100000)            
  181.               {
  182.                             wucha=(cnt/1000)*73065/100000;
  183.                             cnt-=wucha;
  184.               }
  185. }

  186. void main()
  187. {

  188.               timer_init();
  189.               lcd_init();
  190.               while(1)
  191.               {                           
  192.                                if(flag==1)
  193.                                {
  194.                                           real_display();
  195.                                           flag=0;
  196.                                           }
  197.                            
  198.             
  199.               }
  200.             
  201. }


  202. void timer0() interrupt 1
  203. {
  204.               uchar timer0;
  205.             
  206.               TH0=0x3c;                //50ms
  207.               TL0=0xb0;
  208.               timer0++;
  209.               if(timer0==20)
  210.               {
  211.                             TR1=0;                //關(guān)閉的計(jì)數(shù)器
  212.                             EA=0;
  213.                             cnt=TL1+TH1*256+f_cnt*65536;
  214.                             correct();
  215.                             if(!R)
  216.                             {
  217.                             if(High&&Mid&&!Low){cnt1=(2.6*1000000)/(2*cnt)-25;}
  218.                   else if(High&&!Mid&&Low){cnt1=((6.4*1000000)/(2*cnt)-16)/3*4-200;}
  219.                             else if(!High&&Mid&&Low){cnt1=((4.372*100000000)/(2*cnt)-(2.1*10000/2))/19*20;}
  220.                             }                           
  221.                             else if(!C)
  222.                             {                                                                                                      
  223.                   if(High&&!Mid&&Low){cnt1=(1000000000/(3*0.693*20*cnt))/5*4;}
  224.                             else if(!High&&Mid&&Low){cnt1=1000000000/(3*0.693*200*cnt);}                           
  225.                             }
  226.                            
  227. ……………………

  228. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

完整論文下載(word格式 可編輯):
http://www.raoushi.com/bbs/dpj-90086-1.html






作者: uuu1    時(shí)間: 2018-1-5 16:59
請(qǐng)問有壓縮包嘛,包括原理圖跟仿真圖還有程序
作者: uuu1    時(shí)間: 2018-1-11 17:02
請(qǐng)問能不能給一下在仿真過程時(shí)按鍵是怎么連接的
作者: uuu1    時(shí)間: 2018-1-11 17:02

請(qǐng)問有壓縮包嘛,包括原理圖跟仿真圖還有程序
作者: baymax999    時(shí)間: 2018-7-26 14:42
請(qǐng)問有壓縮包嘛,包括原理圖跟仿真圖還有程序
作者: 捱三頂五    時(shí)間: 2019-2-8 16:28
我想問一個(gè)問題,就是這個(gè)RLC測(cè)試儀可以加DS1302時(shí)間顯示功能嗎?
我修改了代碼發(fā)現(xiàn)時(shí)間能走就是走得特別慢
作者: GTT2    時(shí)間: 2019-4-29 14:14
UP主如果能給HEX文件就好了。。

作者: aaaaaa。    時(shí)間: 2019-8-7 21:37
請(qǐng)問有壓縮包嘛,包括原理圖跟仿真圖還有程序




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1