基于MCS51單片機(jī)的里程表的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁
基于MCS51單片機(jī)的里程表的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁
基于MCS51單片機(jī)的里程表的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第3頁
基于MCS51單片機(jī)的里程表的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第4頁
基于MCS51單片機(jī)的里程表的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 基于mcs-51單片機(jī)的里程表的設(shè)計(jì)前言汽車是現(xiàn)代生活中不可或缺的一種重要交通工具,傳統(tǒng)的指針式的里程表伴隨著汽車的誕生就一直為人們接受,不過,新生事物不會因傳統(tǒng)的存在而停止它前進(jìn)的步伐,數(shù)碼科技在今天已滲透到工業(yè),農(nóng)業(yè),民用等產(chǎn)品的點(diǎn)點(diǎn)滴滴。新概念的車速里程表最直觀的變化就是用大屏幕的液晶取代指針式表盤,直接用數(shù)字顯示時速,里程,以及其他一些諸如油耗、時鐘、環(huán)境溫度等參數(shù)。直觀的呈現(xiàn)給使用者。由于單片機(jī)體積小,可以把它做到產(chǎn)品的內(nèi)部,取代老式機(jī)械零件,縮小產(chǎn)品體積,增強(qiáng)功能,實(shí)現(xiàn)智能化。因此廣泛的被用在智能產(chǎn)品中。intel公司的mcs-51系列單片機(jī)在近年來廣泛流行,即介紹一種基于mcs

2、-51單片機(jī)的里程表的設(shè)計(jì)與實(shí)現(xiàn)。本課題設(shè)計(jì)先對里程表設(shè)計(jì)中所需設(shè)備作了詳細(xì)介紹,對設(shè)計(jì)中存在的問題進(jìn)行了說明;對硬件和軟件部分的設(shè)計(jì)和實(shí)現(xiàn)作了認(rèn)真的分析;給出了系統(tǒng)的建模過程及相應(yīng)的系統(tǒng)模型,在lab2000p仿真實(shí)驗(yàn)系統(tǒng)上進(jìn)行了仿真,并對仿真結(jié)果進(jìn)行了分析。1 系統(tǒng)概述 本系統(tǒng)由信號采集處理模塊、單片機(jī)8031、系統(tǒng)化lcd顯示模塊、系統(tǒng)軟件組成。其中信號采集處理模塊以霍爾傳感器為核心器件,將不同的轉(zhuǎn)速信號轉(zhuǎn)換成相應(yīng)的脈沖信號,并送到單片機(jī)的t1引腳;對單片機(jī)進(jìn)行設(shè)置,使內(nèi)部的定時器/計(jì)數(shù)器timer0工作在定時狀態(tài),timer1工作在計(jì)數(shù)狀態(tài),利用內(nèi)部定時器t0對脈沖輸入引腳t1進(jìn)行控制

3、,這樣就能精確地檢測到設(shè)定時間內(nèi)加到t1引腳的脈沖數(shù),一個脈沖即代表著車子前進(jìn)一個輪長,對脈沖數(shù)進(jìn)行處理就可得到里程和速度的數(shù)據(jù);將數(shù)據(jù)送到lcd顯示模塊進(jìn)行顯示。該系統(tǒng)原理框圖如圖所示。系統(tǒng)軟件包括單片機(jī)和液晶模塊的初始化模塊、液晶模塊的寫數(shù)據(jù)命令子模塊、頻率測量模塊、速度里程計(jì)算模塊、速度和里程顯示數(shù)據(jù)lcd字庫顯示模塊等。脈沖信號lcd單片機(jī)圖1-1 系統(tǒng)原理框圖2 基本原理與設(shè)計(jì)方案2.1 元器件簡介 2.1.1 霍爾傳感器簡介 霍耳效應(yīng):1879年e.h. 霍爾發(fā)現(xiàn),如果對位于磁場(b)中的導(dǎo)體(d)施加一個電壓(v),該磁場的方向垂直于所施加電壓的方向,那么則在既與磁場垂直又和所施

4、加電流方向垂直的方向上會產(chǎn)生另一個電壓(uh),人們將這個電壓叫做霍爾電壓,產(chǎn)生這種現(xiàn)象被稱為霍爾效應(yīng)?;魻栃?yīng)從本質(zhì)上講是運(yùn)動的帶電粒子在磁場中受洛侖茲力作用而引起的偏轉(zhuǎn)。當(dāng)帶電粒子(電子或空穴)被約束在固體材料中,這種偏轉(zhuǎn)就導(dǎo)致在垂直電流和磁場的方向上產(chǎn)生正負(fù)電荷的積累,從而形成附加的橫向電場。 通有電流 i 的金屬或半導(dǎo)體板置于磁感強(qiáng)度為 b 的均勻磁場中,磁場方向和電流方向垂直,在金屬板的第三對表面間就顯示出橫向電勢差 u h 的現(xiàn)象稱為霍耳效應(yīng)。u h 就稱為霍耳電勢差。 實(shí)驗(yàn)測定,霍耳電勢差的大小,和電流 i 及磁感強(qiáng)度b成正比,而與板的厚度d 成反比 霍爾轉(zhuǎn)速傳感器:霍爾轉(zhuǎn)速傳感

