電子信息科學(xué)與技術(shù)學(xué)士學(xué)位論文(設(shè)計(jì))基于霍爾傳感器的轉(zhuǎn)速測量研究_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  學(xué)士學(xué)位論文(設(shè)計(jì))</p><p>  Bachelor’s Thesis</p><p> 編號2012120344 研究類型應(yīng)用研究 分類號TN219</p><p>  湖北師范學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì))誠信承諾書</p><p><b>  目錄</b></p><p&g

2、t;  湖北師范學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì))誠信承諾書I</p><p><b>  1 緒論1</b></p><p>  1.1 課題研究目的及意義1</p><p>  1.2 應(yīng)用與發(fā)展前景2</p><p>  1.3 設(shè)計(jì)任務(wù)與要求2</p><p>  2 課題方案設(shè)計(jì)3&l

3、t;/p><p>  2.1 系統(tǒng)總體設(shè)計(jì)要求3</p><p>  2.2 系統(tǒng)模塊結(jié)構(gòu)論證3</p><p>  2.3 轉(zhuǎn)速測量方案論證5</p><p>  3 基于霍爾傳感器的轉(zhuǎn)速測量系統(tǒng)硬件設(shè)計(jì)6</p><p>  3.1 轉(zhuǎn)速測量系統(tǒng)的硬件電路設(shè)計(jì)7</p><p>  3

4、.2 霍爾傳感器測量電路設(shè)計(jì)9</p><p>  3.3 單片機(jī)AT89C5112</p><p>  3.4顯示電路設(shè)計(jì)15</p><p>  4系統(tǒng)軟件設(shè)計(jì)17</p><p>  4.1程序設(shè)計(jì)步驟17</p><p>  4.2程序流程圖17</p><p>  4.3軟

5、件程序設(shè)計(jì)21</p><p><b>  5軟件調(diào)試26</b></p><p>  5.1 Proteus及Keil軟件簡介26</p><p>  5.2 應(yīng)用Keil軟件進(jìn)行程序調(diào)試28</p><p>  5.3 Proteus軟件仿真28</p><p>  5.4 硬件軟件

6、聯(lián)合調(diào)試31</p><p><b>  6 結(jié)論32</b></p><p><b>  致 謝34</b></p><p>  湖北師范學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì))評審表36</p><p>  基于霍爾傳感器的轉(zhuǎn)速測量研究</p><p>  (指導(dǎo)老師,

7、 副教授)</p><p> ?。ê睅煼秾W(xué)院物理與電子科學(xué)學(xué)院 中國 黃石 435002)</p><p>  摘 要:本文設(shè)計(jì)了基于單片機(jī)AT89C51的直流電機(jī)轉(zhuǎn)速測量系統(tǒng)。測量轉(zhuǎn)速的霍爾傳感器和機(jī)軸同軸連接,機(jī)軸每轉(zhuǎn)一周,產(chǎn)生一定量的脈沖個數(shù),由霍爾器件電路部分輸出幅度為12V的脈沖。經(jīng)光電隔離后輸出幅度為5V的轉(zhuǎn)數(shù)計(jì)數(shù)器的計(jì)數(shù)脈沖。控制定時器計(jì)數(shù)時間,即可實(shí)現(xiàn)對電機(jī)轉(zhuǎn)速的測

8、量。在顯示電路設(shè)計(jì)中,通過1602實(shí)現(xiàn)在LCD上直觀地顯示電機(jī)的轉(zhuǎn)速值。</p><p>  關(guān)鍵詞:轉(zhuǎn)速測量 霍爾傳感器 AT89C51 單片機(jī) LCD </p><p>  中圖分類號:TN219</p><p>  Rotate Speed Measurement System Based on Hall Sensor</p><p>

9、  Zhang lei(Tutor:Liu Xingyun)</p><p>  (Content Electricity Institute, Hubei Normal University, Huangshi 435002)</p><p>  Abstract: This article is design the system about DC motor speed measur

10、ement which is based on hall sensor and AT89C51.Every revolution of the crankshaft will generate a certain amount of pulses whose amplitude is 12v.The opto-coupler turns these certain amount of pulses into 5-amplitude c

11、ount impulse. The motor speed can be measured by controlling the time. In the design of display circuit, the number of motor speed is displayed in LCD directly through 1602.</p><p>  Key words: Speed measure

12、ment; Hall sensor;AT89C51; opto-coupler; LCD</p><p>  基于霍爾傳感器的轉(zhuǎn)速測量研究</p><p> ?。ㄖ笇?dǎo)老師, 副教授)</p><p>  (湖北師范學(xué)院物理與電子科學(xué)學(xué)院 中國 黃石 435002)</p><p><b>  1 緒論</b>

13、;</p><p>  1.1 課題研究目的及意義</p><p>  在實(shí)踐中,經(jīng)常會遇到各種需要測量轉(zhuǎn)速的場合。例如在發(fā)動機(jī)、電動機(jī)、卷揚(yáng)機(jī)、機(jī)床主軸等旋轉(zhuǎn)設(shè)備的試驗(yàn)、運(yùn)轉(zhuǎn)和控制中,常需要測量和顯示其轉(zhuǎn)速。測量轉(zhuǎn)速的方法分為模擬式和數(shù)字式兩種。模擬式采用測速發(fā)電機(jī)為檢測元件,得到的信號是模擬量。數(shù)字式通常采用光電編碼器、圓光柵、霍爾元件等為檢測元件,得到的信號是脈沖信號。隨著微型計(jì)算機(jī)

14、的廣泛應(yīng)用,特別是高性能價格比的單片機(jī)的出現(xiàn),轉(zhuǎn)速測量普遍采用以單片機(jī)為核心的數(shù)字式測量方法,智能化微電腦代替了一般機(jī)械式或模擬式結(jié)構(gòu)。</p><p>  霍爾傳感器是利用霍爾效應(yīng)實(shí)現(xiàn)磁電轉(zhuǎn)換的一種傳感器,它具有靈敏度高、線性度好、穩(wěn)定性高、體積小和耐高溫等特點(diǎn),在機(jī)車控制系統(tǒng)中占有非常重要的地位[1]。</p><p>  測速裝置在控制系統(tǒng)中占有非常重要的地位,對測速裝置的要求是分辨

15、能力強(qiáng)、高精度和盡可能短的檢測時間。在此主要介紹應(yīng)用霍爾傳感器通過測量磁場強(qiáng)度,來得到穩(wěn)定的脈沖方波信號,實(shí)現(xiàn)電機(jī)轉(zhuǎn)速的測量轉(zhuǎn)速是電動機(jī)極為重要的一個狀態(tài)參數(shù),在很多運(yùn)動系統(tǒng)的測控中,都需要對電機(jī)的轉(zhuǎn)速進(jìn)行測量,速度測量的精度直接影響系統(tǒng)的控制情況,它是關(guān)系測控效果的一個重要因素。不論是直流調(diào)速系統(tǒng)還是交流調(diào)速系統(tǒng),只有轉(zhuǎn)速的高精度檢測才能得到高精度的控制系統(tǒng)。</p><p>  1.2 應(yīng)用與發(fā)展前景<

