汽車速度里程表的設計._第1頁
汽車速度里程表的設計._第2頁
汽車速度里程表的設計._第3頁
汽車速度里程表的設計._第4頁
汽車速度里程表的設計._第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、汽車速度里程表的設計摘要:在車輛高速行駛的過程中,車速里程表是為駕駛員及時提供動態(tài)駕駛信息的重要儀表,它的好壞直接影響到車輛行駛安全。而傳統(tǒng)的車速里程表存在兩大缺陷:一是用軟軸驅(qū)動的傳統(tǒng)車速里程表在車輛高速行駛狀態(tài)下,軟軸高速旋轉(zhuǎn),由于軟軸鋼絲應力極限的限制,常常造成鋼絲軟軸的疲勞斷裂,從而使車速里程表失效;二是由于軟軸布線過長,出現(xiàn)形變過大和運動遲滯現(xiàn)象,導致動態(tài)指示遲鈍或指示錯誤。為了更加及時可靠的為駕駛員提供動態(tài)駕駛信息,保證車輛行駛安全,客服傳統(tǒng)軟軸驅(qū)動車速里程表故障率高、動態(tài)指示遲鈍等問題,運用先進的電子技術、傳感器測量技術和計算機智能技術,改進傳統(tǒng)的里程表是非常必要的。關鍵字:單片

2、機,霍爾傳感器,車速里程表Abstract: In the process of high-speed vehicles, vehicle speed odometer is important instrument driver to provide dynamic driving information, which directly affects the running safety of vehicles. The speedometer tradition has two defects: one is the traditional speedometer flexible sh

3、aft driving the vehicle high speed running condition, the shaft rotating speed, the flexible shaft steel wire stress limit, often resulting in fatigue fracture of the wire flexible shaft, so that the speedometer failure; two is a flexible wiring is too long due to deformation, appear too large and t

4、he motion lag, lead to dynamic indicating slow or indication error. In order to be more reliable and timely to the driver's driving dynamic information, guarantee the driving safety, the problem of high failure rate, the speedometer dynamic indicating slow service traditional flexible shaft driv

5、ing, the use of electronic technology, sensor technology and computer intelligence technology advanced, the improvement of the traditional odometer is very necessary. Key words:The microcontroller, hall sensors, memory,The speedometer目 錄前 言11 系統(tǒng)概述22 基本原理與設計方案22.1 霍爾傳感器簡介32.2 AT89C2051芯片簡介42.3 液晶顯示模塊

6、SED1520芯片介紹52.3.1 SED1520芯片介紹52.3.2 SED1520的特性62.3.3 SED1520指令與顯示RAM結(jié)構62.4 定時器/計數(shù)器的結(jié)構72.5 定時計數(shù)器的原理72.6 頻率測量83 系統(tǒng)硬件設計83.1 信號預處理電路83.2 施密特觸發(fā)器93.3 液晶顯示電路和數(shù)據(jù)存儲電路104 系統(tǒng)軟件設計114.1 電機轉(zhuǎn)速控制模塊程序設計124.2 頻率測量模塊程序設計124.3 液晶顯示程序的設計154.4 速度、里程顯示程序的設計154.5 模塊程序設計185 軟件調(diào)試205.1 程序的查錯手段205.2 源程序的檢測215.3 源程序的調(diào)試216 設計總結(jié)2

7、2參考文獻23前 言 汽車是現(xiàn)代生活中不可或缺的一種重要交通工具,傳統(tǒng)的指針式里程表伴隨著汽車的誕生就一直為人們喜愛,不過,新生事物不會因傳統(tǒng)的存在而停止它前進的步伐。數(shù)碼科技在今天已滲透到工業(yè),農(nóng)業(yè),民用等產(chǎn)品的點點滴滴。新概念的車速里程表最直觀的變化就是用大屏幕的液晶取代指針式表盤,直接用數(shù)字顯示速度和里程,以及其他一些諸如油耗、時鐘、環(huán)境溫度等參數(shù),直觀的呈現(xiàn)給使用者。同時,它還具有成本低廉,顯示清晰,穩(wěn)定可靠等優(yōu)點。由于單片機體積小,可以把它做到產(chǎn)品的內(nèi)部,取代老式機械零件,縮小產(chǎn)品體積,增強功能,實現(xiàn)智能化。因此被廣泛地用在智能產(chǎn)品中。Intel公司的MCS-51系列單片機近年來得到