5、器的外形圖和與磁場的作用關(guān)系下圖所示。磁場由磁鋼提供,所以霍爾傳感器和磁鋼需要配對使用?;魻杺鞲衅鳈z測轉(zhuǎn)速示意圖如下圖。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉(zhuǎn)動一圈,霍爾傳感器便輸出一個脈沖。通過單片機(jī)測量產(chǎn)生脈沖的頻率就可以得出圓盤的轉(zhuǎn)速?;魻栯娏鱾鞲衅鞅旧硪呀?jīng)存在濾波電路,輸出無須再加裝濾波,可直接供單片機(jī)的05v的 ad采集或直接送到單片機(jī)的中斷輸入引腳,信號非常穩(wěn)定,而且抗干擾能力很強(qiáng)。 霍爾電流傳感器反應(yīng)速度一般在7微妙,不用考慮單片機(jī)循環(huán)判斷的時間。若在圓盤上貼上多塊磁鋼,則圓盤每轉(zhuǎn)一圈,輸出的脈沖信號將相應(yīng)增加,單位時間內(nèi)測到的脈沖數(shù)將增多,測出

6、的轉(zhuǎn)速也將更加精細(xì)。本設(shè)計(jì)建模時采用一個圓盤上貼一個磁鋼進(jìn)行模擬。實(shí)際制作中可以貼上多塊磁鋼,即可以克服因車輪轉(zhuǎn)速太慢而在設(shè)定時間內(nèi)測不到脈沖的問題。圖2.1.1-1 霍爾轉(zhuǎn)速傳感器的外形圖圖2.1.1-2 霍爾傳感器檢測轉(zhuǎn)速示意圖2.1.2 at89c51芯片簡介at89c51是一個低電壓,高性能cmos 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的flash只讀程序存儲器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(ram),器件采用atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和flash存儲單元,內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的at89c

7、51提供了高性價比的解決方案。at89c51是一個低功耗高性能單片機(jī),40個引腳,32個外部雙向輸入/輸出(i/o)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計(jì)數(shù)器,2個全雙工串行通信口,at89c51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的flash存儲器可有效地降低開發(fā)成本。 at89c51具有如下功能特性: 兼容mcs51指令系統(tǒng); 32個雙向i/o口; 兩個16位可編程定時/計(jì)數(shù)器; 1個串行中斷; 兩個外部中斷源; 4k可反復(fù)擦寫(1000次)flash rom; 128x8bit內(nèi)部ram; 6個中斷源; 低

8、功耗空閑和掉電模式; 軟件設(shè)置睡眠和喚醒功能。圖2.1.2-1 at89c51芯片2.1.3 液晶顯示模塊sed1520芯片介紹本課題仿真實(shí)驗(yàn)系統(tǒng)采用的液晶顯示屏內(nèi)置控制器為sed1520,點(diǎn)陣為12232,需要兩片sed1520組成,由e1、e2分別選通,以控制顯示屏的左右兩半屏。圖形液晶顯示模塊有兩種連接方式。一種為直接訪問方式,一種為間接控制方式。本設(shè)計(jì)采用直接控制方式。直接控制方式就是將液晶顯示模塊的接口作為存儲器或io 設(shè)備直接掛在計(jì)算機(jī)總線上。計(jì)算機(jī)通過地址譯碼控制 e1和 e2的選通;讀寫操作信號 rw由地址線 a1控制;命令/數(shù)據(jù)寄存器選擇信號 ao 由地址線 a0控制。實(shí)際電

9、路如圖所示。地址映射如下(地址中的x由lcdcs決定,可參見地址譯碼部分說明)表2.1.3-1 地址映射0x000h0x001h0x002h0x003h0x004h0x005h0x006h0x007h寫e1指令寫e1數(shù)據(jù)讀e1狀態(tài)讀e1數(shù)據(jù)寫e2指令寫e2數(shù)據(jù)讀e2狀態(tài)讀e2數(shù)據(jù) 圖2.1.3-1 液晶屏顯示控制電路2.1.3.1 sed1520芯片介紹sed1520液晶顯示驅(qū)動器是一種點(diǎn)陣圖形式液晶顯示驅(qū)動器,它可直接與8位微處理器相連,集行、列驅(qū)動器于一體,因此使用起來十分方便,作為內(nèi)藏式控制器被廣泛應(yīng)用于點(diǎn)陣數(shù)較少的液晶顯示模塊。2.1.3.2 sed1520的特性內(nèi)置顯示ram區(qū)ram

