久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3305|回復: 0
收起左側

可語音播報的單片機電阻、電容、電感測試儀設計論文

[復制鏈接]
ID:329828 發表于 2018-5-14 19:19 | 顯示全部樓層 |閱讀模式
摘要

在使用電子元器件時,首先需要了解參數。采用傳統的儀表進行測量時,首先要從電路板上焊開器件,再根據元件的類型,手動選擇量程擋位進行測量,這樣不僅麻煩而且破壞了電路板的美觀。基于單片機控制實現的RLC測量儀可以在線測量、智能識別、量程自動轉換等多種功能,大大提高測量儀的測量速度和精度,擴大了測量范圍。因此這種RLC測量儀既可改善系統測量的性能,又保持了印刷電路的美觀,較傳統的測量儀還具有高度的智能儀和功能的集成化,在未來的應用中將具有廣闊的前景。
本課題主要研究內容為設計一個基于單片機的RLC智能測量儀器,能夠智能地識別出待測元件是電容、電感還是電阻;能精確測量出電阻、電容、電感的參數值,同時還能加入語音播報的功能;可以實現量程電阻的自動轉換,無須人工選擇檔位;對測量儀進行擴充后還實現了二極管、三極管的測量。

目錄
引言
1  硬件電路
1.1 設計要求
1.2 電路方框圖及說明
1.3 各部分電路設計
1.3.1 電阻測量電路
1.3.2 電容測量電路
1.3.3 電感測量電路
1.3.4 多路選擇開關電路
1.3.5 按鍵及顯示電路
1.3.6 單片機模塊
1.3.7 量程選擇模塊
1.3.8 電源模塊
2  軟件部分
2.1 主程序流程圖
2.2 程序清單
3  相關元器件
3.1 元件清單
3.2 AT89S52資料
3.3 ICM7218資料
3.4 74LS390資料
3.5 CD4052資料
3.6 NE555資料
3.7 共陽4位LED數碼管資料
3.8 三極管相關資料
3.9 三端穩壓管LM7805資料
3.10 繼電器資料
4  調試總結
5  結論
謝  辭
參考文獻
附  錄

                         桂林電子科技大學畢業設計(論文)報告用紙                   第 1 頁 共 47 頁
引言
測量電子元器件集中參數R、C、L的儀表種類較多,方法也各有不同,但都有其優缺點。一般的測量方法都存在計算復雜、不易實現自動測量而且很難實現智能化。本測試儀是把電子元件的參數R、C、L轉換成頻率信號f,然后用單片機計數后在運算求出R、C、L,并送顯示,轉換原理分別是RC振蕩和LC三點式振蕩,這樣就能夠把模擬量近似的轉換位數字量,而頻率f是單片機很容易處理的數字量,這種數字化的處理一方面便于使儀表實現智能化。

1  硬件電路
1.1 設計要求
設計并制作一臺數字顯示的電阻、電容和電感參數測試儀,具體要求數據如下:
(1)測量范圍:電阻100~1M;電容100PF~10000PF;電感100UH~10mH。
(2)測量精度:5%;制作4位數碼管顯示器,顯示測量數值,并用發光二極管分別知識所測元件的類型和單位。
(3)加入語音播報功能:如測量結果為6.8K歐姆則語音播報“六點八K歐姆”;如電阻小于100歐姆則語音播報“電阻小于100歐姆”。
1.2 電路方框圖及說明
系統分三大部分,既測量電路、通道選擇和控制電路。如圖1.2.1。
圖1.2.1 RLC測量儀電路方框圖
1.3 各部分電路設計
1.3.1 電阻測量電路
    電阻的測量采用“脈沖計數法”,如圖1.3.1所示由555電路構成的多諧振蕩電路,通過計算振蕩輸出的頻率來計算被測電阻的大小。
555接成多諧振蕩器的形式,其振蕩周期為:
T=t1+t2=(ln2)(R1+Rx)*C1+(ln2)Rx*C1
得到:Fx=1/[(ln2)(R2+2Rx)C1]即:Rx=[1/(ln2)C1-R1]/2
電路分為2檔: RH設置為高電平輸出,RL設為低電平輸出;
1、 100≤Rx<1000歐姆:
R3=200歐姆;C14=0.22uF;
Rx=(6.56*(1e+6))/(2*fx)-330/2
對應的頻率范圍為:2.8K≤fx <16K
2、 1000≤Rx<1M歐姆:
R2=20k歐姆;C1=103PF;
Rx =(1.443*(1e+8))/(2*fx)-(1e+4)
對應的頻率范圍為:141Hz≤fx<6.8K
圖1.3.1 電阻測量電路
1.3.2 電容測量電路
    電容的測量同樣采用“脈沖計數法”,如圖1.3.2所示由555電路構成的多諧振蕩電路,通過計算振蕩輸出的頻率來計算被測電容的大小。555接成多諧振蕩器的形式,其振蕩周期為:
T=t1+t2=(ln2)(R1+R2)*Cx+(ln2)R2*Cx
我們設置R1=R2;
得到:Fx=1/[3(ln2)R1*Cx]即:Cx=1/[3(ln2)R1*Fx]
電路分為2檔:
1、 R1=560K歐姆:CL設置為高電平輸出;
R4=R6;
   Cx= (0.94*(1e+6))/ fx;
對應的頻率范圍為:9.4K≤fx <0.94K。
2、 R1=100K歐姆: CH設置為高電平輸出;
R5=R6;
Cx =(4.81*(1e+6))/ fx;
對應的頻率范圍為:480Hz≤fx <4.8K。
圖1.3.2 電容測量電路
1.3.3 電感測量電路
    電感的測量是采用電容三點式振蕩電路來實現的。三點式電路是指:LC回路中與發射極相連的兩個電抗元件必須是同性質的,另外一個電抗元件必須為異性質的,而與發射極相連的兩個電抗元件同為電容時的三點式電路,成為電容三點式電路。
    Fx=1/(2π)即:Lx=1/( 4π*π*Fx*Fx)
