基于單片機的電子式轉速里程表的設計-畢業(yè)設計_第1頁
已閱讀1頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于MCS-51單片機的里程表的設計</p><p><b>  前言</b></p><p>  汽車是現(xiàn)代生活中不可或缺的一種重要交通工具,傳統(tǒng)的指針式的里程表伴隨著汽車的誕生就一直為人們接受,不過,新生事物不會因傳統(tǒng)的存在而停止它前進的步伐,數(shù)碼科技在今天已滲透到工業(yè),農(nóng)業(yè),民用等產(chǎn)品的點點滴滴。新概念的車速里程表最直觀的變化就是用大屏幕的

2、液晶取代指針式表盤,直接用數(shù)字顯示時速,里程,以及其他一些諸如油耗、時鐘、環(huán)境溫度等參數(shù)。直觀的呈現(xiàn)給使用者。</p><p>  由于單片機體積小,可以把它做到產(chǎn)品的內(nèi)部,取代老式機械零件,縮小產(chǎn)品體積,增強功能,實現(xiàn)智能化。因此廣泛的被用在智能產(chǎn)品中。Intel公司的MCS-51系列單片機在近年來廣泛流行,即介紹一種基于MCS-51單片機的里程表的設計與實現(xiàn)。</p><p>  本課

3、題設計先對里程表設計中所需設備作了詳細介紹,對設計中存在的問題進行了說明;對硬件和軟件部分的設計和實現(xiàn)作了認真的分析;給出了系統(tǒng)的建模過程及相應的系統(tǒng)模型,在Lab2000p仿真實驗系統(tǒng)上進行了仿真,并對仿真結果進行了分析。</p><p>  1 系統(tǒng)概述 </p><p>  本系統(tǒng)由信號采集處理模塊、單片機8031、系統(tǒng)化LCD顯示模塊、系統(tǒng)軟件組成。其中信號采集處理模塊以霍爾

4、傳感器為核心器件,將不同的轉速信號轉換成相應的脈沖信號,并送到單片機的T1引腳;對單片機進行設置,使內(nèi)部的定時器/計數(shù)器timer0工作在定時狀態(tài),timer1工作在計數(shù)狀態(tài),利用內(nèi)部定時器T0對脈沖輸入引腳T1進行控制,這樣就能精確地檢測到設定時間內(nèi)加到T1引腳的脈沖數(shù),一個脈沖即代表著車子前進一個輪長,對脈沖數(shù)進行處理就可得到里程和速度的數(shù)據(jù);將數(shù)據(jù)送到LCD顯示模塊進行顯示。該系統(tǒng)原理框圖如圖所示。</p><

5、p>  系統(tǒng)軟件包括單片機和液晶模塊的初始化模塊、液晶模塊的寫數(shù)據(jù)/命令子模塊、頻率測量模塊、速度里程計算模塊、速度和里程顯示數(shù)據(jù)LCD字庫顯示模塊等。</p><p>  圖1-1 系統(tǒng)原理框圖</p><p>  2 基本原理與設計方案</p><p>  2.1 元器件簡介 </p><p>  2.1.1 霍爾傳感器簡

6、介</p><p>  霍耳效應:1879年E.H. 霍爾發(fā)現(xiàn),如果對位于磁場(B)中的導體(d)施加一個電壓(v),該磁場的方向垂直于所施加電壓的方向,那么則在既與磁場垂直又和所施加電流方向垂直的方向上會產(chǎn)生另一個電壓(UH),人們將這個電壓叫做霍爾電壓,產(chǎn)生這種現(xiàn)象被稱為霍爾效應。</p><p>  霍爾效應從本質上講是運動的帶電粒子在磁場中受洛侖茲力作用而引起的偏轉。當帶電粒子(電

7、子或空穴)被約束在固體材料中,這種偏轉就導致在垂直電流和磁場的方向上產(chǎn)生正負電荷的積累,從而形成附加的橫向電場。 </p><p>  通有電流 I 的金屬或半導體板置于磁感強度為 B 的均勻磁場中,磁場方向和電流方向垂直,在金屬板的第三對表面間就顯示出橫向電勢差 U H 的現(xiàn)象稱為霍耳效應。U H 就稱為霍耳電勢差。 </p><p>  實驗測定,霍耳電勢差的大小,和電流 I 及磁感強

8、度B成正比,而與板的厚度d 成反比</p><p>  霍爾轉速傳感器: 霍爾轉速傳感器的外形圖和與磁場的作用關系下圖所示。磁場由磁鋼提供,所以霍爾傳感器和磁鋼需要配對使用。霍爾傳感器檢測轉速示意圖如下圖。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉動一圈,霍爾傳感器便輸出一個脈沖。通過單片機測量產(chǎn)生脈沖的頻率就可以得出圓盤的轉速。</p><p> 

9、 霍爾電流傳感器本身已經(jīng)存在濾波電路,輸出無須再加裝濾波,可直接供單片機的0~5V的 AD采集或直接送到單片機的中斷輸入引腳,信號非常穩(wěn)定,而且抗干擾能力很強。 霍爾電流傳感器反應速度一般在7微妙,不用考慮單片機循環(huán)判斷的時間。</p><p>  若在圓盤上貼上多塊磁鋼,則圓盤每轉一圈,輸出的脈沖信號將相應增加,單位時間內(nèi)測到的脈沖數(shù)將增多,測出的轉速也將更加精細。本設計建模時采用一個圓盤上貼一個磁鋼

