《光電傳感器測(cè)速》word版.doc
光電開(kāi)關(guān)轉(zhuǎn)速測(cè)量系統(tǒng)設(shè)計(jì)摘 要:本文設(shè)計(jì)了一種基于AT89S52單片機(jī)的光電開(kāi)關(guān)轉(zhuǎn)速測(cè)量系統(tǒng)。該系統(tǒng)采用對(duì)射式光電開(kāi)關(guān)產(chǎn)生與齒輪相對(duì)應(yīng)的脈沖信號(hào),使用AT89S52單片機(jī)采樣脈沖信號(hào)并計(jì)算每分鐘內(nèi)脈沖信號(hào)的數(shù)目,即電機(jī)對(duì)應(yīng)的轉(zhuǎn)速值,最終系統(tǒng)通過(guò)1602LCD液晶顯示屏實(shí)時(shí)顯示電機(jī)的轉(zhuǎn)速值。經(jīng)過(guò)仿真測(cè)試和軟硬件系統(tǒng)的搭建,本系統(tǒng)滿足設(shè)計(jì)要求,且結(jié)構(gòu)簡(jiǎn)單、實(shí)用。系統(tǒng)在降低測(cè)速器成本,提高測(cè)速穩(wěn)定性及可靠性等方面有一定價(jià)值,具有廣泛的應(yīng)用前景。關(guān)鍵詞:轉(zhuǎn)速測(cè)量,單片機(jī),光電開(kāi)關(guān) 1 緒論1.1 課題背景 一種量大面廣的產(chǎn)品,廣泛應(yīng)用于國(guó)民經(jīng)濟(jì)的各個(gè)行業(yè)中。而電機(jī)的生產(chǎn)王國(guó)正在由日本轉(zhuǎn)移到中國(guó),尤其是浙江溫州和廣東珠三角地區(qū)。廣東省佛山市順德區(qū)就有大大小小的電機(jī)生產(chǎn)廠家上百家,每年生產(chǎn)上億臺(tái)電機(jī),同時(shí)順德有許多家電生產(chǎn)廠家,家電中也要大量用到電機(jī),不管是電機(jī)生產(chǎn)廠家,還是將電機(jī)作為它們的產(chǎn)品中的零部件的廠家,要將它們的產(chǎn)品打到國(guó)際市場(chǎng)上,迫切需要IS09002認(rèn)證,IS09002要求生產(chǎn)產(chǎn)品所用的零部件以及最終的產(chǎn)品都要經(jīng)過(guò)本單位的質(zhì)量檢測(cè),也就是說(shuō),在順德,每年要檢測(cè)幾億個(gè)電機(jī),對(duì)電機(jī)的測(cè)試儀的需求非常迫切。電機(jī)測(cè)試的參數(shù)主要有:效率、功率因數(shù)、定子輸入電流、轉(zhuǎn)矩、轉(zhuǎn)速等,本課題主要研究轉(zhuǎn)速的測(cè)量。1.2 國(guó)內(nèi)外發(fā)展情況轉(zhuǎn)速是各類(lèi)電機(jī)運(yùn)行中的一個(gè)重要物理量,如何準(zhǔn)確、快速而又方便地測(cè)量電機(jī)轉(zhuǎn)速,極為重要。目前國(guó)內(nèi)外常用的轉(zhuǎn)速測(cè)量方法有離心式轉(zhuǎn)速表測(cè)速法、測(cè)速發(fā)電機(jī)測(cè)速法、閃光測(cè)速法、光電碼盤(pán)測(cè)速法和霍爾元件測(cè)速法。(1)離心式轉(zhuǎn)速表測(cè)速法離心式轉(zhuǎn)速表是利用離心原理制成的測(cè)速儀表,可以直接讀出轉(zhuǎn)速。測(cè)轉(zhuǎn)速時(shí),轉(zhuǎn)速表的端頭要插入電機(jī)轉(zhuǎn)軸的中心孔內(nèi),插入前,應(yīng)注意清除中心孔中的油污,并使轉(zhuǎn)速表的軸與電機(jī)的軸保持同心,不可上下左右偏斜,否則易將表軸扭壞,并影響準(zhǔn)確讀數(shù),而且轉(zhuǎn)速表要間歇使用,以減少磨損和發(fā)熱。如果要改變量程,還要將轉(zhuǎn)速表取出停轉(zhuǎn)后再改變量程2。(2) 測(cè)速發(fā)電機(jī)測(cè)速法測(cè)速發(fā)電機(jī)測(cè)轉(zhuǎn)速時(shí),測(cè)速發(fā)電機(jī)連接到被測(cè)電機(jī)的軸端,將被測(cè)電機(jī)的機(jī)械轉(zhuǎn)速變換為電壓信號(hào)輸出E=CeFn,在輸出端接一個(gè)刻度以轉(zhuǎn)速為單位的電壓表,即可讀出轉(zhuǎn)速。(3) 閃光測(cè)速法閃光測(cè)速法是利用可調(diào)脈沖頻率的專(zhuān)用電源施加于閃光燈上,將閃光燈的燈光照到電機(jī)轉(zhuǎn)動(dòng)部分(可在電機(jī)端軸上粘貼一張標(biāo)記紙片),當(dāng)調(diào)整脈沖頻率使黑色扇形片靜止不動(dòng)時(shí),此時(shí)脈沖的頻率是與電機(jī)轉(zhuǎn)動(dòng)的轉(zhuǎn)速是同步的。若脈沖頻率為f,則電機(jī)的轉(zhuǎn)速為n=60f(rmin) 。(4) 光電碼盤(pán)測(cè)速法光電碼盤(pán)測(cè)速法是通過(guò)測(cè)出轉(zhuǎn)速信號(hào)的頻率或周期來(lái)測(cè)量電機(jī)轉(zhuǎn)速的一種無(wú)接觸測(cè)速法。光電碼盤(pán)安裝在轉(zhuǎn)子端軸上,隨著電機(jī)的轉(zhuǎn)動(dòng),光電碼盤(pán)也跟著一起轉(zhuǎn)動(dòng),如果有一個(gè)固定光源照射在碼盤(pán)上,則可利用光敏元件來(lái)接收到的光的次數(shù)就是碼盤(pán)的編碼數(shù)6。若編碼數(shù)為60,測(cè)量時(shí)間為t,測(cè)量到的脈沖數(shù)為N,則n=N/t。(5) 霍爾元件測(cè)速法霍爾元件測(cè)速法是利用霍爾開(kāi)關(guān)元件測(cè)轉(zhuǎn)速的?;魻栭_(kāi)關(guān)元件內(nèi)含穩(wěn)壓電路、霍爾電勢(shì)發(fā)生器、放大器、施密特觸發(fā)器和輸出電路。輸出電平與TTL電平兼容,在電機(jī)轉(zhuǎn)軸上裝一個(gè)圓盤(pán),圓盤(pán)上裝若干對(duì)小磁鋼,小磁鋼越多,分辨率越高,霍爾開(kāi)關(guān)固定在小磁鋼附近,當(dāng)電機(jī)轉(zhuǎn)動(dòng)時(shí),每當(dāng)一個(gè)小磁鋼轉(zhuǎn)過(guò)霍爾開(kāi)關(guān),霍爾開(kāi)關(guān)便輸出一個(gè)脈沖,計(jì)算出單位時(shí)間的脈沖數(shù),即可確定旋轉(zhuǎn)體的轉(zhuǎn)速。在這五種測(cè)速方法中,離心式轉(zhuǎn)速表測(cè)速法和測(cè)速發(fā)電機(jī)測(cè)速法所用的都是現(xiàn)成的測(cè)速儀表,容易得到。但轉(zhuǎn)速表或測(cè)速機(jī)都要與電機(jī)同軸連接,一方面增加了電機(jī)機(jī)組安裝難度,另一方面有些微電機(jī)功率很小,轉(zhuǎn)速表或測(cè)速機(jī)消耗的功率占了微電機(jī)大部分,更有甚者微電機(jī)甚至拖不動(dòng)這些儀表,所以對(duì)微特電機(jī)的測(cè)速,這二種方法不適用?;魻栐y(cè)速法和光電碼盤(pán)測(cè)速法的測(cè)速方法基本類(lèi)似,都是在轉(zhuǎn)軸上裝一個(gè)很輕巧的傳感器,將電機(jī)的轉(zhuǎn)動(dòng)信號(hào)通過(guò)磁(霍爾元件)或光(光電碼盤(pán))轉(zhuǎn)換為電脈沖,從而通過(guò)計(jì)算電脈沖的個(gè)數(shù)來(lái)測(cè)速。閃光測(cè)速法目前實(shí)際應(yīng)用不廣泛,主要是光源的問(wèn)題。本課題研究的是其中的光電碼盤(pán)測(cè)速法。1.3 本論文的研究?jī)?nèi)容本文針對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行測(cè)量,以單片機(jī)為核心對(duì)光電開(kāi)關(guān)產(chǎn)生的數(shù)字信號(hào)進(jìn)行運(yùn)算,從而測(cè)得電機(jī)的轉(zhuǎn)速,然后用1602LCD液晶顯示屏把電機(jī)的轉(zhuǎn)速顯示出來(lái)。即通過(guò)光電開(kāi)關(guān)將電機(jī)的轉(zhuǎn)數(shù)轉(zhuǎn)換成0,1的數(shù)字量,只要轉(zhuǎn)軸每旋轉(zhuǎn)一周,產(chǎn)生一個(gè)或固定的多個(gè)脈沖,并將脈沖送入單片機(jī)中進(jìn)行計(jì)數(shù)和計(jì)算,就可獲得轉(zhuǎn)速的信息。2 系統(tǒng)設(shè)計(jì)系統(tǒng)主要由AT89S52單片機(jī)處理系統(tǒng)、電機(jī)、傳感器檢測(cè)單元、信號(hào)處理單元和顯示系統(tǒng)等幾個(gè)部分組成,如圖1:轉(zhuǎn)動(dòng)系統(tǒng)信號(hào)采集及其處理單片機(jī)處理電路 顯示電路圖1 系統(tǒng)組成框圖(1) 轉(zhuǎn)動(dòng)系統(tǒng)本設(shè)計(jì)中采用對(duì)射式光電傳感器測(cè)量電機(jī)轉(zhuǎn)速。當(dāng)不透光的物體擋住發(fā)射與接收之間的間隙時(shí),開(kāi)關(guān)管關(guān)斷,反之打開(kāi)。測(cè)裝置按照發(fā)動(dòng)機(jī)上傳感器的實(shí)際安裝位置進(jìn)行安裝。將信號(hào)盤(pán)固定在電動(dòng)機(jī)轉(zhuǎn)軸上,光電轉(zhuǎn)速傳感器正對(duì)著信號(hào)盤(pán)。測(cè)量頭由光電轉(zhuǎn)速傳感器組成,而且測(cè)量頭兩端的距離與信號(hào)盤(pán)的距離相等。測(cè)量用器件封裝后,固定裝在貼近信號(hào)盤(pán)的位置,當(dāng)信號(hào)盤(pán)轉(zhuǎn)動(dòng)時(shí),光電元件即可輸出正負(fù)交替的周期性脈沖信號(hào)。信號(hào)盤(pán)旋轉(zhuǎn)一周產(chǎn)生的脈沖數(shù),等于其上的齒數(shù)。因此,脈沖信號(hào)的頻率大小就反映了信號(hào)盤(pán)轉(zhuǎn)速的高低。該裝置的優(yōu)點(diǎn)是輸出信號(hào)的幅值與轉(zhuǎn)速無(wú)關(guān),而且可測(cè)轉(zhuǎn)速范圍大,一般為1r/s104 r/s以上,精確度高。(2) 信號(hào)采集及其處理被測(cè)物理量經(jīng)過(guò)傳感器變換后,變?yōu)殡娮?、電流、電壓、電感等某種電參數(shù)的變化值。為了進(jìn)行信號(hào)的分析、處理、顯示和記錄,須對(duì)信號(hào)作放大、運(yùn)算、分析等處理,這就引入了中間變化電路。(3) 單片機(jī)處理電路用于測(cè)量轉(zhuǎn)速的脈沖通過(guò)P3.5/T1輸入單片機(jī),用AT89S52的定時(shí)計(jì)數(shù)器T1對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù),用定時(shí)計(jì)數(shù)器T0進(jìn)行定時(shí),每10ms產(chǎn)生一個(gè)中斷對(duì)1602LCD液晶顯示屏進(jìn)行刷新,產(chǎn)生500個(gè)中斷后(即5s),進(jìn)行一次轉(zhuǎn)速處理,再通過(guò)單片機(jī)對(duì)T1的脈沖數(shù)進(jìn)行運(yùn)算轉(zhuǎn)換后,用1602LCD液晶顯示屏顯示電機(jī)的轉(zhuǎn)速。(4) 顯示電路 系統(tǒng)通過(guò)1602LCD液晶顯示屏實(shí)時(shí)顯示電機(jī)的轉(zhuǎn)速值。3 硬件設(shè)計(jì)硬件設(shè)計(jì)電路圖如附錄1所示。本系統(tǒng)分為信號(hào)采集與處理單元,主控單元以及顯示單元三大部分。3.1 信號(hào)采集及其處理單元本設(shè)計(jì)中采用對(duì)射式光電傳感器測(cè)量電機(jī)轉(zhuǎn)速。當(dāng)不透光的物體擋住發(fā)射與接收之間的間隙時(shí),開(kāi)關(guān)管關(guān)斷,反之打開(kāi)。可以制作一個(gè)遮光葉片如圖2(b)所示,安裝在電機(jī)轉(zhuǎn)軸上,當(dāng)葉片轉(zhuǎn)動(dòng)時(shí),光電開(kāi)關(guān)產(chǎn)生脈沖信號(hào)。當(dāng)葉片數(shù)較多時(shí),旋轉(zhuǎn)一周可以獲得多個(gè)脈沖信號(hào)。 假設(shè)系統(tǒng)采用10個(gè)葉片,在一秒鐘的內(nèi)產(chǎn)生了100脈沖,則電機(jī)的轉(zhuǎn)速就為10r/s。 (a)傳感器 (b)轉(zhuǎn)盤(pán)圖2 傳感器及轉(zhuǎn)盤(pán)3.1.1 轉(zhuǎn)速測(cè)量原理本設(shè)計(jì)采用頻率測(cè)量法,其測(cè)量原理為,在固定的測(cè)量時(shí)間內(nèi),計(jì)取轉(zhuǎn)速傳感器發(fā)生的脈沖個(gè)數(shù)(即頻率),從而算出實(shí)際轉(zhuǎn)速。設(shè)固定的測(cè)量時(shí)間T (min),計(jì)數(shù)器計(jì)取的脈沖個(gè)數(shù)m1,假定脈沖發(fā)生器每轉(zhuǎn)輸出p個(gè)脈沖,對(duì)應(yīng)被測(cè)轉(zhuǎn)速為N(r/min),就可算出實(shí)際轉(zhuǎn)速值N = 60m1/ pT。3.1.2 檢測(cè)裝置安裝 此檢測(cè)裝置按照發(fā)動(dòng)機(jī)上傳感器的實(shí)際安裝位置進(jìn)行安裝。如圖3,將信號(hào)盤(pán)固定在電動(dòng)機(jī)轉(zhuǎn)軸上,光電轉(zhuǎn)速傳感器正對(duì)著信號(hào)盤(pán)。光電轉(zhuǎn)速傳感器接有4根導(dǎo)線,用于連接發(fā)光二極管和光敏三極管,其中發(fā)光二極管的紅線連接其正極,綠線連接其負(fù)極,光敏三級(jí)管的紅線連接其集電極,綠線連接其發(fā)射極。測(cè)量頭由光電轉(zhuǎn)速傳感器組成,而且測(cè)量頭兩端的距離與信號(hào)盤(pán)的距離相等。測(cè)量用器件封裝后,固定裝在貼近信號(hào)盤(pán)的位置,當(dāng)信號(hào)盤(pán)轉(zhuǎn)動(dòng)時(shí),光電元件即可輸出正負(fù)交替的周期性脈沖信號(hào)。信號(hào)盤(pán)旋轉(zhuǎn)一周產(chǎn)生的脈沖數(shù),等于其上的齒數(shù)。因此,脈沖信號(hào)的頻率大小就反映了信號(hào)盤(pán)轉(zhuǎn)速的高低。該裝置的優(yōu)點(diǎn)是輸出信號(hào)的幅值與轉(zhuǎn)速無(wú)關(guān),而且可測(cè)轉(zhuǎn)速范圍大,一般為1r/s104 r/s以上,精確度高。圖3 轉(zhuǎn)速檢測(cè)裝置3.1.3 信號(hào)處理電路 被測(cè)物理量經(jīng)過(guò)傳感器變換后,變?yōu)殡娮琛㈦娏?、電壓、電感等某種電參數(shù)的變化值。為了進(jìn)行信號(hào)的分析、處理、顯示和記錄,須對(duì)信號(hào)作放大、運(yùn)算、分析等處理,這就引入了中間變化電路。根據(jù)系統(tǒng)需要設(shè)計(jì)了如圖4所示的中間變換電路。其中,R1、R4 起限流作用,R2 起分流作用,R3 為輸出電阻。當(dāng)轉(zhuǎn)盤(pán)上的梯形孔旋轉(zhuǎn)至與光電開(kāi)關(guān)的透光位置重合時(shí),輸出低電平;當(dāng)通光孔被遮住時(shí),輸出高電平。圖4 電路圖目前,光電開(kāi)關(guān)已被用作物位檢測(cè)、液位控制、產(chǎn)品計(jì)數(shù)、寬度判別、速度檢測(cè)、定長(zhǎng)剪切、孔洞識(shí)別、信號(hào)延時(shí)、自動(dòng)門(mén)傳感、色標(biāo)檢出、沖床和剪切機(jī)以及安全防護(hù)等諸多領(lǐng)域。此外,利用紅外線的隱蔽性,還可在銀行、倉(cāng)庫(kù)、商店、辦公室以及其它需要的場(chǎng)合作為防盜警戒之用。光電開(kāi)關(guān)把發(fā)射端和接收端之間光的強(qiáng)弱變化轉(zhuǎn)化為電流的變化以達(dá)到探測(cè)的目的。由于光電開(kāi)關(guān)輸出回路和輸入回路是電隔離的(即電緣絕),所以它可以在許多場(chǎng)合得到應(yīng)用。光電傳感器具有線性度好、分辨率高、噪音小和精度高、無(wú)觸點(diǎn)、無(wú)機(jī)械碰撞、響應(yīng)快、控制精度高,而且能識(shí)別色標(biāo)等優(yōu)點(diǎn),在此我們選擇光電轉(zhuǎn)速傳感器來(lái)進(jìn)行轉(zhuǎn)速的檢測(cè)。3.1.3.1 光電開(kāi)關(guān)有以下幾種類(lèi)型(1)漫反射式光電開(kāi)關(guān):它是一種集發(fā)射器和接收器于一體的傳感器,當(dāng)有被檢測(cè)物體經(jīng)過(guò)時(shí),物體將光電開(kāi)關(guān)發(fā)射器發(fā)射的足夠量的光線反射到接收器,于是光電開(kāi)關(guān)就產(chǎn)生了開(kāi)關(guān)信號(hào)。當(dāng)被檢測(cè)物體的表面光亮或其反光率極高時(shí),漫反射式的光電開(kāi)關(guān)是首選的檢測(cè)模式(2)鏡反射式光電開(kāi)關(guān):它亦集發(fā)射器與接收器于一體,光電開(kāi)關(guān)發(fā)射器發(fā)出的光線經(jīng)過(guò)反射鏡反射回接收器,當(dāng)被檢測(cè)物體經(jīng)過(guò)且完全阻斷光線時(shí),光電開(kāi)關(guān)就產(chǎn)生了檢測(cè)開(kāi)關(guān)信號(hào)。(3)對(duì)射式光電開(kāi)關(guān):它包含了在結(jié)構(gòu)上相互分離且光軸相對(duì)放置的發(fā)射器和接收器,發(fā)射器發(fā)出的光線直接進(jìn)入接收器,當(dāng)被檢測(cè)物體經(jīng)過(guò)發(fā)射器和接收器之間且阻斷光線時(shí),光電開(kāi)關(guān)就產(chǎn)生了開(kāi)關(guān)信號(hào)。當(dāng)檢測(cè)物體為不透明時(shí),對(duì)射式光電開(kāi)關(guān)是最合適的檢測(cè)裝置。(4)槽式光電開(kāi)關(guān):它通常采用標(biāo)準(zhǔn)的U字型結(jié)構(gòu),其發(fā)射器和接收器分別位于U型槽的兩邊,并形成一光軸,當(dāng)被檢測(cè)物體經(jīng)過(guò)U型槽且阻斷光軸時(shí),光電開(kāi)關(guān)就產(chǎn)生了開(kāi)關(guān)量信號(hào)。槽式光電開(kāi)關(guān)比較適合檢測(cè)高速運(yùn)動(dòng)的物體,并且它能分辨透明與半透明物體,使用安全可靠。(5)光纖式光電開(kāi)關(guān):它采用塑料或玻璃光纖傳感器來(lái)引導(dǎo)光線,可以對(duì)距離遠(yuǎn)的被檢測(cè)物體進(jìn)行檢測(cè)。通常光纖傳感器分為對(duì)射式和漫反射式。 本課題中使用的光電開(kāi)關(guān)是根據(jù)光敏二極管工作原理制造的一種感應(yīng)接收光強(qiáng)度變化的器件,當(dāng)它發(fā)出的光被目標(biāo)反射或阻斷時(shí),則接收器感應(yīng)出相應(yīng)的電信號(hào)。它包含調(diào)制光源,由光敏元件等組成的光學(xué)系統(tǒng)、放大器、開(kāi)關(guān)或模擬量輸出裝置,其工作原理如圖5所示。光電式傳感器由獨(dú)立且相對(duì)放置的光發(fā)射器和收光器組成。當(dāng)目標(biāo)通過(guò)光發(fā)射器和收光器之間并阻斷光線時(shí),傳感器輸出信號(hào)。它是效率最高、最可靠的檢測(cè)裝置。槽形(U形)光電開(kāi)關(guān)是對(duì)射式的變形,其優(yōu)點(diǎn)是無(wú)須調(diào)整光軸。 圖5 光電傳感器原理圖3.2主控單元如下圖所示,X1為12MHz的晶振,9口為復(fù)位接口,通過(guò)開(kāi)關(guān)控制。用于測(cè)量轉(zhuǎn)速的脈沖通過(guò)P3.5/T1輸入單片機(jī),用AT89S52的定時(shí)計(jì)數(shù)器T1對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù),用定時(shí)計(jì)數(shù)器T0進(jìn)行定時(shí),每10ms產(chǎn)生一個(gè)中斷對(duì)1602LCD液晶顯示屏進(jìn)行刷新,產(chǎn)生100個(gè)中斷后(即1s),進(jìn)行一次轉(zhuǎn)速處理,再通過(guò)單片機(jī)對(duì)T1的脈沖數(shù)進(jìn)行運(yùn)算轉(zhuǎn)換后,用1602LCD液晶顯示屏顯示電機(jī)的轉(zhuǎn)速。如圖8所示: 圖8 AT89S52單片機(jī)處理電路3.2.1 時(shí)鐘電路 單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘控制信號(hào)為基準(zhǔn),有條不紊地一拍一拍地工作。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。本設(shè)計(jì)中此采用內(nèi)部時(shí)鐘方式,如圖9所示,以石英晶體振蕩器和兩個(gè)片電容組成外部振蕩源。片內(nèi)的高增益反相放大器通過(guò)XTAL1、XTAL2外接,作為反饋元件的片外晶體振蕩器與電容組成的并聯(lián)諧振回路構(gòu)成一個(gè)自激振蕩器,向內(nèi)部時(shí)鐘電路提供振蕩時(shí)鐘。振蕩器的頻率取決于晶振的振蕩頻率,振蕩頻率范圍為1.212MHz。工程應(yīng)用時(shí)通常采用6MHz或12MHz。圖中X1為12MHz,電容C2、C4為33pF,它們一起構(gòu)成此單片機(jī)的自激振蕩器。圖9 時(shí)鐘電路連接圖3.2.2 復(fù)位電路單片機(jī)的RST引腳為復(fù)位(Reset)端。當(dāng)單片機(jī)振蕩器工作時(shí),該引腳上出現(xiàn)持續(xù)兩個(gè)機(jī)器周期的低電平,就可以實(shí)現(xiàn)系統(tǒng)復(fù)位,使單片機(jī)回到初始狀態(tài)。如圖10所示,本設(shè)計(jì)采用手動(dòng)復(fù)位,用一個(gè)電容與一個(gè)10K電阻串聯(lián)組成,電阻接VCC,電容接地,RESET腳接在它們中間,RC選擇10uF,按鍵與200R電阻串聯(lián),在電容兩端并聯(lián),就成了按鍵復(fù)位電路,未上電時(shí),RST端為高電平,只要按下這個(gè)按鍵,RST端轉(zhuǎn)換為低電平,經(jīng)過(guò)兩個(gè)機(jī)器周期后,單片機(jī)就能復(fù)位。圖10 AT89S52單片機(jī)處理電路3.2.3 AT89S52單片機(jī)介紹 AT89S52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。 主要性能(1)與MCS-51單片機(jī)產(chǎn)品兼容(2)8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器(3)1000次擦寫(xiě)周期(4)全靜態(tài)操作:0Hz33Hz(5)三級(jí)加密程序存儲(chǔ)器(6)32個(gè)可編程I/O口線(7)三個(gè)16位定時(shí)器/計(jì)數(shù)器(8)八個(gè)中斷源(9)全雙工UART串行通道(10)低功耗空閑和掉電模式(11)掉電后中斷可喚醒(12)看門(mén)狗定時(shí)器(13)雙數(shù)據(jù)指針(14)掉電標(biāo)識(shí)符 引腳功能圖11 AT89S52引腳圖VCC : 電源GND : 地P0 口:P0口是一個(gè)8位漏極開(kāi)路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在 flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P1 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。引腳號(hào) 第二功能P1.0 :T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出P1.1 :T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制)P1.5 :MOSI(在系統(tǒng)編程用)P1.6 :MISO(在系統(tǒng)編程用)P1.7 :SCK(在系統(tǒng)編程用)P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P2 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR)時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。引腳號(hào)第二功能P3.0 RXD(串行輸入)P3.1 TXD(串行輸出)P3.2 INT0(外部中斷0)P3.3 INT0(外部中斷0)P3.4 T0(定時(shí)器0外部輸入)P3.5 T1(定時(shí)器1外部輸入)P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)RST: 復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T(mén)狗計(jì)時(shí)完成后,RST 腳輸出96 個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無(wú)效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/PROG:地址鎖存控制信號(hào)(ALE)是訪問(wèn)外部程序存儲(chǔ)器時(shí),鎖存低8 位地址的輸出脈沖。在flash編程時(shí),此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過(guò)。如果需要,通過(guò)將地址為8EH的SFR的第0位置“1”,ALE操作將無(wú)效。這一位置“1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時(shí)有效。否則,ALE 將被微弱拉高。這個(gè)ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對(duì)微控制器處于外部執(zhí)行模式下無(wú)效。PSEN:外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng) AT89S52從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次,而在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。EA/VPP:訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從0000H 到FFFFH的外部程序存儲(chǔ)器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在flash編程期間,EA也接收12伏VPP電壓。XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。3.2.4 定時(shí)與計(jì)數(shù)設(shè)計(jì)根據(jù)設(shè)計(jì)需要選擇方式1比較合適,當(dāng)M1、M0為01時(shí),定時(shí)器/計(jì)數(shù)器工作于方式1,這時(shí)定時(shí)器/計(jì)數(shù)器的等效電路如圖6所示:圖6 定時(shí)/計(jì)數(shù)器方式1邏輯結(jié)構(gòu)框圖此時(shí),定時(shí)/計(jì)數(shù)器為16位的計(jì)數(shù)器,由TLX(X=0,1)的低5位和THX的高8位組成。TLX低5位溢出則向THX進(jìn)位,THX計(jì)數(shù)溢出則置位TCON中的溢出標(biāo)志位TFX。系統(tǒng)選擇定時(shí)/計(jì)數(shù)方式1,以T1作為計(jì)數(shù)器對(duì)光電開(kāi)關(guān)產(chǎn)生的脈沖進(jìn)行計(jì)數(shù),用T0作為定時(shí)器,每10ms產(chǎn)生一定時(shí)中斷對(duì)1602LCD液晶顯示屏進(jìn)行刷新,產(chǎn)生100次中斷后,對(duì)T1接受到的脈沖數(shù)進(jìn)行計(jì)算處理,得出轉(zhuǎn)速。(1)用于定時(shí)工作方式,其定時(shí)時(shí)間為: T=(216-t1的初值)振蕩周期12此設(shè)計(jì)采用的是12MHz的晶振,定時(shí)器T0定時(shí)為10ms,將參數(shù)帶入公式 :t1=65536-10000=55536;換成十六進(jìn)制,則t1=0xd8f0 ; 所以對(duì)于定時(shí)器T0有,TMOD = 0x01;TH0 = 0xd8;TL0 = 0xf0;(2)用于計(jì)數(shù)工作方式,計(jì)數(shù)長(zhǎng)度為: 216=65536(個(gè)外部脈沖)由此可知規(guī)定時(shí)間(1s)內(nèi)外部脈沖個(gè)數(shù)不超過(guò)65536即可。3.2.4.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成。TMOD是定時(shí)/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。定時(shí)/計(jì)數(shù)器結(jié)構(gòu)如圖7所示: 圖7 定時(shí)/計(jì)數(shù)器結(jié)構(gòu)3.2.4.2定時(shí)/計(jì)數(shù)器的控制AT89S52單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式;TCON用于控制其啟動(dòng)和中斷申請(qǐng)。1.工作方式寄存器TMOD工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如下:表1 工作方式寄存器TMOD格式GATE:門(mén)控位。GATE0時(shí),以運(yùn)行控制位TRX(X=0,1)來(lái)啟動(dòng)定時(shí)/計(jì)數(shù)器運(yùn)行;GATA1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳或也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作;C/T計(jì)數(shù)器模式和定時(shí)器模式選擇位C/T=1時(shí),選擇計(jì)數(shù)器模式,計(jì)數(shù)器對(duì)外部輸入引腳T0(P3.4)或T1(P3.5)的外部脈沖計(jì)數(shù);C/T=0時(shí),選擇定時(shí)器模式。M1M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式,由M1M0進(jìn)行設(shè)置。表 2 M1M0工作方式2.控制寄存器TCON TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如下:表 3 控制寄存器TCON格式位76543210字節(jié)地址:88HTF1TR1TF0TR0TCONTF1(TCON.7):T1溢出中斷請(qǐng)求標(biāo)志位。T1計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動(dòng)清0。T1工作時(shí),CPU可隨時(shí)查詢TF1的狀態(tài)。所以,TF1可用作查詢測(cè)試的標(biāo)志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。TR1(TCON.6):T1運(yùn)行控制位。TR1置1時(shí),T1開(kāi)始工作;TR1置0時(shí),T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止。TF0(TCON.5):T0溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類(lèi)同。TR0(TCON.4):T0運(yùn)行控制位,其功能與TR1類(lèi)同。中斷控制CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開(kāi)放和屏蔽是由中斷允許寄存器IE控制的。表4 位76543210字節(jié)地址:88HEAESET1EX1ET0EX0IE EX0(IE.0),外部中斷0允許位; ET0(IE.1),定時(shí)/計(jì)數(shù)器T0中斷允許位; EX1(IE.2),外部中斷0允許位; ET1(IE.3),定時(shí)/計(jì)數(shù)器T1中斷允許位; ES(IE.4),串行口中斷允許位; EA (IE.7), CPU中斷允許(總允許)位。3.3 顯示單元3.3.1 LCD原理 各種圖形的顯示原理 線段的顯示:點(diǎn)陣圖形式液晶由MN個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對(duì)應(yīng)1字節(jié)的8位,即每行由16字節(jié),共168=128個(gè)點(diǎn)組成,屏上6416個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對(duì)應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時(shí),則屏幕的左上角顯示一條短亮線,長(zhǎng)度為8個(gè)點(diǎn);當(dāng)(3FFH)=FFH時(shí),則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。 字符的顯示:LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由68或88點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。 漢字的顯示:字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點(diǎn)陣碼(一般用字模提取軟件),每個(gè)漢字占32B,分左右兩半,各占16B,左邊為1、3、5右邊為2、4、6根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)可找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加1,送第二個(gè)字節(jié),換行按列對(duì)齊,送第三個(gè)字節(jié)直到32B顯示完就可以LCD上得到一個(gè)完整漢字 。本設(shè)計(jì)選用了1602型LCD。字符型液晶顯示模塊是一種專(zhuān)門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖。圖12 1602LCD的基本參數(shù)及引腳功能 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無(wú)差別,兩者尺寸差別如下圖圖13 1602LCD分為帶背光和不帶背光(1)LCD1602主要技術(shù)參數(shù): 顯示容量:162個(gè)字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.954.35(WH)mm(2)引腳功能說(shuō)明1602LCD采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口說(shuō)明如表表5 引腳接口說(shuō)明表編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。3.3.2 液晶顯示模塊電路 圖14是液晶模塊LCD1602與單片機(jī)的接口電路。液晶模塊的1腳和2腳分別接入電源的地和電源。310腳分別接單片機(jī)的8個(gè)P2口。11、13腳接單片機(jī)P3.0、P3.2,12腳接地,表示LCD的使能,是讀取還是寫(xiě)入信號(hào),是傳輸數(shù)據(jù)還是將指令由單片機(jī)內(nèi)部程序作用實(shí)現(xiàn)。14腳通過(guò)一個(gè)10K可調(diào)電阻接地,使得LCD的顯示的對(duì)比度適中,防止由于對(duì)比度過(guò)高產(chǎn)生“鬼影”。圖14 1602液晶顯示模塊電路原理圖4 軟件設(shè)計(jì)4.1 語(yǔ)言的選用 本設(shè)計(jì)中采用的處理器是AT89S52單片機(jī),由此可采用面向MCS-51的程序設(shè)計(jì)語(yǔ)言,包括ASM51匯編語(yǔ)言和C51高級(jí)語(yǔ)言,這兩種語(yǔ)言各有特點(diǎn)。匯編語(yǔ)言更接近機(jī)器語(yǔ)言,常用來(lái)編制與系統(tǒng)硬件相關(guān)的程序,如訪問(wèn)I/O端口、中斷處理程序、實(shí)時(shí)控制程序、實(shí)時(shí)通信程序等;而數(shù)學(xué)運(yùn)算程序則適合用C51高級(jí)語(yǔ)言編寫(xiě),因?yàn)橛酶呒?jí)語(yǔ)言編寫(xiě)運(yùn)算程序可提高編程效率和應(yīng)用程序的可靠性。 C語(yǔ)言是一種通用的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,在國(guó)際上十分流行,它即可用來(lái)編寫(xiě)計(jì)算機(jī)系統(tǒng)程序,也可以用來(lái)編寫(xiě)一般的應(yīng)用程序。以前計(jì)算機(jī)的系統(tǒng)軟件主要是用匯編語(yǔ)言編寫(xiě)的,對(duì)于單片機(jī)應(yīng)用系統(tǒng)來(lái)說(shuō)更是如此。由于匯編語(yǔ)言程序的可讀性和可移植性都較差,采用匯編語(yǔ)言編寫(xiě)單片機(jī)應(yīng)用程序的周期長(zhǎng),而且調(diào)試和排錯(cuò)也比較困難。C語(yǔ)言具有很好的可移植性和硬件控制能力,表達(dá)和運(yùn)算能力也較強(qiáng)。它具有以下特點(diǎn):1 語(yǔ)言簡(jiǎn)潔,使用方便靈活。2 可移植性好。3 表達(dá)能力強(qiáng)。4 表達(dá)方式靈活。5 可進(jìn)行架構(gòu)化程序設(shè)計(jì)。6 可以直接操作計(jì)算機(jī)硬件。7 生成的目標(biāo)代碼質(zhì)量高。為了提高編制計(jì)算機(jī)系統(tǒng)和應(yīng)用程序的效率,改善程序的可讀性和可移植性,在此采用高級(jí)語(yǔ)言編程。4.2 程序設(shè)計(jì)流程圖本系統(tǒng)用計(jì)數(shù)程序采集信號(hào)脈沖,用定時(shí)器產(chǎn)生中斷,對(duì)1602LCD液晶顯示屏刷新和緩沖區(qū)數(shù)據(jù)進(jìn)行更新,輔以1602LCD液晶顯示屏進(jìn)行顯示。計(jì)數(shù)程序流程如圖15;定時(shí)顯示程序流程如圖16。開(kāi)始初始化計(jì)數(shù)器T1計(jì)數(shù)脈沖Flag_clac=1? N按公式:轉(zhuǎn)速=60*脈沖數(shù)/(齒輪數(shù)*T)計(jì)算數(shù)據(jù) 數(shù)據(jù)緩沖區(qū) 圖15 脈沖計(jì)數(shù)程序流程圖程序說(shuō)明:將定時(shí)器設(shè)置為方式1,對(duì)外部脈沖進(jìn)行計(jì)數(shù),并判斷Flag_clac的值。當(dāng)Flag_calc=1時(shí),將脈沖的數(shù)值由十六進(jìn)制轉(zhuǎn)換成十進(jìn)制,按轉(zhuǎn)速轉(zhuǎn)換公式轉(zhuǎn)換后,載入數(shù)據(jù)緩沖區(qū)。初始化定時(shí)10ms?T=500?Flag_clac=1數(shù)據(jù)緩沖區(qū)顯示時(shí)間計(jì)數(shù)清零T=0產(chǎn)生定時(shí)中斷開(kāi)始時(shí)間計(jì)數(shù)T+ N Y 圖16 定時(shí)顯示程序流程圖程序說(shuō)明:定時(shí)器設(shè)置為方式1,定時(shí)10ms。當(dāng)定時(shí)達(dá)到10ms時(shí),產(chǎn)生中斷,對(duì)1602LCD液晶顯示屏進(jìn)行刷新,顯示轉(zhuǎn)速,并使時(shí)間計(jì)數(shù)標(biāo)志T加1。當(dāng)時(shí)間計(jì)數(shù)標(biāo)志T=500時(shí),使Flag_calc置1,取出計(jì)數(shù)器在此時(shí)間內(nèi)計(jì)算的脈沖數(shù),通過(guò)轉(zhuǎn)速計(jì)算程序計(jì)算得出轉(zhuǎn)速值后,存入數(shù)據(jù)緩沖區(qū),供1602LCD液晶顯示屏顯示使用。5 系統(tǒng)仿真與電路調(diào)試5.1 系統(tǒng)仿真系統(tǒng)結(jié)合Keil uVersion3.0和偉福進(jìn)行編譯,通過(guò)Proteus來(lái)仿真。5.1.1 程序編譯與以往的80C51單片機(jī)不同,AT89S52具有在線調(diào)試和下載功能,它由支持AT89S52的開(kāi)發(fā)工具包Keil uVersion2.0開(kāi)發(fā)系統(tǒng)來(lái)提供。也就是說(shuō),在用戶系統(tǒng)保留AT89S52的情況下,通過(guò)開(kāi)發(fā)系統(tǒng)與AT89S52的串行接口通信,直接對(duì)用戶系統(tǒng)進(jìn)行調(diào)試,并在調(diào)試完成后將調(diào)試好的程序下載到AT89S52中。Keil uVersion3.0開(kāi)發(fā)系統(tǒng)提供四項(xiàng)功能:編譯、下載、調(diào)試和模擬,分別由Keil uVersion2.0提供的編譯器、在線串行下載器、調(diào)試器和模擬器來(lái)實(shí)現(xiàn)。Keil uVersion2.0編譯器可在Windows操作系統(tǒng)下直接使用,編譯C語(yǔ)言源程序,并生成16進(jìn)制文件和列表文件。調(diào)試器采用Windows系統(tǒng),允許用戶使用AT89S52的UART串行接口在芯片上調(diào)試代碼執(zhí)行。在典型調(diào)試對(duì)話中,調(diào)試器提供對(duì)片內(nèi)所有外圍設(shè)備的訪問(wèn)、單步和設(shè)置斷點(diǎn)的代碼執(zhí)行控制方式。模擬器采用Windows系統(tǒng),能完全模擬AT89S52的所有功能。模擬器使用簡(jiǎn)單,結(jié)合了許多標(biāo)準(zhǔn)調(diào)試特征,包括多斷點(diǎn)、單步以及代碼執(zhí)行跟蹤等能力。同樣偉福仿真器是國(guó)內(nèi)較好的仿真器之一,它能夠仿真的CPU品種多、功能強(qiáng)。通過(guò)更換仿真頭POD,可以對(duì)不同的CPU進(jìn)行仿真??煞抡?1系列,196系列,PIC系列,飛利蒲公司的552、LPC764、DALLAS320,華邦438等51增強(qiáng)型CPU。由于偉福編譯過(guò)程沒(méi)有Keil uVersion2.0那么繁瑣,能對(duì)程序進(jìn)行直接編譯,省去了建立和設(shè)置工程等步驟,使用方便、快捷。所以本設(shè)計(jì)以Keil uVersion2.0為基礎(chǔ),運(yùn)用偉福來(lái)編譯程序。5.1.2 電路仿真仿真部分運(yùn)用Proteus仿真軟件來(lái)實(shí)現(xiàn),Proteus 軟件是一款強(qiáng)大的單片機(jī)仿真軟件,它除了具有和其他工具一樣的原理編輯、印制電路板(PCB)自動(dòng)或人工布線及電路仿真外,最大的特色是其電路仿真是交互的、可視化的。對(duì)于單片機(jī)學(xué)習(xí)和開(kāi)發(fā)幫助極大。Proteus ISIS 是英國(guó)Lab center 公司開(kāi)發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和數(shù)字集成電路,包括單片機(jī)。通過(guò)Proteus可以繪制硬件原理圖,并設(shè)置元件參數(shù);為單片機(jī)及其程序以及外部接口電路的仿真提供可能,驗(yàn)證設(shè)計(jì)的可行性與合理性;還可以為連接實(shí)際的硬件電路做好準(zhǔn)備;如有必要時(shí),可以利用它來(lái)設(shè)計(jì)電路板。5.2 電路調(diào)試通過(guò)葉片在對(duì)射式傳感器間轉(zhuǎn)動(dòng),得到光電開(kāi)關(guān)產(chǎn)生脈沖信號(hào),再經(jīng)過(guò)脈沖信號(hào)處理電路,輸入單片機(jī)的T1外部脈沖計(jì)數(shù)口(即P3.5口),由單片機(jī)處理得出轉(zhuǎn)速后,連接4連1602LCD液晶顯示屏顯示轉(zhuǎn)速。對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行測(cè)量,以單片機(jī)為核心對(duì)光電開(kāi)關(guān)產(chǎn)生的數(shù)字信號(hào)進(jìn)行運(yùn)算,從而測(cè)得電機(jī)的轉(zhuǎn)速,然后用1602LCD液晶顯示屏把電機(jī)的轉(zhuǎn)速顯示出來(lái)。即通過(guò)光電開(kāi)關(guān)將電機(jī)的轉(zhuǎn)數(shù)轉(zhuǎn)換成0,1的數(shù)字量,只要轉(zhuǎn)軸每旋轉(zhuǎn)一周,產(chǎn)生一個(gè)或固定的多個(gè)脈沖,并將脈沖送入單片機(jī)中進(jìn)行計(jì)數(shù)和計(jì)算,就可獲得轉(zhuǎn)速的信息,實(shí)物圖如下。圖17 實(shí)物圖 圖17中1602LCD液晶顯示屏上有兩組數(shù)字,上排為轉(zhuǎn)速,如圖7n/s,下排為預(yù)設(shè)值,如圖是8/s,如轉(zhuǎn)速小于預(yù)設(shè)值,則蜂鳴器不會(huì)報(bào)警,反正成立,如圖18圖18 實(shí)物圖圖19實(shí)物圖6 小結(jié) 本設(shè)計(jì)采用光電開(kāi)關(guān)測(cè)速法,利用對(duì)射式光電開(kāi)關(guān)采集轉(zhuǎn)速信號(hào),通過(guò)信號(hào)處理電路得到適合的脈沖后,輸入單片機(jī)進(jìn)行處理、計(jì)算,得出實(shí)際的轉(zhuǎn)速值,輔以1602LCD液晶顯示屏顯示。此系統(tǒng)實(shí)現(xiàn)了設(shè)計(jì)的要求:(1)光電開(kāi)關(guān)與電機(jī)轉(zhuǎn)換平臺(tái)簡(jiǎn)單適用(2)采集電路能實(shí)時(shí)采集轉(zhuǎn)速信息(3)單片機(jī)處理系統(tǒng)運(yùn)算快速簡(jiǎn)單,程序可讀性強(qiáng),條理分明,能形成獨(dú)立模塊以便于其他類(lèi)似系統(tǒng)的計(jì)算(4)1602LCD液晶顯示屏為主體的人機(jī)界面能準(zhǔn)確顯示速度值 本設(shè)計(jì)存在的問(wèn)題:(1)系統(tǒng)選擇位數(shù)最多的定時(shí)/計(jì)數(shù)器工作方式1(為16位),但仍有其局限性。此計(jì)數(shù)器的最大計(jì)數(shù)脈沖數(shù)為63336(216),若每秒鐘計(jì)算一次,則當(dāng)1秒內(nèi)外部脈沖的輸入數(shù)超過(guò)65536個(gè)時(shí),計(jì)數(shù)器會(huì)溢出,從而產(chǎn)生中斷,使得測(cè)出的轉(zhuǎn)速值小于實(shí)際的轉(zhuǎn)速值。根據(jù)轉(zhuǎn)速計(jì)算方法(若轉(zhuǎn)盤(pán)齒數(shù)為10),Vmax=65536*60s/(10*1)=39321r/min,所以本系統(tǒng)不能測(cè)量范圍不能超過(guò)此值。(2)通過(guò)T1計(jì)數(shù)時(shí),單片機(jī)每讀取一個(gè)脈沖至少需要3個(gè)機(jī)器周期的時(shí)間來(lái)完成。本系統(tǒng)采用的晶振為12MHz,所以一個(gè)機(jī)器周期Tcy=12/f=1us。若要使單片機(jī)準(zhǔn)確讀取外部脈沖,則脈沖的輸入周期不能超過(guò)3us。如此可計(jì)算(轉(zhuǎn)盤(pán)齒數(shù)為10),系統(tǒng)能測(cè)量的轉(zhuǎn)速需低于:Vmax=60s/(3us*10)=6000000r/min。(3)此外,光電開(kāi)關(guān)的反應(yīng)速度也會(huì)對(duì)轉(zhuǎn)速測(cè)量值的大小產(chǎn)生影響。若轉(zhuǎn)速過(guò)快,則光電開(kāi)關(guān)來(lái)不及處理,這樣會(huì)造成測(cè)速不準(zhǔn),甚至測(cè)不出數(shù)值。針對(duì)存在的問(wèn)題,可以采取以下方法改進(jìn):(1)采用時(shí)鐘頻率更高、定時(shí)/計(jì)數(shù)器位數(shù)更多的單片機(jī)來(lái)處理脈沖,現(xiàn)某些高速單片機(jī)可達(dá)到40MHz的處理速度,可以大大提高測(cè)速范圍。(2)應(yīng)用反應(yīng)速度更快的傳感器來(lái)做光電開(kāi)關(guān)?,F(xiàn)在高速光電開(kāi)關(guān)的響應(yīng)速度可達(dá)到0.1ms,每分鐘可進(jìn)行30萬(wàn)次檢測(cè)操作,這樣就能檢出高速轉(zhuǎn)動(dòng)的微小物體。綜上所述,在測(cè)速過(guò)程中,雖然由于硬件的緣故,未能實(shí)現(xiàn)對(duì)高速的測(cè)量,但本裝置結(jié)構(gòu)簡(jiǎn)單、實(shí)用,在降低測(cè)速器成本,提高測(cè)速穩(wěn)定性及可靠性等方面有一定價(jià)值,而且可以達(dá)到一般工業(yè)測(cè)速的測(cè)量標(biāo)準(zhǔn),具有廣泛的前景。附錄1 原理圖 附錄2 源程序#include<reg52.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit lcden=P26;/定義1602使能端sbit lcdrs=P24;sbit lcdrw=P25;sbit a=P10;/對(duì)射傳感器的信號(hào)輸出端sbit add=P34;/按鍵加一變量sbit jian=P35;/按鍵減一變量sbit bj=P23;/蜂鳴器端口char zhuan16;/設(shè)置臨時(shí)數(shù)組uint num2;/每秒的轉(zhuǎn)速u(mài)int number=7;/設(shè)定轉(zhuǎn)速的初值,在其基礎(chǔ)上按鍵加一或按鍵減一uint num=0;/轉(zhuǎn)數(shù)變量void Init_Timer0(void);void delay(uint z)/延遲函數(shù)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)/1602寫(xiě)命令lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/1602寫(xiě)數(shù)據(jù)lcdrs=1;lcden=1;P0=date;delay(5);lcden=0;void LCD_Write_String(uchar x,uchar y,uchar *s) /向1602寫(xiě)字符串 if (y = 0) write_com(0x80 + x); /表示第一行 else write_com(0xC0 + x); /表示第二行 while (*s) write_date( *s); s+; void LCD_Write_Char(uchar x,uchar y,uchar Data) /向1602寫(xiě)字符 if (y = 0) write_com(0x80 + x); else write_com(0xC0 + x); write_date( Data); void init()/初始化bj=0;/蜂鳴器初始化write_com(0x01);/1602初始化lcdrw=0;lcden=0;write_com(0x38);write_com(0x0e);write_com(0x06);LCD_Write_Char(13,0,n);LCD_Write_Char(14,0,/);LCD_Write_Char(15,0,s);LCD_Write_Char(13,1,n);LCD_Write_Char(14,1,/);LCD_Write_Char(15,1,s);void main()init();while(1)if(a=1)/對(duì)射傳感器檢測(cè)障礙物 num+;/計(jì)轉(zhuǎn)數(shù) while(a);sprintf(zhuan,"zhuansu%2d",num); LCD_Write_String(0,0,zhuan);Init_Timer0();/定時(shí)1ssprintf(zhuan,"zhuansu %2d",num2);/輸出一秒的轉(zhuǎn)速 LCD_Write_String(0,0,zhuan);if(num2>=number)/轉(zhuǎn)速超過(guò)設(shè)定值報(bào)警bj=1;if(num2<number)/轉(zhuǎn)速不超過(guò)設(shè)定值報(bào)警bj=0;if(!add) /按下相應(yīng)的按鍵,1602LCD液晶顯示屏顯示相應(yīng)的碼值 delay(5); if(!add) number=number+1;sprintf(zhuan,"yushe %7d",number);/打印溫度值 LCD_Write_String(0,1,zhuan);/顯示第二行 while(!add); if(!jian) /按下相應(yīng)的按鍵,1602LCD液晶顯示屏顯示相應(yīng)的碼值 delay(5); if(!jian) number-; sprintf(zhuan,"yushe %7d",number);/打印溫度值 LCD_Write_String(0,1,zhuan);/顯示第二行 while(!jian); void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 /TH0=0x00; /給定初值 /TL0=0x00; EA=1; /總中斷打開(kāi) ET0=1; /定時(shí)器中斷打開(kāi) TR0=1; /定時(shí)器開(kāi)關(guān)打開(kāi)/*- 定時(shí)器中斷子程序-*/void Timer0_isr(void) interrupt 1 static unsigned int num1; TH0=(65536-2000)/256; /重新賦值 2ms TL0=(65536-2000)%256; num1+; if(num1=500) /計(jì)時(shí)1s num1=0;num2=num; num=0; /讀標(biāo)志位置1