16、/p><p>  隨著微型計(jì)算機(jī)可靠性提高和價格的下降,用單片機(jī)測量電機(jī)轉(zhuǎn)速已日趨普遍。我們知道,欲提高測量精度,必須先測出準(zhǔn)確的轉(zhuǎn)速,而原先在可控硅調(diào)速電路中采用的測速發(fā)電機(jī)方式已不能滿足要求,必須采用數(shù)字測速的方法[2]。轉(zhuǎn)速的測量方法很多,根據(jù)脈沖計(jì)數(shù)來實(shí)現(xiàn)轉(zhuǎn)速測量的方法主要有M法(測頻法)、T法(測周期法)和MPT法(頻率周期法),該系統(tǒng)采用了M法(測頻法)。本文采用頻率法,檢測的是輸入脈沖數(shù),這種方式又稱頻

17、率法。它測出一定時間內(nèi)輸入的脈沖的個數(shù)。</p><p>  它在控制系統(tǒng)中占有非常重要的地位。對測速裝置的要求是分辨能力強(qiáng)、高精度和盡可能短的檢測時間。所設(shè)計(jì)的基于霍爾元件的脈沖發(fā)生器要求成本低,構(gòu)造簡單,性能好。在電氣控制系統(tǒng)中存在著較為惡劣的電磁環(huán)境,因此要求產(chǎn)品本身要具有較強(qiáng)的抗干擾能力。</p><p>  由于需要采用霍爾傳感器的應(yīng)用領(lǐng)域,如汽車、電機(jī)、手機(jī)和電腦都已經(jīng)采用了該

18、器件,而且這些市場在未來幾年的增長較為穩(wěn)定,而其他一些新的應(yīng)用市場又不足以與上述幾個市場相比,因此霍爾傳感器在全球總的市場容量是較為穩(wěn)定的,每年的增長率保持在5%到10%之間。因?yàn)楦鞣N應(yīng)用電機(jī)的部件、節(jié)氣門位置的檢測、各種閥體位置的檢測都會用到霍爾傳感器。而且,在中國市場中,國外廠商為了降低成本,陸續(xù)將零部件拿到中國進(jìn)行設(shè)計(jì)和生產(chǎn),這也進(jìn)一步提升了中國市場霍爾傳感器的應(yīng)用量。</p><p>  隨著它在消費(fèi)電子

19、市場上的應(yīng)用越來越廣,如何控制功耗和成本將是廠商面臨的挑戰(zhàn)。而且,它還面臨生產(chǎn)測試技術(shù)方面的挑戰(zhàn)[3]。</p><p>  1.3 設(shè)計(jì)任務(wù)與要求</p><p>  1.3.1 設(shè)計(jì)任務(wù)</p><p>  根據(jù)學(xué)校畢業(yè)設(shè)計(jì)的要求,設(shè)計(jì)一個功能滿足設(shè)計(jì)要求、工作穩(wěn)定、以單片機(jī)為核心的基于霍爾傳感器的電機(jī)轉(zhuǎn)速測量系統(tǒng),能夠?qū)崿F(xiàn)在電機(jī)工作時轉(zhuǎn)速的測量,并在發(fā)生故障時

20、能及時的發(fā)出報警信號。本設(shè)計(jì)包括完整的硬件設(shè)計(jì)和相應(yīng)的軟件設(shè)計(jì)。</p><p>  1.3.2 設(shè)計(jì)要求</p><p>  首先選定傳感器,霍爾傳感器具有靈敏、可靠、體積小巧、無觸點(diǎn)、無磨損、使用壽命長、功耗低等優(yōu)點(diǎn),綜合了電機(jī)轉(zhuǎn)速測量系統(tǒng)的要求。</p><p>  其次設(shè)計(jì)一個單片機(jī)小系統(tǒng),掌握單片機(jī)接口電路的設(shè)計(jì)技巧,學(xué)會利用單片機(jī)的定時器和中斷系統(tǒng)對脈沖

21、信號進(jìn)行測量或計(jì)數(shù)。</p><p>  再次實(shí)時測量顯示并有報警功能,實(shí)時測量根據(jù)脈沖計(jì)數(shù)來實(shí)現(xiàn)轉(zhuǎn)速測量的方法。要求霍爾傳感器轉(zhuǎn)速為0~5000r/min。</p><p><b>  2 課題方案設(shè)計(jì)</b></p><p>  2.1 系統(tǒng)總體設(shè)計(jì)要求</p><p>  如果把霍爾傳感器按預(yù)定位置有規(guī)律地布置在軌

22、道上,當(dāng)永磁體經(jīng)過它時,可以從測量電路上測得脈沖信號。根據(jù)脈沖信號的分布可以測出電機(jī)速度。</p><p>  2.2 系統(tǒng)模塊結(jié)構(gòu)論證</p><p>  2.2.1 霍爾測速模塊論證與選擇</p><p>  方案一:采用霍爾元件傳感器即霍爾片;霍爾片可分為貼片型和直插型。由于貼片型不常用,因此選擇直插型。選型號為A3144的霍爾片作為霍爾測速模塊的核心,該霍爾

23、片體積小,安裝靈活,可用于測速,且與普通的磁鋼片配套使用,價格一般為2.5~3元。</p><p>  方案二:采用霍爾傳感器;選型號為CHV-25P/10的霍爾傳感器,其額定電壓為10v,輸出信號5v/25mA,電源為12~15v。體積大,價格一般為40~120元之間不等。</p><p>  從性價比方面綜合考慮因此選擇方案一。</p><p>  2.2.2

24、計(jì)數(shù)器模塊論證與選擇</p><p>  方案一:片外計(jì)數(shù)器;此方案是指采用8253等片外的專用計(jì)數(shù)芯片進(jìn)行脈沖計(jì)數(shù),單片機(jī)控制8253的技術(shù)過程,并在技術(shù)完畢后讀取計(jì)數(shù)值。</p><p>  方案二:片外計(jì)數(shù)器;此方案是指采用單片機(jī)的內(nèi)部計(jì)數(shù)器完成對脈沖的計(jì)數(shù)過程。用片內(nèi)的計(jì)數(shù)器的優(yōu)點(diǎn)在于降低單片機(jī)系統(tǒng)的成本。每到一個脈沖將會產(chǎn)生一個T1的計(jì)數(shù),在T0產(chǎn)生的100ms中斷完成后,T1的

25、中斷溢出次數(shù)就是所需要計(jì)的脈沖數(shù)。特點(diǎn)在于:使用了內(nèi)部的T1作為外部脈沖的計(jì)數(shù)器,并且,為了避免計(jì)數(shù)器的溢出,將T1的初值設(shè)為0。 </p><p>  2.2.3 顯示模塊論證與選擇</p><p>  方案一:采用8段LED數(shù)碼管作為顯示模塊核心。數(shù)碼管顯示器件相對便宜,但是耗能大、編寫程序相對麻煩,工作量大。</p><p>  方案二:采用LCD液晶顯示器作

26、為顯示模塊核心。LCD顯示器工作原理簡單,編程方便,節(jié)能環(huán)保。</p><p><b>  因此選擇方案二。</b></p><p>  2.2.4 報警模塊論證與選擇</p><p>  方案一:采用蜂鳴器與發(fā)光二極管作為聲光報警主要器件。該方案不論在硬件和焊接方面還是在編寫軟件方面都簡單方便,而且成本低廉。</p><p