Lx=[38*(1e+6)]/
圖1.3.3 電感測量電路
1.3.4 多路選擇開關電路
利用CD4052實現測量類別的轉換,CD4052是雙4選一的模擬開關選擇器件。當選擇了某一通道的頻率后,輸出頻率通過通過P35作為CPU定時器的時鐘源并開始計數,當計數到3秒后讀出計數器的值,除以3就得到了被測R/C/L所對應產生的頻率,通過計算得到要被測值。

P13
P14
測量類別
0
0
Y0-R
0
1
Y1-L
1
0
Y2-C
1
1
*

圖1.3.4 多路選擇開關電路
1.3.5 按鍵及顯示電路
    按鍵和二極管分別表示不同類別的測量,如下表所示:
按鍵
二極管
對應測試項
KEY1
L1
測試R
KEY2
L2
測試C
KEY3
L3
測試L

圖1.3.5.1 測量選擇與指示電路
圖1.3.5.2 顯示模塊1
計數結果需要顯示出來供人們讀數, 74LS390能驅動七段數碼管以十進制數顯示出來記數結果,如圖:
圖1.3.5.3 顯示模塊2
1.3.6 單片機模塊
單片機系統連接如圖1.3.6所示:
圖1.3.6 單片機模塊
1.3.7 量程選擇模塊
包括電阻量程選擇模塊和電容量程選擇模塊,如圖1.3.7.1和1.3.7.2所示:
圖1.3.7.1電阻量程選擇模塊
圖1.3.7.2 電容量程選擇模塊
1.3.8 電源模塊
    電源模塊如圖1.3.8所示:
圖1.3.8 電源模塊
2  軟件部分
2.1 主程序流程圖
如圖2.1所示:
圖2.1 主程序流程圖

AT89S52單片機的基本發音
我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機某個口線的“高”電平或低電平,則在該口線上就能產生一定頻率的矩形波,接上喇叭就能發出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續時間,就能改變輸出頻率,從而改變音調。
例如,要產生200HZ的音頻信號,實驗程序為:
其中子程序DEL為延時子程序,當R3為1時,延時時間約為20us,R3中存放延時常數,對200HZ音頻,其周期為1/200秒,即5ms。這樣,當P1.4的高電平或低電平的持續時間為2.5ms,即R3的時間常數取2500/20=125(7DH)時,就能發出200HZ的音調。將程序鍵入學習機,并持續修改R3的常數能感到音調的變化。樂曲中,每一音符對應著確定的頻率。讀者能根據表1所供給的常數,將其16進制代碼送入R3,反復練習體會。根據表1能奏出音符。僅這還不夠,要準確奏出一首曲子,必須準確地控制樂曲節奏,即一音符的持續時間。
音符的節拍我們能用定時器T0來控制,送入不一樣的初值,就能產生不一樣的定時時間。便如某歌曲的節奏為每分鐘94拍,即一拍為0.64秒。
但是,由于T0的最大定時時間只能為131毫秒,因此不可能直接用改變T0的時間初值來實現不一樣節拍。我們能用T0來產生10毫秒的時間基準,然后設置一個中斷計數器,通過判別中斷計數器的值來控制節拍時間的長短。表2中也給出了各種節拍所對應的時間常數。例如對1/4拍音符,定時時間為0.16秒,對應的時間常數為16(即10H);對3拍音符,定時時間為1.92秒,對應時間長數為192(即C0H)。
我們將每一音符的時間常數和其對應的節拍常數作為一組,按次序將樂曲中的所有常數排列成一個表,然后由查表程序依次取出,產生音符并控制節奏,就能實現演奏效果。此外,結束符和體止符能分別用代碼00H和FFH來表示,若查表結果為00H,則表示曲子終了;若查表結果為FFH,則產生對應的停頓效果。為了產生手彈的節奏感,在某些音符(例如兩個相同音符)音插入一個時間單位的頻率略有不一樣的音符。
3.3 ICM7218資料
ICM72 1 8A是通用數碼管驅動器 ,控制方式簡單靈活 ,并可與8位微處理器接口 .可廣泛應用于電源及儀器儀表的顯示中。
圖3.3.1
ICM7218A可工作在三種顯示模塊:非譯碼顯示模式、十六進制譯碼顯示模式和十進制譯碼顯示模式。具體說明如下:
在非譯碼模式下(寫入命令字時ID5=“1”),輸入數據直接控制段位輸出,輸入數據和段位顯示對應如表3.3.1所示。在譯碼模式下(寫入命令十ID5=“0”),可在寫入命令字時選擇其工作在十六進制譯碼顯示模式(ID6=“1”)或十進制譯碼顯示模式(ID6=“0”);輸入二進制碼與十進制顯示碼、十六進制顯示碼關系如表3.3.2所示。
輸入數據
ID7
ID6
ID5
ID4
ID3
ID2
ID1
ID0
輸出數據
D.P
a
b
C
d
e
f
g

圖3.3.1
進制所對應十進制值碼
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
十六進制顯示碼
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
十進制顯示碼
0
1
2
3
4
5
6
7
8
9
-
E
H
L
P
(空)

圖3.3.2
ICM7218A的工作方式
ICM7218A可通過命令字中ID4位來決定其在正常工作方式(NORMALOPERTION)或停止工作方式(SHUTDOWN)。
在正常工作方式下(ID4=“1”),當MODE為高電平時,在WRITE信號有效時,由微處理器數據總線的ID4-ID7位寫入控制命令字,此時ID0-ID3位數據無效;MODE為底電平時,在WRITE信號有效時由微處理器依次寫如8個8位顯示數據,在數據寫入過程中,顯示器停止工作,知道8個數據寫完,顯示器顯示新輸入值。
注1:若想重新修改任一位顯示數據,必須重新執行上述過程,否則直接修改任一位顯示數據均無效。
  注2:每次必須連續輸入8個8位顯示數據之后顯示器才能正常工作(即使顯示位數少于8位也必須輸入8個數據),8個數據之后的數據無效。