10、進行模擬。實際制作中可以貼上多塊磁鋼,即可以克服因車輪轉速太慢而在設定時間內(nèi)測不到脈沖的問題。</p><p>  圖2.1.1-1 霍爾轉速傳感器的外形圖</p><p>  圖2.1.1-2 霍爾傳感器檢測轉速示意圖</p><p>  2.1.2 AT89C51芯片簡介</p><p>  AT89C51是一個低電壓,高性能CMO

11、S 8位單片機,片內(nèi)含4k bytes的可反復擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,內(nèi)置功能強大的微型計算機的AT89C51提供了高性價比的解決方案。</p><p>  AT89C51是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入

12、/輸出(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,AT89C51可以按照常規(guī)方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。 AT89C51具有如下功能特性: </p><p>  ★ 兼容MCS—51指令系統(tǒng);</p><p>  ★ 32個雙向I/

13、O口;</p><p>  ★ 兩個16位可編程定時/計數(shù)器;</p><p><b>  ★ 1個串行中斷;</b></p><p>  ★ 兩個外部中斷源;</p><p>  ★ 4k可反復擦寫(>1000次)Flash ROM;</p><p>  ★ 128x8bit內(nèi)部RAM;&

14、lt;/p><p><b>  ★ 6個中斷源;</b></p><p>  ★ 低功耗空閑和掉電模式; </p><p>  ★ 軟件設置睡眠和喚醒功能。</p><p>  圖2.1.2-1 AT89C51芯片</p><p>  2.1.3 液晶顯示模塊SED1520芯

15、片介紹</p><p>  本課題仿真實驗系統(tǒng)采用的液晶顯示屏內(nèi)置控制器為SED1520,點陣為122×32,需要兩片SED1520組成,由E1、E2分別選通,以控制顯示屏的左右兩半屏。圖形液晶顯示模塊有兩種連接方式。一種為直接訪問方式,一種為間接控制方式。本設計采用直接控制方式。直接控制方式就是將液晶顯示模塊的接口作為存儲器或I/O 設備直接掛在計算機總線上。計算機通過地址譯碼控制 E1和 E2的選通

16、;讀/寫操作信號 R/W由地址線 A1控制;命令/數(shù)據(jù)寄存器選擇信號 AO 由地址線 A0控制。實際電路如圖所示。地址映射如下(地址中的X由LCDCS決定,可參見地址譯碼部分說明)</p><p>  表2.1.3-1 地址映射</p><p>  圖2.1.3-1 液晶屏顯示控制電路</p><p>  2.1.3.1 SED1520芯片介紹</p&g

17、t;<p>  SED1520液晶顯示驅動器是一種點陣圖形式液晶顯示驅動器,它可直接與8位微處理器相連,集行、列驅動器于一體,因此使用起來十分方便,作為內(nèi)藏式控制器被廣泛應用于點陣數(shù)較少的液晶顯示模塊。</p><p>  2.1.3.2 SED1520的特性</p><p>  內(nèi)置顯示RAM區(qū)RAM容量為2560(32行80列)位。RAM中的1位數(shù)據(jù)控制液晶屏上,具有1

18、6個行驅動口和16個列驅動口 ,并可級聯(lián)兩個SED1520實現(xiàn)32行驅動??芍苯优c80系列微處理器相連,亦可直接與68系列微處理器相連。驅動占空比為1/16或1/32??梢耘cSED1520配合使用,以便擴展列驅動口數(shù)目。</p><p>  2.1.3.3 SED1520指令與顯示RAM結構</p><p>  SED1520指令系統(tǒng)比較簡單,共13條,除讀狀態(tài)指令、讀顯示RA

19、M數(shù)據(jù)指令外,其他指令均為寫操作,并且讀寫指令均為單字節(jié)指令。在送出每條指令時,必須進行控制器狀態(tài)檢測,狀態(tài)字節(jié)的含義如下: D7:1/0,模塊忙/準備就緒; D5:1/0,模塊顯示關/開; D4:1/0,模塊復位/正常; D3-D0:未用; 在指令使用中,關鍵要分清顯示行、列設置和顯示頁面設置的關系。單片SED1520可驅動61×16液晶屏,其內(nèi)部顯示RAM相對于COM0每8行為一個顯

20、示頁面。本設計所用的字符液晶模塊由兩塊SED1520級聯(lián)驅動,其中一個工作在主工作方式下,另一個工作在從方式下,主工作方式SED1520負責上半屏16行的驅動和左半屏的61列驅動,從工作方式的SED1520則負責下半屏16行的驅動和右半屏的61列驅動,使能信號E1、E2用來區(qū)分具體控制的是那一片SED1520。這樣兩片SED1520級聯(lián)可驅動122×32圖形點陣液晶顯示屏,可完成圖形顯示,也可顯示七個半(16×16點

21、陣)漢字。</p><p>  圖2.1.3.3-1 圖形點陣液晶顯示屏</p><p><b>  2.2 設計方法</b></p><p>  2.2.1 51單片機定時器/計數(shù)器的基本結構及工作原理</p><p>  單片機內(nèi)部設有兩個16位的可編程定時器/計數(shù)器??删幊痰囊馑际侵钙涔δ埽ㄈ绻ぷ鞣绞?、定時時

22、間、啟動方式等)均可由指令來確定和改變。在定時器/計數(shù)器中除了有兩個16位的計數(shù)器之外,還有兩個特殊功能寄存器(控制寄存器和方式寄存器)。</p><p>  2.2.1.1 定時器/計數(shù)器的結構如下</p><p>  圖2.2.1.1-1 定時器/計數(shù)器的結構</p><p>  從上面定時器/計數(shù)器的結構圖中我們可以看出,16位的定時/計數(shù)器分別由兩個8位