27、>  方案二:采用語音播報系統(tǒng)作為聲光報警的核心。該方案更具人性化、智能化,但是就該設(shè)計(jì)要求而言,方案過于復(fù)雜,相對成本過高,工作量偏大。</p><p><b>  因此選擇方案一。</b></p><p>  2.2.5 電源模塊論證與選擇</p><p>  方案一:采用交流220V/50Hz電源轉(zhuǎn)換為直流5V電源作為電源模塊。&l

28、t;/p><p>  該方案實(shí)施簡單,電路搭建方便,可作為單片機(jī)開發(fā)常備電源使用。</p><p>  方案二:采用干電池串并聯(lián)達(dá)到5V作為電源模塊。該方案實(shí)施簡單,無需搭建電路,但相對該方案不夠穩(wěn)定,電池耗電快,帶負(fù)載后壓降過高,可能無法使系統(tǒng)穩(wěn)定持續(xù)運(yùn)行。</p><p>  方案三:采用可充電鋰電池結(jié)合穩(wěn)壓模塊作為電源模塊。該方案簡單易行,而且相對穩(wěn)定、誤差小,但

29、該方案相對價格過高,針對該設(shè)計(jì)要求性價比低。</p><p><b>  因此選擇方案一。</b></p><p>  2.2.6 單片機(jī)模塊論證與選擇</p><p>  方案一:選用 P89C51的單片機(jī)速度極快、功耗低、體積小、資源豐富,有各種不同的規(guī)格,最快的達(dá)100MPS ,引腳還可編程確定功能。</p><p&g

30、t;  方案二:Philips P89C51RD2有4個PDA,屬于兼容版。</p><p>  方案比較:因?yàn)轫?xiàng)目的目標(biāo)是測速系統(tǒng)的應(yīng)用,所以我還是選用了方案一中51系列的單片機(jī),因?yàn)?1的架構(gòu)十分典型。選擇方案一中51系列單片機(jī)我認(rèn)為主要考慮以下方面:1.價格便宜;2.開發(fā)手段便宜;3.自己動手焊接相對容易。</p><p>  2.3 轉(zhuǎn)速測量方案論證</p><

31、p>  轉(zhuǎn)速的測量方法很多,根據(jù)脈沖計(jì)數(shù)來實(shí)現(xiàn)轉(zhuǎn)速測量的方法主要有M法(測頻法)、T法(測周期法)和MPT法(頻率周期法),該系統(tǒng)采用了M法(測頻法)。由于轉(zhuǎn)速是以單位時間內(nèi)轉(zhuǎn)數(shù)來衡量,在變換過程中多數(shù)是有規(guī)律的重復(fù)運(yùn)動[4]。</p><p>  2.3.1 方案一:電機(jī)軸一側(cè)貼磁片</p><p>  使用霍爾傳感器獲得脈沖信號,其機(jī)械結(jié)構(gòu)也可以做得較為簡單,只要在轉(zhuǎn)軸的圓周上粘

32、上一粒磁鋼,讓霍爾開關(guān)靠近磁鋼,就有信號輸出,轉(zhuǎn)軸旋轉(zhuǎn)時,就會不斷地產(chǎn)生脈沖信號輸出。如果在圓周上粘上多粒磁鋼,可以實(shí)現(xiàn)旋轉(zhuǎn)一周,獲得多個脈沖輸出。在粘磁鋼時要注意,霍爾傳感器對磁場方向敏感,粘之前可以先手動接近一下傳感器,如果沒有信號輸出,可以換一個方向再試[5]。</p><p>  2.3.2 方案二:電機(jī)轉(zhuǎn)軸加測速轉(zhuǎn)盤</p><p>  傳感器采用霍爾器件將電機(jī)的轉(zhuǎn)速轉(zhuǎn)化為脈沖信

33、號,處理器采用89C205l單片機(jī).計(jì)數(shù)器采用單片機(jī)片內(nèi)汁數(shù)器完成對脈沖的計(jì)數(shù),顯示器采用字符型液晶顯示器1602進(jìn)行顯示。系統(tǒng)原理框圖如圖2所示。系統(tǒng)工作過程:測量轉(zhuǎn)速的霍爾傳感器與機(jī)軸相連接,機(jī)軸每轉(zhuǎn)一周,產(chǎn)生一定的脈沖個數(shù),霍爾器件電路部分輸出,成為轉(zhuǎn)速計(jì)數(shù)器的計(jì)數(shù)脈沖??刂朴?jì)數(shù)時間,即可實(shí)現(xiàn)計(jì)數(shù)器的計(jì)數(shù)值對應(yīng)機(jī)軸的轉(zhuǎn)速值。單片機(jī)CPU將數(shù)據(jù)處理后,通過LCD顯示出來。轉(zhuǎn)速的測量轉(zhuǎn)速傳感器由磁鋼、霍爾元件組成。將一非磁性圓盤固定裝

34、在電機(jī)轉(zhuǎn)軸上,圓盤邊緣等距離用環(huán)氧樹脂粘貼塊狀磁鋼,磁鋼采用永久磁[6]。</p><p>  圖1霍爾傳感器檢測信號圖</p><p>  2.3.3 方案對比</p><p>  方案一與方案二綜合進(jìn)行對比,發(fā)現(xiàn)方案一最少只需一粒磁片即可達(dá)到所需要求,簡單方便,經(jīng)濟(jì)實(shí)惠,并易于操作。因此經(jīng)比較選擇方案一。</p><p>  3 基于霍爾

35、傳感器的轉(zhuǎn)速測量系統(tǒng)硬件設(shè)計(jì)</p><p>  3.1 轉(zhuǎn)速測量系統(tǒng)的硬件電路設(shè)計(jì)</p><p>  3.1.1 總體硬件設(shè)計(jì)</p><p>  使用單片機(jī)測量電機(jī)轉(zhuǎn)速的基本結(jié)構(gòu)如圖2所示。該系統(tǒng)包括霍爾傳感器、隔離整形電路、CPU、顯示電路、報警電路等部分。</p><p>  圖2 系統(tǒng)總體結(jié)構(gòu)圖</p><p&

36、gt;  基于霍爾傳感器的速度測量系統(tǒng)工作過程是:測量轉(zhuǎn)速的霍爾傳感器和機(jī)軸同軸連接,機(jī)軸每轉(zhuǎn)一周,產(chǎn)生一定量的脈沖個數(shù),由霍爾器件電路部分輸出。經(jīng)光電耦合后,成為轉(zhuǎn)速計(jì)數(shù)器的計(jì)數(shù)脈沖。同時傳感器電路輸出幅度為12v的脈沖經(jīng)光電耦合后降為5v,保持同89C51邏輯電平相一致??刂朴?jì)數(shù)時間,即可實(shí)現(xiàn)計(jì)數(shù)器的計(jì)數(shù)值對應(yīng)機(jī)軸的轉(zhuǎn)速值。CPU將該值數(shù)據(jù)處理后,在LCD上顯示出來。一旦超速,CPU通過蜂鳴器發(fā)出報警信號[7]。</p>

37、<p><b>  1、傳感器部分</b></p><p>  主要分為兩個部分。第一部分是利用霍爾器件將電機(jī)轉(zhuǎn)速轉(zhuǎn)化為脈沖信號;第二個部分是使用光耦,將傳感器輸出的信號和單片機(jī)的計(jì)數(shù)電路兩個部分隔開,減少計(jì)數(shù)的干擾。</p><p>  用于測量的A44E集成霍爾開關(guān),磁鋼用直徑D=6.004mm,長度為L=3.032mm的釹鐵硼磁鋼。電源用直流,霍爾