10、容量為2560(32行80列)位。ram中的1位數(shù)據(jù)控制液晶屏上,具有16個行驅(qū)動口和16個列驅(qū)動口,并可級聯(lián)兩個sed1520實(shí)現(xiàn)32行驅(qū)動??芍苯优c80系列微處理器相連,亦可直接與68系列微處理器相連。驅(qū)動占空比為116或132??梢耘csed1520配合使用,以便擴(kuò)展列驅(qū)動口數(shù)目。2.1.3.3 sed1520指令與顯示ram結(jié)構(gòu)sed1520指令系統(tǒng)比較簡單,共13條,除讀狀態(tài)指令、讀顯示ram數(shù)據(jù)指令外,其他指令均為寫操作,并且讀寫指令均為單字節(jié)指令。在送出每條指令時,必須進(jìn)行控制器狀態(tài)檢測,狀態(tài)字節(jié)的含義如下: d7:1/0,模塊忙/準(zhǔn)備就緒; d5:1/0,模塊顯示關(guān)/開; d4:

11、1/0,模塊復(fù)位/正常; d3-d0:未用; 在指令使用中,關(guān)鍵要分清顯示行、列設(shè)置和顯示頁面設(shè)置的關(guān)系。單片sed1520可驅(qū)動6116液晶屏,其內(nèi)部顯示ram相對于com0每8行為一個顯示頁面。本設(shè)計(jì)所用的字符液晶模塊由兩塊sed1520級聯(lián)驅(qū)動,其中一個工作在主工作方式下,另一個工作在從方式下,主工作方式sed1520負(fù)責(zé)上半屏16行的驅(qū)動和左半屏的61列驅(qū)動,從工作方式的sed1520則負(fù)責(zé)下半屏16行的驅(qū)動和右半屏的61列驅(qū)動,使能信號e1、e2用來區(qū)分具體控制的是那一片sed1520。這樣兩片sed1520級聯(lián)可驅(qū)動12232圖形點(diǎn)陣液晶顯示屏,可完成圖形顯示,也可顯示七個半(16

12、16點(diǎn)陣)漢字。圖2.1.3.3-1 圖形點(diǎn)陣液晶顯示屏2.2 設(shè)計(jì)方法2.2.1 51單片機(jī)定時器/計(jì)數(shù)器的基本結(jié)構(gòu)及工作原理單片機(jī)內(nèi)部設(shè)有兩個16位的可編程定時器/計(jì)數(shù)器??删幊痰囊馑际侵钙涔δ埽ㄈ绻ぷ鞣绞健⒍〞r時間、啟動方式等)均可由指令來確定和改變。在定時器/計(jì)數(shù)器中除了有兩個16位的計(jì)數(shù)器之外,還有兩個特殊功能寄存器(控制寄存器和方式寄存器)。2.2.1.1 定時器/計(jì)數(shù)器的結(jié)構(gòu)如下圖2.2.1.1-1 定時器/計(jì)數(shù)器的結(jié)構(gòu)從上面定時器/計(jì)數(shù)器的結(jié)構(gòu)圖中我們可以看出,16位的定時/計(jì)數(shù)器分別由兩個8位專用寄存器組成,即:t0由th0和tl0構(gòu)成;t1由th1和tl1構(gòu)成。其訪問地址依

13、次為8ah-8dh。每個寄存器均可單獨(dú)訪問。這些寄存器是用于存放定時或計(jì)數(shù)初值的。此外,其內(nèi)部還有一個8位的定時器方式寄存器tmod和一個8位的定時控制寄存器tcon。這些寄存器之間是通過內(nèi)部總線和控制邏輯電路連接起來的。tmod主要是用于選定定時器的工作方式;tcon主要是用于控制定時器的啟動停止,此外tcon還可以保存t0、t1的溢出和中斷標(biāo)志。當(dāng)定時器工作在計(jì)數(shù)方式時,外部事件通過引腳t0(p3.4)和t1(p3.5)輸入。2.2.1.2 定時計(jì)數(shù)器的原理16位的定時器/計(jì)數(shù)器實(shí)質(zhì)上就是一個加1計(jì)數(shù)器,其控制電路受軟件控制、切換。當(dāng)定時器/計(jì)數(shù)器為定時工作方式時,計(jì)數(shù)器的加1信號由振蕩器

14、的12分頻信號產(chǎn)生,即每過一個機(jī)器周期,計(jì)數(shù)器加1,直至計(jì)滿溢出為止。顯然,定時器的定時時間與系統(tǒng)的振蕩頻率有關(guān)。因一個機(jī)器周期等于12個振蕩周期,所以計(jì)數(shù)頻率 。如果晶振為12mhz,則計(jì)數(shù)周期為: 。這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當(dāng)選擇定時器的長度(如8位、13位、16位等)。當(dāng)定時器/計(jì)數(shù)器為計(jì)數(shù)工作方式時,通過引腳t0和t1對外部信號計(jì)數(shù),外部脈沖的下降沿將觸發(fā)計(jì)數(shù)。計(jì)數(shù)器在每個機(jī)器周期的s5p2期間采樣引腳輸入電平。若一個機(jī)器周期采樣值為1,下一個機(jī)器周期采樣值為0,則計(jì)數(shù)器加1。此后的機(jī)器周期s3p1期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。所以檢測一個由1