23、專用寄存器組成,即:T0由TH0和TL0構成;T1由TH1和TL1構成。其訪問地址依次為8AH-8DH。每個寄存器均可單獨訪問。這些寄存器是用于存放定時或計數(shù)初值的。此外,其內(nèi)部還有一個8位的定時器方式寄存器TMOD和一個8位的定時控制寄存器TCON。這些寄存器之間是通過內(nèi)部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時器的工作方式;TCON主要是用于控制定時器的啟動停止,此外TCON還可以保存T0、T1的溢出和中斷標志。當定

24、時器工作在計數(shù)方式時,外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。</p><p>  2.2.1.2 定時計數(shù)器的原理</p><p>  16位的定時器/計數(shù)器實質上就是一個加1計數(shù)器,其控制電路受軟件控制、切換。當定時器/計數(shù)器為定時工作方式時,計數(shù)器的加1信號由振蕩器的12分頻信號產(chǎn)生,即每過一個機器周期,計數(shù)器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統(tǒng)的振

25、蕩頻率有關。因一個機器周期等于12個振蕩周期,所以計數(shù)頻率 。如果晶振為12MHz,則計數(shù)周期為: 。這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當選擇定時器的長度(如8位、13位、16位等)。當定時器/計數(shù)器為計數(shù)工作方式時,通過引腳T0和T1對外部信號計數(shù),外部脈沖的下降沿將觸發(fā)計數(shù)。計數(shù)器在每個機器周期的S5P2期間采樣引腳輸入電平。若一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數(shù)器加1。此后的機

26、器周期S3P1期間,新的計數(shù)值裝入計數(shù)器。所以檢測一個由1至0的跳變需要兩個機器周期,故外部事件的最高計數(shù)頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計數(shù)頻率為0.5MHz。雖然對外部輸入信號的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計數(shù)脈沖的高電平與低電平保持時間在一個機器周期</p><p>  當CPU用軟件給定時器設置了某種工作方式之后,定時器就會按設定的工作方

27、式獨立運行,不再占用CPU的操作時間,除非定時器計滿溢出,才可能中斷CPU 當前操作。CPU也可以重新設置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機中效率高而且工作靈活的部件。</p><p>  2.2.1.3 控制寄存器 </p><p>  定時器/計數(shù)器T0和T1有2個控制寄存器TMOD和TCON,它們分別用來設置各個定時器/計數(shù)器的工作方式,選擇定時或計數(shù)功能

28、,控制啟動運行,以及作為運行狀態(tài)的標志等。其中,TCON寄存器中另有4位用于中斷系統(tǒng)。</p><p>  定時器/計數(shù)器方式寄存器TMOD</p><p>  定時器方式控制寄存器TMOD在特殊功能寄存器中,字節(jié)地址為89H,無位地址。TMOD的格式如下圖所示。</p><p>  表2.2.1.3-1 TMOD的格式 </p><p>

29、  D7 D6 D5 D4 D3 D2 D1 D0</p><p>  GATE:門控位。GATE=0時,定時器由軟件控制位TR0或TR1來控制啟停。TRi位為1時,定時器啟動開始工作;為0時定時器停止工作。</p><p>  GATE=1時,定時器的啟動停止由外部中斷引腳和TRi位共同控制。只

30、有當外部中斷引腳INT0或INT1為高時,TR0或TR1置1才能啟動定時器工作。</p><p>  C\T:功能選擇位。當C\T=0時設置為定時器工作模式;當C\T=1時設置為計數(shù)器工作模式。</p><p>  M1、M0:工作方式選擇位。定時器\計數(shù)器有4種工作方式,由M0、M1來定義:</p><p>  表2.2.1.3-2 M1、M0定義</p&

31、gt;<p>  定時器/計數(shù)器方式控制寄存器不能進行位尋址,只能用字節(jié)傳送指令設置定時器工作方式,低半字節(jié)定義為定時器0,高半字節(jié)定義為定時器1。復時,TMOD所有位均為0。 </p><p>  2.2.1.4 定時器/計數(shù)器控制寄存器TCON</p><p>  TCON在特殊功能寄存器中,字節(jié)地址為88H,位地址(由低位到高位)為88H~8FH,由于有位地址,十分便