38、開關(guān)輸出由四位半直流數(shù)字電壓表測量,磁感應(yīng)強(qiáng)度B用95A型集成霍爾元件測量[8]。</p><p>  圖3 霍爾片管腳 管腳接線</p><p><b>  2、計(jì)數(shù)器部分</b></p><p>  片內(nèi)計(jì)數(shù)方案是指采用單片機(jī)的內(nèi)部計(jì)數(shù)器完成對脈沖的計(jì)數(shù)過程。</p><p><b>  3、

39、 處理器部分</b></p><p>  處理器是單片機(jī),采用的是AT89C51單片機(jī)。</p><p><b>  4 、顯示部分</b></p><p>  顯示部分有兩個功能,在正常的情況下,通過LCD顯示當(dāng)前的頻率數(shù)值,當(dāng)電機(jī)的轉(zhuǎn)速超出一定的范圍后,蜂鳴器進(jìn)行報警。</p><p>  3.1.2 系

40、統(tǒng)電路設(shè)計(jì)</p><p>  實(shí)際測量時,要把霍爾傳感器固定在直流測速電機(jī)的底板上,與霍爾探頭相對的電機(jī)軸上固定著一片磁鋼塊,電機(jī)每轉(zhuǎn)一周,霍爾傳感器便發(fā)出一個脈沖信號,將此脈沖信號接到開發(fā)的多功能實(shí)驗(yàn)板上的P3.2上,設(shè)定T0定時,每分鐘所計(jì)的進(jìn)入P3.2的脈沖個數(shù)即為直流電機(jī)的轉(zhuǎn)速。</p><p>  由于在虛擬仿真電路圖中,沒有電機(jī)及傳感器,所以就直接用一個脈沖信號代替,電路圖如

41、圖4所示。</p><p>  圖4 總體電路設(shè)計(jì)圖</p><p>  3.2 霍爾傳感器測量電路設(shè)計(jì)</p><p>  3.2.1 霍爾元件</p><p>  霍爾元件是一種基于霍爾效應(yīng)的磁傳感器。用它們可以檢測磁場及其變化,可在各種與磁場有關(guān)的場合中使用?;魻栐哂性S多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長,安裝方便,功耗小

42、,頻率高(可達(dá)1MHz),耐震動,不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕[9]。</p><p>  A3144E系列單機(jī)高溫霍爾效應(yīng)集成傳感器是由穩(wěn)壓電源,霍爾電壓發(fā)生器,差分放大器,施密特觸發(fā)器和輸出放大器組成的磁敏傳感電路,其輸入為磁感應(yīng)強(qiáng)度,輸出是一個數(shù)字電壓信號。它是一種單磁極工作的磁敏電路,適用于矩形或者柱形磁體下工作。可用于汽車工業(yè)和軍事工程中。</p><p>  霍爾傳

43、感器的外形圖和管腳圖如圖5所示。磁場由磁鋼提供,所以霍爾傳感器和磁鋼需要配對使用。</p><p>  霍爾元件和磁鋼 管腳圖</p><p>  圖5 霍爾傳感器的外形圖</p><p>  3.2.2 霍爾傳感器測速原理</p><p>  測量電機(jī)轉(zhuǎn)速的第一步就是要將電機(jī)的轉(zhuǎn)速表示為單片機(jī)

44、可以識別的脈沖信號,從而進(jìn)行脈沖計(jì)數(shù)。當(dāng)電機(jī)轉(zhuǎn)動時,帶動傳感器運(yùn)動,產(chǎn)生對應(yīng)頻率的脈沖信號,經(jīng)過信號處理后輸出到計(jì)數(shù)器或其他脈沖計(jì)數(shù)裝置,進(jìn)行轉(zhuǎn)速的測量。</p><p>  3.2.3 反相器74LS14</p><p>  74LS14是一個6反向器,引腳定義如圖6所示:A端為輸入端,Y端為輸出端,一片芯片一共6路,即1,3,5,9,11,13為輸入端,2,4,6,8,10,12為輸出

45、端,輸出結(jié)果與輸入結(jié)果反向。即如果輸入端為高電平,那么輸出為低電平。如果輸入低電平,輸出為高電平。</p><p><b>  圖6 反相器引腳圖</b></p><p>  3.2.4 光電耦合器</p><p>  光電耦合器是以光為媒介傳輸電信號的一種電一光一電轉(zhuǎn)換器件。它由發(fā)光源和受光器兩部分組成。把發(fā)光源和受光器組裝在同一密閉的殼體內(nèi)

46、,彼此間用透明絕緣體隔離。發(fā)光源的引腳為輸入端,受光器的引腳為輸出端,常見的發(fā)光源為發(fā)光二極管,受光器為光敏二極管、光敏三極管等等。光電耦合器的種類較多,常見有光電二極管型、光電三極管型、光敏電阻型、光控金閘管型、光電達(dá)林頓型、集成電路型等。</p><p>  光電偶合器件(簡稱光耦)是把發(fā)光器件(如發(fā)光二極體)和光敏器件(如光敏三極管)組裝在一起,通過光線實(shí)現(xiàn)耦合構(gòu)成電—光和光—電的轉(zhuǎn)換器件。在光電耦合器輸入

47、端加電信號使發(fā)光源發(fā)光,光的強(qiáng)度取決于激勵電流的大小,此光照射到封裝在一起的受光器上后,因光電效應(yīng)而產(chǎn)生了光電流,由受光器輸出端引出,這樣就實(shí)現(xiàn)了電一光一電的轉(zhuǎn)換[10]。</p><p>  光電耦合器分為很多種類,圖7所示為常用的三極管型光電耦合器原理圖。</p><p>  當(dāng)電信號送入光電耦合器的輸入端時,發(fā)光二極體通過電流而發(fā)光,光敏元件受到光照后產(chǎn)生電流,CE導(dǎo)通;當(dāng)輸入端無信

48、號,發(fā)光二極體不亮,光敏三極管截止,CE不通。對于數(shù)位量,當(dāng)輸入為低電平“0”時,光敏三極管截止,輸出為高電平“1”;當(dāng)輸入為高電平“1”時,光敏三極管飽和導(dǎo)通,輸出為低電平“ 0”。若基極有引出線則可滿足溫度補(bǔ)償、檢測調(diào)制要求。這種光耦合器性能較好,價格便宜,因而應(yīng)用廣泛。</p><p>  圖7 常用的光電耦合器內(nèi)部結(jié)構(gòu)圖</p><p>  光電耦合器的接線原理如圖8所示。<

49、/p><p>  圖8 光電耦合器接線原理</p><p><b>  3.2.5 蜂鳴器</b></p><p>  蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時器等電子產(chǎn)品中作發(fā)聲器件。</p><p>  在單片機(jī)應(yīng)用的設(shè)計(jì)上,很多