15、至0的跳變需要兩個機(jī)器周期,故外部事件的最高計(jì)數(shù)頻率為振蕩頻率的1/24。例如,如果選用12mhz晶振,則最高計(jì)數(shù)頻率為0.5mhz。雖然對外部輸入信號的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計(jì)數(shù)脈沖的高電平與低電平保持時間在一個機(jī)器周期以上。 當(dāng)cpu用軟件給定時器設(shè)置了某種工作方式之后,定時器就會按設(shè)定的工作方式獨(dú)立運(yùn)行,不再占用cpu的操作時間,除非定時器計(jì)滿溢出,才可能中斷cpu 當(dāng)前操作。cpu也可以重新設(shè)置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機(jī)中效率高而且工作靈活的部件。2.2.1.3 控制寄存器 定時器計(jì)數(shù)器t0和t1有2個控制寄

16、存器tmod和tcon,它們分別用來設(shè)置各個定時器計(jì)數(shù)器的工作方式,選擇定時或計(jì)數(shù)功能,控制啟動運(yùn)行,以及作為運(yùn)行狀態(tài)的標(biāo)志等。其中,tcon寄存器中另有4位用于中斷系統(tǒng)。定時器/計(jì)數(shù)器方式寄存器tmod定時器方式控制寄存器tmod在特殊功能寄存器中,字節(jié)地址為89h,無位地址。tmod的格式如下圖所示。表2.2.1.3-1 tmod的格式 d7 d6 d5 d4 d3 d2 d1 d0gatectm1m0gatectm1m0控制定時器t1控制定時器t0gate:門控位。gate=0時,定時器由軟件控制位tr0或tr1來控制啟停。tri位為1時,定時器啟動開始工作;為0時定時器停止工作。gat

17、e=1時,定時器的啟動停止由外部中斷引腳和tri位共同控制。只有當(dāng)外部中斷引腳int0或int1為高時,tr0或tr1置1才能啟動定時器工作。ct:功能選擇位。當(dāng)ct=0時設(shè)置為定時器工作模式;當(dāng)ct=1時設(shè)置為計(jì)數(shù)器工作模式。m1、m0:工作方式選擇位。定時器計(jì)數(shù)器有4種工作方式,由m0、m1來定義:表2.2.1.3-2 m1、m0定義m0m1操作方式功能說明00方式013位定時器計(jì)數(shù)器,tli只用低5位01方式116位定時器計(jì)數(shù)器10方式2自動重裝初值的8位定時器計(jì)數(shù)器,thi的值在保持不變,tli溢出時,thi的值自動裝入tli中。11方式3僅適用于t0,t0分成2個獨(dú)立的8位計(jì)數(shù)器;t

18、1停止計(jì)數(shù)。定時器/計(jì)數(shù)器方式控制寄存器不能進(jìn)行位尋址,只能用字節(jié)傳送指令設(shè)置定時器工作方式,低半字節(jié)定義為定時器0,高半字節(jié)定義為定時器1。復(fù)時,tmod所有位均為0。 2.2.1.4 定時器/計(jì)數(shù)器控制寄存器tcontcon在特殊功能寄存器中,字節(jié)地址為88h,位地址(由低位到高位)為88h8fh,由于有位地址,十分便于進(jìn)行位操作。 tcon的作用是控制定時器的啟、停,標(biāo)志定時器溢出和中斷情況。 tcon的格式如下圖所示。其中,tfl,trl,tf0和tr0位用于定時器計(jì)數(shù)器;iel,itl,ie0和it0位用于中斷系統(tǒng)。表2.2.1.4-1 定時器/計(jì)數(shù)器控制寄存器tcon8fh 8eh

19、 8dh 8ch 8bh 8ah 89h 88h (位地址)tf1tr1tf0tr0ie1it1ie0it0各位定義如下: tf1和tf0: 分別為定時器1和定時器0溢出標(biāo)志。當(dāng)計(jì)數(shù)器計(jì)滿產(chǎn)生溢出時,由硬件自動置“1”,并可申請中斷。進(jìn)入中斷服務(wù)程序后,由硬件自動清零。tr1和tr0: 定時器1和定時器0啟動控制位。ie1和ie0: 外部中斷引腳int0或int1中斷請求標(biāo)志位。當(dāng)外部中斷源有請求時其對應(yīng)的中斷標(biāo)志位置“1”。其復(fù)位方式由觸發(fā)方式來設(shè)置。it1和it0: 為外部中斷1和外部中斷0的觸發(fā)方式選擇位。iti設(shè)置為“0”時為電平觸發(fā);設(shè)置為“1”時為邊沿觸發(fā)方式。tcon中低4位與中