8、了廣泛流行。本文即介紹一種基于AT89C2051單片機的汽車速度與里程表的設計和實現(xiàn)。本設計以AT89C2051為核心,利用單片機的運算和控制功能,采用串口液晶顯示模塊實時顯示所測汽車的速度和里程設計方案。由于使用了串口液晶顯示模塊和E2PROM,以及高效快速算法,因而可在節(jié)約系統(tǒng)資源和簡化程序設計的基礎上保證測量精度和系統(tǒng)實時性。本文先對里程表設計中所需設備作詳細介紹,再對設計中存在的問題進行了說明,對硬件部分和軟件部分的設計和實現(xiàn)作認真的分析。1 系統(tǒng)概述本系統(tǒng)由信號采集處理模塊、單片機AT89C2051、系統(tǒng)化LCD顯示模塊、系統(tǒng)軟件組成。系統(tǒng)軟件包括單片機和液晶模塊的初始化模塊、液晶模

9、塊的寫數(shù)據(jù)命令子模塊、周期測量模塊、速度里程計算模塊、數(shù)據(jù)存儲模塊、速度和里程顯示數(shù)據(jù)轉(zhuǎn)BCD碼模塊、顯示數(shù)據(jù)消多余零模塊、數(shù)據(jù)顯示模塊以及實時中斷服務模塊等。其中,信號采集處理模塊以霍爾傳感器為核心器件,將不同的轉(zhuǎn)速信號轉(zhuǎn)換成相應的脈沖信號,并送到單片機的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顯示模塊進行顯示。速度顯示部分采用串口液晶顯示

10、模塊,所得的數(shù)據(jù)采用I2C總線并通過E2PROM來存儲,因而節(jié)省了所需單片機的口線和外圍器件,同時也簡化了顯示部分的軟件編程。汽車速度與里程表系統(tǒng)原理框圖如圖1-1所示。脈沖信號單片機LCD圖1-1 汽車速度與里程表系統(tǒng)原理框圖2 基本原理與設計方案該設計能實時地將所測的速度顯示出來,同時也能夠累計顯示總里程數(shù)。該速度里程表能將傳感器輸入到單片機的脈沖信號的寬度(傳感器將車速轉(zhuǎn)變成相應寬度的脈沖信號)實時地測量出來,然后通過單片機計算出速度和里程,再將所得的數(shù)據(jù)存儲到串口數(shù)據(jù)存儲器,并由串口液晶顯示模塊實時顯示出所測速度。本設計用兩個按鍵來控制顯示速度或里程。考慮到信號的衰減、干擾等影響,在信

11、號送入單片機前應對其進行放大整形,然后再輸入到單片機進行測速。單片機利用定時器T0的控制功能測出輸入信號的周期后,再利用單片機的算術運算功能將周期轉(zhuǎn)換成速度,同時每秒鐘進行一次里程累計,從而計算出總里程。最后將得出的速度、里程值存儲在E2PROM中,并根據(jù)兩個按鍵的選擇情況來顯示速度或里程。為了方便計算要顯示數(shù)據(jù)值的段碼,可再將其轉(zhuǎn)換成壓縮的BCD碼,然后通過查表將要顯示的數(shù)據(jù)值中每一位的壓縮BCD碼轉(zhuǎn)換成8段碼送到顯示緩沖區(qū),最后經(jīng)串口送至液晶顯示模塊以顯示所測的速度或里程。2.1 霍爾傳感器簡介 霍耳效應:1879年E.H. 霍爾發(fā)現(xiàn),如果對位于磁場(B)中的導體(d)施加一個電壓(v),