32、于進行位操作。 TCON的作用是控制定時器的啟、停,標志定時器溢出和中斷情況。 TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時器/計數(shù)器;IEl,ITl,IE0和IT0位用于中斷系統(tǒng)。</p><p>  表2.2.1.4-1 定時器/計數(shù)器控制寄存器TCON</p><p>  8FH 8EH 8DH 8CH 8BH 8AH 8

33、9H 88H (位地址)</p><p><b>  各位定義如下: </b></p><p>  TF1和TF0: 分別為定時器1和定時器0溢出標志。當計數(shù)器計滿產(chǎn)生溢出時,由硬件自動置“1”,并可申請中斷。進入中斷服務程序后,由硬件自動清零。</p><p>  TR1和TR0: 定時器1和定時器0啟動控制位。</p>

34、<p>  IE1和IE0: 外部中斷引腳INT0或INT1中斷請求標志位。當外部中斷源有請求時其對應的中斷標志位置“1”。其復位方式由觸發(fā)方式來設置。</p><p>  IT1和IT0: 為外部中斷1和外部中斷0的觸發(fā)方式選擇位。ITi設置為“0”時為電平觸發(fā);設置為“1”時為邊沿觸發(fā)方式。</p><p>  TCON中低4位與中斷有關。由于TCON 是可以位尋址的,

35、因而如果只是清溢出或啟動定時器工作,可以用位操作命令。例如:執(zhí)行“CLR TF0”后則清定時器0的溢出;執(zhí)行“SETB TR1”后可啟動定時器1開始工作。 </p><p>  2.2.1.5 定時器/計數(shù)器的初始化</p><p>  由于定時器/計數(shù)器的功能是由軟件編程確定的,所以一般在使用定時/計數(shù)器前都要對其進行初始化,使其按設定的功能工作。初始化的步驟如下: </p>

36、;<p>  ★ 確定工作方式(即對TMOD賦值);</p><p>  ★ 預置定時或計數(shù)的初值(可直接將初值寫入TH0、TL0或TH1、TL1);</p><p>  ★ 根據(jù)需要開放定時器/計數(shù)器的中斷(直接對IE位賦值); </p><p>  ★ 啟動定時器/計數(shù)器(若已規(guī)定用軟件啟動,則可把TR0或TR1置“1”;若已規(guī)定由外中斷引腳電平啟

37、動,則需給外引腳步加啟動電平。當實現(xiàn)了啟動要求后,定時器即按規(guī)定的工作方式和初值開始計數(shù)或定時)。</p><p>  2.2.1.6 定時器/計數(shù)器的四種工作方式</p><p>  定時器T0或T1無論用作定時器或計數(shù)器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作狀態(tài)。通過對方式寄存器TMOD中M1、M2位的設置,可選擇四種工作方式。<

38、;/p><p><b>  工作方式0</b></p><p>  工作方式0是一個13位的定時/計數(shù)器,16位計數(shù)器只用了高8位THi和低5位(TLi的D4~D0位),TLi的高3位未用。</p><p><b>  工作方式1</b></p><p>  16位的定時/計數(shù)器,原理同工作方式0 &l

39、t;/p><p><b>  工作方式2</b></p><p>  自動重裝計數(shù)器。16位計數(shù)器拆成兩個8位計數(shù)器,低8位作計數(shù)器用,高8位用于保存計數(shù)初值。當?shù)?位計數(shù)產(chǎn)生溢出時,將TFi位置1,同時又將保存在高8位中的計數(shù)初值重新裝入低8位計數(shù)器中,又繼續(xù)計數(shù),循環(huán)重復不止。</p><p><b>  工作方式3</b>

40、;</p><p>  方式3只適用定時器T0,T0在該模式下被拆成兩個獨立的8位計數(shù)器TH0和TL0。其中TL0使用原來T0的一些控制位和引腳,它們是:C/T,GATE,TR0,TF0和T0(P3.4)引腳INT0(P3.2)引腳。此方式下的TL0除作8位計數(shù)器外,其功能和操作與方式0,方式1完全相同,可作計數(shù)也可作定時用。</p><p>  該方式下的TH0,此時只可作簡單的內(nèi)部定時

41、器功能。它借用原定時器1的控制位和溢出標志位TR1和TF1,同時占用了T1的中斷源。TH0的啟動和關閉幕式僅受TR1的控制,TR1=1,TH0啟動定時;TR1=0,TH0停止定時工作。</p><p>  該方式下的T1仍可設置為方式0、方式1、方式2,用于任何不需要中斷的場合。</p><p>  2.2.2 頻率測量</p><p>  本課題所采用的霍爾傳感

42、器由一個磁鋼和一個霍爾器件組成。磁鋼被貼在非磁性圓盤上,隨圓盤一起旋轉,霍爾器件固定在圓盤附近,圓盤每轉一圈,霍爾器件將產(chǎn)生一個脈沖,一個脈沖即代表了一個圓盤的周長。本設計中霍爾傳感器產(chǎn)生的脈沖將被送到單片機的內(nèi)部定時計數(shù)器timer1的T1口。內(nèi)部定時計數(shù)器Timer0工作在定時狀態(tài),Timer1工作在計數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設計中Timer0產(chǎn)生0.5秒的定時。Timer1將對0.5秒內(nèi)對加到T1腳的脈