20、斷有關(guān)。由于tcon 是可以位尋址的,因而如果只是清溢出或啟動定時器工作,可以用位操作命令。例如:執(zhí)行“clr tf0”后則清定時器0的溢出;執(zhí)行“setb tr1”后可啟動定時器1開始工作。 2.2.1.5 定時器/計(jì)數(shù)器的初始化由于定時器/計(jì)數(shù)器的功能是由軟件編程確定的,所以一般在使用定時/計(jì)數(shù)器前都要對其進(jìn)行初始化,使其按設(shè)定的功能工作。初始化的步驟如下: 確定工作方式(即對tmod賦值); 預(yù)置定時或計(jì)數(shù)的初值(可直接將初值寫入th0、tl0或th1、tl1); 根據(jù)需要開放定時器/計(jì)數(shù)器的中斷(直接對ie位賦值); 啟動定時器/計(jì)數(shù)器(若已規(guī)定用軟件啟動,則可把tr0或tr1置“1”

21、;若已規(guī)定由外中斷引腳電平啟動,則需給外引腳步加啟動電平。當(dāng)實(shí)現(xiàn)了啟動要求后,定時器即按規(guī)定的工作方式和初值開始計(jì)數(shù)或定時)。2.2.1.6 定時器/計(jì)數(shù)器的四種工作方式定時器t0或t1無論用作定時器或計(jì)數(shù)器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,t0和t1有完全相同的工作狀態(tài)。通過對方式寄存器tmod中m1、m2位的設(shè)置,可選擇四種工作方式。工作方式0工作方式0是一個13位的定時/計(jì)數(shù)器,16位計(jì)數(shù)器只用了高8位thi和低5位(tli的d4d0位),tli的高3位未用。工作方式116位的定時/計(jì)數(shù)器,原理同工作方式0 工作方式2自動重裝計(jì)數(shù)器。16位計(jì)數(shù)器拆成兩個8位計(jì)

22、數(shù)器,低8位作計(jì)數(shù)器用,高8位用于保存計(jì)數(shù)初值。當(dāng)?shù)?位計(jì)數(shù)產(chǎn)生溢出時,將tfi位置1,同時又將保存在高8位中的計(jì)數(shù)初值重新裝入低8位計(jì)數(shù)器中,又繼續(xù)計(jì)數(shù),循環(huán)重復(fù)不止。工作方式3方式3只適用定時器t0,t0在該模式下被拆成兩個獨(dú)立的8位計(jì)數(shù)器th0和tl0。其中tl0使用原來t0的一些控制位和引腳,它們是:c/t,gate,tr0,tf0和t0(p3.4)引腳int0(p3.2)引腳。此方式下的tl0除作8位計(jì)數(shù)器外,其功能和操作與方式0,方式1完全相同,可作計(jì)數(shù)也可作定時用。該方式下的th0,此時只可作簡單的內(nèi)部定時器功能。它借用原定時器1的控制位和溢出標(biāo)志位tr1和tf1,同時占用了t1

23、的中斷源。th0的啟動和關(guān)閉幕式僅受tr1的控制,tr1=1,th0啟動定時;tr1=0,th0停止定時工作。該方式下的t1仍可設(shè)置為方式0、方式1、方式2,用于任何不需要中斷的場合。2.2.2 頻率測量本課題所采用的霍爾傳感器由一個磁鋼和一個霍爾器件組成。磁鋼被貼在非磁性圓盤上,隨圓盤一起旋轉(zhuǎn),霍爾器件固定在圓盤附近,圓盤每轉(zhuǎn)一圈,霍爾器件將產(chǎn)生一個脈沖,一個脈沖即代表了一個圓盤的周長。本設(shè)計(jì)中霍爾傳感器產(chǎn)生的脈沖將被送到單片機(jī)的內(nèi)部定時計(jì)數(shù)器timer1的t1口。內(nèi)部定時計(jì)數(shù)器timer0工作在定時狀態(tài),timer1工作在計(jì)數(shù)狀態(tài)。timer0和timer1均工作在模式1。本設(shè)計(jì)中time

24、r0產(chǎn)生0.5秒的定時。timer1將對0.5秒內(nèi)對加到t1腳的脈沖進(jìn)行計(jì)數(shù)。假設(shè)0.5秒內(nèi)timer1計(jì)數(shù)到n個脈沖。則圓盤的轉(zhuǎn)動頻率為 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉(zhuǎn)一圈,霍爾器件產(chǎn)生一個脈沖。對脈沖頻率進(jìn)行處理,即可轉(zhuǎn)化為車速。對脈沖數(shù)進(jìn)行累加再乘以輪子的長度,即可得到里程數(shù)據(jù)。2.2.3 基于偉福lab2000p仿真實(shí)驗(yàn)系統(tǒng)的建模過程2.2.3.1 利用直流電機(jī)對車輪變速進(jìn)行模擬利用lab2000p實(shí)驗(yàn)系統(tǒng)上的直流電機(jī)、dac0832數(shù)模變換模塊、單片機(jī)8031、指撥開關(guān)k0-k7構(gòu)成一個能夠控制電機(jī)轉(zhuǎn)速的控制系統(tǒng),對車輪的變速情況進(jìn)行模擬。電機(jī)的轉(zhuǎn)速通過軟件編程,由指撥

