




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、前 言汽車是現代生活中不可或缺的一種重要交通工具,傳統的指針式的里程表伴隨著汽車的誕生就一直為人們接受,不過,新生事物不會因傳統的存在而停止它前進的步伐,數碼科技在今天已滲透到工業,農業,民用等產品的點點滴滴。新概念的車速里程表最直觀的變化就是用大屏幕的液晶取代指針式表盤,直接用數字顯示時速,里程,以及其他一些諸如油耗、時鐘、環境溫度等參數。直觀的呈現給使用者。由于單片機體積小,可以把它做到產品的內部,取代老式機械零件,縮小產品體積,增強功能,實現智能化。因此廣泛的被用在智能產品中。Intel公司的MCS-51系列單片機在近年來廣泛流行。本文即介紹一種基于MCS-51單片機的里程表的設計與實現
2、。本文先對里程表設計中所需設備作了詳細介紹,對設計中存在的問題進行了說明;對硬件和軟件部分的設計和實現作了認真的分析;給出了系統的建模過程及相應的系統模型,在Lab2000p仿真實驗系統上進行了仿真,并對仿真結果進行了分析。一 系統概述 本系統由信號采集處理模塊、單片機8031、系統化LCD顯示模塊、系統軟件組成。其中信號采集處理模塊以霍爾傳感器為核心器件,將不同的轉速信號轉換成相應的脈沖信號,并送到單片機的T1引腳;對單片機進行設置,使內部的定時器/計數器timer0工作在定時狀態,timer1工作在計數狀態,利用內部定時器T0對脈沖輸入引腳T1進行控制,這樣就能精確地檢測到設定時間內加到T
3、1引腳的脈沖數,一個脈沖即代表著車子前進一個輪長,對脈沖數進行處理就可得到里程和速度的數據;將數據送到LCD顯示模塊進行顯示。該系統原理框圖如圖1所示。系統軟件包括單片機和液晶模塊的初始化模塊、液晶模塊的寫數據命令子模塊、頻率測量模塊、速度里程計算模塊、速度和里程顯示數據LCD字庫顯示模塊等。脈沖信號單片機LCD 圖1 系統原理框圖 二 基本原理與設計方案(一)元器件簡介 1 霍爾傳感器簡介 霍耳效應:1879年E.H. 霍爾發現,如果對位于磁場(B)中的導體(d)施加一個電壓(v),該磁場的方向垂直于所施加電壓的方向,那么則在既與磁場垂直又和所施加電流方向垂直的方向上會產生另一個電壓(UH)
4、,人們將這個電壓叫做霍爾電壓,產生這種現象被稱為霍爾效應。霍爾效應從本質上講是運動的帶電粒子在磁場中受洛侖茲力作用而引起的偏轉。當帶電粒子(電子或空穴)被約束在固體材料中,這種偏轉就導致在垂直電流和磁場的方向上產生正負電荷的積累,從而形成附加的橫向電場。 通有電流 I 的金屬或半導體板置于磁感強度為 B 的均勻磁場中,磁場的方向和電流方向垂直,在金屬板的第三對表面間就顯示出橫向電勢差 U H 的現象稱為霍耳效應。U H 就稱為霍耳電勢差。 實驗測定,霍耳電勢差的大小,和電流 I 及磁感強度B成正比,而與板的厚度d 成反比。即霍耳電勢差 UH = RHIB/d , 霍爾轉速傳感器: 霍
5、爾轉速傳感器的外形圖和與磁場的作用關系如2圖所示。磁場由磁鋼提供,所以霍爾傳感器和磁鋼需要配對使用。霍爾傳感器檢測轉速示意圖如圖3。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉動一圈,霍爾傳感器便輸出一個脈沖。通過單片機測量產生脈沖的頻率就可以得出圓盤的轉速。霍爾電流傳感器本身已經存在濾波電路,輸出無須再加裝濾波,可直接供單片機的05V的 AD采集或直接送到單片機的中斷輸入引腳,信號非常穩定,而且抗干擾能力很強。 霍爾電流傳感器反應速度一般在7微妙,不用考慮單片機循環判斷的時間.若在圓盤上貼上多塊磁鋼,則圓盤每轉一圈,輸出的脈沖信號將相應增加,單位時間內測到的脈沖數
6、將增多,測出的轉速也將更加精細。本設計建模時采用一個圓盤上貼一個磁鋼進行模擬。實際制作中可以貼上多塊磁鋼,即可以克服因車輪轉速太慢而在設定時間內測不到脈沖的問題。 圖2 霍爾轉速傳感器的外形圖 圖3 霍爾傳感器檢測轉速示意圖2 AT89C51芯片簡介AT89C51是一個低電壓,高性能CMOS 8位單片機,片內含4k bytes的可反復擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,內置功能強大的微型計算機的AT89C51提供了高性價
7、比的解決方案。 AT89C51是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,2個16位可編程定時計數器,2個全雙工串行通信口,AT89C51可以按照常規方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發成本。AT89C51具有如下功能特性: (1)兼容MCS51指令系統;(2)32個雙向I/O口;(3)兩個16位可編程定時/計數器;(4)1個串行中斷;(5)兩個外部中斷源;(6)4k可反復擦寫(>1000次)Fl
8、ash ROM;(7)128x8bit內部RAM;(8)6個中斷源;(9)低功耗空閑和掉電模式;(10)軟件設置睡眠和喚醒功能。 3 液晶顯示模塊SED1520芯片介紹本設計仿真實驗系統采用的液晶顯示屏內置控制器為SED1520,點陣為122x32,需要兩片SED1520組成,由E1、E2分別選通,以控制顯示屏的左右兩半屏。圖形液晶顯示模塊有兩種連接方式。一種為直接訪問方式,一種為間接控制方式。本設計采用直接控制方式。直接控制方式就是將液晶顯示模塊的接口作為存儲器或IO 設備直接掛在計算機總線上。計算機通過地址譯碼控制 E1和 E2的選通;讀寫操作信號 RW由地址線 A1控制;命令/數據寄存器
9、選擇信號 AO 由地址線 A0控制。實際電路如圖4所示。地址映射如下(地址中的X由LCD CS決定,可參見地址譯碼部分說明)0X000H0X001H0X002H0X003H0X004H0X005H0X006H0X007H寫E1指令寫E1數據讀E1狀態讀E1數據寫E2指令寫E2數據讀E2狀態讀E2數據 圖4 液晶屏顯示控制電路SED1520芯片介紹SED1520液晶顯示驅動器是一種點陣圖形式液晶顯示驅動器,它可直接與8位微處理器相連,集行、列驅動器于一體,因此使用起來十分方便,作為內藏式控制器被廣泛應用于點陣數較少的液晶顯示模塊。(1)SED1520的特性內置顯示RAM區RAM容量為2560(3
10、2行80列)位。RAM中的1位數據控制液晶屏上一個點的亮滅狀態:“1”表示亮, “0”表示暗。具有16個行驅動口和16個列驅動口 ,并可級聯兩個SED1520實現32行驅動。可直接與80系列微處理器相連,亦可直接與68系列微處理器相連。驅動占空比為116或132。可以與SED1520配合使用,以便擴展列驅動口數目。(2)SED1520指令與顯示RAM結構SED1520指令系統比較簡單,共13條,除讀狀態指令、讀顯示RAM數據指令外,其他指令均為寫操作,并且讀寫指令均為單字節指令。在送出每條指令時,必須進行控制器狀態檢測,狀態字節的含義如下: D7:1/0,模塊忙/準備就緒; D5:1
11、/0,模塊顯示關/開; D4:1/0,模塊復位/正常; D3-D0:未用 在指令使用中,關鍵要分清顯示行、列設置和顯示頁面設置的關系。單片SED1520可驅動61×16液晶屏,其內部顯示RAM相對于COM0每8行為一個顯示頁面。本設計所用的字符液晶模塊由兩塊SED1520級聯驅動,其中一個工作在主工作方式下,另一個工作在從方式下,主工作方式SED1520負責上半屏16行的驅動和左半屏的61列驅動,從工作方式的SED1520則負責下半屏16行的驅動和右半屏的61列驅動,使能信號E1、E2用來區分具體控制的是那一片SED1520。這樣兩片SED1520級聯可驅動122×32圖形
12、點陣液晶顯示屏,可完成圖形顯示,也可顯示七個半(16×16點陣)漢字。(3)指令系統SED1520液晶顯示驅動器共有13種顯示指令。本文用到的部分指令見下表表1 部分傳送指令表指 令代 碼功 能R/WD/ID7D6D5D4D3D2D1D0顯示開/關指令0010101111/0全部顯示開關,0:關 1:開顯示開始行00110開始行(031)顯示RAM中數據的起始行頁地址設置0010111003設置顯示頁地址 X address列地址設置000列地址(0121)設置顯示列地址 Y address寫顯示數據
13、01寫入的數據寫顯示數據到RAM靜態驅動0010100100/11:靜態驅動,0:動態驅動刷新率設置0010101000/11:1/32,0:1/16結束0011101111釋放讀寫復位0011100011設置為初始狀態(二) 設計方法1 51單片機定時器/計數器的基本結構及工作原理MCS-51單片機內部設有兩個16位的可編程定時器/計數器。可編程的意思是指其功能(如工作方式、定時時間、啟動方式等)均可由指令來確定和改變。在定時器/計數器中除了有兩個16位的計數器之外,還有兩個特殊功能寄存器(控制寄存器和方式寄存器)。(1) 定時器/計數器的結構如下。從上面定時器/計數器的結構圖中我們可以看出
14、,16位的定時/計數器分別由兩個8位專用寄存器組成,即:T0由TH0和TL0構成;T1由TH1和TL1構成。其訪問地址依次為8AH-8DH。每個寄存器均可單獨訪問。這些寄存器是用于存放定時或計數初值的。此外,其內部還有一個8位的定時器方式寄存器TMOD和一個8位的定時控制寄存器TCON。這些寄存器之間是通過內部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時器的工作方式;TCON主要是用于控制定時器的啟動停止,此外TCON還可以保存T0、T1的溢出和中斷標志。當定時器工作在計數方式時,外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。 (2)定時計數器的原理16位的定時器/計數器
15、實質上就是一個加1計數器,其控制電路受軟件控制、切換。當定時器/計數器為定時工作方式時,計數器的加1信號由振蕩器的12分頻信號產生,即每過一個機器周期,計數器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統的振蕩頻率有關。因一個機器周期等于12個振蕩周期,所以計數頻率 fcount=1/12osc。如果晶振為12MHz,則計數周期為: T=1/(12×106)Hz×1/12=1s 。這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當選擇定時器的長度(如8位、13位、16位等)。當定時器/計數器為計數工作方式時,通過引腳T0和T1對外部信號計數,外部脈
16、沖的下降沿將觸發計數。計數器在每個機器周期的S5P2期間采樣引腳輸入電平。若一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數器加1。此后的機器周期S3P1期間,新的計數值裝入計數器。所以檢測一個由1至0的跳變需要兩個機器周期,故外部事件的最高計數頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計數頻率為0.5MHz。雖然對外部輸入信號的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計數脈沖的高電平與低電平保持時間均需在一個機器周期以上。 當CPU用軟件給定時器設置了某種工作方式之后,定時器就會按設定的工作方式獨立運行,不再占用CPU的操作時間,除非定時
17、器計滿溢出,才可能中斷CPU 當前操作。CPU也可以重新設置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機中效率高而且工作靈活的部件。(3)控制寄存器 定時器計數器T0和T1有2個控制寄存器TMOD和TCON,它們分別用來設置各個定時器計數器的工作方式,選擇定時或計數功能,控制啟動運行,以及作為運行狀態的標志等。其中,TCON寄存器中另有4位用于中斷系統。 定時器/計數器方式寄存器TMOD定時器方式控制寄存器TMOD在特殊功能寄存器中,字節地址為89H,無位地址。TMOD的格式如下圖所示。 D7 D6 D5 D4 D3 D2 D1 D0GATECTM1M0GATECTM1M0控制
18、定時器T1控制定時器T0GATE:門控位。GATE=0時,定時器由軟件控制位TR0或TR1來控制啟停。TRi位為1時,定時器啟動開始工作;為0時定時器停止工作。GATE=1時,定時器的啟動停止由外部中斷引腳和TRi位共同控制。只有當外部中斷引腳INT0或INT1為高時,TR0或TR1置1才能啟動定時器工作。CT:功能選擇位。當CT=0時設置為定時器工作模式;當CT=1時設置為計數器工作模式。M1、M0:工作方式選擇位。定時器計數器有4種工作方式,由M0、M1來定義:M0M1操作方式功能說明00方式013位定時器計數器,TLi只用低5位01方式116位定時器計數器10方式2自動重裝初值的8位定時
19、器計數器,THi的值在保持不變,TLi溢出時,THi的值自動裝入TLi中。11方式3僅適用于T0,T0分成2個獨立的8位計數器;T1停止計數。定時器/計數器方式控制寄存器TMOD不能進行位尋址,只能用字節傳送指令設置定時器工作方式,低半字節定義為定時器0,高半字節定義為定時器1。復時,TMOD所有位均為0。 定時器/計數器控制寄存器TCONTCON在特殊功能寄存器中,字節地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,十分便于進行位操作。 TCON的作用是控制定時器的啟、停,標志定時器溢出和中斷情況。 TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時
20、器計數器;IEl,ITl,IE0和IT0位用于中斷系統。 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H (位地址)TF1TR1TF0TR0IE1IT1IE0IT0各位定義如下: TF1和TF0: 分別為定時器1和定時器0溢出標志。當計數器計滿產生溢出時,由硬件自動置“1”,并可申請中斷。進入中斷服務程序后,由硬件自動清零。TR1和TR0: 定時器1和定時器0啟動控制位。IE1和IE0: 外部中斷引腳INT0或INT1中斷請求標志位。當外部中斷源有請求時其對應的中斷標志位置“1”。其復位方式由觸發方式來設置。IT1和IT0: 為外部中斷1和外部中斷0的觸發方式選擇位。ITi設置
21、為“0”時為電平觸發;設置為“1”時為邊沿觸發方式。TCON中低4位與中斷有關。由于TCON 是可以位尋址的,因而如果只是清溢出或啟動定時器工作,可以用位操作命令。例如:執行“CLR TF0”后則清定時器0的溢出;執行“SETB TR1”后可啟動定時器1開始工作。 (4)定時器/計數器的初始化由于定時器/計數器的功能是由軟件編程確定的,所以一般在使用定時/計數器前都要對其進行初始化,使其按設定的功能工作。初始化的步驟如下: 1、確定工作方式(即對TMOD賦值);2、預置定時或計數的初值(可直接將初值寫入TH0、TL0或TH1、TL1);3、根據需要開放定時器/計數器的中斷(直接對IE位賦值);
22、 4、啟動定時器/計數器(若已規定用軟件啟動,則可把TR0或TR1置“1”;若已規定由外中斷引腳電平啟動,則需給外引腳步加啟動電平。當實現了啟動要求后,定時器即按規定的工作方式和初值開始計數或定時)。 (5)定時器/計數器的四種工作方式定時器T0或T1無論用作定時器或計數器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作狀態。通過對方式寄存器TMOD中M1、M2位的設置,可選擇四種工作方式。工作方式0工作方式0是一個13位的定時/計數器,16位計數器只用了高8位THi和低5位(TLi的D4D0位),TLi的高3位未用。工作方式116位的定時/計數器,原理
23、同工作方式0 工作方式2自動重裝計數器。16位計數器拆成兩個8位計數器,低8位作計數器用,高8位用于保存計數初值。當低8位計數產生溢出時,將TFi位置1,同時又將保存在高8位中的計數初值重新裝入低8位計數器中,又繼續計數,循環重復不止。工作方式3方式3只適用定時器T0,T0在該模式下被拆成兩個獨立的8位計數器TH0和TL0。其中TL0使用原來T0的一些控制位和引腳,它們是:C/T,GATE,TR0,TF0和T0(P3.4)引腳INT0(P3.2)引腳。此方式下的TL0除作8位計數器外,其功能和操作與方式0,方式1完全相同,可作計數也可作定時用。該方式下的TH0,此時只可作簡單的內部定時器功能。
24、它借用原定時器1的控制位和溢出標志位TR1和TF1,同時占用了T1的中斷源。TH0的啟動和關閉幕式僅受TR1的控制,TR1=1,TH0啟動定時;TR1=0,TH0停止定時工作。該方式下的T1仍可設置為方式0、方式1、方式2,用于任何不需要中斷的場合。2 頻率測量本設計所采用的霍爾傳感器由一個磁鋼和一個霍爾器件組成。磁鋼被貼在非磁性圓盤上,隨圓盤一起旋轉,霍爾器件固定在圓盤附近,圓盤每轉一圈,霍爾器件將產生一個脈沖,一個脈沖即代表了一個圓盤的周長。本設計中霍爾傳感器產生的脈沖將被送到單片機的內部定時計數器timer1的T1口。內部定時計數器Timer0工作在定時狀態,Timer1工作在計數狀態。
25、Timer0和Timer1均工作在模式1。本設計中Timer0產生0.5秒的定時。Timer1將對0.5秒內對加到T1腳的脈沖進行計數。假設0.5秒內timer1計數到N個脈沖。則圓盤的轉動頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉一圈,霍爾器件產生一個脈沖。對脈沖頻率進行處理,即可轉化為車速。對脈沖數進行累加再乘以輪子的長度,即可得到里程數據。3 基于偉福Lab2000p仿真實驗系統的建模過程(1)利用直流電機對車輪變速進行模擬利用Lab2000p實驗系統上的直流電機、DAC0832數模變換模塊、單片機8031、指撥開關K0-K7構成一個能夠控制電機轉速的控制
26、系統,對車輪的變速情況進行模擬。電機的轉速通過軟件編程,由指撥開關的不同輸入狀態進行控制。實驗系統連線情況如下:連線連結孔1連結孔21K0P102K1P113K2P124K3P135K4P146K5P157K6P168K7P179DA_CSCS210-5V+5V至D/A(2) 頻率測量模塊的建立在直流電機轉動圓盤邊緣貼有一塊磁鋼,在圓盤附近裝有霍爾傳感器,圓盤每轉動一次即產生一個脈沖,脈沖輸出接單片機的P35引腳。利用單片機8031的內部定時/計數器Timer0進行定時,Timer1對脈沖進行計數。實驗系統連線情況如下:連線連結孔1連結孔21脈沖輸出P35(3) 數據顯示利用實驗箱上的LCD模
27、塊進行數據顯示,將LCD設置成兩行,第一行顯示里程數據,第二行顯示速度數據。數據的顯示主要由軟件編程進行控制。實驗系統連線情況如下:連線連結孔1連結孔21LCD_CSCS0(4) 系統硬件框圖如下 單 片機指撥開關直流電機霍爾傳感器 液晶 顯示三、程序設計整個程序的設計基于Lab2000p仿真系統,其中速度和里程的計算都采取了近似處理 (一)系統程序流程總框圖 開始初始化顯示漢字 延時清屏顯示漢字 電機控制 方向顯示計數脈沖速度 里程顯示本系統軟件采用模塊化設計方法。整個系統由初始化模塊、電機轉速控制模塊、電機轉向顯示模塊、頻率測量模塊、速度,里程顯示模塊、漢字顯示模塊以及其他功能模塊組成。程
28、序設計中,以60H、61H、62H三個地址為數據緩沖區,60H(DATA1)用于存儲每0.5s 計數到的脈沖數,用于計算速度;61H(DATA2)、62H(DATA3)兩個地址用于存儲計數到的脈沖的累加數據,用于計算里程。(二)主要模塊程序設計1 電機轉速控制模塊程序設計電機轉速的控制模塊由指撥開關、單片機、DAC0832數模變換芯片組成。指撥開關K0-K7接單片機的P10-P17(P1口),通過指撥開關可輸入數據0-255,單片機將指撥開關輸入的數據輸出到DAC0832數模變換芯片,通過數模變換,轉換成-8V+8V的電壓驅動直流電機。從而達到對電機轉速的控制。輸入數據等于128時,輸出電壓為
29、0V;數據大于128時,輸出電壓大于0V;輸入數據小于128時,輸出電壓小于0V。mov p1,#0ffh ;設置P1口為輸入口 mov dptr,#cs0832 mov A, p1 movx dptr,A2 頻率測量模塊程序設計霍爾傳感器產生的脈沖被送到單片機的內部定時/計數器timer1的T1口。內部定時/計數器Timer0工作在定時狀態,Timer1工作在計數狀態。Timer0和Timer1均工作在模式1。本設計中Timer0產生0.5秒的定時。Timer1將對0.5秒內對加到T1腳的脈沖進行計數。假設0.5秒內timer1計數到N個脈沖。則圓盤的轉動頻率為 N / 0.5=2N 。JI
30、SHU: MOV IE,#10001010B ;打開中斷開關 MOV TMOD,#MODE ;設定內部定時器/計數器的工作模式 MOV SP,#70H MOV 40H,#00H MOV TH1,#00H ;將timer1的計數寄存器賦初值0 MOV TL1,#00H ;將timer1的計數寄存器賦初值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,A
31、A ;定時中斷重復10次 CLR TR1 ;關閉計數器timer1 MOV DATA1,TL1 ;取出timer1計數值給DATA1 MOV A,DATA1 ADD A,DATA2 MOV DATA2,A ;將計數值累加到DATA2 JNC BB ;檢查計數是否溢出 INC DATA3 ;有溢出則DATA3加1BB: RET;-定時中斷子程序TIMER : CLR TR0 SETB F1 RETITimer0工作在模式1時,TLO、THO計數寄存器各使用8位,而28=256,設置計數初值時,把計數起點的值處以256,將余數放入TLO計數寄存器,將商數放入THO計數寄存器。本實驗系統所采用12M
32、Hz的晶振,定時器所計數的脈沖的周期為1us。設計每50ms產生一次定時中斷,需計數50000個脈沖,則裝入計數寄存器的計數初值為65536-50000=15536,裝入THO計數寄存器的初值為15536/256=60(03CH), 裝入TLO計數寄存器的初值為176(0B0H).程序流程圖如下:開始初始化設定計數器初值,并啟動F1=0定時器賦初值,并啟動F1=0?yesno40H加140H=9 ?NoYes停止計數,取出計數值將計數值累加到DATA2CY=0 ?YESNoDATA3加1返回主程序主程序Timer關閉定時器F1=1返回Timer0中斷子程序3 液晶顯示程序的設計本設計中速度、里
33、程的數據由液晶顯示模塊顯示,所用的液晶顯示模塊由SED1520芯片驅動,首先必須對液晶顯示模塊進行初始化,編寫相應的字庫,編寫讀寫程序等。液晶顯示程序的設計包括了初始化程序、清屏程序、寫指令代碼子程序、寫顯示數據子程序、讀顯示數據子程序、中文顯示子程序、數字顯示程序以及中文字庫和數字字庫的編寫。程序詳見附表。4 速度、里程顯示程序的設計本設計中霍爾傳感器產生的脈沖被送到單片機的內部定時計數器timer1的T1口。內部定時計數器Timer0工作在定時狀態,Timer1工作在計數狀態。Timer0和Timer1均工作在模式1。本設計中Timer0產生0.5秒的定時。Timer1將對0.5秒內對加到
34、T1腳的脈沖進行計數。假設0.5秒內timer1計數到N個脈沖。則圓盤的轉動頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉一圈,霍爾器件產生一個脈沖。對脈沖頻率進行處理,即可轉化為車速。對脈沖數進行累加再乘以輪子的長度,即可得到里程數據。本程序對汽車運行的實際情況進行模擬。設計程序時假設汽車輪子的周長約為2m,最后在顯示屏顯示的速度單位是km/h,里程單位是km。速度的計算如下:若0.5秒計數到N個脈沖,則輪子的轉動頻率為2N,車速為2N×2 m/s,也即2N×2×3.6 km/h 。設計中作近似處理,處理為14N km/h 。顯示時先
35、顯示百位,再依次顯示十位、個位。;-速度處理顯示子程序SPEED: PUSH A MOV A,DATA1 MOV B,#0EH ;計數值乘以14 MUL AB MOV B, #64H ;除數賦值100 DIV AB ;得到百位顯示數據代碼 MOV CODE_ , A ;百位顯示字庫代碼 MOV A,B LCALL BB1 ;調用速度寫顯示數據程序 MOV B,#0AH ;除數賦值10 DIV AB ;得到十位顯示數據代碼 MOV CODE_ , A ;十位顯示字庫代碼 MOV CTEMP, #08H ;顯示后移8列 MOV A,B LCALL BB1 ;調用速度寫顯示數據程序 MOV CODE
36、_ , A ;個位顯示字庫代碼 MOV CTEMP, #10H LCALL BB1 MOV DATA1,#00H ;數據緩沖區清零 POP A RETDATA2,DATA3存儲計數到的脈沖總數,DATA2能存儲255個脈沖,每次計數溢出,則DATA3加1,DATA3里的數據權重為256.這樣兩個字節的數據能計數最多65536個脈沖,也即131072 米 。130多公里。實際制作里程表時只要適當增加數據緩沖區的數量,即可對最大顯示里程進行擴充。程序設計過程中,對里程數據的顯示作了近似處理;-里程處理顯示子程序MILAGE: PUSH A MOV A,DATA3 MOV B,#0C8H ;除以20
37、0 顯示百位里程數據 DIV AB MOV CODE_, A MOV CTEMP,#00H MOV A,B LCALL BB2 MOV B,#014H ; 顯示十位里程數據 DIV AB MOV CODE_,A MOV CTEMP, #08H MOV A,B LCALL BB2 MOV B, #02H ; 顯示個位里程數據 DIV AB MOV CODE_ ,A MOV CTEMP, #10H MOV A,B LCALL BB2 MOV CODE_ ,#0AH MOV CTEMP, #17H ;顯示小數點 LCALL BB2 CJNE A,#00H, M1 MOV A,DATA2 ;DATA2
38、除以50得到小數點MOV B,#032H 后第一位 DIV AB MOV CODE_, A MOV CTEMP, #1EH MOV A,B LCALL BB2 MOV B,#05H ;余數再除以5得到小數點后第二位 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 DIV AB MOV CODE
39、_ ,A MOV CTEMP, #26H LCALL BB2 POP A RET;-第二行速度數據顯示調用子程序BB1: PUSH A MOV PAGE_,#00H MOV A,CTEMP ADD A,#3CH MOV COLUMN,A LCALL DIW_PR POP A RET;-第一行里程數據顯示調用子程序BB2: PUSH A MOV PAGE_,#02H MOV A,CTEMP ADD A,#3CH MOV COLUMN,A LCALL DIW_PR POP A RET5 方向顯示模塊程序設計該程序對從指撥開關輸入的數據作出反應,若輸入的數據為128,則在LCD顯示屏上顯示“停止”的
40、標志,若輸入的數據大于128,則顯示“正轉”的標志,若輸入的數據小于128,則顯示“反轉”的標志。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,CTEMP ADD A,#44H M
41、OV 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 ;正轉 MOV A,CTEMP ADD A,#2aH MOV COLUMN,A MOV CODE_,#07H LCALL CCW_PR RETfx1: MOV PAGE_,#00H ;反轉 MOV A,CTEMP ADD A,#2aH MOV COL
42、UMN,A MOV CODE_,#08H LCALL CCW_PR RET參考文獻1 張義和,陳敵北,例說8051,人民郵電出版社2 賈好來,MCS-51單片機原理及應用 ,機械工業出版社3 趙健領,51系列單片機開發寶典,電子工業出版社4 余錫存, 微機原理及接口技術 ,西安電子科技大學出版社5 劉同法,陳忠平,單片機基礎與最小系統實踐,北京航空航天大學出版社6 何宏, 單片機原理與接口技術,國防工業出版社7 樓然苗,51系列單片機設計實例,北京航空航天大學出版社8 劉迎春,MCS-51單片機原理及應用教程,清華大學出版社附 錄完整的程序CS0832 EQU 0a000hMODE EQU 0
43、1010001b ;timer1:mode1、計數器 ;timer0:mode1、定時器DATA1 EQU 60HDATA2 EQU 62HDATA3 EQU 64HCWADD1 EQU 08000H ;寫指令代碼地址(E1)DWADD1 EQU 08001H ;寫顯示數據地址(E1)CRADD1 EQU 08002H ;讀狀態字地址(E1)DRADD1 EQU 08003H ;讀顯示數據地址(E1)CWADD2 EQU 08004H ;寫指令代碼地址(E2)DWADD2 EQU 08005H ;寫顯示數進地址(E2)CRADD2 EQU 08006H ;讀狀態字地址(E2)DRADD2 EQU 08007H ;讀顯示數據地址(E2)PD1 EQU 3DH ;122/2 分成左右兩半屏 122x32COLUMN EQU 30H ;列數據寄存器PAGE_ EQU 31H ;頁地址寄存器 D1,DO:頁地址CODE_ E
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年部編版語文五年級下冊第一二單元復習題及答案
- 學術研究成果及專利證書證明(5篇)
- 年度銷售數據對比表格
- 品牌營銷咨詢服務合作協議細則
- 學校與社區互動對教育生態系統的優化
- 《初中數學代數方程求解技巧教學教案》
- 小學課程改革與教學創新
- 鐵路運輸安全管理規定匯編
- 《生物學知識講解:小學科學生物知識教案》
- 個人承包協議協議
- 2024年安全員C3證考試題庫及解析
- 數字經濟學 課件全套 第1-15章 數字經濟學基礎 - 數字經濟監管
- 2024年山東省青島市中考地理試題卷(含答案及解析)+2023年中考地理及答案
- 中國醫院質量安全管理第2-13部分:患者服務臨床用血
- 《籃球原地運球》教案 (共三篇)
- 《手衛生知識培訓》培訓課件
- 倉庫作業風險防控措施計劃
- 智能制造工程專業專業課教學大綱匯編
- 實驗活動5 不同價態含硫物質的轉化 教學設計 高一下學期化學人教版(2019)必修第二冊
- 《草房子》人物形象分析全部
- 河北省保定市2024年小升初語文試題及答案
評論
0/150
提交評論