在停止工作方式下(ID4=“0”),寫入命令字后,顯示器停止顯示,集成電路進入省點狀態。
3.4 74LS390資料
74LS390是雙十進制計數器,包括兩個2分頻和兩個5分頻計數器,用它可以實現2分頻、5分頻直至100分頻的任何累加倍數的計數長度;74LS390和門電路相配合,可以實現任意進制單位計數器。
計數結果往往需要顯示出來,供人們讀數,所以計數、譯碼和顯示電路通常配合使用。能完成這三種功能的芯片很多,要針對使用目的選用合適的芯片。如果計數結果要以十進制數顯示出來,譯碼驅動器可以用能直接驅動七段數碼管的譯碼驅動器。
如圖3.4.1,芯片74LS390內有兩個十進制計數器,CR是清零端(高電平有效),是CP脈沖,Q0、Q1、Q2、Q3為4個輸出。如果用觸發,只有Q0有輸出;若用觸發,則Q1、Q2、Q3三輸出端輸出(此時計數周期為5),即74LS390可以實現二進制、五進制計數。如果將Q0直接與相連,以作CP脈沖,則可以實現8421十進制計數。
3.4.1 74LS390管腳排列圖
3.5 CD4052資料
CD4052是一個雙4選一的多路模擬選擇開關,其使用真值表如表3.5.1所示:
INHIBIT
B
A

0
0
0
0x,0y
0
0
1
1x,1y
0
1
0
2x,2y
0
1
1
3x,3y
1
/
/
None

表3.5.1
應用時可以通過單片機對A/B的控制來選擇輸入哪一路,例如:需要從4路輸入中選擇第二路輸入,假設使用的是Y組,那么單片機只需要分別給A和B送1和0即可選中該路,然后進行相應的處理。
注意第6腳為使能腳,只有為0時,才會有通道被選中輸出.
圖3.5.1 CD4052芯片管腳圖:
3.6 NE555資料
555定時器是一種應用極為廣泛的中規模集成電路。該電路使用靈活、方便,只需外接少量的阻容元件就可以構成單穩、多諧和施密特觸發器。因而廣泛用于信號的產生、變換、控制與檢測。
目前生產的定時器有雙極型和CMOS兩種類型,其型號分別有NE555(或5G555)和C7555等多種。它們的結構及工作原理基本相同。通常,雙極型定時器具有較大的驅動能力,而CMOS 定時器具有低功耗、輸入阻抗高等優點。555定時器工作的電源電壓很寬,并可承受較大的負載電流。雙極型定時器電源電壓范圍為5~16V,最大負載電流可達200mA;CMOS 定時器電源電壓范圍為3~18V,最大負載電流在4mA以下。
一、電路組成
圖3.6.1為555集成定時器555定時器的電氣原理圖和電路符號,其由五個部分組成:
(1)由三個阻值為5kΩ 的電阻組成的分壓器;
(2)兩個電壓比較器C1 和C2:
V+>V-,Vo=1;
V+<V-,Vo=0。
(3)基本RS 觸發器;
(4)放電三極管T 及緩沖器G。
圖3.6.1 555定時器的電氣原理圖和電路符號
二、基本功能
當5腳懸空時,比較器C1和C2的比較電壓分別為2Vcc/3、Vcc/3。
(1)當V11>2Vcc/3,V23>Vcc/3時,比較器C1輸出低電平,C2輸出高電平,基本RS觸發器被置0,放電三極管T 導通,輸出端vO 為低電平。
(2)V11<2Vcc/3,V23<Vcc/3時,比較器C輸出高電平,C2輸出低電平,基本RS 觸發器被置1,放電三極管T 截止,輸出端vO 為高電平。
(3)V11<2Vcc/3,V23>Vcc/3時,比較器 C1 輸出高電平,C2也輸出高電平,即基本RS 觸發器R=1,S=1,觸發器狀態不變,電路亦保持原狀態不變。
由于閾值輸入端(V11)為高電平(>2Vcc/3)時,定時器輸出低電平,因此也將該端稱為高觸發端(TH)。
因為觸發輸入端(vI2)為低電平(< 1Vcc/3)時,定時器輸出高電平,因此也將該端稱為低觸發端(TL)。
如果在電壓控制端(5腳)施加一個外加電壓(其值在0~VCC之間),比較器的參考電壓將發生變化,電路相應的閾值、觸發電平也將隨之變化,并進而影響電路的工作狀態。
另外,RD為復位輸入端,當RD為低電平時,不管其他輸入端的狀態如何,輸出Vo為低電平,即RD的控制級別最高。正常工作時,一般應將其接高電平。
閾值輸入(V11)
觸發輸入(V12)
復位(RD)
輸出(VO)
放電管T
/
/
0
0
導通
<2Vcc/3
<Vcc/3
1
1
截止
>2Vcc/3
>Vcc/3
1
0
導通
<2Vcc/3
>Vcc/3
1
不變
不變