43、沖進行計數(shù)。假設0.5秒內(nèi)timer1計數(shù)到N個脈沖。則圓盤的轉動頻率為 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉一圈,霍爾器件產(chǎn)生一個脈沖。對脈沖頻率進行處理,即可轉化為車速。對脈沖數(shù)進行累加再乘以輪子的長度,即可得到里程數(shù)據(jù)。</p><p>  2.2.3 基于偉福Lab2000p仿真實驗系統(tǒng)的建模過程</p><p>  2.2.3.1 利用直流電機對車輪變速進行模擬<

44、;/p><p>  利用Lab2000p實驗系統(tǒng)上的直流電機、DAC0832數(shù)模變換模塊、單片機8031、指撥開關K0-K7構成一個能夠控制電機轉速的控制系統(tǒng),對車輪的變速情況進行模擬。電機的轉速通過軟件編程,由指撥開關的不同輸入狀態(tài)進行控制。</p><p>  表2.2.3.1-1 實驗系統(tǒng)連線情況</p><p>  2.2.3.2 頻率測量模塊的建立<

45、/p><p>  在直流電機轉動圓盤邊緣貼有一塊磁鋼,在圓盤附近裝有霍爾傳感器,圓盤每轉動一次即產(chǎn)生一個脈沖,脈沖輸出接單片機的P35引腳。利用單片機8031的內(nèi)部定時/計數(shù)器Timer0進行定時,Timer1對脈沖進行計數(shù)。</p><p>  表2.2.3.2-1 實驗系統(tǒng)連線情況</p><p>  2.2.3.3 數(shù)據(jù)顯示</p><p&

46、gt;  利用實驗箱上的LCD模塊進行數(shù)據(jù)顯示,將LCD設置成兩行,第一行顯示里程數(shù)據(jù),第二行顯示速度數(shù)據(jù)。數(shù)據(jù)的顯示主要由軟件編程進行控制。</p><p>  表2.2.3.3-1 實驗系統(tǒng)連線情況</p><p>  2.2.3.4 系統(tǒng)硬件框圖如下</p><p>  圖2.2.3.4-1 系統(tǒng)硬件框圖</p><p><

47、b>  3 程序設計</b></p><p>  整個程序的設計基于Lab2000p仿真系統(tǒng),速度和里程的計算都采取了近似處理。</p><p><b>  系統(tǒng)程序流程總框圖</b></p><p>  圖3.1-1 系統(tǒng)程序流程總框圖</p><p>  本系統(tǒng)軟件采用模塊化設計方法。整個系統(tǒng)由

48、初始化模塊、電機轉速控制模塊、電機轉向顯示模塊、頻率測量模塊、速度,里程顯示模塊、漢字顯示模塊以及其他功能模塊組成。</p><p>  程序設計中,以60H、61H、62H三個地址為數(shù)據(jù)緩沖區(qū),60H(DATA1)用于存儲每0.5s 計數(shù)到的脈沖數(shù),用于計算速度;61H(DATA2)、62H(DATA3)兩個地址用于存儲計數(shù)到的脈沖的累加數(shù)據(jù),用于計算里程。</p><p>  3.2

49、 主要模塊程序設計</p><p>  3.2.1 電機轉速控制模塊程序設計</p><p>  電機轉速的控制模塊由指撥開關、單片機、DAC0832數(shù)模變換芯片組成。指撥開關K0-K7接單片機的P10-P17(P1口),通過指撥開關可輸入數(shù)據(jù)0-255,單片機將指撥開關輸入的數(shù)據(jù)輸出到DAC0832數(shù)模變換芯片,通過數(shù)模變換,轉換成-8V-+8V的電壓驅動直流電機。從而達到對電機轉速的

50、控制。輸入數(shù)據(jù)等于128時,輸出電壓為0V;數(shù)據(jù)大于128時,輸出電壓大于0V;輸入數(shù)據(jù)小于128時,輸出電壓小于0V。</p><p>  mov p1,#0ffh ;設置P1口為輸入口</p><p>  mov dptr,#cs0832</p><p>  mov A, p1</p><p>

51、;  movx @dptr,A</p><p>  3.2.2 頻率測量模塊程序設計</p><p>  霍爾傳感器產(chǎn)生的脈沖被送到單片機的內(nèi)部定時/計數(shù)器timer1的T1口。內(nèi)部定時/計數(shù)器Timer0工作在定時狀態(tài),Timer1工作在計數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設計中Timer0產(chǎn)生0.5秒的定時。Timer1將對0.5秒內(nèi)對加到T1腳的脈沖進行計數(shù)

52、。假設0.5秒內(nèi)timer1計數(shù)到N個脈沖。則圓盤的轉動頻率為 N / 0.5=2N 。</p><p>  JISHU: MOV IE,#10001010B ;打開中斷開關</p><p>  MOV TMOD,#MODE ;設定內(nèi)部定時器/計數(shù)器的工作模式</p><p>  MOV SP,#70H</p><p&