50、方案都會用到蜂鳴器,大部分都是使用蜂鳴器來做提示或報警。用I/O定時翻轉(zhuǎn)電平來產(chǎn)生驅(qū)動波形的方式會比較麻煩一點(diǎn),必須利用定時器來做定時,通過定時翻轉(zhuǎn)電平產(chǎn)生符合蜂鳴器要求的頻率的波形,這個波形就可以用來驅(qū)動蜂鳴器了。比如為2500Hz的蜂鳴器的驅(qū)動,可以知道周期為400μs,這樣只需要驅(qū)動蜂鳴器的I/O口每200μs翻轉(zhuǎn)一次電平就可以產(chǎn)生一個頻率為2500Hz,占空比為1/2duty的方波,再通過三極管放大就可以驅(qū)動這個蜂鳴器了。由于蜂

51、鳴器的工作電流一般比較大,以致于單片機(jī)的I/O口是無法直接驅(qū)動的,所以要利用放大電路來驅(qū)動,一般使用三極管來大放電流就可以了[11]。</p><p>  本設(shè)計(jì)中選用電磁式蜂鳴器作為報警器,如圖9所示。</p><p><b>  圖9 電磁式蜂鳴器</b></p><p>  3.3 單片機(jī)AT89C51</p><p&

52、gt;  單片機(jī),全稱單片微型計(jì)算機(jī)(Single-Chip Microcomputer),又稱微控制器(Microcontroller),是把中央處理器、存儲器、定時/計(jì)數(shù)器(Timer/Counter)、各種輸入輸出接口等都集成在一塊集成電路芯片上的微型計(jì)算機(jī)。</p><p>  3.3.1 AT89C51芯片</p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲器(FP

53、EROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。其引腳排列如圖10所示。<

54、;/p><p>  圖10 AT89C51引腳圖</p><p><b>  3.3.2 定時器</b></p><p>  8051單片機(jī)內(nèi)部有兩個16位可編程定時器/計(jì)數(shù)器,記為T0和T1。他的工作方式可以通過指令對相應(yīng)的特殊功能寄存器編程來設(shè)定,或做定時器用,或作外部事件計(jì)時器用。定時器/計(jì)數(shù)器在硬件上有雙字節(jié)加法計(jì)數(shù)器TH和TL組成。做定時

55、器使用時,計(jì)數(shù)脈沖由單片機(jī)內(nèi)部振蕩器提供,計(jì)數(shù)頻率位fosc/12,每個機(jī)器周期加1。</p><p>  8051單片機(jī)定時器/計(jì)數(shù)器的工作方式由特殊功能寄存器TMOD編程決定,定時器/計(jì)數(shù)器的啟動運(yùn)行由特殊功能寄存器TCON編程控制。不論作定時器還是計(jì)數(shù)器,每當(dāng)產(chǎn)生溢出時,都會向CPU發(fā)出中斷請求。單片機(jī)的定時器的工作原理是利用了寄存器的溢出來觸發(fā)中斷的,所以在定時器編程時要去算計(jì)數(shù)的增量,再根據(jù)單片機(jī)的晶振

56、頻率,就可算出確定的時間了。定時器主要用到兩個寄存器,一個為TCON,另一個為TMOD。TCON是用來控制定時器的啟動與停止的。TMOD是用來設(shè)置定時器的模式的。</p><p>  8051單片機(jī)的定時器/計(jì)數(shù)器是可編程的,在進(jìn)行定時或技術(shù)操作前要進(jìn)行初始化編程。通常8051單片機(jī)定時器/計(jì)數(shù)器的初始化編程包括如下幾個步驟:1、確定工作方式,寄給方式控制寄存器TMOD寫入控制字。2、計(jì)算定時器/計(jì)數(shù)器初值,并將

57、初值寫入TH和TL。3、根據(jù)需要對中斷控制寄存器IE設(shè)置初值,決定是否開放定時器中斷。4、使運(yùn)行控制寄存器TCON中的TR0或TR1置“1”,啟動定時器/計(jì)數(shù)器。</p><p>  在初始化過程中,要設(shè)置定時或計(jì)數(shù)的初始值,這時需要進(jìn)行一點(diǎn)運(yùn)算。由于計(jì)數(shù)器是加法計(jì)數(shù),并在溢出時產(chǎn)生中斷,因此初始值不能是所需要的計(jì)數(shù)模值,而是要從最大計(jì)數(shù)值減去計(jì)數(shù)模值所得才是應(yīng)當(dāng)設(shè)置的計(jì)數(shù)初始值。假設(shè)計(jì)數(shù)器的最大計(jì)數(shù)值為M,則計(jì)

58、算初值X的公式如下:</p><p>  計(jì)數(shù)方式: (3-1) </p><p>  定時方式: (3-2)</p><p>  3.3.3 外部中斷</p><p>  外部中斷:對某個中央處理機(jī)而言,它的外部非通道式裝置所引起的中斷稱為外部中斷。</p>

59、<p>  51單片機(jī)的外部中斷有兩種觸發(fā)方式可選:電平觸發(fā)和邊沿觸發(fā)。選擇電平觸發(fā)時,單片機(jī)在每個機(jī)器周期檢查中斷源口線,檢測到低電平,即置位中斷請求標(biāo)志,向CPU請求中斷。選擇邊沿觸發(fā)方式時,單片機(jī)在上一個機(jī)器周期檢測到中斷源口線為高電平,下一個機(jī)器周期檢測到低電平,即置位中斷標(biāo)志,請求中斷。</p><p>  應(yīng)用時需要特別注意的幾點(diǎn):</p><p>  電平觸發(fā)方式

60、時,中斷標(biāo)志寄存器不鎖存中斷請求信號。要使電平觸發(fā)的中斷被CPU響應(yīng)并執(zhí)行,必須保證外部中斷源口線的低電平維持到中斷被執(zhí)行為止。因此當(dāng)CPU正在執(zhí)行同級中斷或更高級中斷期間,產(chǎn)生的外部中斷源(產(chǎn)生低電平)如果在該中斷執(zhí)行完畢之前撤銷(變?yōu)楦唠娖剑┝?,那么將得不到響?yīng),就如同沒發(fā)生一樣。同樣,當(dāng)CPU在執(zhí)行不可被中斷的指令(如RETI)時,產(chǎn)生的電平觸發(fā)中斷如果時間太短,也得不到執(zhí)行。</p><p>  邊沿觸發(fā)

61、方式時,中斷標(biāo)志寄存器鎖存了中斷請求。中斷口線上一個從高到低的跳變將記錄在標(biāo)志寄存器中,直到CPU響應(yīng)并轉(zhuǎn)向該中斷服務(wù)程序時,由硬件自動清除。因此當(dāng)CPU正在執(zhí)行同級中斷(甚至是外部中斷本身)或高級中斷時,產(chǎn)生的外部中斷(負(fù)跳變)同樣將被記錄在中斷標(biāo)志寄存器中。在該中斷退出后,將被響應(yīng)執(zhí)行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標(biāo)志。</p><p>  中斷標(biāo)志可以手工清除。一個中斷如果在沒有得

62、到響應(yīng)之前就已經(jīng)被手工清除,則該中斷將被CPU忽略。就如同沒有發(fā)生一樣。</p><p><b>  3.4顯示電路設(shè)計(jì)</b></p><p>  3.4.1 1602字符型LCD簡介</p><p>  字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。一般1602

