版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 【摘 要】本文介紹的速度與里程表設(shè)計以單片機最小系統(tǒng)和霍爾傳感器為核心。傳感器將不同車速轉(zhuǎn)變成的不同頻率的脈沖信號輸入到單片機進行控制與計算,再采用LED模塊進行顯示,使得電動自行車的速度與里程數(shù)據(jù)能直觀的顯示給使用者。</p><p> 本系統(tǒng)由霍爾傳感器、RC濾波電路、單片機AT89S51、系統(tǒng)化LED顯示模塊、數(shù)據(jù)存儲電路和鍵盤控制組成。其中霍爾傳感器包含信號放大和波形整形。對待測
2、信號進行放大的目的是降低對待測信號的幅度要求;波形變換和波形整形電路則用來將放大的信號轉(zhuǎn)換成可與單片機相連的TTL信號;通過單片機的設(shè)置可使內(nèi)部定時器T1對脈沖輸入引腳T0進行控制,這樣能精確地算出加到T0引腳的單位時間內(nèi)檢測到的脈沖數(shù);設(shè)計中速度顯示采用LED模塊,通過速度換算得來的里程數(shù)采用I2C總線并通過E2PROM來存儲,既節(jié)省了所需單片機的口線和外圍器件,同時也簡化了顯示部分的軟件編程</p><p>
3、 本文先對里程表設(shè)計當中所需設(shè)備作了詳細介紹,對設(shè)計中存在的問題進行了說明;而后對硬件和軟件部分的設(shè)計和實現(xiàn)作了認真的分析;然后給出了系統(tǒng)的建模過程及相應(yīng)的系統(tǒng)模型,在此基礎(chǔ)上進行了控制仿真,并對仿真效果進行了比較。</p><p> 本里程表的設(shè)計具有結(jié)構(gòu)簡單,成本低廉,顯示清晰,穩(wěn)定可靠等優(yōu)點。并且可進行擴充,加入時速表的功能,更加方便的了解你現(xiàn)在所處的情況。</p><p>
4、關(guān)鍵詞:單片機最小系統(tǒng),LED數(shù)碼管,霍爾傳感器,RC濾波器,EEPROM存儲器</p><p> Bicycle Mileage Count Table</p><p> Abstract: This paper describes the design speed and Odometer to SCM system and the smallest Hall sensor at
5、the core. Different speed sensor into different frequency pulse signal input to the microprocessor control and calculation adopt LED modules, making the speed of electric bicycles and mileage data can be directly display
6、ed to the user.</p><p> The system consists of Hall sensor, RC filter circuit, SCM AT89S51, systematic LED display modules, data storage and keyboard control circuit components. Hall sensor which contains s
7、ignal amplification and waveform shaping. Deal signals measured amplification of the treatment is to reduce the rate of measured signals; Waveform transform and waveform shaping circuit will be used for amplification of
8、the signal can be converted into SCM connected with TTL signals; SCM through the setup will enable</p><p> This article first right Odometer designs required equipment, details of the design issues of; Late
9、r on hardware and software design and implementation carefully analyzed; Then the system modeling process and the corresponding model, based on the control simulation, Simulation results also were compared. </p>
10、<p> Odometer the design of the structure is simple, low cost, showing clear, stable and reliable results. And can be expanded to speed the function table and more convenient understand you are now stand.</p>
11、<p> Keywords: SCM minimum system, LED digital control, Hall sensor, RC filter, EEPROM memory.</p><p><b> 目錄</b></p><p><b> 第一章 緒論1</b></p><p>
12、1.1 課題背景、發(fā)展及意義1</p><p> 1.2 系統(tǒng)設(shè)計概述1</p><p> 1.3 各章節(jié)的安排2</p><p> 第二章 自行車里程表的設(shè)計方法與基本原理3</p><p> 2.1 霍爾傳感器3</p><p> 2.2 單片機最小系統(tǒng)3</p>&
13、lt;p> 2.3 頻率測量法5</p><p> 2.4 LED數(shù)碼管6</p><p> 2.5 存儲器EEPROM7</p><p> 2.6 鍵盤控制7</p><p> 2.7 RC濾波器8</p><p> 第三章 硬件實現(xiàn)的設(shè)計方法與原理9</p>
14、<p> 3.1 系統(tǒng)概述9</p><p> 3.2 系統(tǒng)總框圖10</p><p> 3.3 各部分硬件圖10</p><p> 3.3.1 顯示部分10</p><p> 第四章 自行車里程表軟件實現(xiàn)方法12</p><p> 4.1 軟件編程實現(xiàn)12</p>
15、;<p> 4.1.2 數(shù)據(jù)處理12</p><p> 4.1.3 鍵盤控制13</p><p> 4.2 部分程序14</p><p> 第五章 制作電路板33</p><p> 5.1 繪制電路原理圖33</p><p> 5.2 制作PCB板34</p>
16、<p> 第六章 總結(jié)36</p><p> 6.1 實現(xiàn)功能36</p><p> 6.2 心得體會36</p><p><b> 參考文獻37</b></p><p><b> 致 謝38</b></p><p><b&g
17、t; 第一章 緒論</b></p><p> 1.1 課題背景、發(fā)展及意義</p><p> 我國是自行車大國,隨著人們生活水平的不斷提高,自行車已經(jīng)不僅僅是運輸、代步的工具,其輔助功能也變得越來越重要。因此,人們希望自行車的娛樂、休閑、鍛煉的功能越來越多,能帶來大家更多的健康與快樂。在這個背景下,自行車里程表作為自行車的一大輔助工具迅速發(fā)展起來.科學(xué)、美觀、合理設(shè)
18、計自行車里程表有一定的實用價值.它能合理計算出速度及公里數(shù),使運動者運動適量,達到健康運動與代步的最佳效果。</p><p> 隨著自行車里程表的發(fā)展,其功能也逐漸從單一的里程顯示發(fā)展到速度、時間顯示,甚至有的還具有測量騎車人的心跳、顯示騎車人熱量消耗等功能,讓人能清楚地知道當前的速度、時間、里程等物理量。如佛山高明華勁電子公司的自行車里程表MS-601,能動態(tài)顯示行駛里程、騎車時間、實時車速等。</p&
19、gt;<p> 1.2 系統(tǒng)設(shè)計概述</p><p> 本設(shè)計中,我們以ATMEL公司AT89S51單片機為控制核心,采用霍爾傳感器檢測自行車輪胎的運轉(zhuǎn)情況,通過一定的抗干擾處理和計算后,由LED顯示自行車的里程。本設(shè)計中,計數(shù)的正確性決定了本裝置的精度,如何在復(fù)雜的環(huán)境中得到正確的計數(shù)脈沖,是本設(shè)計的難點,初步的解決辦法是在硬件上進行合理的濾波,軟件上進行一定的算法處理。本裝置中,還可用上
20、屆畢業(yè)生的成果:人體脈搏測量儀的設(shè)計與實現(xiàn),本裝置將不僅能測量自行車的里程,還能測量騎車人的心臟工作情況,從這個角度上,本設(shè)計更符合用戶的需要。</p><p> 本里程表的設(shè)計具有結(jié)構(gòu)簡單,成本低廉,顯示清晰,穩(wěn)定可靠等優(yōu)點。并且可進行擴充,加入時速表的功能,更加方便的了解你現(xiàn)在所處的情況。</p><p> 1.3 各章節(jié)的安排</p><p> 第一章敘
21、述了自行車里程表的背景、發(fā)展、意義以及本自行車里程表的概述。</p><p> 第二章介紹了自行車里程表的設(shè)計方法與研究,主要是對設(shè)計中所需設(shè)備的詳細介紹,包括霍爾傳感器、單片機最小系統(tǒng)、頻率測量算法、數(shù)據(jù)存儲器EEPROM及LED數(shù)碼管。具體為:介紹霍爾傳感器的基本原理,及其應(yīng)用和發(fā)展;單片機最小系統(tǒng)的基本結(jié)構(gòu),工作原理及其性能;頻率測量的算法及其實現(xiàn);數(shù)據(jù)存儲器EEPROM的引腳極其性能,LED數(shù)碼管的工作
22、原理。</p><p> 第三章是本論文的自行車里程表的硬件設(shè)計部分,介紹了自行車里程表的總體設(shè)計思想,電路圖及其原理,硬件實現(xiàn)。</p><p> 第四章是自行車里程表的軟件實現(xiàn)部分,主要介紹單片機編程實現(xiàn)頻率測量的功能。</p><p> 第五章是繪制電路原理圖,制作PCB圖。</p><p> 第六章為總結(jié)和展望,介紹了本論文實
23、現(xiàn)的功能,闡述本課題的現(xiàn)實意義,以及對未來自行車里程表技術(shù)的展望。</p><p> 第二章 自行車里程表的設(shè)計方法與基本原理</p><p><b> 2.1 霍爾傳感器</b></p><p> 霍爾傳感器是一種能實現(xiàn)磁電轉(zhuǎn)換的傳感器,用它們可以檢測磁場及其變化。霍爾傳感器具有許多優(yōu)點,它們的結(jié)構(gòu)牢固,體積小,壽命長,安裝方便,功耗小
24、,頻率高,耐震動,不怕灰塵、油污及鹽霧等的污染或腐蝕?;魻栭_關(guān)器件具有無觸點、輸出波形清晰、無抖動、位置重復(fù)精度高等優(yōu)點。 </p><p> 霍爾效應(yīng):在一塊半導(dǎo)體薄片上,其長度為L,寬度為B,厚度為D,當它被置于磁感應(yīng)強度B的磁場中,如果在它的相對的兩邊通以控制電流I,且磁場方向與電流方向正交,則在半導(dǎo)體另外兩端將產(chǎn)生一個大小與控制電流方向I和磁感應(yīng)強度B乘積成正比的電勢Uh,即Uh=KhIB,其中Kh為霍
25、爾元件的靈敏度。該電勢就稱為霍爾電勢,半導(dǎo)體薄片就是霍爾元件。</p><p> 由于霍爾元件具有在靜止狀態(tài)下感受磁場的能力,且結(jié)構(gòu)簡單,形小體輕,頻帶寬(可從直流到微波),動態(tài)特性好、動態(tài)范圍大,壽命長和可進行非接觸測量等優(yōu)點,故在檢測技術(shù)、自動控制技術(shù)和信息處理等方面得到日益廣泛應(yīng)用?;魻杺鞲衅髟谖磥戆l(fā)展中的趨勢將是高靈敏度、高精度和高穩(wěn)定度,它將在微電子技術(shù)發(fā)展的基礎(chǔ)上更加飛速的發(fā)展。 </p>
26、;<p> 2.2 單片機最小系統(tǒng)</p><p> 單片機最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng).對51系列單片機來說,最小系統(tǒng)一般應(yīng)該包括:單片機、晶振電路、復(fù)位電路。</p><p> ?。?)單片機最小系統(tǒng)的結(jié)構(gòu)</p><p> 單片機要正常運行,必須具備一定的硬件條件,其中最主要的就是三個基本條件
27、:1.電源正常;2.時鐘正常;3.復(fù)位正常。在AT89S51單片機的40個引腳中:電源引腳2根,晶振引腳2根,控制引腳4根,可編程輸入輸出引腳32根。</p><p> 工作電源:電源是單片機工作的動力源泉,對應(yīng)的接線方法為:40腳(VCC)電源引腳,工作時接+5V電源,20腳(GND)為接地線。 復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道,當系統(tǒng)一
28、上電,RST腳將會出現(xiàn)高電平,并且,這個高電平持續(xù)的時間由電路的RC值來決定.典型的51單片機當RST腳的高電平持續(xù)兩個機器周期以上就將復(fù)位,所以,適當組合RC的取值就可以保證可靠的復(fù)位。一般教科書推薦C 取10u,R取8.2K。當然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個機器周期的高電平。</p><p> 晶振電路:時鐘電路為單片機產(chǎn)生時序脈沖,單片機所有運算與控制過程都
29、是在統(tǒng)一的時序脈沖的驅(qū)動下的進行的,如果單片機的時鐘電路停止工作(晶振停振),那么單片機也就停止運行了。當采用內(nèi)部時鐘時,連接方法如下圖所示,在晶振引腳XTAL1(19腳)和XTAL2(18腳)引腳之間接入一個晶振,兩個引腳對地分別再接入一個電容即可產(chǎn)生所需的時鐘信號,電容的容量一般在幾十皮法,如30PF。典型的晶振取11.0592MHz(因為可以準確地得到9600波特率和19200波特率,用于有串口通訊的場合)/12MHz(產(chǎn)生精確的
30、uS級時歇,方便定時操作)。</p><p> 控制引腳EA接法。EA/VPP(31腳)為內(nèi)外程序存儲器選擇控制引腳,當EA為低電位時,單片機從外部程序存儲器取指令;當EA接高電平時,單片機從內(nèi)部程序存儲器取指令。AT89S51單片機內(nèi)部有4KB可反復(fù)擦寫1000次以上的程序存儲器,因此我們把EA接到+5V高電平,讓單片機運行內(nèi)部的程序,我們就可以通過反復(fù)燒寫來驗證我們的程序了。</p><
31、p> ?。?)單片機最小系統(tǒng)的性能</p><p> 89S51相對于89C51增加的新功能包括: ISP在線編程功能,這個功能的優(yōu)勢在于改寫單片機存儲器內(nèi)的程序不需要把芯片從工作環(huán)境中剝離。是一個強大易用的功能。最高工作頻率為33MHz,大家都知道89C51的極限工作頻率是24MHz,就是說S51具有更高工作頻率,從而具有了更快的計算速度。具有雙工UART串行通道。 內(nèi)部集成看門狗計時器,不再需要像89
32、C51那樣外接看門狗計時器單元電路。 雙數(shù)據(jù)指示器、電源關(guān)閉標識、全新的加密算法,這使得對于89S51的解密變?yōu)椴豢赡?,程序的保密性大大加強,這樣就可以有效的保護知識產(chǎn)權(quán)不被侵犯。兼容性方面:向下完全兼容51全部字系列產(chǎn)品。比如8051、89C51等等早期MCS-51兼容產(chǎn)品。也就是說所有教科書、網(wǎng)絡(luò)教程上的程序(不論教科書上采用的單片機是8051還是89C51還是MCS-51等等),在89S51上一樣可以照常運行,這就是所謂的向下兼容
33、。</p><p> 2.3 頻率測量法</p><p> 用于頻率測量的方法有很多,頻率測量的準確度主要取決于所測的頻率</p><p> 范圍以及被測對象的特點.而測量所能達到的精度,不僅僅取決于作為標準器</p><p> 使用的頻率源的精度,也取決于所使用的測量設(shè)備和測量方法。</p><p> 該
34、設(shè)計能實時地將所測的速度與累計里程數(shù)顯示出來,主要是將傳感器輸入到單片機的脈沖信號的頻率(傳感器將不同車速轉(zhuǎn)變成不同頻率的脈沖信號)實時地測量出來,考慮到信號的衰減、干擾等影響,在信號送入單片機前應(yīng)對其進行放大整形,然后通過單片機計算出速度和里程,再將所得的數(shù)據(jù)存儲到串口數(shù)據(jù)存儲器,并由LED顯示模塊交替顯示所測速度與里程。本設(shè)計的里程數(shù)的算法是一種大概的算法(假設(shè)在一定時間內(nèi)自行車是勻速行進,平均速度與時間的乘積即為里程數(shù))。<
35、/p><p> 設(shè)計時,應(yīng)綜合考慮測速精度和系統(tǒng)反應(yīng)時間。本設(shè)計用測量脈沖頻率來計算速度,因而具有較高的測速精度。在計算里程時取了自行車的理想狀態(tài)。實際中,誤差控制在幾米之內(nèi),相對于整個里程來說不是很大。另外,還應(yīng)盡量保證其他子模塊在編程時的通用性和高效性。本設(shè)計的速度和里程值采用6位顯示,并包含兩個小數(shù)位。</p><p> 我們所用的霍爾傳感器是一塊集成芯片。它結(jié)合了采樣和放大功能與一
36、體。首先我們把磁鋼放在自行車的轉(zhuǎn)軸上,而霍爾元件就放在與其水平的轉(zhuǎn)軸上,當我們完成安裝后,轉(zhuǎn)動自行車的轉(zhuǎn)軸,磁鋼也就跟著一起轉(zhuǎn)動,從而使霍爾傳感器周圍的磁場發(fā)生變化,這種變化將會導(dǎo)致霍爾電壓變化從而產(chǎn)生一個毫伏級的方波,再通過其內(nèi)部的整形和放大。產(chǎn)生出一個適合外部電路的脈沖電壓。由于磁鋼共分為8片,磁場將會改變8次,磁場強度大時輸出高電平,磁場低時輸出為低電平。所以將會產(chǎn)生8個方波,既每輸出8個方波代表自行車轉(zhuǎn)動了一周。例如:我們的自行
37、車車輪在R=0.25m時,通過計算得出車輪的周長C=1.5m。由于每一圈霍爾傳感器將輸出8個脈沖,當自行車行駛1KM時會轉(zhuǎn)動667次,這樣每1KM將回產(chǎn)生5336個脈沖,單片機對這5336個脈沖計數(shù),當達到這個數(shù)時單片機將會產(chǎn)生中斷。</p><p> 通過單片機計算出來的速度和里程的數(shù)據(jù),必須通過BCD碼的轉(zhuǎn)換才能輸出給顯示模塊??偫锍虜?shù)的顯示是設(shè)定出現(xiàn)在電動自行車開動,單片機開機經(jīng)過初始化后顯示出來,這樣以
38、來用戶可以清楚的知道自己的車子已經(jīng)運行了多少公里了。而速度的顯示則是在計算出速度里程后立刻顯示出來,體現(xiàn)實時性。</p><p> 2.4 LED數(shù)碼管</p><p> 與LCD液晶顯示器相比,數(shù)碼管雖沒有液晶顯示器那樣的顯示效果,也沒有液晶顯示器做圖形界面具有人機交互美觀的特點。但是LED有其自己的特點,它具有低功耗,容易控制,占用CPU資源少這些優(yōu)點,從而成為一些顯示器的首選。
39、</p><p> 數(shù)碼管由7個發(fā)光二極管組成,行成一個日字形,它門可以共陰極,也可以共陽極。通過解碼電路得到的數(shù)碼接通相應(yīng)的發(fā)光二極而形成相應(yīng)的字符。它可以顯示從1到9的數(shù)字。這足以滿足設(shè)計要求。</p><p> 由霍爾傳感器采集的脈沖數(shù)據(jù)信號,通過RC濾波后向單片機提供數(shù)據(jù)脈沖,單片機再對其進行記數(shù)。當達到先前所設(shè)計的計數(shù)值的時候單片機就申請中斷,從而使單片機響應(yīng)中斷程序,既使其
40、輸出一個信號代表此時自行車已經(jīng)行駛了1KM,這時在經(jīng)過顯示單元電路使LED數(shù)碼管顯示1KM。當?shù)诙€信號來的時候,電路實現(xiàn)加一的功能后在送LED顯示。這樣就實現(xiàn)了顯示里程的目的。</p><p> 2.5存儲器EEPROM</p><p> EEPROM(Electrically Erasable Programmable Read一Only M
41、emory)即電子擦除式只讀存儲器,它是一種非揮發(fā)性存儲器,是可用戶更改的只讀存儲器(ROM),其可通過高于普通電壓的作用來擦除和重編程(重寫)。不像EPROM芯片,EEPROM不需從計算機中取出即可修改。在一個EEPROM中,當計算機在使用的時候是可頻繁地重編程的,EEPROM的壽命是一個很重要的設(shè)計考慮參數(shù)。EEPROM的一種特殊形式是閃存,其應(yīng)用通常是個人電腦中的電壓來擦寫和重編程。</p><p> 電
42、可擦除只讀存儲器EEPROM的主要優(yōu)點是能在應(yīng)用系統(tǒng)中進行在線改寫,并能在斷電情況下保存數(shù)據(jù)而不需保護電源。因此,在智能儀表、控制裝置、分布式監(jiān)測系統(tǒng)子站、開發(fā)裝置中得到廣泛應(yīng)用。</p><p><b> 2.6 鍵盤控制</b></p><p> 鍵盤在單片機應(yīng)用系統(tǒng)中,實現(xiàn)輸入數(shù)據(jù)、傳送命令的功能,是人工干預(yù)的主要手段。鍵盤分兩大類:編碼鍵盤和非編碼鍵盤。&
43、lt;/p><p> 編碼鍵盤:由硬件邏輯電路完成必要的鍵識別工作與可靠性措施。每按一次鍵,鍵盤自動提供被按鍵的讀數(shù),同時產(chǎn)生一選通脈沖通知微處理器,一般還具有反彈跳和同時按鍵保護功能。這種鍵盤易于使用,但硬件比較復(fù)雜,對于主機任務(wù)繁重之情況,采用8279可編程鍵盤管理接口芯片構(gòu)成編碼式鍵盤系統(tǒng)是很實用的方案。</p><p> 非編碼鍵盤:只簡單地提供鍵盤的行列與矩陣,其他操作如鍵的識別
44、,決定按鍵的讀數(shù)等僅靠軟件完成,故硬件較為簡單,但占用CPU較多時間。有:獨立式按鍵結(jié)構(gòu)、矩陣式按鍵結(jié)構(gòu)。</p><p> 首先,確定鍵盤編碼方案:采用編碼鍵盤或非編碼鍵盤。隨后,確定鍵盤工作方式:采用中斷或查詢方式輸入鍵操作信息。然后,設(shè)計硬件電路。非編碼鍵盤系統(tǒng)中,鍵閉合和鍵釋放的信息的獲取,鍵抖動的消除,鍵值查找及一些保護措施的實施等任務(wù),均由軟件來完成。</p><p> 2
45、.7 RC濾波器</p><p> 濾波電路是直流電源的重要組成部分,它一般是由電容等儲能元件組成,用來濾除單向脈動電壓中的諧波分量,從而得到比較平滑的直流電壓。圖1所示為橋式整流簡單RC濾波電路。由圖可以看出,濾波電容C并聯(lián)于整流電路的輸出端,即C與RL并聯(lián),整流電路的負載為容性。其工作原理為:設(shè)t=0時接通電源,當由零逐漸上升時,二極管D1 ,</p><p> 圖2.1 橋式
46、整流電容濾波的原理電路 圖2.2 工作波形</p><p> D3導(dǎo)通,D2、D4截止,電流方向如圖中箭頭所示。電流一路流過負載RL,一路向電容C充電,充電極性為上正、下負。由于電源內(nèi)阻及二極管導(dǎo)通電阻均很小,即充電時間常數(shù)很小,所以充電進行的很快,C兩端的電壓隨很快上升到峰值,即。當由峰值開始下降時,充電過程結(jié)束。由于電容C兩端的電壓>,這時,四只二極管均被反偏截止,電容C向負載R
47、L放電,從而使通過負載RL的電流得以維持。放電時間常數(shù)RLC取值愈大,RL兩端的電壓下降愈緩慢,輸出波形愈平滑,直到下一個半周到來,且>時,D2、D4才正偏道通(D1、D3仍截止),放電過程結(jié)束,又開始給C充電。如此周而復(fù)始的充電、放電,在負載RL上便得到如圖2所示的輸出電壓。</p><p> 第三章 硬件實現(xiàn)的設(shè)計方法與原理</p><p><b> 3.1 系統(tǒng)概述
48、</b></p><p> 本系統(tǒng)是由數(shù)據(jù)采集,單片機控制系統(tǒng),鍵盤顯示,數(shù)據(jù)存儲4部分構(gòu)成。其中數(shù)據(jù)的采集是由霍爾傳感器來完成的,它的輸出是矩形脈沖,經(jīng)過RC濾波后就向單片機系統(tǒng)提供轉(zhuǎn)速信號。其中關(guān)鍵的處理由單片機系統(tǒng)來完成,單片機將對INT1腳的信號進行計數(shù),當計數(shù)的脈沖達到1KM的時候,INT1申請中斷,對外輸出信號,輸出的信號由顯示部分送LED進行顯示,顯示當前的行駛里程情況。在本次行駛過后
49、數(shù)據(jù)存入EEPROM中,以便下次行駛時在其基礎(chǔ)上繼續(xù)計數(shù)送出顯示總共的里程數(shù),以達到記憶的目的。鍵盤的作用是提供人對整個系統(tǒng)的控制,它將實現(xiàn)整個系統(tǒng)開關(guān),顯示器的開關(guān),部分單元電路的控制。以上所訴就是整個系統(tǒng)的總體設(shè)計思想。 </p><p> 利用霍爾元件對里程進行測量。將霍爾元件安裝在車前叉的一側(cè),在車圈側(cè)面等間隔貼多個磁片。當磁片經(jīng)過霍爾元件時,霍爾元件輸出端的電壓發(fā)生變化產(chǎn)生脈沖,單片機根據(jù)脈沖數(shù)來計算
50、里程?;魻栐皇芴鞖獾挠绊懀幢惚荒嗌郴蚧覊m覆蓋對測量也不會有任何影響。由霍爾元件加整形電路構(gòu)成的霍爾開關(guān)系統(tǒng),具有輸出響應(yīng)快,數(shù)字脈沖性能好,安裝方便,性能可靠,不受光線、泥水等因素影響,價格便宜的優(yōu)點。</p><p> 該設(shè)計能實時地將所測的累計里程數(shù)顯示出來,主要是將傳感器輸入到單片機的脈沖信號的頻率(傳感器將不同車速轉(zhuǎn)變成不同頻率的脈沖信號)實時地測量出來,考慮到信號的衰減、干擾等影響,在信號送入單
51、片機前應(yīng)對其進行放大整形,然后通過單片機計算出里程,再將所得的數(shù)據(jù)存儲到數(shù)據(jù)存儲器,并由LED顯示模塊交替顯示所測里程。本設(shè)計的里程數(shù)的算法是一種大概的算法(假設(shè)在一定時間內(nèi)自行車是勻速行進,平均速度與時間的乘積即為里程數(shù))。 </p><p> 設(shè)計時,應(yīng)綜合考慮測速精度和系統(tǒng)反應(yīng)時間。本設(shè)計用測量脈沖頻率來計算速度,因而具有較高的測速精度。在計算里程時取了自行車的理想狀態(tài)。實際中,誤差控制在幾米之內(nèi),相對于
52、整個里程來說不是很大。為了保證系統(tǒng)的實時性,系統(tǒng)的速度轉(zhuǎn)換模塊和顯示數(shù)據(jù)轉(zhuǎn)BCD碼模塊都采用快速算法。另外,還應(yīng)盡量保證其他子模塊在編程時的通用性和高效性。本設(shè)計的里程值采用4位顯示。</p><p><b> 3.2 系統(tǒng)總框圖</b></p><p><b> 圖3.1系統(tǒng)總框圖</b></p><p> 3.3
53、 各部分硬件圖 </p><p> 3.3.1 顯示部分</p><p> 本設(shè)計的顯示模塊包括74LS138和4個LED顯示管等器件。 </p><p> 74LS138的作用相當于位選的功能,當C,B,A的輸入分別為“000、001、010、011、100、101”時分別選擇不同的7段譯碼器,從而在不同位上顯示不同的數(shù)字。圖6是顯示模塊框圖。</
54、p><p> 圖3.3 顯示模塊框圖</p><p> 圖7為系統(tǒng)顯示部分的電路。系統(tǒng)中用74LS138的Y0~Y3選擇七段譯碼器以驅(qū)動LED顯示,圖中字符相對應(yīng)的地方表示其引腳相連。</p><p> 圖3.4 系統(tǒng)顯示部分連接圖 </p><p> 第四章 自行車里程表軟件實現(xiàn)方法</p><p> 4
55、.1 軟件編程實現(xiàn)</p><p> 4.1.1 系統(tǒng)軟件框圖</p><p> 如圖8所示,本系統(tǒng)軟件采用模塊化設(shè)計方法。整個系統(tǒng)由初始化模塊、頻率測量模塊、速度,里程計算模塊、數(shù)據(jù)轉(zhuǎn)BCD碼模塊、速度顯示模塊、里程顯示模塊、數(shù)據(jù)存儲,讀取模塊、定時器中斷服務(wù)模塊以及其他功能模塊組成。</p><p> 圖4.1 系統(tǒng)軟件框圖</p><
56、p> 4.1.2 數(shù)據(jù)處理</p><p> 本設(shè)計所用的霍爾傳感器是一塊集成芯片。它結(jié)合了采樣和放大功能于一體。首先我們把磁鋼放在自行車的轉(zhuǎn)軸上,而霍爾元件就放在與其水平的轉(zhuǎn)軸上,當我們完成安裝后,轉(zhuǎn)動自行車的轉(zhuǎn)軸,磁鋼也就跟著一起轉(zhuǎn)動,從而使霍爾傳感器周圍的磁場發(fā)生變化,這種變化將會導(dǎo)致霍爾電壓變化從而產(chǎn)生一個mv級的方波,再通過其內(nèi)部的整形和放大。產(chǎn)生出一個適合外部電路的脈沖電壓。由于磁鋼共分為8
57、片,磁場將會改變8次,磁場強度大時輸出高電平,磁場低時輸出為低電平。所以將會產(chǎn)生8個方波,既每輸出8個方波代表自行車轉(zhuǎn)動了一周。比如我們的自行車車輪在R=0.25m時,通過計算得出車輪的周長C=1.5m。由于每一圈霍爾傳感器將輸出8個脈沖,當自行車行駛1KM時會轉(zhuǎn)動667次,這樣每1KM將回產(chǎn)生5336個脈沖,單片機對這5336個脈沖計數(shù)。</p><p> 通過單片機計算出來的速度和里程的數(shù)據(jù),必須通過BCD
58、碼的轉(zhuǎn)換才能輸出給顯示模塊??偫锍虜?shù)的顯示是設(shè)定出現(xiàn)在電動自行車開動,單片機開機經(jīng)過初始化后顯示出來,這樣以來用戶可以清楚的知道自己的車子已經(jīng)運行了多少公里了。 </p><p> 4.1.3 鍵盤控制</p><p> 鍵盤是實現(xiàn)人機對話的必要設(shè)備,用戶可用鍵盤向計算機輸入數(shù)據(jù)或命令。本系統(tǒng)采用獨立鍵盤接口,獨立式按鍵是指直接用I/O口線構(gòu)成單個的按鍵</p><
59、;p> 電路。每一個獨立式按鍵單獨占用一根I/O口線。其接口電路如圖4.2所示。</p><p> 獨立式按鍵接口電路配置靈活,軟件結(jié)構(gòu)簡單。但每個按鍵要占用一根I/O口線,適用于按鍵數(shù)量少的鍵盤。</p><p> 電路中,按鍵輸入低電平有效。按鍵未按時有上拉電阻保證此時輸入為高電平。</p><p> 圖4.2 獨立式按鍵接口電路</p&g
60、t;<p><b> 4.2部分程序</b></p><p> ?。?)鍵盤掃描部分程序</p><p> #include<reg52.h></p><p> #include<math.h></p><p> #include<stdio.h></p&
61、gt;<p> #include<bin2hex.h></p><p> #include<intrins.h></p><p> #include<absacc.h></p><p> #define uchar unsigned char</p><p&g
62、t; #define uint unsigned int </p><p> Sbit k0=p1.0;</p><p> Sbit k1=p1.1;</p><p> Sbit k2=p1.2;</p><p><b> keyscan()</b></p>
63、<p><b> {</b></p><p> If (k0==0)</p><p><b> uchar a;</b></p><p> for(a=255;a>0;a--) //延時</p><p>
64、<b> {}</b></p><p> if(k0==0) //有鍵按下</p><p> measure(); //處理程序<
65、/p><p> else if (k1==0)</p><p><b> uchar a;</b></p><p> for(a=255;a>0;a--) //延時</p><p><b> {}</b></p><p>
66、 if(k1==0) //有鍵按下</p><p> measure();</p><p> else if (k2==0)</p><p><b>
67、 uchar a;</b></p><p> for(a=255;a>0;a--) //延時</p><p><b> {}</b></p><p> if(k2==0)
68、; //有鍵按下</p><p> measure();</p><p><b> main()</b></p><p> { while(1)</p><p> {P0=keyscan();</p><
69、;p> while(1);}</p><p><b> }</b></p><p> ?。?) 存儲器部分程序</p><p> <absacc.h></p><p> #include<reg51.h></p><p> #include<intri
70、ns.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define _Nop() _nop_() /*定義空指令*/</p><p> sbit scl=P1^1;</p><p>
71、; sbit sda=P1^2;</p><p> sbit DOG=P1^7; </p><p> sbit led=P0^7;</p><p> sbit led_1=P0^3;</p><p> sbit led_2=P0^4;</p><p> sbit led_3=P0^5;</p>
72、<p> sbit led_4=P0^6;</p><p> uint LED1_data,LED2_data,LED3_data,LED4_data,LED_data;</p><p> uchar code led_segment[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x0,0xFF};&l
73、t;/p><p> uchar x24c02_read(uchar address);</p><p> void x24c02_write(uchar address,uchar info); </p><p> void x24c02_init(); </p><p> void delay1(uchar x);</p>
74、<p> void flash();</p><p> void x24c01_init();</p><p> void start();</p><p> void stop();#include</p><p> void writex(uchar j);</p><p> uchar r
75、eadx();</p><p> void clock();</p><p> void clrscr(void);</p><p><b> /*延時程序*/</b></p><p> void delay1(uchar x)</p><p><b> { uint i;&l
76、t;/b></p><p> for(i=0;i<x;i++);</p><p><b> DOG=~DOG;</b></p><p><b> }</b></p><p> /*E2prom工作指示程序*/</p><p> void flash()&
77、lt;/p><p> { uchar u;</p><p> DOG=~DOG;}</p><p> /*E2prom初始化程序*/</p><p> void x24c02_init()</p><p> { scl=1; flash(); sda=1; flash();</p><p>
78、;<b> }</b></p><p> /*E2prom起始信號程序*/</p><p> void start()</p><p> {sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();</p><p><b> }<
79、;/b></p><p> /*E2prom結(jié)束信號程序*/</p><p> void stop()</p><p> { sda=0; flash(); scl=1; flash(); sda=1; flash();</p><p><b> }</b></p><p> /*
80、E2prom寫控制程序*/</p><p> void writex(uchar j)</p><p> { uchar i,temp;</p><p><b> temp=j;</b></p><p> for (i=0;i<8;i++)</p><p> {temp=temp&
81、lt;<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();</p><p><b> }</b></p><p> scl=0; flash(); sda=1; flash();</p><p><b> }</b></p><p>
82、 /*E2prom讀控制程序*/</p><p> uchar readx()</p><p> {uchar i,j,k=0;</p><p> scl=0; flash(); sda=1;</p><p> for (i=0;i<8;i++){</p><p> flash(); scl=1; fl
83、ash();</p><p> if (sda==1) j=1;</p><p><b> else j=0;</b></p><p> k=(k<<1)|j; scl=0;</p><p><b> }</b></p><p> flash(); re
84、turn(k);</p><p><b> }</b></p><p> /*E2prom時鐘發(fā)生程序*/</p><p> void clock()</p><p> {uchar i=0;</p><p> scl=1; flash();</p><p>
85、while ((sda==1)&&(i<255))i++;</p><p> scl=0; flash();</p><p><b> }</b></p><p> /*E2prom讀程序*/</p><p> uchar x24c02_read(uchar address)</p&g
86、t;<p><b> {uchar i;</b></p><p> start(); writex(0xa0);</p><p> clock(); writex(address);</p><p> clock(); start();</p><p> writex(0xa1); clock()
87、;</p><p> i=readx(); stop();</p><p> delay1(10);</p><p> return(i);</p><p><b> }</b></p><p> /*E2prom寫地址和內(nèi)容程序*/</p><p> void
88、 x24c02_write(uchar address,uchar info)</p><p><b> {EA=0;</b></p><p> start(); writex(0xa0);</p><p> clock(); writex(address);</p><p> clock(); writex(i
89、nfo);</p><p> clock(); stop();</p><p><b> EA=1;</b></p><p> delay1(50);</p><p><b> }</b></p><p><b> /*延時子程序*/</b>&
90、lt;/p><p> void delay(uint v)</p><p> {while(v!=0)v--;</p><p><b> }</b></p><p> void display()</p><p><b> {</b></p><p&
91、gt;<b> led=1;</b></p><p><b> led_1=1;</b></p><p><b> led_2=1;</b></p><p><b> led_3=1;</b></p><p><b> led_4=1;
92、</b></p><p> delay(50);</p><p> P2=LED_data;</p><p><b> led=0;</b></p><p> delay(50);</p><p> P2=led_segment[LED1_data];</p>
93、<p><b> led=1;</b></p><p><b> led_1=0;</b></p><p> delay(50);</p><p> P2=led_segment[LED2_data];</p><p><b> led_1=1;</b>&l
94、t;/p><p><b> led_2=0;</b></p><p> delay(50);</p><p> P2=led_segment[LED3_data];</p><p><b> led_2=1;</b></p><p><b> led_3=0
95、;</b></p><p> delay(50);</p><p> P2=led_segment[LED4_data];</p><p><b> led_3=1;</b></p><p><b> led_4=0;</b></p><p> dela
96、y(50);</p><p><b> }</b></p><p><b> main()</b></p><p><b> {</b></p><p> delay(100);x24c02_init(); </p><p><b>
97、 while(1)</b></p><p><b> {</b></p><p> x24c02_write(0x1,2);</p><p> LED1_data=x24c02_read(0x1);</p><p> x24c02_write(0x2,2);</p><p>
98、 LED2_data=x24c02_read(0x2);</p><p> x24c02_write(0x3,2);</p><p> LED3_data=x24c02_read(0x3);</p><p> LED4_data=3;</p><p> LED_data=0xFF;</p><p> disp
99、lay();</p><p><b> }</b></p><p><b> }</b></p><p><b> ?。?)顯示部分程序</b></p><p> #include<reg51.h></p><p> #include
100、<intrins.h></p><p> #include<stdio.h></p><p> #include<string.h></p><p> #define UN unsigned char</p><p> UN read_1byte();</p><p&
101、gt; void write_1byte(unsigned char x);</p><p> void WriteToChip(UN a,b);</p><p> void read(UN h,l,d);</p><p> void JiaMi51();</p><p> void JiaMi53();</p&g
102、t;<p> void ck(UN x);</p><p> void csf();</p><p> UN d10[4];</p><p> void del05s();</p><p> UN btl_bz;</p><p><b> UN icxh;</b&g
103、t;</p><p> unsigned int AllByte;//需讀出的字節(jié)數(shù)不16位</p><p> sbit lsledcs =P3^7;</p><p> void delay();</p><p> UN zh_adh8252r(UN x);</p><p>
104、 UN zh_adh8252w(UN x);</p><p> sfr16 DPTR=0x82;</p><p> sbit ACC0=ACC^0;</p><p> sbit ACC1=ACC^1;</p><p> sbit
105、; ACC2=ACC^2;</p><p> sbit ACC3=ACC^3;</p><p> sbit ACC4=ACC^4;</p><p> sbit ACC5=ACC^5;</p><p> sbit
106、60; ACC6=ACC^6;</p><p> sbit ACC7=ACC^7;</p><p> unsigned char bdata bm;</p><p> sbit bm0=bm^0;</p><p> sbit bm1=bm^1;</p>
107、<p> sbit bm2=bm^2</p><p> sbit bm3=bm^3;</p><p> sbit bm4=bm^4;</p><p> sbit bm5=bm^5;</p><p> sbit bm6=bm^6</p><p
108、> sbit bm7=bm^7;</p><p> UN data rmem[6]={0xff,0xff,0xff,0xff,0xff,0xff};</p><p> UN code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//0-9</p><p> 0x8
109、8,0x83,0xa7,0xa1,0x86,0x8e}</p><p> void main()</p><p> { unsigned int i,j;</p><p><b> csf()</b></p><p><b> while(1)</b></p><
110、;p><b> {</b></p><p><b> P0=0xff;</b></p><p> lsledcs=1;</p><p><b> j=0;</b></p><p> while(j!=30</p><p><b>
111、; { i=0;</b></p><p><b> do{</b></p><p> P0=ledcode[0];</p><p><b> P1=0xfe;</b></p><p><b> delay();</b></p>&l
112、t;p> P0=ledcode[1];</p><p><b> P1=0xfd;</b></p><p><b> delay();</b></p><p> P0=ledcode[2];</p><p><b> P1=0xfb</b></p>
113、<p><b> delay();</b></p><p> P0=ledcode[3]</p><p><b> P1=0xf7;</b></p><p><b> delay();</b></p><p><b> i++;}</b&g
114、t;</p><p> while(i!=10);</p><p><b> j++;</b></p><p><b> }</b></p><p><b> 1=0xff;</b></p><p><b> del05s();<
115、;/b></p><p> ///////////////////</p><p><b> j=0;</b></p><p> while(j!=30)</p><p><b> {</b></p><p><b> i=0;</b>&
116、lt;/p><p><b> do{</b></p><p> P0=ledcode[4];</p><p><b> P1=0xfe;</b></p><p><b> delay();</b></p><p> P0=ledcode[5];&l
117、t;/p><p><b> P1=0xfd</b></p><p><b> delay();</b></p><p> P0=ledcode[6];</p><p><b> P1=0xfb;</b></p><p><b> dela
118、y();</b></p><p> P0=ledcode[7];</p><p><b> P1=0xf7;</b></p><p><b> delay();</b></p><p><b> i++;}</b></p><p>
119、 while(i!=10);</p><p><b> j++;</b></p><p><b> }</b></p><p><b> P1=0xff;</b></p><p><b> del05s();</b></p><
120、p> ///////////////////</p><p><b> j=0</b></p><p> while(j!=30)</p><p><b> {</b></p><p><b> i=0;</b></p><p><
121、b> do{</b></p><p> P0=ledcode[8];</p><p><b> P1=0xfe;</b></p><p><b> delay()</b></p><p> P0=ledcode[9];</p><p><b&
122、gt; P1=0xfd;</b></p><p><b> delay();</b></p><p> P0=ledcode[10];</p><p><b> P1=0xfb;</b></p><p><b> delay();</b></p>
123、;<p> P0=ledcode[11];</p><p><b> P1=0xf7;</b></p><p><b> delay();</b></p><p><b> i++;}</b></p><p> while(i!=10);</p&g
124、t;<p><b> j++;}</b></p><p><b> P1=0xff;</b></p><p> del05s();[強力單片機技術(shù)項目交易網(wǎng)]</p><p> //////////////////[強力單片機技術(shù)項目交易網(wǎng)]</p><p><b>
125、 j=0;</b></p><p> while(j!=30)</p><p><b> {</b></p><p><b> i=0;</b></p><p><b> do{</b></p><p> P0=ledcode[1
126、2];[強力單片機技術(shù)項目交易網(wǎng)</p><p><b> P1=0xfe;</b></p><p><b> delay();</b></p><p> P0=ledcode[13];[強力單片機技術(shù)項目交易網(wǎng)</p><p><b> P1=0xfd;</b><
127、;/p><p><b> delay();</b></p><p> P0=ledcode[14];</p><p><b> P1=0xfb;</b></p><p><b> delay();</b></p><p> P0=ledcode[1
128、5];[強力單片機技術(shù)項目交易網(wǎng)]</p><p><b> P1=0xf7;</b></p><p><b> delay();</b></p><p><b> i++;}</b></p><p> while(i!=10);</p><p>
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文--自行車里程表的設(shè)計
- 課程設(shè)計---自行車里程表
- 自行車里程表設(shè)計【畢業(yè)論文+文獻綜述+開題報告】
- 課程設(shè)計自行車里程表
- 自行車里程表的設(shè)計【文獻綜述】
- 自行車里程表的設(shè)計【開題報告】
- 電子課程設(shè)計報告-數(shù)電-自行車里程表
- 自行車里程速度計的設(shè)計畢業(yè)論文
- 自行車里程速度計的設(shè)計 畢業(yè)論文
- 自行車里程速度計的設(shè)計畢業(yè)論文
- 畢業(yè)論文自行車里程_速度計的設(shè)計
- 自行車數(shù)字里程表.docx
- 基于單片機的多功能自行車里程表的設(shè)計_畢業(yè)設(shè)計論文
- 基于msp430g2211實現(xiàn)的自行車里程表
- 基于單片機的自行車里程表及速度儀的畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----光電式自行車速度里程表設(shè)計
- 自行車數(shù)字里程表設(shè)計[電子論文-15年畢業(yè)-全套材料]
- 自行車里程速度計的設(shè)計
- 基于單片機的自行車里程_速度表設(shè)計-職業(yè)學(xué)院畢業(yè)論文
- 畢業(yè)論文--電動車里程表監(jiān)控軟件設(shè)計
評論
0/150
提交評論