53、gt;  MOV 40H,#00H</p><p>  MOV TH1,#00H ;將timer1的計數(shù)寄存器賦初值0</p><p>  MOV TL1,#00H ;將timer1的計數(shù)寄存器賦初值0</p><p>  SETB TR1 ;啟動timer1</p><p>  

54、AA: CLR F1 ;標志位賦0</p><p>  MOV TH0,#03CH ;定時器寫入初值</p><p>  MOV TL0,#0B0H</p><p>  SETB TR0 ;打開定時器timer0</p><p>  JNB F1 , $

55、 ;等待50ms</p><p>  INC 40H</p><p>  MOV A, 40H</p><p>  CJNE A, #09H,AA ;定時中斷重復10次</p><p>  CLR TR1 ;關閉計數(shù)器timer1</p><p>  MOV

56、 DATA1,TL1 ;取出timer1計數(shù)值給DATA1</p><p>  MOV A,DATA1 </p><p>  ADD A,DATA2 </p><p>  MOV DATA2,A ;將計數(shù)值累加到DATA2</p><p>  JNC BB

57、;檢查計數(shù)是否溢出</p><p>  INC DATA3 ;有溢出則DATA3加1</p><p>  BB: RET</p><p>  ;----------------------定時中斷子程序</p><p>  TIMER : CLR TR0</p><p><

58、b>  SETB F1</b></p><p><b>  RETI</b></p><p>  Timer0工作在模式1時,TLO、THO計數(shù)寄存器各使用8位,而28=256,設置計數(shù)初值時,把計數(shù)起點的值處以256,將余數(shù)放入TLO計數(shù)寄存器,將商數(shù)放入THO計數(shù)寄存器。本實驗系統(tǒng)所采用12MHz的晶振,定時器所計數(shù)的脈沖的周期為1us。設計

59、每50ms產(chǎn)生一次定時中斷,需計數(shù)50000個脈沖,則裝入計數(shù)寄存器的計數(shù)初值為,裝入THO計數(shù)寄存器的初值為, 裝入TLO計數(shù)寄存器的初值為176(0B0H)。</p><p><b>  程序流程圖如下:</b></p><p>  圖3.2.2-1 程序流程圖</p><p>  3.2.3 液晶顯示程序的設計</p>

60、<p>  本課題中速度、里程的數(shù)據(jù)由液晶顯示模塊顯示,所用的液晶顯示模塊由SED1520芯片驅動,首先必須對液晶顯示模塊進行初始化,編寫相應的字庫,編寫讀寫程序等。液晶顯示程序的設計包括了初始化程序、清屏程序、寫指令代碼子程序、寫顯示數(shù)據(jù)子程序、讀顯示數(shù)據(jù)子程序、中文顯示子程序、數(shù)字顯示程序以及中文字庫和數(shù)字字庫的編寫。程序詳見附表。</p><p>  3.2.4 速度、里程顯示程序的設計<

61、/p><p>  本課題中霍爾傳感器產(chǎn)生的脈沖被送到單片機的內(nèi)部定時計數(shù)器timer1的T1口。內(nèi)部定時計數(shù)器Timer0工作在定時狀態(tài),Timer1工作在計數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設計中Timer0產(chǎn)生0.5秒的定時。Timer1將對0.5秒內(nèi)對加到T1腳的脈沖進行計數(shù)。假設0.5秒內(nèi)timer1計數(shù)到N個脈沖。則圓盤的轉動頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽

62、車輪子每轉一圈,霍爾器件產(chǎn)生一個脈沖。對脈沖頻率進行處理,即可轉化為車速。對脈沖數(shù)進行累加再乘以輪子的長度,即可得到里程數(shù)據(jù)。</p><p>  本程序對汽車運行的實際情況進行模擬。設計程序時假設汽車輪子的周長約為2m,最后在顯示屏顯示的速度單位是km/h,里程單位是km。</p><p><b>  速度的計算如下:</b></p><p>

63、;  若0.5秒計數(shù)到N個脈沖,則輪子的轉動頻率為2N,車速為2N×2 m/s,也即2N×2×3.6 km/h 。設計中作近似處理,處理為14N km/h 。</p><p>  顯示時先顯示百位,再依次顯示十位、個位。</p><p>  -------------------------------------速度處理顯示子程序</p>&l

64、t;p>  SPEED: PUSH A</p><p>  MOV A,DATA1</p><p>  MOV B,#0EH ;計數(shù)值乘以14</p><p><b>  MUL AB</b></p><p>  MOV B, #64H ;除數(shù)賦值1

65、00</p><p>  DIV AB ;得到百位顯示數(shù)據(jù)代碼</p><p>  MOV CODE_ , A ;百位顯示字庫代碼</p><p>  MOV A,B</p><p>  LCALL BB1 ;調用速度寫顯示數(shù)據(jù)程序 </p>&l

66、t;p>  MOV B,#0AH ;除數(shù)賦值10</p><p>  DIV AB ;得到十位顯示數(shù)據(jù)代碼</p><p>  MOV CODE_ , A ;十位顯示字庫代碼</p><p>  MOV CTEMP, #08H ;顯示后移8列</p><