表3.6.1 555定時器功能表
由電路框圖和功能表可以得出如下結論:
1 555定時器有兩個閾值,分別是2Vcc/3和Vcc/3。
2 輸出端3腳和放電端7腳的狀態一致,輸出低電平對應放電管飽和,在7腳外接有上拉電阻時,7腳為低電平。輸出高電平對應放電管截止,在有上拉電阻時,7腳為高電平。
3 輸出端狀態的改變有滯回現象,回差電壓為Vcc/3。
4 輸出與觸發輸入反相。掌握這四條,對分析555定時器組成的電路十分有利。
555應用
施密特觸發器
施密特觸發器是數字系統中常用的電路之一,它可以把變化緩慢的脈沖波形變換成為數字電路所需要的矩形脈沖。施密特電路的特點在于它也有兩個穩定狀態,但與一般觸發器的區別在于這兩個穩定狀態的轉換需要外加觸發信號,而且穩定狀態的維持也要依賴于外加觸發信號,因此它的觸發方式是電平觸發。
1.電路組成及功能
只要將555 定時器的2號腳和6號腳接在一起,就可以構成施密特觸發器。我們簡記為“二六搭一”。
圖3.6.2 555定時器構成的施密特觸發器電路圖
(1) V1=0V 時,Vo1 輸出高電平。
(2)當V1上升到2Vcc/3時,Vo1輸出低電平。當V`由2Vcc/3繼續上升,Vo1 保持不變。
(3)當V1下降到Vcc/3時,電路輸出跳變為高電平。而且在V1繼續下降到0V時,電路的這種狀態不變。
圖3.6.2中,R、VCC2 構成另一輸出端Vo2,其高電平可以通過改變Vcc2進行調節。
2.電壓滯回特性和主要參數
電壓滯回特性
圖3.6.3 施密特觸發器的電路符號和電壓傳輸特性
主要靜態參數
(1)上限閾值電壓VT+----VI上升過程中,輸出電壓VO由高電平VOH 跳變到低電平VOL時,所對應的輸入電壓值。VT+ = 2Vcc/3。
(2)下限閾值電壓VT-----VI下降過程中, VO由低電平VOL 跳變到高電平VOH時,所對應的輸入電壓值。VT— =Vcc/3。
(3)回差電壓ΔVT
回差電壓又叫滯回電壓,定義為 :ΔVT= VT+-VT— = Vcc/3
若在電壓控制端VIC(5腳)外加電壓VS,則將有VT+=VS、VT—=VS/2、ΔVT=VS/2,而且當改變VS 時,它們的值也隨之改變。
3.施密特觸發器的應用舉例
(1)用作接口電路----將緩慢變化的輸入信號,轉換成為符合TTL系統要求的脈沖波形。
(2)用作整形電路----把不規則的輸入信號整形成為矩形脈沖。
圖3.6.4 慢輸入波形的TTL系統接口和脈沖整形電路的輸入輸出波形
單穩態觸發器
單穩態觸發器具有下列特點:第一,它有一個穩定狀態和一個暫穩狀態;第二,在外來觸發脈沖作用下,能夠由穩定狀態翻轉到暫穩狀態;第三,暫穩狀態維持一段時間后,將自動返回到穩定狀態,而暫穩狀態時間的長短,與觸發脈沖無關,公決定于電路本身的參數。
1.電路組成及其工作原理
由555構成的單穩態觸發器及工作波形如圖所示將555的6號腳和7號腳接在一起,并添加一個電容和一個電阻 ,就可以構成單穩態觸發器我們簡記為“七六搭一,上R下C”。
圖3.6.5 用555定時器構成的單穩態觸發器及工作波形
(1)無觸發信號輸入時電路工作在穩定狀態
當電路無觸發信號時,VI保持高電平,電路工作在穩定狀態,即輸出端VO保持低電平,555內放電三極管T飽和導通,管腳7“接地”,電容電壓VC為0V。
(2)VI 下降沿觸發
當VI下降沿到達時,555觸發輸入端(2腳)由高電平跳變為低電平,電路被觸發,VO由低電平跳變為高電平,電路由穩態轉入暫穩態。
(3)暫穩態的維持時間
在暫穩態期間,555內放電三極管T 截止,VCC經R向C充電。其充電回路為VCC→R→C→地,時間常數τ1=RC,電容電壓VC由0V開始增大,在電容電壓VC上升到閾值電壓2Vcc/3之前,電路將保持暫穩態不變。
(4)自動返回(暫穩態結束)時間
當VC上升至閾值電壓2Vcc/3時,輸出電壓VO由高電平跳變為低電平,555內放電三極管T由截止轉為飽和導通,管腳7“接地”,電容C經放電三極管對地迅速放電,電壓VC由2Vcc/3迅速降至0V(放電三極管的飽和壓降),電路由暫穩態重新轉入穩態。
(5)恢復過程
當暫穩態結束后,電容C通過飽和導通的三極管T放電,時間常數τ2=RCESC,式中RCES是T的飽和導通電阻,其阻值非常小,因此τ2之值亦非常小。經過(3~5)τ2后,電容C放電完畢,恢復過程結束。
2. 主要參數估算
(1) 輸出脈沖寬度tw
輸出脈沖寬度就是暫穩態維持時間,也就是定時電容的充電時間。由圖所示電容電壓VC 的工作波形不難看出VC(0+)≈0V,VC(∞)=VCC,VC(tw)=2Vcc/3,代入RC過渡過程計算公式,可得tw=1.1ln3。
上式說明,單穩態觸發器輸出脈沖寬度tw僅決定于定時元件R、C的取值,與輸入觸發信號和電源電壓無關,調節R、C的取值,即可方便的調節tw。
3.單穩態觸發器的應用
(1)延時
在圖3.6.6中,的下降沿比WI 的下降沿滯后了時間tW,即延遲了時間tw。單穩態觸發器的這種延時作用常被應用于時序控制中。
(2)定時
在圖3.6.6中,單穩態觸發器的輸出電壓,用做與門的輸入定時控制信號,當為高電平時,與門打開,Wo= WF,當為低電平時,與門關閉,Vo為低電平。顯然與門打開的時間是恒定不變的,就是單穩態觸發器輸出脈沖的寬度tw。
圖3.6.6 單穩態觸發器用于脈沖的延時與定時選通
(3)整形
單穩態觸發器能夠把不規則的輸入信號VI,整形成為幅度和寬度都相同的標準矩形脈沖Vo。Vo的幅度取決于單穩態電路輸出的高、低電平,寬度tw決定于暫穩態時間。圖3.6.7是單穩態觸發器用于波形的整形的一個簡單例子。
圖3.6.7 單穩態觸發器用于波形的整形
多諧振蕩器——產生矩形脈沖波的自激振蕩器
在數字電路中,常常需要一種不需外加觸發脈沖就能夠產生具有一定頻率和幅度的矩形波的電路。由于矩形波中除基波外,還含有豐富的高次諧波成分,因此我們稱這種電路為多諧振蕩器。它常常用作脈沖信號源。多諧振蕩器沒有穩態,只具有兩個暫穩態,在自身因素的作用下,電路就在兩個暫穩態之間來回轉換。
  • 電路組成及其工作原理:
圖3.6.8 用555定時器構成的多諧振蕩器
如圖3.6.8為555定時器構成的多諧振蕩器,接通VCC后,VCC經R1和R2對C充電。當uc上升到2VCC/3 時,uo=0,T導通,C通過R2和T放電,uc下降。當uc下降到VCC/3時,uo又由0變為1,T截止,VCC又經R1和R2對C充電。如此重復上述過程,在輸出端uo產生了連續的矩形脈沖。
2.振蕩頻率的估算和占空比可調電路
電容C充電時間:tw1=0.7(R1+R2)C
電容C放電時間:tw2=0.7R2C
振蕩周期:T=0.7(R1+2R2)C
振蕩周期:f=1/T=1/[0.7(R1+2R2)]=1.43/[(R1+2R2)C]
占空比:D=tw1/T=0.7(R1+R2)C/[0.7(R1+2R2)]=(R1+R2)/(R1+2R2)
3.7 共陽4位LED數碼管資料
單片機I/O的應用最典型的是通過I/O口與7段LED數碼管構成顯示電路。7段LED數碼管,則在一定形狀的絕緣材料上,利用單只LED組合排列成“8”字型的數碼管,分別引出它們的電極,點亮相應的點劃來顯示出0-9的數字。
LED數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管,除了它們的硬件電路有差異外,編程方法也是不同的。共陰和共陽極數碼管的發光原理是一樣的,只是它們的電源極性不同而已。
將多只LED的陰極連在一起即為共陰式,而將多只LED的陽極連在一起即為共陽式。以共陰式為例,如把陰極接地,在相應段的陽極接上正電源,該段即會發光。當然,LED的電流通常較小,一般均需在回路中接上限流電阻。假如我們將"b"和"c"段接上正電源,其它端接地或懸空,那么"b"和"c"段發光,此時,數碼管顯示將顯示數字“1”。而將"a"、"b"、"d"、"e"和"g"段都接上正電源,其它引腳懸空,此時數碼管將顯示“2”。其它字符的顯示原理類同,可自行分析。
數碼管使用條件:
a、段及小數點上加限流電阻;
b、使用電壓:段:根據發光顏色決定;小數點:根據發光顏色決定;
c、使用電流:靜態時總電流80mA(每段10mA);動態時平均電流4-5mA,峰值電流100mA。
圖3.7.1是七段數碼管引腳圖,其中共陽極數碼管引腳圖和共陰極的是一樣的,數碼管使用注意事項說明:
(1)數碼管表面不要用手觸摸,不要用手去弄引角;
(2)焊接溫度:260度;焊接時間:5S;
(3)表面有保護膜的產品,可以在使用前撕下來。
圖3.7.1 七段數碼管引腳圖
3.8 三極管相關資料
9014,9013,8050三極管引腳與管腳識別方法
S9014,S9013,S9015,S9012,S9018系列的晶體小功率三極管,把顯示文字平面朝自己,從左向右依次為e發射極 b基極 c集電極;對于中小功率塑料三極管按圖使其平面朝向自己,三個引腳朝下放置,則從左到右依次為e b c,S8050,S8550,C2078 也是和這個一樣的。
當前,國內各種晶體三極管有很多種,管腳的排列也不相同,在使用中不確定管腳排列的三極管,必須進行測量確定各管腳正確的位置(下面有用萬用表測量三極管的三個極的方法),明確三極管的特性及相應的技術參數和資料。
非9014,9013系列三極管管腳識別方法:
判定基極。用萬用表R×100或R×1k擋測量管子三個電極中每兩個極之間的正、反向電阻值。當用第一根表筆接某一電極,而第二表筆先后接觸另外兩個電極均測得低阻值時,則第一根表筆所接的那個電極即為基極b。這時,要注意萬用表表筆的極性,如果紅表筆接的是基極b。黑表筆分別接在其他兩極時,測得的阻值都較小,則可判定被測管子為PNP型三極管;如果黑表筆接的是基極b,紅表筆分別接觸其他兩極時,測得的阻值較小,則被測三極管為NPN型管如9013,9014,9018。
判定三極管集電極c和發射極e。(以PNP型三極管為例)將萬用表置于R×100或R×1K擋,紅表筆基極b,用黑表筆分別接觸另外兩個管腳時,所測得的兩個電阻值會是一個大一些,一個小一些。在阻值小的一次測量中,黑表筆所接管腳為集電極;在阻值較大的一次測量中,黑表筆所接管腳為發射極。
不拆卸三極管判斷其好壞的方法。
在實際應用中、小功率三極管多直接焊接在印刷電路板上,由于元件的安裝密度大,拆卸比較麻煩,所以在檢測時常常通過用萬用表直流電壓擋,去測量被測管子各引腳的電壓值,來推斷其工作是否正常,進而判斷三極管的好壞。
如是象9013 ,9014一樣NPN的用萬用表檢測他們的引腳,黑表筆接一個極,用紅筆分別接其它兩極,兩個極都有5K阻值時,黑表筆所接就是B極。這時用黑紅兩表筆分別接其它兩極,用舌尖同時添(其實也可以先用舌頭添濕一下手指然后用手指去摸,反正都不衛生)黑表筆所接那個極和B極,表指示阻值小的那個黑表所接就是C極。(以上所說為用指針表所測,數字表為紅筆數字萬用表內部的正負級是和指正表相反的。)
3.9 三端穩壓管LM7805資料
7805是常用的三端穩壓器件,顧名思義05就是輸出電壓為5v,還可以微調,7805輸出波紋很小。
(1) 集成三端穩壓器根據穩定電壓的正、負極性分為78××,79××系列。圖3.8.1給出了正、負穩壓的典型電路。
圖3.8.1 正、負穩壓7805電路
(2) 三端穩壓器的型號規格和管腳分布。
表3.8.1 三端穩壓器輸出電流字母表示法
7805三端穩壓器可輸出+5 V、0.5 A的穩定電壓;7912三端穩壓器可輸出 12V、1A的穩定電壓。
(3) 外形及管腳分布,如附圖3.8.2所示。 

圖3.8.2 7805,79系列三端穩壓器引腳功能輸出資料
3.10 繼電器資料
電磁式繼電器的結構與工作原理
電磁式繼電器是應用得最早、最多的一種型式。其結構及工作原理與接觸器大體相同。由電磁系統、觸點系統和釋放彈簧等組成,電磁式繼電器原理如圖l所示。由于繼電器用于控制電路,流過觸點的電流比較小(一般5A以下),故不需要滅弧裝置。
常用的電磁式繼電器有電壓繼電器、中間繼電器和電流繼電器。
電磁式繼電器的特性
繼電器的主要特性是輸入-輸出特性,又稱繼電特性。當繼電器輸入量X由零增至X2以前,繼電器輸出量Y為零。當輸入量X增加到X2時,繼電器吸合,輸出量為Y1;若X繼續增大,Y保持不變。當X減小到X1時,繼電器釋放,輸出量由Y1變為零,若X繼續減小,Y值均為零。
Kf=X1/X2稱為繼電器的返回系數,它是繼電器重要數之一。Kf值是可以調節的。
例如一般繼電器要求低的返回系數,Kf值應在0.1~0.4之間,樣當繼電器吸合后,輸入量波動較大時不致引起誤動作;欠電壓繼電器則要求高的返回系數,Kf值在0.6以上。設某繼電器Kf=0.66,吸合電壓為額定電壓的90%,則電壓低于額定電壓的50%時,繼電器釋放,起到欠電壓保護作用。
另一個重要參數是吸合時間和釋放時間。吸合時間是指從線圈接受電信號到銜鐵完全吸合所需的時間;釋放時間是指從線圈失電到銜鐵完全釋放所需的時間。一般繼電器的吸合時間與釋放時間為0.05~0.15s,快速繼電器為0.005~0.05s,它的大小影響繼電器的操作頻率。
4  調試總結
作為測量儀器,測量精度是一項很重要的指標。可以用一些方法來降低誤差提高精度。RLC參數測量儀在測量中除含有隨機誤差外,還有內部固定偏移、輸入端的各種雜散參數以及測試信號源中斜波分量等因素引起的系統誤差,主要分為有固定偏移、開路校準和短路校準、隨機誤差的處理。固定偏移主要是有源期間零漂引起,其結果是等效在待測交流號上疊加了某一固定的直流電壓。固定偏移可通過減法予以扣除。設一次完整的測量中含8次測量。前四次測量在X和Y的正半軸取得,后四次測量結果則安排在X和Y的負半軸取得。然后再把前四次測量結果與后四次測量結果相減。例如,通道的偏移量為M則前四次測量值為:N+M,后四次測量結果為-N+M。相減后得到,然后各分量除以2N。這樣就消除了偏移量。RLC參數測量儀的測量端、測量饋線以及測量夾具總是存在殘余阻抗和殘余導納。這些殘余兩對小電容、小電感或高電阻的測量會造成較大誤差。校正的基本思想是先通過理論分析建立系統的誤差模型,求出無恥修正公式,然后通過簡單的“開路”、“短路”等校準技術記錄各誤差因子,最后程序利用修正公式和誤差因子自動計算修正結果。根據統計方法理論,隨即誤差可以通過多次重復測量的平均來郁郁削弱。通過編程的方式對被測參數連續測量,然后求平均的辦法來削弱隨即誤差。
調試之前,要先用萬用表檢測了一遍線路是否有開路或者短路。在檢查完電路的連通性之后,插上芯片,燒錄程序,若電路沒有正常工作,則要從各個方面找原因,例如芯片、電容、發光二極管等器件正負極是否插對,是否有虛焊、開路和短路現象。第一次調試時,發光管發光出現異常,不能確定電源是否正常供電到芯片。經過萬用表檢查后才發現發光管是壞的,即刻換上好的發光管。在實驗板上成功調試好程序之后,燒錄程序到自己的板上,卻發現有三位數碼管不能顯示,在我糾結于究竟是軟件的問題、電路的問題或者是元件的問題許久之后,經過分析排查,發現我把共陰的數碼管當作共陽的接上去了。換了共陽的數碼管總算是能顯示了。確保電路沒有任何故障與缺陷的時候,我把時間和精力集中在優化程序的步驟。經過幾天反復的嘗試摸索,程序已經較最初的程序有較大的改動,盡量化繁瑣為精簡。用C語言調試最大的困難便是對與大括號的把握。大括號成雙出現,缺一不可。但是如果多了一個大括號或者少一個大括號的話,由KEIL C軟件所提示的無法創建*.HEX文件又沒有提示括號的多缺處,只有依靠自己慢慢尋找,這里提醒我們在編寫程序的時候要注意層次分明,以便易于查找程序出錯的板塊。大括號括的地方不同,有的時候甚至影響到整個程序工作的穩定性,最嚴重的時候不僅使相應的功能沒有還會禍及其他功能的實現。
5  結論
本文設計了一種基于AT89S52單片機的RLC智能測量儀,其主要功能如下:
(1)能精確測量出電容、電感、電阻的參數值。
(2)可以實現量程電阻的自動轉換,無須人工選擇檔位。
(3)當測量正弦信號的幅度過小時,可以自動實現增益放大,從而不影響精度。
(4)AT89S52具有“看門狗”功能,避免出現“死機”現象。
(5)定時器可以采用外部時鐘源計數,則為我們計算振蕩電路產生頻率 提供了便利,而且計算精度較高,控制簡單。
由此可見,此測量儀具有高度的智能化和集成化,可精確地對元器件參數進行測量,這正符合當今測量儀器的發展趨勢,它將具有廣闊的應用前景。


附  錄
印板PCB圖:
元件PCB圖:


單片機源程序如下:
  1. #include <REG52.H>
  2. #include <absacc.h>
  3. #include <stdio.h>
  4. #define  ICM7218  XBYTE[0x00ff]//7218A地址

  5. unsigned char Tab[] ={ 0xFB,0xB0,0xED,0xF5,0xB6,
  6.                        0xD7,0xDF,0xF0,0xFF,0xF7
  7.                                                                         };//7218A數碼管段代碼表
  8. unsigned char Addr[] ={  0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
  9.                          0x40,0x48,0x50,0x60,0x68,0x70,0x78
  10.                                                                          };//ISD1420播放地址代碼表
  11.             //(0,1,2,3,4,5,6,7,8,9, 乘以10的,次方,歐,皮法,微亨)
  12. unsigned char P_tab[7] ={  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  13.                         };//語音播放結果列表  
  14. unsigned char SaveData[8] ={  0xCE,0xCE,0xCE,0xCE,0xCE,0xCE,0xCE,0xCE
  15.                            };//最終結果
  16. unsigned char count = 0, counter = 0, bai = 0, shi = 0, ge = 0, cifang = 0;
  17. unsigned long int pinlv = 0, result = 0, flag = 0;

  18. sbit Mode = P1^2;//7218A工作模式
  19. sbit R_select = P3^2;//電阻測量選擇按鍵
  20. sbit C_select = P3^3;//電容測量選擇按鍵
  21. sbit L_select = P3^4;//電感測量選擇按鍵
  22. sbit R_led = P2^2;//電阻指示燈
  23. sbit C_led = P2^1;//電容指示燈
  24. sbit L_led = P2^0;//電感指示燈
  25. sbit R_change = P2^4;//電阻量程轉變
  26. sbit C_change = P2^3;//電容量程轉變
  27. sbit F_B = P1^4;//模擬開關
  28. sbit F_A = P1^3;
  29. sbit Play = P2^6;//語音播放
  30. sbit Feedback = P2^7;//ISD1420反饋信號]

  31. /****************************
  32.           延時
  33. ******************************/
  34. void delay(unsigned int k)
  35. {
  36.   unsigned int a;
  37.   for(a=0; a<=k; a++);
  38. }
  39. /******************************
  40.           頻率測量
  41. *******************************/
  42. void pl(void)
  43. {
  44.   TMOD = 0x51;//定時器0工作方式1,計數器1工作方式1
  45.   TH0 = 0x3c;
  46.   TL0 = 0xb0;//50ms定時
  47.   TH1 = 0;
  48.   TL1 = 0;//計數器清零
  49.   EA = 1;
  50.   ET0 = 1;
  51.   ET1 = 1;
  52.   TR0 = 1;
  53.   TR1 = 1;//啟動計時計數器
  54.   while(count <= 60);//3秒測頻
  55.   count = 0;
  56.   pinlv= (counter * 65536 + TH1 * 256 + TL1) / 3;//頻率換算
  57.   counter = 0;
  58.   TR0 = 0;//停止計時計數器
  59.   TR1 = 0;
  60. }
  61. void t0(void) interrupt 1 using 0//定時器中斷子程序
  62. {
  63.   TH0 = 0x3c;
  64.   TL0 = 0xb0;
  65.   count++;
  66. }
  67. void t1(void) interrupt 3 using 0//計數器中斷子程序
  68. {
  69.   counter++;
  70. }
  71. /******************************
  72.     阻值公式換算(單位:歐姆)
  73. *******************************/
  74. void R_deal(void)
  75. {
  76.   result = (6557705 / pinlv - 200) / 2;//100~10k歐姆
  77.   if (R_change == 0)
  78.    {
  79.      result = (6557705 / pinlv - 20000) / 2;//10k~1M歐姆
  80.     }
  81.   if (result > 20000 && result < 400000)//修正
  82.    {
  83.      result = result * 939 / 1000;
  84.    }
  85.   else
  86.    {
  87.      result = result * 891 / 1000;
  88.     }
  89. }
  90. /*****************************
  91.      容值公式換算(單位:PF)
  92. ******************************/
  93. void C_deal(void)
  94. {
  95.   result = 13383072 / pinlv;//100~1000PF
  96.   if (C_change == 0)//1000~10000PF
  97.    {
  98.      result = 2540851 / pinlv;
  99.    }
  100.   if (result < 277)//修正
  101.    {
  102.       result = result * 36 / 100;
  103.     }
  104.   if (result >= 277 && result < 288)
  105.    {
  106.      result = result * 430 / 1000;
  107.    }
  108.   if (result >= 288 && result < 318)
  109.    {
  110.      result = result * 507 / 1000;
  111.     }
  112.   if (result >= 318 && result < 450)
  113.    {
  114.      result = result * 614 / 1000;
  115.     }
  116.    if (result >= 450 && result < 470)
  117.    {
  118.      result = result * 65 / 100;
  119.    }
  120.    if (result >= 470 && result < 1455)
  121.    {
  122.      result = result * 72 / 100;
  123.    }
  124.    if (result >= 3295 && result < 9000)
  125.    {
  126.       result = result * 789 / 1000;
  127.    }
  128. }
  129. /******************************
  130.      感值公式換算(單位:uH)
  131. ******************************/
  132. void L_deal(void)
  133. {
  134.   pinlv = pinlv * 100;//頻率分頻還原
  135.   result = (6069931 / pinlv) * (6069931 / pinlv);
  136.   if (result >= 3600)//修正
  137.    {
  138.      result = result * 2;
  139.    }
  140.   if (result >= 2445 && result < 3600)
  141.    {
  142.      result = result * 100 / 65;
  143.    }
  144.   if (result >= 1245 && result < 2445)
  145.    {
  146.      result = result * 100 / 80;
  147.    }
  148.   if (result >= 552 && result < 1245)
  149.    {
  150.      result = result * 100 / 70;
  151.     }
  152.    if (result >= 465 && result < 552)
  153.    {
  154.       result = result * 100 / 84;
  155.     }
  156.    if (result >= 328 && result < 465)
  157.    {
  158.       result = result * 1000 / 765;
  159.     }
  160.    if (result < 328)
  161.    {
  162.      result = result * 100 / 79;
  163.    }
  164. }
  165. /******************************
  166.         轉換成代碼表
  167. *****************************/
  168. void daima(void)
  169. {
  170.   unsigned char j, i = 0;
  171.   flag = result;
  172.   while (flag / 10)
  173.    {
  174.      flag = flag / 10;
  175.      i++;
  176.    }
  177.   if (i >= 2)
  178.    {
  179.      cifang = i-2;
  180.    }
  181.   else
  182.     cifang = 0;
  183.   for (j=0; j<cifang; j++)
  184.    {
  185.      result = result / 10;
  186.     }
  187.   bai = result / 100;
  188.   shi = result / 10 % 10;
  189.   ge = result % 10;
  190.   SaveData[0] = Tab[bai];
  191.   SaveData[1] = Tab[shi];
  192.   SaveData[2] = Tab[ge];
  193.   SaveData[3] = Tab[cifang];
  194. }
  195. /******************************
  196.         ICM7218_LED顯示
  197. ******************************/
  198. void display(void)
  199. {
  200.   unsigned char i;
  201.   Mode = 1;//寫命令字
  202.   ICM7218 = 0xf0;//十六進制非譯碼正常工作,后跟顯示數據
  203.   Mode = 0;//寫入數據
  204.   for (i=0; i<8; i++)
  205.    {
  206.      ICM7218 = SaveData[i];
  207.    }
  208. }
  209. /*****************************
  210.          ISD1420語音播放
  211. ******************************/
  212. void play(void)
  213. {
  214.   unsigned char i;
  215.   P_tab[0] = Addr[bai];//給表賦值
  216.   P_tab[1] = Addr[shi];
  217.   P_tab[2] = Addr[ge];
  218.   P_tab[3] = Addr[10];
  219.   P_tab[4] = Addr[cifang];
  220.   P_tab[5] = Addr[11];
  221.   if (R_led == 0)//電阻--歐
  222.     {
  223.       P_tab[6] = Addr[12];
  224.      }
  225.    if (C_led == 0)//電容--皮法
  226.     {
  227.       P_tab[6] = Addr[13];
  228.     }
  229.    if (L_led == 0)//電感--微亨
  230.     {
  231.       P_tab[6] = Addr[14];
  232.     }
  233.    for (i=0; i<7; i++)
  234.     {
  235.       P0 = P_tab[i];//地址
  236.       delay(20000);
  237.       Play = 0;//播放
  238.       delay(20000);
  239.       while (Feedback == 1);//等待EOM結束反饋
  240.       Play = 1;
  241.       delay(20000);
  242.     }
  243. }
  244. /*****************************
  245.           主函數
  246. ******************************/
  247. void main(void)
  248. {
  249.   R_select = 1;//初始化
  250.   C_select = 1;
  251. L_select = 1;
  252.   R_led = 1;
  253.   C_led = 1;
  254.   L_led = 1;
  255.   Play = 1;
  256.   Feedback = 1;
  257.   while (1)
  258.    {
  259. /*****************電阻*********************/
  260.      if (R_select ==0 )//測電阻
  261.        {
  262.          delay(2000);//去抖動            
  263.          if (R_select == 0)
  264.           {
  265.             R_led = 0;
  266.             C_led = 1;
  267.             L_led = 1;
  268.             F_B = 0;//模擬開關電阻頻率輸出
  269.             F_A = 0;
  270.             delay(20000);
  271.             C_change = 1;
  272.             R_change = 1;//低量程
  273.             delay(50000);
  274.             delay(50000);
  275.             pl();//測頻
  276.             if (pinlv < 164)//是否需要轉換(高量程)?
  277.              {
  278.                 R_change = 0;
  279.                 delay(50000);
  280.                 delay(50000);
  281.                 pl();
  282.               }
  283.             R_deal();//結果
  284.             daima();//代碼轉換
  285.             display();//顯示
  286.             //play();//語音播放
  287.           }
  288. }
  289. /******************電容***********************/
  290.      if (C_select == 0)//測電容
  291.       {
  292.         delay(2000);//去抖動
  293.      if (C_select == 0)
  294.       {
  295.         C_led = 0;
  296.         R_led = 1;
  297.         L_led = 1;
  298.         F_B = 0;//模擬開關電容頻率輸出
  299.         F_A = 1;
  300.         delay(20000);
  301.         C_change = 1;//低量程
  302.         R_change = 1;
  303.         delay(50000);
  304.         delay(50000);
  305. ……………………

  306. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
畢業設計論文(1).doc (1.18 MB, 下載次數: 19)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 青青草国产在线观看 | 欧美激情精品久久久久久 | 欧美视频在线播放 | 欧美日韩在线一区二区 | av手机在线看 | 一区二区三区四区不卡 | 亚洲欧洲在线观看视频 | 日本亚洲精品成人欧美一区 | 久久成人18免费网站 | 国产玖玖 | 欧美伊人久久久久久久久影院 | 香蕉一区 | 精品国产精品国产偷麻豆 | 一本岛道一二三不卡区 | 亚洲黄色网址视频 | 欧美日韩一二三区 | 日韩av美女电影 | 91精品国产乱码久久久久久久久 | 亚洲精品一区国语对白 | 国产精品一区二区视频 | 久久精品91久久久久久再现 | 最新国产精品视频 | 国产精品av久久久久久毛片 | 国产免费观看视频 | 日日操日日干 | 精品欧美一区免费观看α√ | 亚洲一区日韩 | 日韩免费福利视频 | 午夜影院普通用户体验区 | 国产91久久久久 | 久久久久免费精品国产小说色大师 | 日韩在线一区二区 | pacopacomama在线 | 国产一区二区三区在线观看免费 | 国产探花在线精品一区二区 | 91精产国品一二三区 | 国产精品欧美一区二区三区不卡 | 日本字幕在线观看 | 日韩视频一区 | 另类在线 | 久久国产精品一区二区三区 |