版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于單片機(jī)的電容測(cè)試儀設(shè)計(jì)</p><p><b> 前言</b></p><p> 目前,隨著電子工業(yè)的發(fā)展,電子元器件急劇增加,電子元器件的適用范圍也逐漸廣泛起來,在應(yīng)用中我們常常要測(cè)定電容的大小。</p><p> 在電子產(chǎn)品的生產(chǎn)和維修中,電容測(cè)量這一環(huán)節(jié)至關(guān)重要,一個(gè)好的電子產(chǎn)品應(yīng)具備一定規(guī)格年限的使用壽命
2、。因此在生產(chǎn)這一環(huán)節(jié)中,對(duì)其產(chǎn)品的檢測(cè)至關(guān)重要,而檢測(cè)電子產(chǎn)品是否符合出產(chǎn)要求的關(guān)鍵在于檢測(cè)其內(nèi)部核心的電路,電路的好壞決定了電子產(chǎn)品的好與壞,而電容在基本的電子產(chǎn)品的集成電路部分有著其不可替代的作用。同樣,在維修人員在對(duì)電子產(chǎn)品的維修中,電路的檢測(cè)是最基本的,有時(shí)需要檢測(cè)電路中各個(gè)部件是否工作正常,電容器是否工作正常。因此,設(shè)計(jì)可靠,安全,便捷的電容測(cè)試儀具有極大的現(xiàn)實(shí)必要性。</p><p><b>
3、; 1選題背景 </b></p><p> 1.1電容測(cè)試儀的發(fā)展歷史及研究現(xiàn)狀</p><p> 當(dāng)今電子測(cè)試領(lǐng)域,電容的測(cè)量已經(jīng)在測(cè)量技術(shù)和產(chǎn)品研發(fā)中應(yīng)用的十分廣泛。電容通常以傳感器形式出現(xiàn),因此,電容測(cè)量技術(shù)的發(fā)展歸根結(jié)底就是電容傳感器的發(fā)展。由最初的用交流不平衡電橋就能測(cè)量基本的電容傳感器。最初的電容傳感器有變面積型,變介質(zhì)介電常數(shù)型和變極板間型?,F(xiàn)在的電容式傳感
4、器越做越先進(jìn),現(xiàn)在用的比較多的有容柵式電容傳感器,陶瓷電容壓力傳感器等。電容測(cè)量技術(shù)發(fā)展也很快現(xiàn)在的電容測(cè)量技術(shù)也由單一化發(fā)展為多元化。現(xiàn)在國(guó)內(nèi)外做傳感器的廠商也比較多,在世界范圍內(nèi)做電容傳感器做的比較好的公司有:日本figaro、德國(guó)tecsis、美國(guó)alphasense。中國(guó)本土測(cè)量?jī)x器設(shè)備發(fā)展的主要瓶頸。盡管本土測(cè)試測(cè)量產(chǎn)業(yè)得到了快速發(fā)展,但客觀地說中國(guó)開發(fā)測(cè)試測(cè)量?jī)x器還普遍比較落后。每當(dāng)提起中國(guó)測(cè)試儀器落后的原因,就會(huì)有許多不同
5、的說法,諸如精度不高,外觀不好,可靠性差等。實(shí)際上,這些都還是表面現(xiàn)象,真正影響中國(guó)測(cè)量?jī)x器發(fā)展的瓶頸為:</p><p> 1.測(cè)試在整個(gè)產(chǎn)品流程中的地位偏低。由于人們的傳統(tǒng)觀念的影響,在產(chǎn)品的制造流程中,研發(fā)始終處于核心位置,而測(cè)試則處于從屬和輔助位置。關(guān)于這一點(diǎn),在幾乎所有的研究機(jī)構(gòu)部門配置上即可窺其一斑。這種錯(cuò)誤觀念上的原因,造成整個(gè)社會(huì)對(duì)測(cè)試的重視度不夠,從而造成測(cè)試儀器方面人才的嚴(yán)重匱乏,造成相關(guān)的
6、基礎(chǔ)科學(xué)研究比較薄弱,這是中國(guó)測(cè)量?jī)x器發(fā)展的一個(gè)主要瓶頸。實(shí)際上,即便是研發(fā)隊(duì)伍本身,對(duì)測(cè)試的重視度以及對(duì)儀器本身的研究也明顯不夠。 </p><p> 2.面向應(yīng)用和現(xiàn)代市場(chǎng)營(yíng)銷模式還沒有真正建立起來。本土儀器設(shè)備廠商只是重研發(fā),重視生產(chǎn),重視狹義的市場(chǎng),還沒有建立起一套完整的現(xiàn)代營(yíng)銷體系和面向應(yīng)用的研發(fā)模式。傳統(tǒng)的營(yíng)銷模式在計(jì)劃經(jīng)濟(jì)年代里發(fā)揮過很大作用,但無法滿足目前整體解方案流行年代的需求。所以,為了快速
7、縮小與國(guó)外先進(jìn)公司之間的差距,國(guó)內(nèi)儀器研發(fā)企業(yè)應(yīng)加速實(shí)現(xiàn)從面向仿制的研發(fā)向面向應(yīng)用的研發(fā)的過渡。特別是隨著國(guó)內(nèi)應(yīng)用需求的快速增長(zhǎng),為這一過渡提供了根本動(dòng)力,應(yīng)該利用這些動(dòng)力,跟蹤應(yīng)用技術(shù)的快速發(fā)展。</p><p> 3.缺乏標(biāo)準(zhǔn)件的材料配套體系。由于歷史的原因,中國(guó)儀器配套行業(yè)的企業(yè)多為良莠不齊的小型企業(yè),標(biāo)準(zhǔn)化的研究也沒有跟上需求的快速發(fā)展,從而導(dǎo)致儀器的材</p><p> 料配
8、套行業(yè)的技術(shù)水平較低。雖然目前已有較大的改觀,但距離整個(gè)產(chǎn)業(yè)的要求還有一定距離,所以,還應(yīng)把標(biāo)準(zhǔn)化和模塊化的研究放到重要的位置。還有,在技術(shù)水平?jīng)]有達(dá)到的條件下,一味地追求精度或追求高指標(biāo),而沒有處理好與穩(wěn)定性之間的關(guān)系。上述這些都是制約本土儀器發(fā)展的因素。</p><p> 近年來我國(guó)測(cè)量?jī)x器的可靠性和穩(wěn)定性問題得到了很多方面的重視,狀況有了很大改觀。測(cè)試儀器行業(yè)目前已經(jīng)越過低谷階段,重新回到了快速發(fā)展的軌道
9、,尤其最近幾年,中國(guó)本土儀器取得了長(zhǎng)足的進(jìn)步,特別是通用電子測(cè)量設(shè)備研發(fā)方面,與國(guó)外先進(jìn)產(chǎn)品的差距正在快速縮小,對(duì)國(guó)外電子儀器巨頭的壟斷造成了一定的沖擊。隨著模塊化和虛擬技術(shù)的發(fā)展,為中國(guó)的測(cè)試測(cè)量?jī)x器行業(yè)帶來了新的契機(jī),加上各級(jí)政府日益重視,以及中國(guó)自主應(yīng)用標(biāo)準(zhǔn)研究的快速進(jìn)展,都在為該產(chǎn)業(yè)提供前所未有的動(dòng)力和機(jī)遇。從中國(guó)電子信息產(chǎn)業(yè)統(tǒng)計(jì)年鑒中可以看出,中國(guó)的測(cè)試測(cè)量?jī)x器每年都以超過30%以上的速度在快速增長(zhǎng)。在此快速增長(zhǎng)的過程中,無疑
10、催生出了許多測(cè)試行業(yè)新創(chuàng)企業(yè),也催生出了一批批可靠性和穩(wěn)定性較高的產(chǎn)品。</p><p> 1.2現(xiàn)今的電容測(cè)量技術(shù)手段</p><p> 電容器作為非常重要的一個(gè)電學(xué)元件在現(xiàn)代電子技術(shù)中有著非常廣泛的用途,電容定義為:電容器所帶的電荷量Q與電容器兩極板間的電勢(shì)差U的比值,即:。這種原始的方法必須通過測(cè)量?jī)蓚€(gè)物理量來計(jì)算電容的大小,而其中的Q是比較難以測(cè)量的量。目前常用的兩種測(cè)量電容的
11、實(shí)現(xiàn)方法:一是利用多諧震蕩產(chǎn)生脈沖寬度與電容值成正比信號(hào),通過低通濾波后測(cè)量輸出電壓實(shí)現(xiàn);二是利用單穩(wěn)態(tài)觸發(fā)裝置產(chǎn)生與電容值成正比門脈沖來控制通過計(jì)數(shù)器的標(biāo)準(zhǔn)計(jì)數(shù)脈沖的通斷,即直接根據(jù)充放電時(shí)間判斷電容值。</p><p> 利用多諧震蕩原理測(cè)量電容的方案硬件設(shè)計(jì)比較簡(jiǎn)單,但是軟件實(shí)現(xiàn)相對(duì)比較復(fù)雜,而直接根據(jù)充放電時(shí)間判斷電容值的方案雖然基本上沒有用到軟件部分,但是硬件卻又十分的復(fù)雜。而且他們都無法直觀的把測(cè)量
12、的電容值大小顯示出來。</p><p> 根據(jù)上面兩種方案的優(yōu)缺點(diǎn),本次設(shè)計(jì)提出了硬件設(shè)計(jì)和軟件設(shè)計(jì)都相對(duì)比較簡(jiǎn)單的方案:基于AT89C51單片機(jī)和555芯片的數(shù)顯式電容測(cè)量。該方案主要是根據(jù)555芯片的應(yīng)用特點(diǎn),把電容的大小轉(zhuǎn)變成555輸出頻率的大小,進(jìn)而可以通過單片機(jī)對(duì)555輸出的頻率進(jìn)行測(cè)量。本方案的硬件設(shè)計(jì)和軟件設(shè)計(jì)都相對(duì)簡(jiǎn)單。</p><p> 2 基于單片機(jī)電容測(cè)量硬件設(shè)計(jì)
13、</p><p><b> 2.1設(shè)計(jì)方案</b></p><p> 本次設(shè)計(jì)中考慮了三種設(shè)計(jì)方案,三種設(shè)計(jì)方案中主要區(qū)別在于硬件電路和軟件設(shè)計(jì)的不同,對(duì)于本設(shè)計(jì)三種方案均能夠?qū)崿F(xiàn),最后根據(jù)設(shè)計(jì)要求、可行性和設(shè)計(jì)成本的考慮選擇了基于AT89C51單片機(jī)和555芯片構(gòu)成的多諧振蕩電路的測(cè)量的方案。現(xiàn)在一一介紹論證如下:</p><p> 方
14、案一、利用多諧振蕩原理測(cè)量電容測(cè)量原理如下圖所示。電容C電阻R和555芯片構(gòu)成一個(gè)多諧振蕩電路。在電源剛接通時(shí)(K合上),電容C上的電壓為零,多諧振蕩器輸出為高電平 通過R對(duì)電容C充電。當(dāng)C上沖得的電壓= 時(shí),施密特觸發(fā)器翻轉(zhuǎn),變?yōu)榈碗娖剑珻又通過R放電,下降。當(dāng)= 時(shí)施密特觸發(fā)器又翻轉(zhuǎn),輸出又變?yōu)楦唠娖?,如此往?fù)產(chǎn)生震蕩波形。</p><p><b> 由理論分析可知</b></p
15、><p><b> ?。?)</b></p><p><b> ?。?)</b></p><p><b> (3)</b></p><p> 令 (4)</p><p><b> 則<
16、/b></p><p><b> (5)</b></p><p><b> ?。?)</b></p><p> 有式(6)和測(cè)得的校準(zhǔn)值測(cè)量值及存放的軟件中的標(biāo)準(zhǔn)電容值C可得出待測(cè)電容值。實(shí)際應(yīng)用中也可以通過測(cè)量和來算出</p><p> 測(cè)量誤差分析:由式(6)可以看出,經(jīng)過軟件校準(zhǔn)后
17、得出的結(jié)果與的值有關(guān)。這樣單片機(jī)晶振頻率的絕對(duì)精度,環(huán)境溫度的變化和電源電壓的絕對(duì)精度引起的誤差被消除。測(cè)量結(jié)果主要受標(biāo)準(zhǔn)電容的絕對(duì)精度影響,因此應(yīng)該選擇精度高、穩(wěn)定性好的;其他誤差來源包括周期測(cè)量的量化誤差,除法運(yùn)算產(chǎn)生的余數(shù)誤差,電源電壓的波動(dòng)造成諧振頻率偏移帶來的誤差,因此電路要用穩(wěn)壓性能好的穩(wěn)壓電源</p><p> 這種方法的利用了一個(gè)參考的電容實(shí)現(xiàn),雖然硬件結(jié)構(gòu)簡(jiǎn)單,軟件實(shí)現(xiàn)卻相對(duì)比較復(fù)雜。<
18、/p><p> 方案二、直接根據(jù)充放電時(shí)間判斷電容值</p><p> 這種電容測(cè)量方法主要利用了電容的充放電特性,放電常數(shù),通過測(cè)量與被測(cè)電容相關(guān)電路的充放電時(shí)間來確定電容值。一般情況下,可設(shè)計(jì)電路使( T為振蕩周期或觸發(fā)時(shí)間;A為電路常數(shù)與電路參數(shù)有關(guān))。這種方法中應(yīng)用了555芯片組成的單穩(wěn)態(tài)觸發(fā)器,在秒脈沖的作用下產(chǎn)生觸發(fā)脈沖,來控制門電路實(shí)現(xiàn)計(jì)數(shù),從而確定脈沖時(shí)間,通過設(shè)計(jì)合理的電
19、路參數(shù),使計(jì)數(shù)值與被測(cè)電容相對(duì)應(yīng)。其原理框圖如圖3所示。 </p><p> 圖3 電路原理框圖</p><p> 誤差分析:這種電容測(cè)量方法的誤差主要由兩部分組成:一部分是由555芯片構(gòu)成的振蕩電路和觸發(fā)電路由于非線性造成的誤差,其中最重要的是單穩(wěn)態(tài)觸發(fā)電路的非線性誤差,(T由充放電時(shí)間決定,是被測(cè)電容值);另一部分是由數(shù)字電路的量化誤差引起,是數(shù)字電路特有的誤差該誤差相對(duì)
20、影響較小,可忽略不計(jì)。</p><p> 這種方法硬件結(jié)構(gòu)相對(duì)復(fù)雜,實(shí)際上是通過犧牲硬件部分來減輕軟件部分的負(fù)擔(dān),但在具體設(shè)計(jì)中會(huì)碰到很大問題,而且硬件一旦設(shè)計(jì)好,可變性不大。</p><p> 方案三、基于AT89C51單片機(jī)和555芯片構(gòu)成的多諧振蕩電路電容測(cè)量</p><p> 這種電容測(cè)量方法主要是通過一塊555芯片來測(cè)量電容,讓555芯片工作在直接反
21、饋無穩(wěn)態(tài)的狀態(tài)下,555芯片輸出一定頻率的方波,其頻率的大小跟被測(cè)量的電容之間的關(guān)系是:,我們固定的大小,其公式就可以寫為:,只要我們能夠測(cè)量出555芯片輸出的頻率,就可以計(jì)算出測(cè)量的電容。計(jì)算頻率的方法可以利用單片機(jī)的計(jì)數(shù)器和中斷配合使用來測(cè)量,這種研究方法相當(dāng)?shù)暮?jiǎn)單。系統(tǒng)框圖見圖4。</p><p><b> 圖4 系統(tǒng)框圖</b></p><p> 圖中給
22、出了整個(gè)系統(tǒng)設(shè)計(jì)的系統(tǒng)框圖,系統(tǒng)主要由四個(gè)主要部分組成,單片機(jī)和晶振電路設(shè)計(jì),555芯片電路設(shè)計(jì),顯示電路設(shè)計(jì),復(fù)位電路設(shè)計(jì)。</p><p> 2.2 硬件設(shè)計(jì)的任務(wù)</p><p> AT89C51基本工作電路設(shè)計(jì):使單片機(jī)正常工作;</p><p> 時(shí)鐘電路:為單片機(jī)提供時(shí)鐘信號(hào);</p><p> 復(fù)位電路:為單片機(jī)提供高電
23、平復(fù)位信號(hào);</p><p> 555芯片電路:把電容的大小轉(zhuǎn)變成輸出頻率的大小;</p><p> 顯示電路:顯示當(dāng)前測(cè)量電容的大小;</p><p> 按鍵電路:開始測(cè)量電容;</p><p> 2.3基于AT89C51電容測(cè)量系統(tǒng)硬件設(shè)計(jì)詳細(xì)分析</p><p> 2.3.1 AT89C51單片機(jī)工作電
24、路</p><p> 本設(shè)計(jì)的核心是單片機(jī)電路,考慮到需要一個(gè)中斷輸入,存儲(chǔ)容量、外部接口對(duì)單片機(jī)端口的需要以及兼顧到節(jié)約成本的原則,選用了常用的AT89C51單片機(jī)。AT89C51是低功耗、高性能、經(jīng)濟(jì)的8位CMOS微處理器,工作頻率為0—24MHz,內(nèi)置4K字節(jié)可編程只讀閃存,128x8位的內(nèi)部RAM,16位可編程I/O總線。它采用Atmel公司的非易儲(chǔ)器制造技術(shù),與MCS51的指令設(shè)置和芯片引腳可兼容。A
25、T89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。AT89C51工作的最簡(jiǎn)單的電路是其外圍接一個(gè)晶振和一個(gè)復(fù)位電路,給單片機(jī)接上電源和地,單片機(jī)就可以工作了。其最簡(jiǎn)單的工作原理圖如下圖。</p><p> 圖5 AT89C51單片機(jī)工作電路</p><p> 2.3.2 基于A
26、T89C51電容測(cè)量系統(tǒng)復(fù)位電路</p><p> MCS-51的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。MCS-51單片機(jī)片內(nèi)復(fù)位,復(fù)位引腳RST通過一個(gè)斯密特觸發(fā)器用來抑制噪聲,在每個(gè)機(jī)器周期的S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號(hào)。</p><p> 復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電
27、來實(shí)現(xiàn)的。只要Vcc的上升時(shí)間不超過1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。除了上電復(fù)位外,有時(shí)還需要按鍵手動(dòng)復(fù)位。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過RST端經(jīng)電阻與電源Vcc接通而實(shí)現(xiàn)的。按鍵脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來實(shí)現(xiàn)的。</p><p> 圖6 上電復(fù)位電路</p><p> 上圖兼有上電復(fù)位和按鈕復(fù)位的電路。在單片機(jī)設(shè)計(jì)中,若有外部擴(kuò)展的I/O
28、接口電路需初始復(fù)位,如果它們的復(fù)位端和MCS-51單片機(jī)的復(fù)位端相連,復(fù)位電路中的R、C參數(shù)要受到影響,這時(shí)復(fù)位電路中的R、C參數(shù)要統(tǒng)一考慮以保證可靠的復(fù)位。如果單片機(jī)MCS-51單片機(jī)與外圍I/O接口電路的復(fù)位電路和復(fù)位時(shí)間不完全一致,使單片機(jī)初始化程序不能正常運(yùn)行,外圍I/O接口電路的復(fù)位也可以不和MCS-51單片機(jī)復(fù)位端相連,僅采用獨(dú)立的上電復(fù)位電路。一般來說,單片機(jī)的復(fù)位速度比外圍I/O快些。若RC上電復(fù)位電路接MCS-51單片
29、機(jī)和外圍電路復(fù)位端,則能使系統(tǒng)可靠地同步復(fù)位。為保證系統(tǒng)可靠復(fù)位,在初始化程序中應(yīng)用到一定的復(fù)位延遲時(shí)間。</p><p> 復(fù)位電路軟件程序跑飛或者硬件發(fā)生錯(cuò)誤的時(shí)候產(chǎn)生一個(gè)復(fù)位信號(hào),控制MCS-51單片機(jī)從0000H單元開始執(zhí)行程序,重新執(zhí)行軟件程序。此電路的輸出端RESET接在單片機(jī)的復(fù)位引腳。</p><p> 2.3.3 基于AT89C51電容測(cè)量系統(tǒng)時(shí)鐘電路</p&g
30、t;<p> 時(shí)鐘在單片機(jī)中非常重要,單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘頻率為基準(zhǔn)。時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種為外部時(shí)鐘方式。</p><p> 內(nèi)部時(shí)鐘方式:內(nèi)部時(shí)鐘方式電路圖如下圖所示。</p><p> 圖7 內(nèi)部時(shí)鐘電路</p><p>
31、 MCS-51單片機(jī)內(nèi)部有一個(gè)用與構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個(gè)穩(wěn)定的自激振蕩器電路。</p><p> 電路中的電容C1和C2典型值通常選擇為30PF左右。對(duì)外接電容的值雖然沒有嚴(yán)格的要求,但是電容的大小會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶體的振蕩頻率的范圍通常是在1.2
32、MHz—12MHz之間。晶體的頻率越高,則系統(tǒng)的時(shí)鐘頻率也就越高,單片機(jī)的運(yùn)行速度也就越快。為了提高溫度穩(wěn)定性,應(yīng)采用溫度穩(wěn)定性能好的NPO高頻電容。MCS-51單片機(jī)常選擇振蕩頻率6MHz或12MHz的石英晶體。</p><p> 外部時(shí)鐘方式:外部時(shí)鐘方式電路圖如下圖所示。</p><p> 圖8 外部時(shí)鐘電路</p><p> 外部時(shí)鐘方式是使用外部振
33、蕩脈沖信號(hào),常用于多片MCS-51單片機(jī)同時(shí)工作,以便于同步。對(duì)外部脈沖信號(hào)只要求高電平的持續(xù)時(shí)間大于20us,一般為低于12MHz的方波。</p><p> 外部的時(shí)鐘源直接接到XTAL2端,直接輸入到片內(nèi)的時(shí)鐘發(fā)生器上。由于XTAL2的邏輯電平不是TTL的,因此要外接一個(gè)4.7k~10k的上拉電阻。</p><p> 這次的設(shè)計(jì)采用MCS-51的內(nèi)部時(shí)鐘方式。因?yàn)橥獠繒r(shí)鐘方式是用外
34、部振蕩脈沖信號(hào),用于多片MCS-51單片機(jī)同時(shí)工作。在這次設(shè)計(jì)中只用一個(gè)MCS-51單片機(jī),不需要振蕩脈沖信號(hào)。</p><p> 2.3.4 基于AT89C51電容測(cè)量系統(tǒng)按鍵電路</p><p> 按鍵是實(shí)現(xiàn)人機(jī)對(duì)話的比較直觀的接口,可以通過按鍵實(shí)現(xiàn)人們想讓單片機(jī)做的不同的工作。鍵盤是一組按鍵的集合,鍵是一種常開型開關(guān),平時(shí)按鍵的兩個(gè)觸點(diǎn)處于斷開狀態(tài),按下鍵是它們閉合。鍵盤分編碼鍵
35、盤和非編碼鍵盤,案件的識(shí)別由專用的硬件譯碼實(shí)現(xiàn),并能產(chǎn)生鍵編號(hào)或鍵值的稱為編碼鍵盤,而缺少這種鍵盤編碼電路要靠自編軟件識(shí)別的稱為非編碼鍵盤。在單片機(jī)組成的電路系統(tǒng)及智能化儀器中,用的更多的是非編碼鍵盤。圖9就是一種比較典型的按鍵電路,在按鍵沒有按下的時(shí)候,輸出的是高電平,當(dāng)按鍵按下去的時(shí)候,輸出的低電平。</p><p><b> 圖9 按鍵電路</b></p><p
36、> 2.3.5 基于AT89C51電容測(cè)量系統(tǒng)555芯片電路</p><p> 555芯片電路是一種將模擬功能與邏輯功能巧妙結(jié)合在同一硅片上的組合集成電路。它設(shè)計(jì)新穎,構(gòu)思奇巧,用途廣泛,備受電子專業(yè)設(shè)計(jì)人員和電子愛好者的青睞,人們將其戲稱為偉大的小IC。1972年,美國(guó)西格尼蒂克斯公司(Signetics)研制出Tmer NE555雙極型時(shí)基電路,設(shè)計(jì)原意是用來取代體積大,定時(shí)精度差的熱延遲繼電器等機(jī)
37、械式延遲器。但該器件投放市場(chǎng)后,人們發(fā)現(xiàn)這種電路的應(yīng)用遠(yuǎn)遠(yuǎn)超出原設(shè)計(jì)的使用范圍,用途之廣幾乎遍及電子應(yīng)用的各個(gè)領(lǐng)域,需求量極大。美國(guó)各大公司相繼仿制這種電路 1974年西格尼蒂克斯公司又在同一基片上將兩個(gè)雙極型555單元集成在一起,取名為NF556。1978年美國(guó)英特錫爾(Intelsil)研制成功CMOS型時(shí)基電路ICM555 ICM556,后來又推出將四個(gè)時(shí)基電路集成在一個(gè)芯片上的四時(shí)基電路558 由于采用CMOS型工藝和高度集成,
38、使時(shí)基電路的應(yīng)用從民用擴(kuò)展到火箭、導(dǎo)彈、衛(wèi)星、航天等高科技領(lǐng)域。在這期間,日本、西歐等各大公司和廠家也競(jìng)相仿制、生產(chǎn)。盡管世界各大半導(dǎo)體或器件公司、廠家都在生產(chǎn)各自型號(hào)的555/556時(shí)基電路,但其內(nèi)部電路大同小異,且都具有相同的引出</p><p> 555芯片電路的應(yīng)用電路很多,如:多個(gè)單穩(wěn)、多個(gè)雙穩(wěn)、單穩(wěn)和無穩(wěn),雙穩(wěn)和無穩(wěn)的組合等。在實(shí)際應(yīng)用中,除了單一品種的電路外,還可組合出很多不同電路。本次設(shè)計(jì)中應(yīng)用
39、的電路是直接反饋型無穩(wěn)類電路。電路如圖10所示。</p><p> 圖10 555芯片電路</p><p> 555芯片芯片輸出的頻率為,只要我們改變電阻R,就可以達(dá)到改變電阻量程的目的,圖中提供了四組電阻,所以說有四組的電容測(cè)量量程,每個(gè)量程之間的跨度是10倍的關(guān)系。</p><p> 在555芯片輸出方波后,由于硬件的原因,輸出的方波會(huì)有很多毛刺,為了去
40、除這些毛刺本設(shè)計(jì)中使用了一個(gè)兩輸入與門(74HC08),讓信號(hào)通過74HC08后會(huì)使輸出的波形毛刺減少很多,使單片機(jī)的測(cè)量結(jié)果變得精確。</p><p> 圖11 74HC08電路</p><p> 沒有加74HC08之前輸出的波形如下</p><p> 圖12 沒加74HC08輸出波形 </p><p> 加了74HC08之后的
41、輸出波形如下</p><p> 圖13 加了74HC08輸出波形</p><p><b> 二者的比較如下</b></p><p> 圖14 二者的比較</p><p> 2.3.6 基于AT89C51電容測(cè)量系統(tǒng)顯示電路</p><p> LCD以其微功耗、體積小、顯示內(nèi)容豐富、超
42、薄輕巧的諸多優(yōu)點(diǎn),在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用。這里介紹的字符型液晶模塊是一種用5x7點(diǎn)陣圖形來顯示字符的液晶顯示器,根據(jù)顯示的容量可以分為1行16個(gè)字、2行16個(gè)字、2行20個(gè)字等等,這里我們使用的是2行16個(gè)字的1602液晶模塊。</p><p> 圖15 LCD1602引腳圖</p><p> 1602 采用標(biāo)準(zhǔn)的16腳接口,其中:</p>
43、<p> 第1腳:VSS為地電源</p><p> 第2腳:VDD接5V正電源</p><p> 第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K 的電位器調(diào)整對(duì)比度</p><p> 第4 腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。&
44、lt;/p><p> 第5腳:RW為讀寫信號(hào)線, 高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW 為低電平時(shí)可以寫入數(shù)據(jù)。</p><p> 第6 腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><
45、;p> 第15~16腳:空腳</p><p> 1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如表1所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H 中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”</p>&
46、lt;p> 表1 CGROM和CGRAM中字符代碼與字符圖形對(duì)應(yīng)關(guān)系</p><p> 1602液晶模塊內(nèi)部的控制器共有11 條控制指令,其控制命令如下表所示。</p><p> 表2 LCD1602內(nèi)部11條控制指令</p><p> 它的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1 為高電平、0 為低電平)</p>
47、;<p> 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置</p><p> 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H</p><p> 指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效</p><p> 指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),
48、高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍</p><p> 指令5:光標(biāo)或顯示移位S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)</p><p> 指令6:功能設(shè)置命令DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平
49、時(shí)顯示5x10的點(diǎn)陣字符(有些模塊是 DL:高電平時(shí)為8位總線,低電平時(shí)為4位總線)</p><p> 指令7:字符發(fā)生器RAM地址設(shè)置</p><p> 指令8:DDRAM地址設(shè)置</p><p> 指令9:讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p> 指令
50、10:寫數(shù)據(jù)指令11:讀數(shù)據(jù)</p><p> LCD1602液晶顯示模塊可以和單片機(jī)AT89C51直接接口,電路如下圖所示。</p><p> 圖16 LCD1602與AT89C51連接圖</p><p> 液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就
51、是告訴模塊在哪里顯示字符,下表是LCD1602的內(nèi)部顯示地址</p><p> 表3 LCD1602內(nèi)部顯示地址</p><p> 圖17 LCD1602顯示電路</p><p> 2.4 各部分電路連接成整個(gè)電路圖</p><p> 當(dāng)各個(gè)部分的電路設(shè)計(jì)完成后,下面的工作就是組合成一個(gè)總的電路圖?,F(xiàn)今用的最多的電路設(shè)計(jì)軟件就是P
52、roteus,Proteus軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA</p><p> 工具(仿真軟件),從原理圖布圖、代碼調(diào)
53、試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,目前已增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。&
54、lt;/p><p><b> 圖18 總電路圖</b></p><p> 3 基于單片機(jī)電容測(cè)量軟件設(shè)計(jì)</p><p><b> 3.1 軟件設(shè)計(jì)</b></p><p> 軟件設(shè)計(jì)是一個(gè)創(chuàng)造性的過程,對(duì)一些設(shè)計(jì)者來說需要一定的資質(zhì),而最后設(shè)計(jì)通常都是由一些初步設(shè)計(jì)演變而來的。從書本上學(xué)不會(huì)
55、設(shè)計(jì),只能經(jīng)過實(shí)踐,通過對(duì)實(shí)際系統(tǒng)的研究和實(shí)踐才能學(xué)會(huì)。對(duì)于高效的軟件工程,良好的設(shè)計(jì)是關(guān)鍵,一個(gè)設(shè)計(jì)得好的軟件系統(tǒng)應(yīng)該是可直接實(shí)現(xiàn)和易于維護(hù)、易懂和可靠的。設(shè)計(jì)得不好的系統(tǒng),盡管可以工作,但很可能維護(hù)起來費(fèi)用昂貴、測(cè)試?yán)щy和不可靠,因此,設(shè)計(jì)階段是軟件開發(fā)過程中最重要的階段。</p><p> 直到最近,軟件設(shè)計(jì)在很大程度上仍是一個(gè)特定過程。一般用自然語(yǔ)言給定一個(gè)需求集,預(yù)先作非正式設(shè)計(jì),常常用流程圖的形式說
56、明,接著開始編碼,當(dāng)系統(tǒng)實(shí)現(xiàn)時(shí)設(shè)計(jì)還需修改。當(dāng)實(shí)現(xiàn)階段完成后,設(shè)計(jì)往往已與起初形式相去甚遠(yuǎn)以至于設(shè)計(jì)的原始文檔完全不適合對(duì)系統(tǒng)的描述。</p><p> 3.2 軟件設(shè)計(jì)任務(wù) </p><p> 軟件設(shè)計(jì)主要是針對(duì)硬件設(shè)計(jì)里面的控制部分的,這里指AT89C51單片機(jī),一般的單片機(jī)均可用匯編語(yǔ)言和C語(yǔ)言進(jìn)行編程。C語(yǔ)言直觀,相對(duì)比較的簡(jiǎn)單,但占用的程序存儲(chǔ)器的內(nèi)存比較大,匯編
57、語(yǔ)言是針對(duì)硬件設(shè)計(jì)的語(yǔ)言,如果想用匯編語(yǔ)言設(shè)計(jì)的話必須要對(duì)硬件有很大的了解,相對(duì)C語(yǔ)言就比較的復(fù)雜,但是比較的精簡(jiǎn),占用的程序存儲(chǔ)器的空間比較的小。作為還在學(xué)生階段的我們,用匯編語(yǔ)言進(jìn)行編程對(duì)我們理解單片機(jī)的內(nèi)部結(jié)構(gòu)、資源都有很好的幫助,但是C語(yǔ)言編程在以后的實(shí)際工作中將會(huì)大大簡(jiǎn)化自己的工作。因此本論文的程序都是基于C語(yǔ)言的。要完成的任務(wù)是:初始化程序設(shè)計(jì)、按鍵程序設(shè)計(jì)、中斷處理程序,計(jì)數(shù)器計(jì)數(shù)程序,顯示程序設(shè)計(jì)等。</p>
58、<p> 3.3 軟件設(shè)計(jì)的工具</p><p> 本次畢業(yè)設(shè)計(jì)所選用Keil C51中的編譯/連接器軟件Keil uVision2作為編譯器/連接工具。</p><p> 3.4 程序設(shè)計(jì)算法設(shè)計(jì) </p><p> 整個(gè)程序設(shè)計(jì)過程中遇到的最大的問題的如何根據(jù)測(cè)量到的方波的頻率來計(jì)算所測(cè)量的電容的大小。在前面的介紹中我們知道:555時(shí)基芯片
59、的輸出頻率跟所使用的電阻R和電容C的關(guān)系是:</p><p><b> 又因?yàn)椋?lt;/b></p><p><b> (7)</b></p><p><b> 即:</b></p><p><b> (8)</b></p><
60、p> 如果單片機(jī)采用12M的晶振,計(jì)數(shù)器T0的值增加1,時(shí)間就增加1μS,我們采用中斷的方式來啟動(dòng)和停止計(jì)數(shù)器T0,中斷的觸發(fā)方式為脈沖下降沿觸發(fā),第一次中斷到來啟動(dòng)T0,計(jì)數(shù)器的值為,第二次中斷到來停止T0,計(jì)數(shù)器器的值為,則測(cè)量方波的周期為,如何開始時(shí)刻計(jì)數(shù)器的值,則。</p><p><b> 簡(jiǎn)單時(shí)序圖如下。</b></p><p><b&g
61、t; 圖19 時(shí)序圖</b></p><p> 則: (9)</p><p> 單片機(jī)的計(jì)數(shù)器的值N=0-65535,為了測(cè)量的精度,N的取值一般在100~5000,當(dāng)電阻R越大,電容C的值就越小。我們?nèi)〔煌碾娮柚?,就得到不同的電容測(cè)量的量程。</p><p>
62、 第一檔: 1~50uF</p><p> 第二檔: 0.1~5 uF</p><p> 第三檔: 0.01~0.5 uF</p><p> 第四檔: 0.001~0.05 uF</p><p> 為了編寫程序的方便,我們只計(jì)算,后面的單位可以根據(jù)使用的量程自行添加。測(cè)
63、量范圍的大小0.001uF~655.35uF。</p><p> 3.5 軟件設(shè)計(jì)流程</p><p> 流程圖是一種傳統(tǒng)的算法表示法,它利用幾何圖形的框來代表各種不同性質(zhì)的操作,用流程線來指示算法的執(zhí)行方向。由于它簡(jiǎn)單直觀,所以應(yīng)用廣泛,特別是在早期語(yǔ)言階段,只有通過流程圖才能簡(jiǎn)明地表述算法,流程圖成為程序員們交流的重要手段。</p><p> 本次畢業(yè)設(shè)計(jì)
64、在軟件設(shè)計(jì)方面的難度是有點(diǎn)大。圖20為整個(gè)程序設(shè)計(jì)的流程。</p><p> 圖20 程序設(shè)計(jì)流程圖</p><p><b> 3.6 編寫程序</b></p><p> 有了前面的對(duì)整個(gè)系統(tǒng)的分析后畫出的流程圖,下面的工作就是根據(jù)流程圖編寫程序。編寫程序是一個(gè)相當(dāng)復(fù)雜的過程,要求編程人員具有很強(qiáng)邏輯思維,而且要在對(duì)整個(gè)系統(tǒng)工作原理相當(dāng)
65、熟悉的基礎(chǔ)上面才能完成任務(wù)。在編寫程序的時(shí)候要養(yǎng)成作注釋的習(xí)慣,這樣既利于自己以后的修改,又利于以后程序的維護(hù)。尤其是使用C語(yǔ)言編寫程序的時(shí)候更是要注釋,因?yàn)镃語(yǔ)言是一門比較高級(jí)的語(yǔ)言,C語(yǔ)言比較的煩瑣。當(dāng)然編寫程序遇到困難的時(shí)候還需要很大技巧。</p><p> 根據(jù)上面的流程圖,編寫程序:</p><p> #include "reg51.h"</p>
66、;<p> #include"intrins.h"//庫(kù)函數(shù)</p><p> #define DATA P0</p><p> sbit RW=P2^1;//1602寫數(shù)據(jù)</p><p> sbit RS=P2^0;//1602寫地址</p><p> sbit EN=P2^2; //1602工
67、作使能</p><p> sbit b_test=P3^7; //開始測(cè)量電容的按鍵輸入</p><p> sbit _reset=P3^5; //555時(shí)基芯片工作控制信號(hào)</p><p> unsigned int T_flag,N,C,i,Dis1,Dis0;</p><p> unsigned int b[6]={0X
68、13,0X0D,0X00,0X00,0X25,0X16}; //顯示C=00UF</p><p> /***********延時(shí)1MS******************/</p><p> void Delay1ms(unsigned int mm)</p><p> {unsigned int i;</p><p> for(
69、mm;mm>0;mm--)</p><p> for(i=100;i>0;i--);</p><p><b> }</b></p><p> /***************檢查忙否*****************/</p><p> void Checkstates()</p>&l
70、t;p><b> {</b></p><p> unsigned char dat;</p><p><b> RS=0;</b></p><p><b> RW=1;</b></p><p> do{EN=1;//下降沿</p><p>
71、; _nop_();//保持一定間隔</p><p><b> _nop_();</b></p><p><b> dat=DATA;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b>
72、</p><p><b> EN=0;</b></p><p> }while((dat&0x80)==1);</p><p><b> }</b></p><p> /**************LCD寫命令函數(shù)*********/</p><p> vo
73、id wcomd(unsigned char cmd)</p><p><b> {</b></p><p> Checkstates();</p><p><b> RS=0;</b></p><p><b> RW=0;</b></p><p&g
74、t;<b> DATA=cmd;</b></p><p><b> EN=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_(); </b></p><p><b> _nop_();
75、</b></p><p><b> _nop_();</b></p><p><b> EN=0;</b></p><p><b> }</b></p><p> /**********LCD寫數(shù)據(jù)函數(shù)**************/</p>&
76、lt;p> void wdata(unsigned char dat)</p><p><b> {</b></p><p> Checkstates();</p><p><b> RS=1;</b></p><p><b> RW=0;</b></p&
77、gt;<p><b> DATA=dat;</b></p><p><b> EN=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b>
78、; _nop_();</b></p><p><b> _nop_();</b></p><p><b> EN=0;</b></p><p><b> }</b></p><p> /*****************初始化***************
79、*****/</p><p> void LCDINIT()</p><p><b> {</b></p><p> Delay1ms(15);</p><p> wcomd(0x38);//功能設(shè)置</p><p> Delay1ms(5);</p><p>
80、 wcomd(0x38);//功能設(shè)置</p><p> Delay1ms(5);</p><p> wcomd(0x01);//清屏</p><p> Delay1ms(5);</p><p> wcomd(0x08);//關(guān)顯示</p><p> Delay1ms(5);</p><p
81、> wcomd(0x0c);//開顯示,不開光標(biāo)</p><p><b> }</b></p><p> /***********顯示函數(shù)**************/</p><p> void Display(void) //顯示函數(shù)</p><p><b> {</b><
82、/p><p> unsigned char i,j;</p><p> unsigned char a[12]={0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53};//顯示measurements</p><p> LCDINIT();</p><p> for(i=
83、0;i<12;i++)//寫顯示第一行</p><p> { wcomd(0x80+i);</p><p> Delay1ms(1);</p><p> wdata(a[i]);</p><p> Delay1ms(1);</p><p><b> }</b></p>
84、<p> for(j=0;j<6;j++)//寫顯示第二行</p><p><b> {</b></p><p> wcomd(0xc0+j);</p><p> Delay1ms(1);</p><p> wdata(0x30+b[j]);</p><p> Del
85、ay1ms(1);</p><p><b> }</b></p><p> Delay1ms(150);</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p>
86、<p> IE=0x81; //打開全部的中斷控制,并開啟外部中斷允許</p><p> TMOD=0x09; //T0為16位計(jì)數(shù)工作方式1</p><p> IT0=1; //設(shè)置外部中斷的觸發(fā)的方式為脈沖觸發(fā)</
87、p><p><b> TH0=0x00;</b></p><p><b> TL0=0x00;</b></p><p><b> T_flag=0;</b></p><p><b> _reset=0;</b></p><p>
88、<b> while(1)</b></p><p><b> {</b></p><p> while(!b_test) //如果有測(cè)量按鍵輸入就往下執(zhí)行</p><p><b> {</b></p><p><b> i
89、=0;</b></p><p> _reset=1; //啟動(dòng)555時(shí)基芯片</p><p> EX0=1; //開啟中斷0</p><p> while(_reset) //超出等待時(shí)間,中斷還沒有過來,就退出</p><p><b> {<
90、/b></p><p><b> i++;</b></p><p> if(i>5000) //設(shè)置最長(zhǎng)等待時(shí)間</p><p><b> {</b></p><p> _reset=0; //最長(zhǎng)等待時(shí)間到還沒有中斷,停止555</p><p>&
91、lt;b> }</b></p><p><b> }</b></p><p> if(N<100) //如果計(jì)數(shù)值小于100,顯示SM,表示應(yīng)換用小一點(diǎn)的量程</p><p><b> {</b></p><p> b[3]=0X1D;</p&
92、gt;<p> b[2]=0X23;</p><p><b> }</b></p><p> if(N>5000) //如果計(jì)數(shù)值大于5000,顯示LA,表示應(yīng)換用大一點(diǎn)的量程</p><p><b> {</b></p><p> b[3]=0X11;&
93、lt;/p><p> b[2]=0X1C;</p><p><b> }</b></p><p> if(N>=100 && N<=5000)</p><p><b> {</b></p><p> C=N/100; //計(jì)算
94、電容的大小</p><p> b[2]=C/10; //計(jì)算電容值的十位</p><p> b[3]=C-b[2]*10; //計(jì)算電容值的各位</p><p><b> }</b></p><p><b> }</b></p><p> Displa
95、y(); //顯示電容的大小</p><p><b> }</b></p><p><b> }</b></p><p> void int0(void) interrupt 0 //第一次中斷開始計(jì)數(shù),第二個(gè)中斷停止計(jì)數(shù)</p><p><b> {</b><
96、;/p><p> T_flag=!T_flag;</p><p> if(T_flag==1)</p><p><b> {</b></p><p> TR0=1; //開始計(jì)時(shí)</p><p><b> }</b></p><p&g
97、t; if(T_flag==0)</p><p><b> {</b></p><p> TR0=0; //停止計(jì)時(shí)</p><p> EX0=0; //關(guān)閉中斷</p><p> _reset=0; //停止發(fā)出方波</p><p> N=T
98、H0*256+TL0; //計(jì)算計(jì)數(shù)器的值</p><p><b> N=N*5/3;</b></p><p> TH0=0x00; //恢復(fù)初值</p><p><b> TL0=0x00;</b></p><p><b> }</b></p>
99、<p><b> }</b></p><p><b> 3.7結(jié)果分析</b></p><p> 通過仿真得到如下數(shù)據(jù)表格</p><p> 表4 電容測(cè)量值與實(shí)際值的比較</p><p> 通過表中的數(shù)據(jù)可以看出仿真的數(shù)據(jù)還是比較準(zhǔn)確的,但是在實(shí)際的操作中,測(cè)量值可能沒有這
100、么準(zhǔn)確,因?yàn)樵趯?shí)際的電路中,555芯片輸出的方波可能不會(huì)如仿真時(shí)的那么標(biāo)準(zhǔn)平滑,即使加上一些去除毛刺和去干擾的電路例如加上一個(gè)兩輸入與門或者加上一個(gè)過零比較器或者瀉回比較器波形還是不會(huì)那么理想,再加上單片機(jī)的測(cè)量也會(huì)存在一些誤差,所以綜合以上的一些考慮,真實(shí)中的測(cè)量結(jié)果肯定要比仿真中的結(jié)果誤差大。</p><p> 所以本次的方案算然說不能過非常精確的測(cè)出結(jié)果來,但是相比較一些能夠測(cè)出比較精確結(jié)果的電路來,本電
101、路是實(shí)現(xiàn)起來很容易,測(cè)量結(jié)果也比較準(zhǔn)確,實(shí)際操作中比較有保障的一種電路。</p><p><b> 4 主要元器件介紹</b></p><p> AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4Kb字節(jié)的快速可擦寫的只讀程序存儲(chǔ)器(PEROM)和128 字節(jié)的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存
102、儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51產(chǎn)品指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。</p><p><b> 主要性能參數(shù):</b></p><p> 1)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容;</p><p> 2)4K字節(jié)可重復(fù)寫
103、flash閃速存儲(chǔ)器;</p><p> 3)1000次擦寫周期;</p><p> 4)全靜態(tài)操作:0HZ-24MHZ;</p><p> 5)三級(jí)加密程序存儲(chǔ)器;</p><p> 6)128*8字節(jié)內(nèi)部RAM;</p><p> 7)32個(gè)可編程I/O口;</p><p> 8
104、)2個(gè)16位定時(shí)/計(jì)數(shù)器;</p><p><b> 9)6個(gè)中斷源;</b></p><p> 10)可編程串行UART通道;</p><p> 11)低功耗空閑和掉電模式。</p><p><b> 功能特性概述:</b></p><p> AT89C51提供以
105、下標(biāo)準(zhǔn)功能:4K 字節(jié)閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。</p>
106、<p><b> 引腳功能說明:</b></p><p><b> Vcc:電源電壓</b></p><p><b> GND:地</b></p><p> P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)位口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)邏輯門
107、電路,對(duì)端口寫“1”可 作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。</p><p> P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可做熟出口。做輸出口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉
108、低時(shí)會(huì)輸出一個(gè)電流。Flash編程和程序校驗(yàn)期間,P1接受低8位地址。</p><p> P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部地山拉電阻把端口拉到高電平,此時(shí)可作為輸出口,作輸出口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。</p><p> P3口:P3口
109、是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),他們被內(nèi)部上拉電阻拉高并可作為輸出口。做輸出端時(shí),被外部拉低的P3口將用上拉電阻輸出電流。P3口還接收一些用于閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。</p><p><b> 表5 1P3功能</b></p><p> RST:復(fù)位輸入。當(dāng)振
110、蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。</p><p> ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址所存允許)輸出脈沖用于所存地址的低8位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。</p><p> 對(duì)fl
111、ash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p> 如有不要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該外置位后,只要一條MOVX和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。</p><p> PSEN:程序存儲(chǔ)允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)A
112、T89C51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩個(gè)^PSEN有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,這兩次有效的PSEN信號(hào)不出現(xiàn)。</p><p> EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H---FFFFH),EA端必須保持低電平(接地)。需注意的是; 如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p>
113、 如 EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。</p><p> Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源VPP,當(dāng)然這必須是該器件是使用12V編程電壓VPP。</p><p> XTAL1: 振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸出端。</p><p> XTAL2: 振蕩器反相放大器的輸出端。</p>
114、<p><b> 時(shí)鐘振蕩器:</b></p><p> AT89C51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1、C2雖然沒有十分嚴(yán)格的要求,但電容
115、容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用30PF,而如使用陶瓷諧振器建議選擇40PF。</p><p> 用戶也可以采用外部時(shí)鐘。這種情況下,外部時(shí)鐘脈沖接到XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則懸空。</p><p> 由于外部時(shí)鐘信號(hào)是通過一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以對(duì)外部時(shí)鐘信號(hào)
116、的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)要求。在空閑工作模式狀態(tài),CPU保持睡眠狀態(tài)而所有片內(nèi)的外設(shè)仍保持激活狀態(tài),這種方式由軟件產(chǎn)生。此時(shí),片內(nèi)RAM和所有特殊功能寄存器的內(nèi)容保持不變。空閑模式可由任何允許的中斷請(qǐng)求或硬件復(fù)位終止。終止空閑工作模式的方法有兩種,其一是任何一條被允許中斷的事件被激活,即可終止空閑工作模式。程序會(huì)首先響應(yīng)中斷,進(jìn)入中斷服務(wù)程序,執(zhí)行完中斷服務(wù)程序并僅隨終端返回指令,下
117、一條要執(zhí)行的指令就是使單片機(jī)進(jìn)入空閑模式那條指令后面的一條指令。其二是通過硬件復(fù)位也可將空閑工作模式終止,需要注意的是,當(dāng)由硬件復(fù)位來終止空閑模式時(shí),CPU通常是從激活空閑模式那條指令的下</p><p> 圖21 外部時(shí)鐘電路 圖22 外部時(shí)鐘輸入</p><p> 一條指令開始繼續(xù)執(zhí)行程序的,要完成內(nèi)部復(fù)位操作,硬件復(fù)位脈
118、沖要保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)有效,在這種情況下,內(nèi)部禁止CPU訪問片內(nèi)RAM,而允許訪問其它端口。為了避免可能對(duì)端口產(chǎn)生以外寫入,激活空閑模式的那條指令后一條指令不應(yīng)該是一條對(duì)端口或外部存儲(chǔ)器的寫入指令。</p><p> 在掉電模式下,震蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi)RAM和特殊功能寄存器的內(nèi)容在終止掉電模式前被凍結(jié)。退出掉電模式的唯一方法是硬件復(fù)位,復(fù)位后將重新定義全
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的電容測(cè)量?jī)x設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----基于單片機(jī)的電容測(cè)量?jī)x設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)--基于單片機(jī)的電容測(cè)量?jī)x設(shè)計(jì)
- 基于單片機(jī)簡(jiǎn)易信號(hào)測(cè)量?jī)x畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的溫度測(cè)量?jī)x設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的脈搏測(cè)量?jī)x設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)
- 基于單片機(jī)的脈搏測(cè)量?jī)x畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)的溫度測(cè)量?jī)x的設(shè)計(jì)【畢業(yè)設(shè)計(jì)論文】
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的溫度測(cè)量?jī)x的設(shè)計(jì)
- 基于單片機(jī)的脈搏測(cè)量?jī)x的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)的脈搏測(cè)量?jī)x的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)的脈搏測(cè)量?jī)x的設(shè)計(jì)
- 基于at89c51單片機(jī)的噪聲測(cè)量?jī)x設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)的溫度測(cè)量?jī)x設(shè)計(jì)【畢業(yè)論文】
- 基于avr單片機(jī)的風(fēng)速測(cè)量?jī)x設(shè)計(jì)
- 基于avr單片機(jī)的風(fēng)速測(cè)量?jī)x設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)——在線電容測(cè)量?jī)x設(shè)計(jì)
- 基于單片機(jī)的脈搏測(cè)量?jī)x的設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的脈搏測(cè)量?jī)x
- 基于單片機(jī)的血壓測(cè)量?jī)x設(shè)計(jì)開題報(bào)告
評(píng)論
0/150
提交評(píng)論