67、p>  MOV A,B</p><p>  LCALL BB1 ;調用速度寫顯示數(shù)據(jù)程序</p><p>  MOV CODE_ , A ;個位顯示字庫代碼 </p><p>  MOV CTEMP, #10H</p><p>  LCALL BB1</p><

68、;p>  MOV DATA1,#00H ;數(shù)據(jù)緩沖區(qū)清零</p><p><b>  POP A</b></p><p><b>  RET</b></p><p>  DATA2,DATA3存儲計數(shù)到的脈沖總數(shù),DATA2能存儲255個脈沖,每次計數(shù)溢出,則DATA3加1,DATA3里的數(shù)據(jù)權

69、重為256.這樣兩個字節(jié)的數(shù)據(jù)能計數(shù)最多65536個脈沖,也即131072 米 。130多公里。實際制作里程表時只要適當增加數(shù)據(jù)緩沖區(qū)的數(shù)量,即可對最大顯示里程進行擴充。</p><p>  程序設計過程中,對里程數(shù)據(jù)的顯示作了近似處理</p><p>  -------------------------------------里程處理顯示子程序</p><p>

70、  MILAGE: PUSH A</p><p>  MOV A,DATA3</p><p>  MOV B,#0C8H ; 除以200,顯示百位里程數(shù)據(jù)</p><p><b>  DIV AB</b></p><p>  MOV CODE_, A</p&

71、gt;<p>  MOV CTEMP,#00H</p><p>  MOV A,B</p><p>  LCALL BB2</p><p>  MOV B,#014H ; 顯示十位里程數(shù)據(jù)</p><p><b>  DIV AB</b></p&g

72、t;<p>  MOV CODE_,A</p><p>  MOV CTEMP, #08H</p><p>  MOV A,B</p><p>  LCALL BB2</p><p>  MOV B, #02H ; 顯示個位里程數(shù)據(jù)</p><p>&

73、lt;b>  DIV AB</b></p><p>  MOV CODE_ ,A</p><p>  MOV CTEMP, #10H</p><p>  MOV A,B</p><p>  LCALL BB2</p><p>  MOV CODE_ ,#0AH</

74、p><p>  MOV CTEMP, #17H ; 顯示小數(shù)點</p><p>  LCALL BB2</p><p>  CJNE A,#00H, M1 </p><p>  MOV A,DATA2 ; DATA2除以50得到小數(shù)點</p><p>

75、;  MOV B,#032H 后第一位</p><p><b>  DIV AB</b></p><p>  MOV CODE_, A </p><p>  MOV CTEMP, #1EH</p><p>  MOV A,B</p&g

76、t;<p>  LCALL BB2</p><p>  MOV B,#05H ; 余數(shù)再除以5得到小數(shù)點后第二位</p><p><b>  DIV AB</b></p><p>  MOV CODE_ ,A</p><p>  MOV CTEMP, #26H

77、</p><p>  LCALL BB2</p><p><b>  POP A</b></p><p><b>  RET</b></p><p>  M1 : MOV A,DATA2</p><p>  MOV B,#032H</p>

78、;<p><b>  DIV AB</b></p><p>  ADD A,#05H ; 顯示大于0.50公里時代碼加5</p><p>  MOV CODE_, A</p><p>  MOV CTEMP, #1EH</p><p>  MOV A,B<

79、;/p><p>  LCALL BB2</p><p>  MOV B,#05H</p><p><b>  DIV AB</b></p><p>  MOV CODE_ ,A</p><p>  MOV CTEMP, #26H</p><p>  L

80、CALL BB2</p><p><b>  POP A</b></p><p><b>  RET</b></p><p>  ---------------------------第二行速度數(shù)據(jù)顯示調用子程序</p><p>  BB1: PUSH A</p>

81、<p>  MOV PAGE_,#00H</p><p>  MOV A,CTEMP</p><p>  ADD A,#3CH</p><p>  MOV COLUMN,A</p><p>  LCALL DIW_PR</p><p><b>  POP A</

82、b></p><p><b>  RET</b></p><p>  -------------------------第一行里程數(shù)據(jù)顯示調用子程序</p><p>  BB2: PUSH A</p><p>  MOV PAGE_,#02H</p><p>  MOV

83、 A,CTEMP</p><p>  ADD A,#3CH</p><p>  MOV COLUMN,A</p><p>  LCALL DIW_PR</p><p><b>  POP A</b></p><p><b>  RET</b></p

84、><p>  3.2.5 方向顯示模塊程序設計</p><p>  該程序對從指撥開關輸入的數(shù)據(jù)作出反應,若輸入的數(shù)據(jù)為128,則在LCD顯示屏上顯示“停止”的標志,若輸入的數(shù)據(jù)大于128,則顯示“正轉”的標志,若輸入的數(shù)據(jù)小于128,則顯示“反轉”的標志。</p><p>  fxb: MOV CTEMP ,#00H</p><p&

85、gt;  CJNE A,#80h,fx</p><p>  MOV PAGE_,#00H ;停止</p><p>  MOV A,CTEMP</p><p>  ADD A,#2AH</p><p>  MOV COLUMN,A</p><p>  MOV CODE