12、該磁場的方向垂直于所施加電壓的方向,那么則在既與磁場垂直又和所施加電流方向垂直的方向上會產(chǎn)生另一個電壓(UH),人們將這個電壓叫做霍爾電壓,產(chǎn)生這種現(xiàn)象被稱為霍爾效應?;魻栃獜谋举|(zhì)上講是運動的帶電粒子在磁場中受洛侖茲力作用而引起的偏轉(zhuǎn)。當帶電粒子(電子或空穴)被約束在固體材料中,這種偏轉(zhuǎn)就導致在垂直電流和磁場的方向上產(chǎn)生正負電荷的積累,從而形成附加的橫向電場。通有電流I 的金屬或半導體板置于磁感強度為B 的均勻磁場中,磁場的方向和電流方向垂直,在金屬板的第三對表面間就顯示出橫向電勢差 U H 的現(xiàn)象稱為霍耳效應。U H 就稱為霍耳電勢差。實驗測定,霍耳電勢差的大小和電流I 及磁感強度B成正比

13、,而與板的厚度d 成反比?;魻栟D(zhuǎn)速傳感器: 霍爾轉(zhuǎn)速傳感器的外形圖和與磁場的作用關系如圖2.1-1所示。磁場由磁鋼提供,所以霍爾傳感器和磁鋼需要配對使用?;魻杺鞲衅鳈z測轉(zhuǎn)速示意圖如圖2.1-2所示。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉(zhuǎn)動一圈,霍爾傳感器便輸出一個脈沖。通過單片機測量產(chǎn)生脈沖的頻率就可以得出圓盤的轉(zhuǎn)速?;魻栯娏鱾鞲衅鞅旧硪呀?jīng)存在濾波電路,輸出無須再加裝濾波,可直接供單片機的05V的 AD采集或直接送到單片機的中斷輸入引腳,信號非常穩(wěn)定,而且抗干擾能力很強?;魻栯娏鱾鞲衅鞣磻俣纫话阍?微妙,所以不用考慮單片機循環(huán)判斷的時間。若在圓盤上

14、貼上多塊磁鋼,則圓盤每轉(zhuǎn)一圈,輸出的脈沖信號將相應增加,單位時間內(nèi)測到的脈沖數(shù)將增多,測出的轉(zhuǎn)速也將更加精細。圖2.1-1 霍爾轉(zhuǎn)速傳感器的外形圖圖2.1-2 霍爾傳感器檢測轉(zhuǎn)速示意圖2.2 AT89C2051芯片簡介AT89C2051是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含4k bytes的可反復擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,內(nèi)置功能強大的微型計算機的AT89C2051提供了高性價比的解決方案。 

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

16、RAM; 6個中斷源; 低功耗空閑和掉電模式; 軟件設置睡眠和喚醒功能。2.3 液晶顯示模塊SED1520芯片介紹SED1520液晶顯示驅(qū)動器是一種點陣圖形式液晶顯示驅(qū)動器,它可直接與8位微處理器相連,集行、列驅(qū)動器于一體,因此使用起來十分方便,作為內(nèi)藏式控制器被廣泛應用于點陣數(shù)較少的液晶顯示模塊。2.3.1 SED1520芯片介紹本設計仿真實驗系統(tǒng)采用的液晶顯示屏內(nèi)置控制器為SED1520,點陣為122x32,需要兩片SED1520組成,由E1、E2分別選通,以控制顯示屏的左右兩半屏。圖形液晶顯示模塊有兩種連接方式。一種為直接訪問方式,一種為間接控制方式。本設計采用直接控制方式。直接控制方式