63、字符型液晶顯示器實(shí)物如圖11所示:</p><p>  圖11 1602實(shí)物圖</p><p>  3.4.2 1602LCD的基本參數(shù)及引腳功能</p><p>  1、1602LCD類型</p><p>  1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸

64、差別如下圖12所示:</p><p>  圖12 1602LCD尺寸圖</p><p>  2、1602LCD主要技術(shù)參數(shù):</p><p>  顯示容量:16×2個字符</p><p>  芯片工作電壓:4.5—5.5V</p><p>  工作電流:2.0mA(5.0V)</p><p

65、>  模塊最佳工作電壓:5.0V</p><p>  字符尺寸:2.95×4.35(W×H)mm</p><p><b>  引腳功能說明</b></p><p>  1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下:</p><p>  第1腳:VSS為地電源

66、。</p><p>  第2腳:VDD接5V正電源。</p><p>  第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。</p><p>  第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p>  第

67、5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。</p><p>  第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p>&l

68、t;p>  第15腳:背光源正極。</p><p>  第16腳:背光源負(fù)極。</p><p><b>  4系統(tǒng)軟件設(shè)計(jì)</b></p><p><b>  4.1程序設(shè)計(jì)步驟</b></p><p>  第一步分析問題,明確任務(wù)要求,對于復(fù)雜的問題,還要講要解決的問題抽象成數(shù)學(xué)模型,即用數(shù)

69、學(xué)表達(dá)式來描述。</p><p>  第二步確定算法,即根據(jù)實(shí)際問題和指令系統(tǒng)的特點(diǎn)確定完成這一任務(wù)須經(jīng)歷的步驟。</p><p>  第三步根據(jù)所選擇的算法,確定內(nèi)存單元的分配:使用那些寄存器:程序運(yùn)行中的中間數(shù)據(jù)及結(jié)果存放在那些單元,以利于提高程序的效率和運(yùn)行速度:然后制定出解決問題的步驟和順序,畫出程序的流程圖。</p><p>  第四步根據(jù)流程圖,編寫源程

70、序。</p><p>  第五步上機(jī)對原程序進(jìn)行編譯、調(diào)試。</p><p><b>  4.2程序流程圖</b></p><p>  電機(jī)轉(zhuǎn)速測量需要經(jīng)過的4個基本步驟:一是控制方式;二是確定計(jì)數(shù)方式;三是信號輸入方式;四是計(jì)數(shù)值的讀??;通過AT89C51,單片機(jī)完成對電機(jī)轉(zhuǎn)速脈沖計(jì)數(shù)的控制,讀取寄存器完成轉(zhuǎn)速頻率的確定。 而SGN電機(jī)脈沖信

71、號連到引腳。計(jì)數(shù)次數(shù)為3次,將3次結(jié)果取平均,從而提高計(jì)數(shù)的穩(wěn)定性和精確性。</p><p>  其測量過程是測量轉(zhuǎn)速的霍爾傳感器和電機(jī)機(jī)軸同軸連接,機(jī)軸每轉(zhuǎn)一周,產(chǎn)生一定量的脈沖個數(shù),由霍爾器件電路輸出。經(jīng)過電耦合器后,即經(jīng)過隔離整形電路后,成為轉(zhuǎn)數(shù)計(jì)數(shù)器的計(jì)數(shù)脈沖。同時霍爾傳感器電路輸出幅度為12V的脈沖經(jīng)光電耦合后降為5V,保持同單片機(jī)AT89C51邏輯電平相一致,控制計(jì)數(shù)時間,即可實(shí)現(xiàn)計(jì)數(shù)器的計(jì)數(shù)值對應(yīng)

72、機(jī)軸的轉(zhuǎn)速值。主CPU將該值數(shù)據(jù)處理后,在LCD液晶顯示器上顯示出來[12]。</p><p>  本系統(tǒng)采用AT89C51中的中斷對轉(zhuǎn)速脈沖計(jì)數(shù)。定時器T0工作于定時方式,工作于方式1。每到1s讀一次外部中斷計(jì)數(shù)值,此值即為脈沖信號的頻率,根據(jù)式(4-1)可計(jì)算出電機(jī)的轉(zhuǎn)速。</p><p>  當(dāng)直流電機(jī)通過傳動部分帶圓盤旋轉(zhuǎn)時,霍爾傳感器根據(jù)圓盤上得磁片獲得一系列脈沖信號。這些脈沖信

73、號通過單片機(jī)系統(tǒng)定時/計(jì)數(shù)器計(jì)數(shù),定時器T0定時。定時器T0完成100次溢出中斷的時間T除以測得的脈沖數(shù)m,經(jīng)過單位換算,就可以算得直流電機(jī)旋轉(zhuǎn)的速度。</p><p>  直流電機(jī)轉(zhuǎn)速計(jì)算公式:n=60·m/(N1·T·N)(rpm) (4-1)</p><p>  其中:n為直流電機(jī)轉(zhuǎn)速,N為柵格數(shù),N1為T0中斷次數(shù),m為在規(guī)定

74、時間內(nèi)測得的脈沖數(shù),T為定時器T0定時溢出時間[13]。</p><p>  4.2.1主程序流程圖</p><p>  主程序工作過程如下:</p><p>  先進(jìn)行初始化設(shè)置各定時器初值,然后判斷是否啟動系統(tǒng)進(jìn)行測量。如果是,就啟動系統(tǒng)運(yùn)行。如果不是就等待啟動。啟動系統(tǒng)后,霍爾傳感器檢測脈沖到來后,啟動外部中斷,每來一個脈沖中斷一次,記錄脈沖個數(shù)。同時啟動T0

75、定時器工作,每1秒定時中斷一次,讀取記錄的脈沖個數(shù),即電機(jī)轉(zhuǎn)速。連續(xù)采樣三次,取平均值記為一次轉(zhuǎn)速值。再進(jìn)行數(shù)值的判斷,若數(shù)值高于5000rpm則報警并返回初始化階段,否則就進(jìn)行正常速度液晶顯示。</p><p><b>  圖13主流程圖</b></p><p>  4.2.2中斷服務(wù)流程圖 </p><p>  在處于中斷服務(wù)程序階段,首先

76、進(jìn)行關(guān)中斷設(shè)置。其次進(jìn)行對位進(jìn)行的脈沖個數(shù)計(jì)數(shù)的數(shù)值讀取。再次對、T0進(jìn)行賦初值并且進(jìn)行關(guān)中斷設(shè)置。最后進(jìn)行中斷返回。</p><p><b>  1、外部計(jì)數(shù)中斷</b></p><p>  圖14 外部中斷流程圖 </p><p><b>  2、定時器中斷</b></p>

77、<p>  圖15 T0中斷流程圖</p><p><b>  4.3軟件程序設(shè)計(jì)</b></p><p>  4.3.1主程序設(shè)計(jì)</p><p>  主程序在對定時器、計(jì)數(shù)器、堆棧等進(jìn)行初始化后即判斷標(biāo)志位是否為1,如果為1,說明要求對數(shù)據(jù)進(jìn)行計(jì)算處理,首先將標(biāo)志位清零,以保證下次能正常判斷,然后進(jìn)入數(shù)據(jù)處理程序,由于這里的閘門