25、開關(guān)的不同輸入狀態(tài)進(jìn)行控制。表2.2.3.1-1 實(shí)驗(yàn)系統(tǒng)連線情況連線連結(jié)孔1連結(jié)孔21k0p102k1p113k2p124k3p135k4p146k5p157k6p168k7p179da_cscs210-5v+5v至d/a2.2.3.2 頻率測量模塊的建立在直流電機(jī)轉(zhuǎn)動圓盤邊緣貼有一塊磁鋼,在圓盤附近裝有霍爾傳感器,圓盤每轉(zhuǎn)動一次即產(chǎn)生一個脈沖,脈沖輸出接單片機(jī)的p35引腳。利用單片機(jī)8031的內(nèi)部定時/計(jì)數(shù)器timer0進(jìn)行定時,timer1對脈沖進(jìn)行計(jì)數(shù)。表2.2.3.2-1 實(shí)驗(yàn)系統(tǒng)連線情況連線連結(jié)孔1連結(jié)孔21脈沖輸出p352.2.3.3 數(shù)據(jù)顯示利用實(shí)驗(yàn)箱上的lcd模塊進(jìn)行數(shù)據(jù)顯示

26、,將lcd設(shè)置成兩行,第一行顯示里程數(shù)據(jù),第二行顯示速度數(shù)據(jù)。數(shù)據(jù)的顯示主要由軟件編程進(jìn)行控制。表2.2.3.3-1 實(shí)驗(yàn)系統(tǒng)連線情況連線連結(jié)孔1連結(jié)孔21lcd_cscs02.2.3.4 系統(tǒng)硬件框圖如下 單片機(jī)指撥開關(guān)直流電機(jī)霍爾傳感器 液晶 顯示圖2.2.3.4-1 系統(tǒng)硬件框圖3 程序設(shè)計(jì)整個程序的設(shè)計(jì)基于lab2000p仿真系統(tǒng),速度和里程的計(jì)算都采取了近似處理。3.1 系統(tǒng)程序流程總框圖 開始初始化顯示漢字 延時清屏顯示漢字 電機(jī)控制 方向顯示計(jì)數(shù)脈沖速度 里程顯示圖3.1-1 系統(tǒng)程序流程總框圖本系統(tǒng)軟件采用模塊化設(shè)計(jì)方法。整個系統(tǒng)由初始化模塊、電機(jī)轉(zhuǎn)速控制模塊、電機(jī)轉(zhuǎn)向顯示模塊

27、、頻率測量模塊、速度,里程顯示模塊、漢字顯示模塊以及其他功能模塊組成。程序設(shè)計(jì)中,以60h、61h、62h三個地址為數(shù)據(jù)緩沖區(qū),60h(data1)用于存儲每0.5s 計(jì)數(shù)到的脈沖數(shù),用于計(jì)算速度;61h(data2)、62h(data3)兩個地址用于存儲計(jì)數(shù)到的脈沖的累加數(shù)據(jù),用于計(jì)算里程。3.2 主要模塊程序設(shè)計(jì)3.2.1 電機(jī)轉(zhuǎn)速控制模塊程序設(shè)計(jì)電機(jī)轉(zhuǎn)速的控制模塊由指撥開關(guān)、單片機(jī)、dac0832數(shù)模變換芯片組成。指撥開關(guān)k0-k7接單片機(jī)的p10-p17(p1口),通過指撥開關(guān)可輸入數(shù)據(jù)0-255,單片機(jī)將指撥開關(guān)輸入的數(shù)據(jù)輸出到dac0832數(shù)模變換芯片,通過數(shù)模變換,轉(zhuǎn)換成-8v+

28、8v的電壓驅(qū)動直流電機(jī)。從而達(dá)到對電機(jī)轉(zhuǎn)速的控制。輸入數(shù)據(jù)等于128時,輸出電壓為0v;數(shù)據(jù)大于128時,輸出電壓大于0v;輸入數(shù)據(jù)小于128時,輸出電壓小于0v。mov p1,#0ffh ;設(shè)置p1口為輸入口 mov dptr,#cs0832 mov a, p1 movx dptr,a3.2.2 頻率測量模塊程序設(shè)計(jì)霍爾傳感器產(chǎn)生的脈沖被送到單片機(jī)的內(nèi)部定時/計(jì)數(shù)器timer1的t1口。內(nèi)部定時/計(jì)數(shù)器timer0工作在定時狀態(tài),timer1工作在計(jì)數(shù)狀態(tài)。timer0和timer1均工作在模式1。本設(shè)計(jì)中timer0產(chǎn)生0.5秒的定時。timer1將對0.5秒內(nèi)對加到t1腳的脈沖進(jìn)行計(jì)數(shù)。