17、就是將液晶顯示模塊的接口作為存儲器或IO 設備直接掛在計算機總線上。計算機通過地址譯碼控制 E1和 E2的選通;讀寫操作信號 RW由地址線 A1控制;命令/數(shù)據(jù)寄存器選擇信號 AO 由地址線 A0控制。實際電路如圖2.3.1-1所示。地址映射如表2.3.1-1所示(地址中的X由LCD CS決定,可參見地址譯碼部分說明)。表2.3.1-1 地址映射0X000H0X001H0X002H0X003H0X004H0X005H0X006H0X007H寫E1指令寫E1數(shù)據(jù)讀E1狀態(tài)讀E1數(shù)據(jù)寫E2指令寫E2數(shù)據(jù)讀E2狀態(tài)讀E2數(shù)據(jù)圖2.3.1-1 液晶屏顯示控制電路2.3.2 SED1520的特性內(nèi)置顯示

18、RAM區(qū)RAM容量為2560(32行80列)位。RAM中的1位數(shù)據(jù)控制液晶屏上一個點的亮滅狀態(tài):“1”表示亮,“0”表示暗。它具有16個行驅(qū)動口和16個列驅(qū)動口,并可級聯(lián)兩個SED1520實現(xiàn)32行驅(qū)動。還可直接與80系列微處理器相連,亦可直接與68系列微處理器相連。其驅(qū)動占空比為116或132。并可以與SED1520配合使用,以便擴展列驅(qū)動口數(shù)目。2.3.3 SED1520指令與顯示RAM結(jié)構SED1520指令系統(tǒng)比較簡單,共13條,除讀狀態(tài)指令、讀顯示RAM數(shù)據(jù)指令外,其他指令均為寫操作,并且讀寫指令均為單字節(jié)指令。在送出每條指令時,必須進行控制器狀態(tài)檢測,狀態(tài)字節(jié)的含義如下: D7:1/

19、0,模塊忙/準備就緒; D5:1/0,模塊顯示關/開; D4:1/0,模塊復位/正常; D3-D0:未用。 在指令使用中,關鍵要分清顯示行、列設置和顯示頁面設置的關系。單片SED1520可驅(qū)動61×16液晶屏,其內(nèi)部顯示RAM相對于COM0每8行為一個顯示頁面。本設計所用的字符液晶模塊由兩塊SED1520級聯(lián)驅(qū)動,其中一個工作在主工作方式下,另一個工作在從方式下,主工作方式SED1520負責上半屏16行的驅(qū)動和左半屏的61列驅(qū)動,從工作方式的SED1520則負責下半屏16行的驅(qū)動和右半屏的61列驅(qū)動,使能信號E1、E2用來區(qū)分具體控制的是那一片SED1520。這樣兩片SED1520級

20、聯(lián)可驅(qū)動122×32圖形點陣液晶顯示屏,可完成圖形顯示,也可顯示七個半(16×16點陣)漢字。2.4 定時器/計數(shù)器的結(jié)構16位的定時/計數(shù)器分別由兩個8位專用寄存器組成,即:T0由TH0和TL0構成;T1由TH1和TL1構成。其訪問地址依次為8AH-8DH。這些寄存器是用于存放定時或計數(shù)初值的。此外,其內(nèi)部還有一個8位的定時器方式寄存器TMOD和一個8位的定時控制寄存器TCON。這些寄存器之間是通過內(nèi)部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時器的工作方式;TCON主要是用于控制定時器的啟動停止,此外TCON還可以保存T0、T1的溢出和中斷標志。當定時器工作

21、在計數(shù)方式時,外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。定時器/計數(shù)器的結(jié)構原理圖如圖2.4-1所示。圖2.4-1 定時器/計數(shù)器的結(jié)構原理圖2.5 定時計數(shù)器的原理16位的定時器/計數(shù)器實質(zhì)上就是一個加1計數(shù)器,其控制電路受軟件控制、切換。當定時器/計數(shù)器為定時工作方式時,計數(shù)器的加1信號由振蕩器的12分頻信號產(chǎn)生,即每過一個機器周期,計數(shù)器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統(tǒng)的振蕩頻率有關。因一個機器周期等于12個振蕩周期,所以計數(shù)頻率 fcount=1/12osc。如果晶振為12MHz,則計數(shù)周期為: T=1/(12×106)Hz×1/1