86、_,#09H</p><p>  LCALL CCW_PR</p><p>  MOV PAGE_,#00H ;顯示“0”</p><p>  MOV A,CTEMP</p><p>  ADD A,#3CH</p><p>  MOV COLUMN,A</p><p>

87、;  MOV CODE_,#00H</p><p>  LCALL DIW_PR</p><p>  MOV PAGE_,#00H ;顯示“0”</p><p>  MOV A,CTEMP</p><p>  ADD A,#44H</p><p>  MOV COLUMN,A</p

88、><p>  MOV CODE_,#00H</p><p>  LCALL DIW_PR</p><p>  MOV PAGE_,#00H ;顯示“0”</p><p>  MOV A,CTEMP</p><p>  ADD A,#4CH</p><p>  MOV

89、COLUMN,A</p><p>  MOV CODE_,#00H</p><p>  LCALL DIW_PR</p><p><b>  RET</b></p><p>  fx: ANL a,#80h</p><p>  CJNE a,#80h,fx1</p

90、><p>  MOV PAGE_,#00H ;正轉</p><p>  MOV A,CTEMP</p><p>  ADD A,#2aH</p><p>  MOV COLUMN,A</p><p>  MOV CODE_,#07H</p><p>

91、;  LCALL CCW_PR</p><p><b>  RET</b></p><p>  fx1: MOV PAGE_,#00H ;反轉</p><p>  MOV A,CTEMP</p><p>  ADD A,#2aH</p><p> 

92、 MOV COLUMN,A</p><p>  MOV CODE_,#08H</p><p>  LCALL CCW_PR</p><p><b>  RET</b></p><p><b>  4 結束語</b></p><p>  完成這次畢業(yè)設計,讓我認

93、識很多不足。但也讓我有機會將以前所學的知識與實際設計結合起來,而且還新學了一些單片機方面的知識。在完成課題設計的過程中我遇到了不少問題。由于單片機這門課程學的不是很好,開始的時候不是很順利。不過在XX老師的指導下,很快我就有了比較清晰的設計思路,對要學習的內(nèi)容也比較清晰了。思路有了,要學習的內(nèi)容也清晰了,但是由于這期間本人參加工作應聘耽擱了一些時間,時間上就顯得很緊張了,我每天增加投入到畢業(yè)設計上的時間。最終,我較為順利的完成了我的畢業(yè)

94、設計。</p><p>  感謝我的指導老師XX,本課題的選題和研究過程都是在XX老師的悉心指導下完成的。XX老師時時關注研究進度,并在百忙之中不時給予督促和指導,使我得以開拓思路,順利完成課題設計。在此我要向XX老師致以我真誠的感謝。</p><p><b>  參考文獻:</b></p><p>  [1] 張義和、陳敵北:例說8051,人

95、民郵電出版社,2009.11,P45-P50</p><p>  [2] 賈好來:MCS-51單片機原理及應用,機械工業(yè)出版社,2005.2,P154-P158</p><p>  [3] 趙健領:51系列單片機開發(fā)寶典,電子工業(yè)出版社,2009.11,P129-P153</p><p>  [4] 余錫存:微機原理及接口技術,西安電子科技大學出版社,2004.1,

96、P187-P199</p><p>  [5] 劉同法、陳忠平:單片機基礎與最小系統(tǒng)實踐,北京航空航天大學出版社,2005.7,P235-P276</p><p>  [6] 何宏:單片機原理與接口技術,國防工業(yè)出版社,2009.9,P65-P97</p><p>  [7] 樓然苗:51系列單片機設計實例,北京航空航天大學出版社,2008.8,P259-P304&

97、lt;/p><p>  [8] 劉迎春:MCS-51單片機原理及應用教程,清華大學出版社,2010.11,P78-P96</p><p>  [9] 馬忠梅: 單片機的C語言應用程序設計,航空航天大學出版社,1999.9,P3-P19</p><p>  [10] 李廣弟: 單片機基礎,北京航空航天大學出版社,2001.8,P9-P12</p><p

98、>  [11] 唐競新: 數(shù)字電子電路,清華大學出版社,2003.3,P34-P45</p><p>  [12] 康華光: 電子技術基礎,高等教育出版社,1998.9,P67-P78</p><p>  [13] 蔡朝陽: 單片機控制實習與專題制作,北京航空航天大學出版社,2006.3,P9-P23</p><p>  [14] 丁元杰:單片微機原理及應用,

99、機械工業(yè)出版社,2003.7,P1-P3</p><p>  [15] 李 華: MCS-51系列單片機實用接口技術,北京航空大學出版社,1993.7,P32-P37</p><p>  [16] 胡漢才:單片機原理及系統(tǒng)設計,北京清華大學出版社,2002.5,P45-P50</p><p>  [17] 孫育才: MCS-51系列單片微型計算機及其應用,

100、東南大學出版社,1991.4,P46-P51</p><p>  [18] 李光第、朱月秀:單片機基礎,北京航空航天大學出版社,2004.6,P56-P63 </p><p>  [19] 李朝青: 單片機原理及接口技術設計,北京航空航天大學出版社,2003.7,P48-P56</p><p>  [20] 赫建國、劉建新:基于單片機頻率計設計,西安郵電學院學報,2

溫馨提示

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

評論

0/150

提交評論