29、假設(shè)0.5秒內(nèi)timer1計(jì)數(shù)到n個脈沖。則圓盤的轉(zhuǎn)動頻率為 n / 0.5=2n 。jishu: mov ie,#10001010b ;打開中斷開關(guān) mov tmod,#mode ;設(shè)定內(nèi)部定時器/計(jì)數(shù)器的工作模式 mov sp,#70h mov 40h,#00h mov th1,#00h ;將timer1的計(jì)數(shù)寄存器賦初值0 mov tl1,#00h ;將timer1的計(jì)數(shù)寄存器賦初值0 setb tr1 ;啟動timer1aa: clr f1 ;標(biāo)志位賦0 mov th0,#03ch ;定時器寫入初值 mov tl0,#0b0h setb tr0 ;打開定時器timer0 jnb f1

30、, $ ;等待50ms inc 40h mov a, 40h cjne a, #09h,aa ;定時中斷重復(fù)10次 clr tr1 ;關(guān)閉計(jì)數(shù)器timer1 mov data1,tl1 ;取出timer1計(jì)數(shù)值給data1 mov a,data1 add a,data2 mov data2,a ;將計(jì)數(shù)值累加到data2 jnc bb ;檢查計(jì)數(shù)是否溢出 inc data3 ;有溢出則data3加1bb: ret;-定時中斷子程序timer : clr tr0 setb f1 retitimer0工作在模式1時,tlo、tho計(jì)數(shù)寄存器各使用8位,而28=256,設(shè)置計(jì)數(shù)初值時,把計(jì)數(shù)起點(diǎn)的值

31、處以256,將余數(shù)放入tlo計(jì)數(shù)寄存器,將商數(shù)放入tho計(jì)數(shù)寄存器。本實(shí)驗(yàn)系統(tǒng)所采用12mhz的晶振,定時器所計(jì)數(shù)的脈沖的周期為1us。設(shè)計(jì)每50ms產(chǎn)生一次定時中斷,需計(jì)數(shù)50000個脈沖,則裝入計(jì)數(shù)寄存器的計(jì)數(shù)初值為,裝入tho計(jì)數(shù)寄存器的初值為, 裝入tlo計(jì)數(shù)寄存器的初值為176(0b0h)。程序流程圖如下:開始初始化設(shè)定計(jì)數(shù)器初值,并啟動f1=0定時器賦初值,并啟動f1=0?yesno40h加140h=9 ?noyes停止計(jì)數(shù),取出計(jì)數(shù)值將計(jì)數(shù)值累加到data2cy=0 ?yesnodata3加1返回主程序主程序timer關(guān)閉定時器f1=1返回timer0中斷子程序圖3.2.2-1

32、程序流程圖3.2.3 液晶顯示程序的設(shè)計(jì)本課題中速度、里程的數(shù)據(jù)由液晶顯示模塊顯示,所用的液晶顯示模塊由sed1520芯片驅(qū)動,首先必須對液晶顯示模塊進(jìn)行初始化,編寫相應(yīng)的字庫,編寫讀寫程序等。液晶顯示程序的設(shè)計(jì)包括了初始化程序、清屏程序、寫指令代碼子程序、寫顯示數(shù)據(jù)子程序、讀顯示數(shù)據(jù)子程序、中文顯示子程序、數(shù)字顯示程序以及中文字庫和數(shù)字字庫的編寫。程序詳見附表。3.2.4 速度、里程顯示程序的設(shè)計(jì)本課題中霍爾傳感器產(chǎn)生的脈沖被送到單片機(jī)的內(nèi)部定時計(jì)數(shù)器timer1的t1口。內(nèi)部定時計(jì)數(shù)器timer0工作在定時狀態(tài),timer1工作在計(jì)數(shù)狀態(tài)。timer0和timer1均工作在模式1。本設(shè)計(jì)中

33、timer0產(chǎn)生0.5秒的定時。timer1將對0.5秒內(nèi)對加到t1腳的脈沖進(jìn)行計(jì)數(shù)。假設(shè)0.5秒內(nèi)timer1計(jì)數(shù)到n個脈沖。則圓盤的轉(zhuǎn)動頻率為 n / 0.5=2n 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉(zhuǎn)一圈,霍爾器件產(chǎn)生一個脈沖。對脈沖頻率進(jìn)行處理,即可轉(zhuǎn)化為車速。對脈沖數(shù)進(jìn)行累加再乘以輪子的長度,即可得到里程數(shù)據(jù)。本程序?qū)ζ囘\(yùn)行的實(shí)際情況進(jìn)行模擬。設(shè)計(jì)程序時假設(shè)汽車輪子的周長約為2m,最后在顯示屏顯示的速度單位是km/h,里程單位是km。速度的計(jì)算如下:若0.5秒計(jì)數(shù)到n個脈沖,則輪子的轉(zhuǎn)動頻率為2n,車速為2n2 m/s,也即2n23.6 km/h 。設(shè)計(jì)中作近似處理,處理為