22、2=1s 。這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當選擇定時器的長度(如8位、13位、16位等)。當定時器/計數(shù)器為計數(shù)工作方式時,通過引腳T0和T1對外部信號計數(shù),外部脈沖的下降沿將觸發(fā)計數(shù)。計數(shù)器在每個機器周期的S5P2期間采樣引腳輸入電平。若一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數(shù)器加1。此后的機器周期S3P1期間,新的計數(shù)值裝入計數(shù)器。所以檢測一個由1至0的跳變需要兩個機器周期,故外部事件的最高計數(shù)頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計數(shù)頻率為0.5MHz。雖然對外部輸入信號的占空比無特殊要求,但為了確保某給定電平

23、在變化前至少被采樣一次,外部計數(shù)脈沖的高電平與低電平保持時間均需在一個機器周期以上。 當CPU用軟件給定時器設置了某種工作方式之后,定時器就會按設定的工作方式獨立運行,不再占用CPU的操作時間,除非定時器計滿溢出,才可能中斷CPU 當前操作。CPU也可以重新設置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機中效率高而且工作靈活的部件。2.6 頻率測量本設計所采用的霍爾傳感器是由一個磁鋼和一個霍爾器件組成的。磁鋼被貼在非磁性圓盤上,跟著圓盤一起旋轉(zhuǎn)。此霍爾器件就固定在圓盤的附近,工作時,圓盤每轉(zhuǎn)動一圈,霍爾器件就會產(chǎn)生一個脈沖。這里的一個脈沖就代表了一個圓盤的周長。在本設計中,霍爾