78、時間為1s,而顯示要求為轉(zhuǎn)/分,因此,要將測到的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換的方法是將測得的數(shù)據(jù)乘以60,但由于轉(zhuǎn)軸上安裝有4只磁鋼,每旋轉(zhuǎn)一周可以得到4個脈沖,因此,要將測得的數(shù)據(jù)除以4,所以綜合起來,將測得的數(shù)據(jù)乘以60/4=15即可得到每分鐘的轉(zhuǎn)速。計(jì)算得到的結(jié)果是二進(jìn)制的整數(shù),要將數(shù)據(jù)送往顯示緩沖區(qū)需要將該數(shù)轉(zhuǎn)化為BCD碼。運(yùn)算得到的是壓縮BCD碼,需要將其轉(zhuǎn)換為非壓縮BCD碼,從標(biāo)號CBCD開始的一段程序即作了這樣的處理[14]。<

79、;/p><p>  定時器T0用作4ms定時發(fā)生器,在定時中斷程序中進(jìn)行數(shù)碼管的動態(tài)掃描,同時產(chǎn)生1s的閘門信號。1s閘門信號的產(chǎn)生是通過一個計(jì)數(shù)器Count,每次中斷時間為4ms,每計(jì)250次即為1s,到了1s后,即清除計(jì)數(shù)器Count,然后關(guān)閉作為計(jì)數(shù)器用的INT0,讀出TH0、TL0中的數(shù)值,分別送入SpCount和SpCount+1單元,將T0中的值清空,置標(biāo)志位為1,要求主程序進(jìn)行速度值的計(jì)算。這里還有一個

80、細(xì)節(jié),用作1s閘門信號產(chǎn)生的Count每次中斷都會加1,而INT0卻有一個周期是被關(guān)閉的,因此,計(jì)數(shù)值是251而不是250。</p><p>  系統(tǒng)采用外部晶振,系統(tǒng)時鐘SYSCLK等于18432000,T0定時1ms,初始化時TL0=-(SYSCLK/1000)。等待1s到,輸出轉(zhuǎn)速脈沖個數(shù)N,計(jì)算電機(jī)轉(zhuǎn)速值。將1s內(nèi)的轉(zhuǎn)速值換算成1 min內(nèi)的電機(jī)轉(zhuǎn)速值,并在LCD上輸出測量結(jié)果[15]。</p>