34、14n km/h 。顯示時先顯示百位,再依次顯示十位、個位。-速度處理顯示子程序speed: push a mov a,data1 mov b,#0eh ;計(jì)數(shù)值乘以14 mul ab mov b, #64h ;除數(shù)賦值100 div ab ;得到百位顯示數(shù)據(jù)代碼 mov code_ , a ;百位顯示字庫代碼 mov a,b lcall bb1 ;調(diào)用速度寫顯示數(shù)據(jù)程序 mov b,#0ah ;除數(shù)賦值10 div ab ;得到十位顯示數(shù)據(jù)代碼 mov code_ , a ;十位顯示字庫代碼 mov ctemp, #08h ;顯示后移8列 mov a,b lcall bb1 ;調(diào)用速度寫顯示

35、數(shù)據(jù)程序 mov code_ , a ;個位顯示字庫代碼 mov ctemp, #10h lcall bb1 mov data1,#00h ;數(shù)據(jù)緩沖區(qū)清零 pop a retdata2,data3存儲計(jì)數(shù)到的脈沖總數(shù),data2能存儲255個脈沖,每次計(jì)數(shù)溢出,則data3加1,data3里的數(shù)據(jù)權(quán)重為256.這樣兩個字節(jié)的數(shù)據(jù)能計(jì)數(shù)最多65536個脈沖,也即131072 米 。130多公里。實(shí)際制作里程表時只要適當(dāng)增加數(shù)據(jù)緩沖區(qū)的數(shù)量,即可對最大顯示里程進(jìn)行擴(kuò)充。程序設(shè)計(jì)過程中,對里程數(shù)據(jù)的顯示作了近似處理-里程處理顯示子程序milage: push a mov a,data3 mov b

36、,#0c8h ; 除以200,顯示百位里程數(shù)據(jù) div ab mov code_, a mov ctemp,#00h mov a,b lcall bb2 mov b,#014h ; 顯示十位里程數(shù)據(jù) div ab mov code_,a mov ctemp, #08h mov a,b lcall bb2 mov b, #02h ; 顯示個位里程數(shù)據(jù) div ab mov code_ ,a mov ctemp, #10h mov a,b lcall bb2 mov code_ ,#0ah mov ctemp, #17h ; 顯示小數(shù)點(diǎn) lcall bb2 cjne a,#00h, m1 mov

37、a,data2 ; data2除以50得到小數(shù)點(diǎn)mov b,#032h 后第一位 div ab mov code_, a mov ctemp, #1eh mov a,b lcall bb2 mov b,#05h ; 余數(shù)再除以5得到小數(shù)點(diǎn)后第二位 div ab mov code_ ,a mov ctemp, #26h lcall bb2 pop a retm1 : mov a,data2 mov b,#032h div ab add a,#05h ; 顯示大于0.50公里時代碼加5 mov code_, a mov ctemp, #1eh mov a,b lcall bb2 mov b,#05

38、h div ab mov code_ ,a mov ctemp, #26h lcall bb2 pop a ret-第二行速度數(shù)據(jù)顯示調(diào)用子程序bb1: push a mov page_,#00h mov a,ctemp add a,#3ch mov column,a lcall diw_pr pop a ret-第一行里程數(shù)據(jù)顯示調(diào)用子程序bb2: push a mov page_,#02h mov a,ctemp add a,#3ch mov column,a lcall diw_pr pop a ret3.2.5 方向顯示模塊程序設(shè)計(jì)該程序?qū)闹笓荛_關(guān)輸入的數(shù)據(jù)作出反應(yīng),若輸入的數(shù)據(jù)為1

39、28,則在lcd顯示屏上顯示“停止”的標(biāo)志,若輸入的數(shù)據(jù)大于128,則顯示“正轉(zhuǎn)”的標(biāo)志,若輸入的數(shù)據(jù)小于128,則顯示“反轉(zhuǎn)”的標(biāo)志。fxb: mov ctemp ,#00h cjne a,#80h,fx mov page_,#00h ;停止 mov a,ctemp add a,#2ah mov column,a mov code_,#09h lcall ccw_pr mov page_,#00h ;顯示“0” mov a,ctemp add a,#3ch mov column,a mov code_,#00h lcall diw_pr mov page_,#00h ;顯示“0” mov a

40、,ctemp add a,#44h mov column,a mov code_,#00h lcall diw_pr mov page_,#00h ;顯示“0” mov a,ctemp add a,#4ch mov column,a mov code_,#00h lcall diw_pr retfx: anl a,#80h cjne a,#80h,fx1 mov page_,#00h ;正轉(zhuǎn) mov a,ctemp add a,#2ah mov column,a mov code_,#07h lcall ccw_pr retfx1: mov page_,#00h ;反轉(zhuǎn) mov a,ctemp add a,#2ah mov column,a mov

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論