24、傳感器產(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個脈沖,則圓盤的轉(zhuǎn)動頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉(zhuǎn)一圈,霍爾器件產(chǎn)生一個脈沖。對脈沖頻率進行處理,即可轉(zhuǎn)化為車速。對脈沖數(shù)進行累加再乘以輪子的長度,即可得到里程數(shù)據(jù)。本設計中開辟了兩個字節(jié)的數(shù)據(jù)區(qū)存儲累加脈沖數(shù)據(jù),最多能計數(shù)65536個脈

25、沖,也即131072 米(假設車輪周長2m)。3 系統(tǒng)硬件設計3.1 信號預處理電路它由二級電路構成,第一級是由開關三極管組成的零偏置放大器,采用開關三極管可以保證放大器具有良好的高頻響應。當輸入信號為零或負電壓時,三極管截止,電路輸出高電平;而當輸入信號為正電壓時,三極管導通,此時輸出電壓隨著輸入電壓的上升而下降,這使得速度里程表既可以測量任意方波信號的頻率,也可以測量正弦波信號的頻率。由于放大器的放大功能降低了對待測信號的幅度要求,因此,系統(tǒng)能對任意大于0.5V的正弦波和脈沖信號進行測量。預處理電路的第二級采用帶施密特觸發(fā)器的反相器CT74LS14來把放大器生成的單相脈沖轉(zhuǎn)換成與COMS電

26、平相兼容的方波信號同時將輸出信號加到單片機的P3.2口上。系統(tǒng)信號預處理電路如圖3.1-1所示。圖3.1-1 系統(tǒng)信號預處理電路3.2 施密特觸發(fā)器利用施密特觸發(fā)器狀態(tài)轉(zhuǎn)換過程中的正反饋,可以把邊沿變化緩慢的周期性信號變換為邊沿很陡的矩形脈沖信號。輸入的信號只要幅度大于VT+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號。從傳感器得到的矩形脈沖經(jīng)傳輸后往往發(fā)生波形畸變。當傳輸線上的電容較大時,波形的上升沿將明顯變壞;當傳輸線較長,而且接收端的阻抗與傳輸線的阻抗不匹配時,在波形的上升沿和下降沿將產(chǎn)生振蕩現(xiàn)象;當其他脈沖信號通過導線間的分布電容或公共電源線疊加到矩形脈沖信號時,信號上將出現(xiàn)

27、附加的噪聲。無論出現(xiàn)上述的那一種情況,都可以通過用施密特反相觸發(fā)器整形而得到比較理想的矩形脈沖波形。只要施密特觸發(fā)器的VT+和VT-設置得合適,均能受到滿意的整形效果。施密特觸發(fā)器對脈沖整形圖如圖3.2-1所示。圖3.2-1 施密特觸發(fā)器對脈沖整形圖3.3 液晶顯示電路和數(shù)據(jù)存儲電路本設計的顯示部分采用液晶顯示模塊LCM0825,液晶顯示模塊與單片機接口電路圖如圖3.3-1所示。LCM0825是8位段碼式液晶顯示模塊,它內(nèi)部集成有LCD控制器、LCD驅(qū)動器和RAM,因而可方便顯示數(shù)據(jù)的編程。液晶顯示模塊采用3-4線串行數(shù)據(jù)輸入,可直接與單片機接口。由于串行接口方式節(jié)省了所需的口線和系統(tǒng)資源,因

28、而使系統(tǒng)具有較高的資源利用率。該模塊可在2.7V-5.2V電壓下工作,其低功耗及背光可調(diào)特性使得設計更具有經(jīng)濟性和通用性。LCM0825能夠顯示8位數(shù)據(jù),每一個數(shù)據(jù)均以8段碼的形式放在其內(nèi)部顯示RAM區(qū),并用模塊內(nèi)RAM的兩個存儲地址來放置一個數(shù)據(jù)的8段碼。8位數(shù)據(jù)共占用內(nèi)部16個地址。每一個數(shù)據(jù)位的8段碼存放形式及高低地址存放段碼的順序都和表1所列的第8位數(shù)據(jù)的8段碼存放格式一樣,只是段碼的存放地址不同。所以,編程時一定要考慮數(shù)據(jù)的存放地址和形式。在使用該液晶顯示模塊時,VCC與VLCD之間可用一個50K的電位器來調(diào)整背光。圖3.3-1 液晶顯示模塊與單片機接口電路圖4 系統(tǒng)軟件設計整個程序

29、的設計以GX-ARM-S3C2410試驗箱為平臺,其中速度和里程的計算都采取了近似處理。本系統(tǒng)軟件采用模塊化設計方法。整個系統(tǒng)由初始化模塊、電機轉(zhuǎn)速控制模塊、電機轉(zhuǎn)向顯示模塊、頻率測量模塊、速度,里程顯示模塊、漢字顯示模塊以及其他功能模塊組成。系統(tǒng)程序流程總框圖如圖3-1所示。程序設計中,以60H、61H、62H三個地址為數(shù)據(jù)緩沖區(qū),60H(DATA1)用于存儲每0.5s 計數(shù)到的脈沖數(shù),用于計算速度;61H(DATA2)、62H(DATA3)兩個地址用于存儲計數(shù)到的脈沖的累加數(shù)據(jù),用于計算里程。 開始初始化顯示漢字 延時清屏顯示漢字 電機控制 方向顯示計數(shù)脈沖速度 里程顯示3-1 系統(tǒng)程序流

30、程總框圖4.1 電機轉(zhuǎn)速控制模塊程序設計電機轉(zhuǎn)速的控制模塊由指撥開關、單片機、DAC0832數(shù)模變換芯片組成。指撥開關K0-K7接單片機的P10-P17(P1口),通過指撥開關可輸入數(shù)據(jù)0-255,單片機將指撥開關輸入的數(shù)據(jù)輸出到DAC0832數(shù)模變換芯片,通過數(shù)模變換,轉(zhuǎn)換成-8V+8V的電壓驅(qū)動直流電機。從而達到對電機轉(zhuǎn)速的控制。輸入數(shù)據(jù)等于128時,輸出電壓為0V;數(shù)據(jù)大于128時,輸出電壓大于0V;輸入數(shù)據(jù)小于128時,輸出電壓小于0V。電機轉(zhuǎn)速控制模塊程序設計如下:mov p1,#0ffh ;設置P1口為輸入口mov dptr,#cs0832mov A, p1movx dptr,A4

31、.2 頻率測量模塊程序設計霍爾傳感器產(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個脈沖。這時,圓盤的轉(zhuǎn)動頻率就為為 N / 0.5=2N。頻率測量模塊程序設計如下:JISHU: MOV IE,#10001010B ;打開中斷開關 MOV TMOD,#MODE ;設定內(nèi)部定時器/計數(shù)器的工作模式 MOV SP,#70H MOV 40

32、H,#00H MOV TH1,#00H ;將timer1的計數(shù)寄存器賦初值0 MOV TL1,#00H ;將timer1的計數(shù)寄存器賦初值0 SETB TR1 ;啟動timer1AA: CLR F1 ;標志位賦0 MOV TH0,#03CH ;定時器寫入初值 MOV TL0,#0B0H SETB TR0 ;打開定時器timer0 JNB F1 , $ ;等待50ms INC 40H MOV A, 40H CJNE A, #09H,AA ;定時中斷重復10次 CLR TR1 ;關閉計數(shù)器timer1 MOV DATA1,TL1 ;取出timer1計數(shù)值給DATA1 MOV A,DATA1 ADD

33、 A,DATA2 MOV DATA2,A ;將計數(shù)值累加到DATA2 JNC BB ;檢查計數(shù)是否溢出 INC DATA3 ;有溢出則DATA3加1BB: RET;-定時中斷子程序TIMER : CLR TR0 SETB F1 RETI當Timer0工作在模式1時,TLO、THO計數(shù)寄存器各使用8位,從計算式 28 = 256,可以得出在設置計數(shù)初值時,把計數(shù)起點的值除以256,再將其余數(shù)放入TLO計數(shù)寄存器,將商數(shù)放入THO計數(shù)寄存器。這個實驗系統(tǒng)所采用的是12MHz的晶振,定時器所計數(shù)的脈沖的周期為1us。由此,我們將這樣設計:每50ms產(chǎn)生一次定時中斷,就需要計數(shù)50000個脈沖,則裝入

34、計數(shù)寄存器的計數(shù)初值就為6553650000 = 15536,這時,裝入THO計數(shù)寄存器的初值就為15536/256 = 60(03CH), 裝入TLO計數(shù)寄存器的初值為176(0B0H)。Timer0中斷子程序流程圖如圖3.2-1所示。Timer關閉定時器F1=1返回 圖3.2-1 Timer0中斷子程序流程圖主程序流程圖如圖3.2-2所示。圖3.2-2 主程序流程圖開始初始化設定計數(shù)器初值,并啟動F1=0定時器賦初值,并啟動F1=0?yesno40H加140H=9 ?NoYes停止計數(shù),取出計數(shù)值將計數(shù)值累加到DATA2CY=0 ?YESNoDATA3加1返回主程序4.3 液晶顯示程序的設

35、計本設計中速度和里程的數(shù)據(jù)由液晶顯示模塊顯示,所用的液晶顯示模塊由SED1520芯片驅(qū)動,首先必須對液晶顯示模塊進行初始化,編寫相應的字庫,編寫讀寫程序等。液晶顯示程序的設計包括了初始化程序、清屏程序、寫指令代碼子程序、寫顯示數(shù)據(jù)子程序、讀顯示數(shù)據(jù)子程序、中文顯示子程序、數(shù)字顯示程序以及中文字庫和數(shù)字字庫的編寫。4.4 速度、里程顯示程序的設計本設計中霍爾傳感器產(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秒

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

37、顯示時先顯示百位,再依次顯示十位、個位。程序如下:;-速度處理顯示子程序SPEED: PUSH A MOV A,DATA1 MOV B,#0EH ;計數(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)用速度寫顯示數(shù)據(jù)程序

38、 MOV CODE_ , A ;個位顯示字庫代碼 MOV CTEMP, #10H LCALL BB1 MOV DATA1,#00H ;數(shù)據(jù)緩沖區(qū)清零 POP A RETDATA2,DATA3存儲計數(shù)到的脈沖總數(shù),DATA2能存儲255個脈沖,每次計數(shù)溢出,則DATA3加1,DATA3里的數(shù)據(jù)權重為256.這樣兩個字節(jié)的數(shù)據(jù)能計數(shù)最多65536個脈沖,也即131072 米 。130多公里。實際制作里程表時只要適當增加數(shù)據(jù)緩沖區(qū)的數(shù)量,即可對最大顯示里程進行擴充。程序設計過程中,對里程數(shù)據(jù)的顯示作了近似處理。程序如下:;-里程處理顯示子程序MILAGE: PUSH A MOV A,DATA3 MO

39、V B,#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ù)點 LCALL BB2 CJNE A,#00H, M1 MOV

40、 A,DATA2 ;DATA2除以50得到小數(shù)點MOV B,#032H 后第一位 DIV AB MOV CODE_ , A MOV CTEMP, #1EH MOV A,B LCALL BB2 MOV B,#05H ;余數(shù)再除以5得到小數(shù)點后第二位 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,#05H

41、 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 RET4.5 模塊程序設計該程序?qū)闹笓荛_關輸入的數(shù)據(jù)作出反應,若輸入的數(shù)據(jù)為128,則在

42、LCD顯示屏上顯示“停止”的標志,若輸入的數(shù)據(jù)大于128,則顯示“正轉(zhuǎn)”的標志,若輸入的數(shù)據(jù)小于128,則顯示“反轉(zhuǎn)”的標志。模塊程序如下: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

43、 A,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,CTE

44、MP ADD A,#2aH MOV COLUMN,A MOV CODE_,#08H LCALL CCW_PR RET5 軟件調(diào)試程序的調(diào)試過程是一個比較復雜的過程,有些需要高度的技巧和一定的方法。一般的編程軟件都提供單步、單步越過、斷點、運行到光標處等基本方法,一般掌握這幾種基本方法就可以解決絕大部分問題。經(jīng)過長時間的調(diào)試實踐之后自然就可以掌握一定的調(diào)試技巧,即熟能生巧。 5.1 程序的查錯手段單片機的應用系統(tǒng)均需借助對應的開發(fā)系統(tǒng)(或裝置)進行在線仿真,對應用系統(tǒng)的軟、硬件進行全面地檢測與調(diào)試。各種開發(fā)系統(tǒng)或裝置均提供以下查錯手段。首先有單步執(zhí)行。采用單步執(zhí)行操作可對應用程序每步執(zhí)行一條指令,可逐條檢查這一段程序的執(zhí)行過程是否符合原設計要求。可直接查出錯誤所在。宏單步可執(zhí)行一段程序,如一步就可執(zhí)行完整個循環(huán)程序段。再次,有斷點設置全速運行可在程序有疑慮的地方設置斷點,從設置的起始地址開始,以全速或非全速方式向設定的斷點處運行。如果這段程序無語法或邏輯上的錯誤,則連續(xù)運行到設置的斷點處停止運行,返回監(jiān)控狀態(tài)。如果有錯誤,則在錯誤處停止運行,如果進入死循環(huán)或者程序跑飛,就永遠不會停止運行。全速斷點運行為檢查實時性及中斷響應處理等提供了方便。另外,還有顯示器窗口檢查和實

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論