81、;<p>  /*------------------------主函數(shù)-------------------------*/</p><p>  void main()</p><p><b>  {</b></p><p>  int_all();//全局初始化</p><p><b>  w

82、hile(1)</b></p><p><b>  {</b></p><p>  disp_count();//數(shù)據(jù)處理</p><p>  if(zhuan>5000) //轉(zhuǎn)速警告</p><p><b>  {</b></p><p>  warn

83、ing=1;</p><p><b>  }</b></p><p>  if(zhuan<4999)</p><p><b>  {</b></p><p>  warning=0;</p><p><b>  }</b></p>

84、<p>  write_command(0x80);</p><p>  for (i=0;i<sizeof(display)-1;i++)</p><p><b>  {</b></p><p>  write_data(display[i]); //LCD顯示</p><p><b>  d

85、elay(5);</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.3.2中斷服務(wù)程序設(shè)計(jì)</p><p><b>  1、外部計(jì)

86、數(shù)中斷</b></p><p>  /*-------------------外部中斷0計(jì)數(shù)程序-------------------*/</p><p>  void counter(void) interrupt 0 </p><p><b>  {</b></p><p>  EX1=0;

87、//關(guān)外部中斷0</p><p>  count++;//計(jì)數(shù)加1</p><p>  if(count==4) //4次循環(huán)為電機(jī)轉(zhuǎn)一圈</p><p><b>  {</b></p><p>  count=1; //初始化計(jì)數(shù)</p><p>  z++;//轉(zhuǎn)圈計(jì)數(shù)加1</p>

88、<p><b>  }</b></p><p>  EX1=1;//開外部中斷0</p><p><b>  }</b></p><p><b>  2、定時器中斷</b></p><p>  /*-----------------內(nèi)部中斷0計(jì)時計(jì)數(shù)

89、程序-----------------*/</p><p>  void Time0(void) interrupt 2 using 0</p><p><b>  {</b></p><p>  TH0=0x4c; //50ms定時</p><p><b>  TL0=0x00;<

90、/b></p><p><b>  msec++;</b></p><p>  if(msec==20) //50*20=1S</p><p><b>  {</b></p><p><b>  msec=0;</b></p><p&

91、gt;<b>  zhuan=z;</b></p><p><b>  z=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.3.3 顯示程序設(shè)計(jì)</p><p>

92、  液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。</p><p>  在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。</p><p>  向LCD輸入的數(shù)據(jù)有兩種,一

93、種是指令,一種是數(shù)據(jù)。指令是負(fù)責(zé)初始化LCD與LCD顯示字符是什么位置。數(shù)據(jù)是告訴該顯示什么。命令與數(shù)據(jù)是RS端的高低電平來確定。數(shù)據(jù)開始的時候是由LCDCS高電平開始,低電平結(jié)束。</p><p><b>  圖16 顯示流程圖</b></p><p>  /*--------------------向LCD1602寫命令--------------------*/

94、</p><p>  void write_command(uchar command)</p><p><b>  {</b></p><p>  rs=0; //選擇寫命令</p><p>  P0=command; //向LCD寫命令</p><p>  lcdcs=1;//信號使能端高

95、電平</p><p>  lcdcs=0; //信號使能端低電平</p><p><b>  }</b></p><p>  /*-------------------------------------------------------*/</p><p>  /*--------------------向LCD16

96、02寫數(shù)據(jù)--------------------*/</p><p>  void write_data(uchar data0)</p><p><b>  {</b></p><p>  rs=1; //選擇寫數(shù)據(jù)</p><p>  P0=data0; //向LCD寫數(shù)據(jù)</p><p>

97、  lcdcs=1; //信號使能端高電平</p><p>  lcdcs=0;//信號使能端低電平</p><p><b>  }</b></p><p>  4.3.4 報警程序設(shè)計(jì)</p><p>  蜂鳴器發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它,單片機(jī)I

98、O引腳輸出的電流較小,單片機(jī)輸出的TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路。</p><p>  蜂鳴器程序設(shè)計(jì)思路:本程序通過在輸出一個音頻范圍的方波,驅(qū)動實(shí)驗(yàn)板上的蜂鳴器發(fā)出蜂鳴聲,其中Delay延時子程序的作用是使輸出的方波頻率在人耳朵聽覺能力之內(nèi)的20kHz以下,如果沒有這個延時程序的話,輸出的頻率將大大超出人耳朵的聽覺能力,我們將不能聽到聲音。更改延時常數(shù),可以改變輸出頻率,也就可

99、以調(diào)整蜂鳴器的音調(diào)。代碼為:</p><p>  if(zhuan>5000)</p><p><b>  {</b></p><p>  warning=0;</p><p><b>  }</b></p><p>  if(zhuan<4999)</p&

100、gt;<p><b>  {</b></p><p>  warning=1;</p><p><b>  }</b></p><p>  4.3.5 轉(zhuǎn)速程序的設(shè)計(jì)</p><p>  測速的方法決定了測速信號的硬件連接,測速實(shí)際上就是測頻,因此,頻率測量的一些原則同樣適用于測速。

101、 通常,可以用計(jì)數(shù)法、測脈寬法和等精度法來進(jìn)行測試。</p><p>  所謂計(jì)數(shù)法,就是給定一個閘門時間,在閘門時間內(nèi)計(jì)數(shù)輸入的脈沖個數(shù);測脈寬法是利用待測信號的脈寬來控制計(jì)數(shù)門,對一個高精度的高頻計(jì)數(shù)信號進(jìn)行計(jì)數(shù)。由于閘門與被測信號不能同步,因此,這兩種方法都存在±1誤差的問題,第一種方法適用于信號頻率高時使用,第二種方法則在信號頻率低時使用。等精度法則對高、低頻信號都有很好的適應(yīng)性[16]。

102、</p><p>  /*-----------------------數(shù)據(jù)處理------------------------*/</p><p>  void disp_count()</p><p><b>  {</b></p><p>  display[9]=(zhuan/1000+'0')

103、; /轉(zhuǎn)換轉(zhuǎn)速的千位</p><p>  display[10]=(zhuan/100%10+'0'); //轉(zhuǎn)換轉(zhuǎn)速的百位</p><p>  display[11]=(zhuan/10%10+'0'); //轉(zhuǎn)換轉(zhuǎn)速的十位</p><p>  display[12]=(zhuan%10+'0'); //轉(zhuǎn)換轉(zhuǎn)速

104、的十位</p><p><b>  }</b></p><p><b>  5軟件調(diào)試</b></p><p>  5.1 Proteus及Keil軟件簡介</p><p>  5.1.1 Proteus軟件</p><p>  Proteus軟件是一種低投資的電子設(shè)計(jì)自動化

105、軟件,提供可仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件和多達(dá)30多個元件庫。Proteus軟件提供多種現(xiàn)實(shí)存在的虛擬儀器儀表。此外,Proteus還提供圖形顯示功能,可以將線路上變化的信號,以圖形的方式實(shí)時地顯示出來。這些虛擬儀器儀表具有理想的參數(shù)指標(biāo),例如極高的輸入阻抗、極低的輸出阻抗,盡可能減少儀器對測量結(jié)果的影響,Proteus軟件提供豐富的測試信號用于電路的測試。這些測試信號包括模擬信號和數(shù)字信號。提供Schematic Draw

106、ing、SPICE仿真與PCB設(shè)計(jì)功能,同時可以仿真單片機(jī)和周邊設(shè)備,可以仿真51系列、AVR、PIC等常用的MCU,并提供周邊設(shè)備的仿真,例如373、led、示波器等。Proteus提供了大量的元件庫,有RAM、ROM、鍵盤、馬達(dá)、LED、LCD、AD/DA、部分SPI器件、部分IIC器件,編譯方面支持Keil和MPLAB等編譯器。</p><p>  一臺計(jì)算機(jī)、一套電子仿真軟件,在加上一本虛擬實(shí)驗(yàn)教程,就可

107、相當(dāng)于一個設(shè)備先進(jìn)的實(shí)驗(yàn)室。以虛代實(shí)、以軟代硬,就建立一個完善的虛擬實(shí)驗(yàn)室。在計(jì)算機(jī)上學(xué)習(xí)電工基礎(chǔ),模擬電路、數(shù)字電路、單片機(jī)應(yīng)用系統(tǒng)等課程,并進(jìn)行電路設(shè)計(jì)、仿真、調(diào)試等[17]。</p><p>  5.1.2 Keil軟件</p><p>  KeilC51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)

108、性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。 KeilC51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。</p><p>  C51工具包的整體結(jié)構(gòu)如圖17所示,其中U

109、vision與Ishell分別是C51 for Windows和For Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分 別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器DScope

110、51或TScope51使用進(jìn)行源代碼級調(diào)試,也可由仿真器使用直接 對目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。</p><p>  圖17 C51工具包的整體結(jié)構(gòu)圖</p><p>  5.2 應(yīng)用Keil軟件進(jìn)行程序調(diào)試</p><p>  軟件的調(diào)試必須在開發(fā)系統(tǒng)的支持下進(jìn)行。先分別調(diào)試通過各個模塊程序,然后調(diào)試中斷服務(wù)程序,最后調(diào)試主程序,將各部

111、分連接進(jìn)行調(diào)試。調(diào)試的范圍可以由小到大,逐步增加,必要的中間信號可以先做設(shè)定。通常交叉使用單步運(yùn)行,斷點(diǎn)運(yùn)行,連續(xù)運(yùn)行等多種方式,每次執(zhí)行完畢后,檢查CPU執(zhí)行現(xiàn)場,RAM的有關(guān)內(nèi)容,I/O接口的狀態(tài)等。發(fā)現(xiàn)一個問題,解決一個問題,直至全部通過。</p><p>  首先新建一個工程項(xiàng)目文件;其次為工程選擇目標(biāo)器件;再次為工程項(xiàng)目設(shè)置軟硬件調(diào)試環(huán)境;并創(chuàng)建源程序文件并輸入程序代碼,及保存創(chuàng)建的源程序項(xiàng)目文件;最后

112、把源程序文件添加到項(xiàng)目中[18]。</p><p>  5.3 Proteus軟件仿真</p><p>  在Proteus軟件中畫出原理圖,向單片機(jī)中加入需要調(diào)試的程序的HEX文件,便可以進(jìn)行調(diào)試了。</p><p>  5.3.1 仿真步驟</p><p>  利用Proteus實(shí)現(xiàn)單片機(jī)系統(tǒng)開發(fā)過程一般分為四步:</p>

113、<p>  1、在Proteus平臺上進(jìn)行單片機(jī)系統(tǒng)電路設(shè)計(jì)、選擇元器件、接插件、連接電路和電氣檢測等(簡稱Proteus電路設(shè)計(jì));</p><p>  2、在Proteus平臺上進(jìn)行單片機(jī)系統(tǒng)源程序設(shè)計(jì)、編輯、匯編編譯、調(diào)試,最后生成目標(biāo)代碼文件(*.hex)(簡稱Proteus軟件設(shè)計(jì));</p><p>  再次在Proteus平臺上將目標(biāo)代碼文件加載到單片機(jī)系統(tǒng)中,并實(shí)

114、現(xiàn)單片機(jī)系統(tǒng)的實(shí)時交互、協(xié)同仿真(簡稱Proteus仿真);</p><p>  最后仿真正確后,安裝實(shí)際單片機(jī)系統(tǒng)電路,并將目標(biāo)代碼文件(*.hex)下載到實(shí)際單片機(jī)中運(yùn)行、調(diào)試。若出現(xiàn)問題,可與Proteus設(shè)計(jì)與仿真相互配合調(diào)試,直至運(yùn)行成功(簡稱實(shí)際產(chǎn)品安裝、運(yùn)行與調(diào)試)。筆者的實(shí)踐證明:按照Proteus仿真通過的設(shè)計(jì)來安裝的實(shí)際系統(tǒng),只要安裝正確、元器件無誤,焊接牢靠,基本都能順利通過[19]。<

115、;/p><p>  5.3.2 仿真實(shí)例</p><p>  第一步,進(jìn)行參數(shù)的選定。本系統(tǒng)主芯片采用的是AT89C51,因此選定該型號。</p><p>  圖18 芯片型號選擇</p><p>  第二步,在Option For Target Target 1中選擇生成HEX文件。</p><p>  圖19 HEX文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論