版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 這次硬件課程設(shè)計的內(nèi)容是出租車計價器系統(tǒng),主要內(nèi)容如下:以直流電動機模擬出租車車輪的轉(zhuǎn)動,直流電動機車輪上有一個磁鐵,然后用霍爾傳感器采集信號,送到8253對信號進行減數(shù)計數(shù),當8253輸出一個信號時,就用8255輸出給顯示器,然后根據(jù)車輪直徑算出周長,由計數(shù)算出總路程,最后可以計算價格。</p><p&
2、gt; 各地起步價和晝夜價格等各不相同,實際還有計時計價等不同情況。這次為了簡化實驗,默認白天起步價5元(即3公里內(nèi)價格5元),超過的部分1元每公里。晚上開始即5元,后面的2元每公里。</p><p> 關(guān)鍵詞:出租車計價器; 霍爾傳感器; 8253; 8255; </p><p><b> 目 錄</b></p><p> 1
3、設(shè)計任務(wù)與要求………………………………………………………………………1</p><p> 1.1問題的提出 ……………………………………………………………………1</p><p> 1.2需求分析 …………………………………………………………………………1</p><p> 1.3設(shè)計任務(wù) …………………………………………………………………………1<
4、/p><p> 2 硬件方案 ………………………………………………………………2</p><p> 2.1 8253的應(yīng)用 ……………………………………………………………………2</p><p> 2.2 8255的應(yīng)用 ……………………………………………………………………3</p><p> 2.3 霍爾傳
5、感器的應(yīng)用 ……………………………………………………………4</p><p> 2.4 液晶顯示器的應(yīng)用 …………………………………………………………4</p><p> 2.5 電路及其主要功能 ……………………………………………………………5</p><p> 3 軟件方案 ………………………………………………………
6、………6</p><p> 3.1 流程圖 ……………………………………………………………6</p><p> 3.2 模塊圖 ……………………………………………………………7</p><p> 3.3 源程序 ……………………………………………………………8</p><
7、;p> 4 典型問題及解決方案 ……………………………………………………………16</p><p> 5 成果展示 ……………………………………………………………16</p><p> 6 結(jié)論與心得體會 ……………………………………………………………………19</p><p> 7 參考文獻 ……………
8、………………………………………………………20</p><p> 8 附錄 ………………………………………………………………………20</p><p> 8.1 8253管腳圖 ……………………………………………………………………20</p><p> 8.2 8255管腳圖 ……………………………………………………………………21</
9、p><p> 8.3 12864管腳圖……………………………………………………………………22</p><p><b> 1 總體設(shè)計與任務(wù)</b></p><p><b> 問題的提出</b></p><p> 出租車是大家出行必不可少的交通工具,在人們的日常生活中發(fā)揮著十分重要的作用。隨著經(jīng)
10、濟發(fā)展,人們的出行頻率不斷增加,尤其是隨著商業(yè)發(fā)展而不斷增加的公務(wù)出差頻率,使得出租車應(yīng)用越來越多。隨之而來的是出租車計價問題。由于現(xiàn)在很多人對出行的地點都不太熟悉,費用計算往往會有爭議。所以設(shè)計一款準確的出租車計價器是很有必要的。</p><p> 出租車計價器充當了一個中立者的角色。公平的體現(xiàn)往往需要當事雙方以外的媒質(zhì)。而出租車計價器恰好充當這種媒質(zhì)。它沒有感情和利益因素攙雜在內(nèi),它只是一個計價儀器,因此它
11、可以讓司機和乘客兩者都信服,能夠保證雙方公平交易。它應(yīng)具有較準確的計價功能,不損害雙方利益,以公平、公正為原則。針對實際生活的具體問題我們設(shè)計該方案進行研究,用以解決生活中的問題。</p><p><b> 1.2 需求分析</b></p><p> 既然出租車的使用越來越廣泛,那么市場對出租車計價器的需求就會越來越大。雖然現(xiàn)在有很多廠家設(shè)計生產(chǎn)了各種各樣的出租車
12、計價器,但是也各自或多或少的有一些問題。如果能設(shè)計一款計價精準,健康節(jié)能而且小巧精悍的出租車計價器,肯定會有良好的市場反響。</p><p> 為盡可能滿足以上的設(shè)計目標,我們可以選擇8253計數(shù)器和可編程接口芯片8255。用8255作為接口,通常不需要附加外部邏輯電路就可以直接為CPU與外設(shè)提供數(shù)據(jù)通道。</p><p><b> 1.3 設(shè)計任務(wù)</b><
13、;/p><p> 最重要的任務(wù)目標是精確。出租車計價器如果不夠精確,肯定會導(dǎo)致交易出現(xiàn)問題,使司機和乘客對價格存在爭議,影響彼此的情緒。其次,出租車計價器應(yīng)該滿足全天候連續(xù)工作,在高強度的工作下不應(yīng)該出現(xiàn)問題。另外,還要滿足耐振動的條件,否則在路面顛簸時容易損壞。其他的方面要盡量節(jié)能等。</p><p> 收費分為白天和晚上兩種情況。白天起步價為5元,超過部分1元每公里。晚上起步價為6元,
14、超過部分2元每公里。為簡化問題,以上默認數(shù)據(jù)不會改變,而且不涉及掉電處理,語音播報和等待紅燈計費等功能。路程顯示不超過99公里,價格不超過99元。涉及到白天夜晚用開關(guān)切換。開關(guān)閉合表示晚上,否則為白天。</p><p><b> 2 硬件方案</b></p><p> 2.1 8253的應(yīng)用</p><p> 8253在本實驗中工作于方式
15、3,控制字為:00110111B。含義為:選擇通道0,先讀寫計數(shù)器的低字節(jié),再讀/寫計數(shù)器的高字節(jié),采用的是BCD 計數(shù)的方法。8253具有3個獨立的計數(shù)通道,采用減1計數(shù)方式。在門控信號有效時,每輸入1個計數(shù)脈沖,通道作1次計數(shù)操作。當計數(shù)脈沖是已知周期的時鐘信號時,計數(shù)就成為定時。 </p><p> 8253芯片有24條引腳,封裝在雙列直插式陶瓷管殼內(nèi),內(nèi)部結(jié)構(gòu)如下:</p><p&g
16、t; (1).數(shù)據(jù)總線緩沖器 </p><p> 數(shù)據(jù)總線緩沖器與系統(tǒng)總線連接,8位雙向,與CPU交換信息的通道。這是8253與CPU之間的數(shù)據(jù)接口,它由8位雙向三態(tài)緩沖存儲器構(gòu)成,是CPU與8253之間交換信息的必經(jīng)之路。 </p><p> ?。?).讀/寫控制 </p><p> 讀/寫控制分別連接系統(tǒng)的IOR#和IOW#,由CPU控制著訪問8253的內(nèi)
17、部通道。接收CPU送入的讀/寫控制信號,并完成對芯片內(nèi)部各功能部件的控制功能,因此,它實際上是8253芯片內(nèi)部的控制器。A1A0:端口選擇信號,由CPU輸入。8253內(nèi)部有3個獨立的通道和一個控制字寄存器,它們構(gòu)成8253芯片的4個端口,CPU可對3個通道進行讀/寫操作3對控制字寄存器進行寫操作。 這4個端口地址由最低2位地址碼A1A0來選擇。 </p><p><b> ?。?).通道選擇 </
18、b></p><p> CS——片選信號,由CPU輸入,低電平有效,通常由端口地址的高位地址譯碼形成。 RD、WR——讀/寫控制命令,由CPU輸入,低電平有效。RD有效時,CPU讀取由A1A0所選定的通道內(nèi)計數(shù)器的內(nèi)容。WR有效時,CPU將計數(shù)值寫入各個通道的計數(shù)器中, 或者是將方式控制字寫入控制字寄存器中。 </p><p> ?。?).計數(shù)通道0~2 </p>&
19、lt;p> 每個計數(shù)通道內(nèi)含1個16位的初值寄存器、減1計數(shù)器和1個16位的(輸出)鎖存器。8253內(nèi)部包含3個功能完全相同的通道,每個通道內(nèi)部設(shè)有一個16位計數(shù)器,可進行二進制或十進制(BCD碼)計數(shù)。采用二進制計數(shù)時, 最大計數(shù)值是FFFFH,采用BCD碼計數(shù)時。 最大計數(shù)值是9999。與此計數(shù)器相對應(yīng), 每個通道內(nèi)設(shè)有一個16位計數(shù)值鎖存器。必要時可用來鎖存計數(shù)值。 </p><p> 當某通道用
20、作計數(shù)器時,應(yīng)將要求計數(shù)的次數(shù)預(yù)置到該通道的計數(shù)器中、被計數(shù)的事件應(yīng)以脈沖方式從CLK端輸入, 每輸入一個計數(shù)脈沖,計數(shù)器內(nèi)容減“1”,待計數(shù)值計到“0”。 OUT端將有輸出。表示計數(shù)次數(shù)到。當某個通道用作定時器時。 由CLK輸入一定頻率的時鐘脈沖。根據(jù)要求定時的時間長短確定所需的計數(shù)值。并預(yù)置到計數(shù)器中,每輸入一個時鐘脈沖,計數(shù)器內(nèi)容減“1”, 待計數(shù)值計到“0”。OUT將有輸出,表示定時時間到。允許從CLK輸入的時鐘頻在1~2MHz
21、范圍內(nèi)。因此,任一通道作計數(shù)器用或作定時器用,其內(nèi)部操作完全相同,區(qū)別僅在于前者是由計數(shù)脈沖進行減“1”計數(shù)。 而后者是內(nèi)時鐘脈沖進行減“1”計數(shù)。作計數(shù)器時, 要求計數(shù)的次數(shù)可直接作為計數(shù)器的初值預(yù)置到減“1”計數(shù)器中。作定時器時, 計數(shù)器的初值即定時系數(shù)應(yīng)根據(jù)要求定時的時間進行如下運算才能得到: </p><p> 定時系數(shù)=需要定時的時間/時鐘脈沖周期 </p><p> ?、僭O(shè)置
22、通道:向方式控制字寄存器端口寫入方式選擇控制字,用于確定要設(shè)置的通道及工作方式; </p><p> ②計數(shù)/定時:向通道寫入計數(shù)值,啟動計數(shù)操作; </p><p> ?、圩x取當前的計數(shù)值:向指定通道讀取當前計數(shù)器值時,8253將計數(shù)器值存入鎖存器,從鎖存器向外提供當前的計數(shù)器值,計數(shù)器則繼續(xù)作計數(shù)操作。 </p><p> ?、苡嫈?shù)到:當計數(shù)器減1為0時,通過
23、引腳OUTi向外輸出“到”的脈沖信號。 </p><p> 計數(shù)初值輸入存放在初值寄存器中,計數(shù)開始或重裝入時被復(fù)制到計數(shù)器中。 鎖存器在非鎖存狀態(tài),其值隨計數(shù)器的變化而變化;一旦鎖存了計數(shù)器的當前值,直到鎖存器值被讀取后才能解除鎖存狀態(tài)。 </p><p> 8253中各通道可有6種可供選擇的工作方式,以完成定時、計數(shù)或脈沖發(fā)生器等多種功能。簡要介紹方式3如下:</p>
24、;<p> 工作方式3被稱作方波發(fā)生器,任一通道工作在方式3,只在計數(shù)值n為偶數(shù),則可輸出重復(fù)周期為n、占空比為1:1的方波。 </p><p> 進入工作方式3,OUT輸出低電平, 裝入計數(shù)值后,OUT立即跳變?yōu)楦唠娖?。如果當GATE為高電平, 則立即開始減“1”計數(shù),OUT保持為高電平,若n為偶數(shù),則當計數(shù)值減到n/2時,OUT跳變?yōu)榈碗娖?,一直保持到計?shù)值為“0”,系統(tǒng)才自動重新置入計數(shù)值
25、n,實現(xiàn)循環(huán)計數(shù)。這時OUT端輸出的周期為n×CLK周期,占空比為1:1的方波序列; 若n為奇數(shù), 則OUT端輸出周期為n×CLK周期,占空比為((n+1)/2)/((n-1)/2)的近似方波序列。 </p><p> 如果在操作過程中, GATE變?yōu)闊o效,則暫停減“1”計數(shù)過程,直到GATE再次有效,重新從初值n開始減“l(fā)”計數(shù)。 如果要求改變輸出方波的速率, 則CPU可在任何時候重新裝入
26、新的計數(shù)初值n,并從下一個計數(shù)操作周期開始改變輸出方波的速率。 </p><p> 在這個實驗當中,我們選擇了通道0,對其采用了方式3,它能把霍爾傳感器收集起來。當信號采集過來以后,就需要進行處理轉(zhuǎn)動圈數(shù)和路程金額的處理了。這個功能用8255來實現(xiàn)。</p><p> 8253的內(nèi)部結(jié)構(gòu)如下:</p><p> 2.2 8255的應(yīng)用</p>&
27、lt;p> 8255 是一個可編程的外圍接口芯片,它可以將從8253 計數(shù)的信號輸出給外圍設(shè)備。工作于方式0,實現(xiàn)基本的輸入輸出功能。</p><p> 方式0稱為基本的輸入輸出方式。它適用于不需要用信號的簡單輸入輸出場合。在這種方式下,A口和B口可以做為8位的端口,C口的高4位和低四位可以做為兩個四位的輸入輸出端口。這四個端口中,任何一個都是可以做輸入端口,也可以做輸出端口,從而構(gòu)成16 種不同的輸入
28、輸出組態(tài)。在實際應(yīng)用時,C口的兩半部分也可以合在一起,構(gòu)成一個八位的端口,這樣8255可以構(gòu)成三個八位的I/O端口,或兩個8位的,兩個4位的I/O 端口,以適應(yīng)各種不同的場合。</p><p> 在傳送數(shù)據(jù)時,它的實現(xiàn)過程是這樣的:CPU與這些端口交換數(shù)據(jù)時,可以直接用輸入指令從指定端口讀取數(shù)據(jù),或用輸出指令將數(shù)據(jù)寫入端口,不需要任何其它用于應(yīng)答的聯(lián)絡(luò)信號。對于方式0,還規(guī)定輸出信號可以被鎖存,輸入不能鎖存,這
29、是使用時要注意的地方。</p><p> 它的控制字也有一定的規(guī)定。其中D7位為1時,代表選擇控制字,其中D6,D5 位為00,代表選擇A口工作于方式0。D2=0,代表選擇B口工作于方式0。D4D3和D1D0這四位可以任意取0或1,由此構(gòu)成4個端口的16種不同的組態(tài)。</p><p> 8255的控制字為:10000010B,代表意思是:D7=1,表示選擇控制字。D6D5=00,表示A
30、口工作于方式0下。D4D3 =00表示A口作為輸出,B口輸入,C口輸出。D2=0表示B口工作與方式0 下。</p><p> 2.3 霍爾傳感器的應(yīng)用</p><p> 霍爾傳感器采用非接觸式的工作方式來采集信號。出租車的實際行駛距離無法實地去測量,因此需要將此問題實現(xiàn)轉(zhuǎn)化,具體方法為:用霍爾傳感器測得汽車車輪的轉(zhuǎn)動圈數(shù),再測出汽車輪胎的外徑,繼而得出周長,就用周長乘以轉(zhuǎn)動圈數(shù)即可得汽
31、車行駛的路程。</p><p> 它采用非接觸式的工作方式。在轉(zhuǎn)動的物體上置定一個磁鐵,當磁鐵隨物體轉(zhuǎn)動一圈時,就通過霍爾傳感器旁邊一次,霍爾傳感器此時接到信號,并向外輸出一個脈沖,完成一次信號的采集。</p><p> 2.4 液晶顯示器的應(yīng)用</p><p> 12864是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標一級、二級簡體中文字
32、庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面??梢燥@示8×4行16×16點陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也
33、略低于相同點陣的圖形液晶模塊。</p><p><b> 簡要介紹管腳如下:</b></p><p> 2.5 電路及其主要功能</p><p> 8253電路連接為:CLK0接霍爾傳感器計數(shù)端口。輸出OUT0接到8255的PB2口,并連結(jié)GATE0與+5V相連。8253的低平CS與280H相連,即8253段地址為280H。在這個實驗當中
34、采用的端口的起始的地址是280H,所以就有這樣的分配:通道0的地址端口280H,通道1的地址端口為281H,通道2的地址端口為282H,8253的控制端口的地址為284H。</p><p> 當信號采集完畢后,無法讓人們看到具體的脈沖,因此必須用顯示器將脈沖顯示出來。整體的顯示過程是:讓霍爾傳感器采集信號,8253 計數(shù),8255 將其輸出,輸出給LCD,從而完成整個過程。</p><p&g
35、t; 主要功能:以直流電動機模擬出租車車輪的轉(zhuǎn)動,直流電動機車輪上有一個磁鐵,然后用霍爾傳感器采集信號,然后用8253對信號進行減數(shù)計數(shù),當8253輸出一個信號時,就由8255輸出給顯示器。</p><p><b> 電路圖如下:</b></p><p><b> 3 軟件方案</b></p><p><b&g
36、t; 3.1 流程圖</b></p><p><b> ?。?)讀取脈沖信號</b></p><p><b> ?。?)里程處理</b></p><p> ?。?)價格處理與里程處理類似</p><p> ?。?)12864LED動態(tài)顯示</p><p><
37、;b> 3.2 模塊圖</b></p><p><b> 3.3源程序</b></p><p> ;taxi_8253_8255_12864</p><p> PORT_8253_0 EQU 280H</p><p> PORT_8253_1 EQU 281H</p>&
38、lt;p> PORT_8253_2 EQU 282H</p><p> PORT_8253_CTL EQU 283H</p><p> PORT_8255_A EQU 288H</p><p> PORT_8255_B EQU 289H</p><p> PORT_8255_C EQU 28AH</p&g
39、t;<p> PORT_8255_CTL EQU 28BH</p><p> DATA SEGMENT</p><p> TABLE DW 0BCC6H,0B3CCH,0A3BAH</p><p> ; 計 程 : </p><p> DW ?,? </p>&
40、lt;p> DW 0A3AEH,0A3B0H,0A3EBH</p><p> ; . 0 k</p><p> DW 0BDF0H,0B6EEH,0A3BAH</p><p> ; 金 額 :</p><p><b> DW ?,?</b></p>&
41、lt;p> DW 0A3AEH,0A3B0H,0D4AAH</p><p> ; . 0 元</p><p> HZ_ADR DB ? ;存放顯示行起始端口地址</p><p> NUMBER DW 0A3B0H,0A3B1H,0A3B2H,0A3B3H,0A3B4H,0A3B5H,0A3B6H,0A3B7H
42、,0A3B8H,0A3B9H</p><p> ; 0 1 2 3 4 5 6 7 8 9</p><p> TEMP1 DW ? ;距離十位</p><p> TEMP2 DW ? ;距離個位</p>&l
43、t;p> TEMP3 DW ? ;金額十位</p><p> TEMP4 DW ? ;金額個位</p><p> DIS DW 0 ;里程初始為0km</p><p> PAY DW 5 ;白天起步價5元</p><p>&l
44、t;b> DATA ENDS</b></p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p
45、> ;初始化8255,A口輸出,B口輸入,C口輸出</p><p> MOV DX,PORT_8255_CTL</p><p> MOV AL,10000010B ;A口,B口方式0</p><p><b> OUT DX,AL</b></p><p> ;初始化8253通道0</p>&l
46、t;p> MOV DX,PORT_8253_CTL</p><p> MOV AL,00110111B ;先低后高,方式3,BCD計數(shù)</p><p><b> OUT DX,AL</b></p><p> MOV DX,PORT_8253_0</p><p> MOV AL,00H
47、 ;假設(shè)每個脈沖一米,1000個代表一公里</p><p> OUT DX,AL ;寫入低字節(jié)</p><p> MOV AL,10H</p><p> OUT DX,AL ;寫入高字節(jié)</p><p> ;判斷白天和晚上,確定起步價</p><p>
48、 DAY_NI:MOV DX,PORT_8255_B</p><p> IN AL,DX</p><p> TEST AL,01H ;判斷開關(guān)狀態(tài),閉合高電平表示晚上</p><p> JZ READ ;最低位為低電平表示白天</p><p> INC PAY
49、 ;否則是晚上,起步價由5元變成6元,故加1</p><p> ;從8255讀取脈沖信息</p><p> READ: TEST AL,02H ;判斷是否為高電平</p><p> JNZ READ ;高電平,繼續(xù)檢測</p><p> INC DIS
50、 ;不是高電平了,即有一個脈沖,距離加1km</p><p> CMP DIS,3 ;與起步里程比較,判斷是否超過3km</p><p> JB TRANS ;小于3km則金額仍為起步價,轉(zhuǎn)去求路程和金額的個位和十位</p><p> INC PAY ;默認是白天,單價一公里一元&
51、lt;/p><p> ;判斷白天和晚上,確定單價</p><p> NIG: TEST AL,01H</p><p> JZ TRANS ;白天</p><p> INC PAY ;晚上單價為一公里兩元</p><p> ;求十進制的個位和十位</p
52、><p> TRANS: MOV AX,DIS ;如DIS是002AH,則DAA會轉(zhuǎn)化為0042H,即十進制42公里</p><p> ADD AL,00H</p><p> DAA ;壓縮BCD調(diào)整,結(jié)果在AL中</p><p> MOV BX,0000H</p>
53、<p><b> MOV BL,AL</b></p><p> AND BL,0FH ;如AL為42H,則BL會變?yōu)?2H,即個位</p><p> MOV TEMP2,BX ;距離個位</p><p> MOV BX,0000H</p><p><b>
54、; MOV BL,AL</b></p><p> AND BL,0F0H</p><p> MOV CL,04H</p><p> SHR BL,CL ;右移四位</p><p> MOV TEMP1,BX ;距離十位</p><p> MOV AX,P
55、AY</p><p> ADD AL,00H</p><p><b> DAA</b></p><p> MOV BX,0000H</p><p><b> MOV BL,AL</b></p><p> AND BL,0FH</p><p>
56、 MOV TEMP4,BX ;金額個位</p><p> MOV BX,0000H</p><p><b> MOV BL,AL</b></p><p> AND BL,0F0H</p><p> MOV CL,04H</p><p> SHR BL,CL
57、 ;右移四位</p><p> AND TEMP3,BX ;金額十位</p><p> LEA BX,NUMBER</p><p> ADD BX,TEMP1</p><p> ADD BX,TEMP1</p><p> MOV AX,[BX]</p><p&
58、gt; LEA DI,TABLE</p><p> MOV WORD PTR[DI+6],AX ;距離十位</p><p> LEA BX,NUMBER</p><p> ADD BX,TEMP2</p><p> ADD BX,TEMP2</p><p> MOV AX,[BX]</p>&
59、lt;p> LEA DI,TABLE</p><p> MOV WORD PTR[DI+8],AX ;距離個位</p><p> LEA BX,NUMBER</p><p> ADD BX,TEMP3</p><p> ADD BX,TEMP3</p><p> MOV AX,[BX]</p&g
60、t;<p> LEA DI,TABLE</p><p> MOV WORD PTR[DI+22],AX ;金額十位</p><p> LEA BX,NUMBER</p><p> ADD BX,TEMP4</p><p> ADD BX,TEMP4</p><p> MOV AX,[BX]&l
61、t;/p><p> LEA DI,TABLE</p><p> MOV WORD PTR[DI+24],AX ;金額個位</p><p><b> ;路程價格輸出</b></p><p> SHOW: CALL CLEAR ;LCD 清除</p><p> LEA
62、BX,TABLE</p><p> MOV CH,2 ;顯示第2行信息 </p><p> CALL LCD_DISP</p><p> LEA BX, TABLE</p><p> MOV CH,3 ;顯示第3行信息</p><p> CALL LC
63、D_DISP</p><p> TT: JMP START ;TT</p><p> CLEAR PROC</p><p> MOV AL,0CH</p><p> MOV DX, PORT_8255_A</p><p> OUT DX,AL ;設(shè)置
64、CLEAR命令</p><p> CALL CMD_SETUP ;啟動LCD執(zhí)行命令</p><p><b> RET</b></p><p> CLEAR ENDP</p><p> FUNCUP PROC</p><p> MOV AL, 34H
65、 ;LCD顯示狀態(tài)命令</p><p> OUT DX, AL</p><p> CALL CMD_SETUP</p><p><b> RET</b></p><p> FUNCUP ENDP</p><p> LCD_DISP PROC</p><p>
66、LEA BX, TABLE</p><p><b> CMP CH, 2</b></p><p> JZ DISP_SEC</p><p> MOV BYTE PTR HZ_ADR, 88H ;第三行起始端口地址</p><p> ADD BX,16 ;指向第二行信息</
67、p><p><b> JMP NEXT</b></p><p> DISP_SEC:MOV BYTE PTR HZ_ADR,90H</p><p> NEXT: MOV CL,8 </p><p> CONTINUE:PUSH CX</p><p> MOV AL,HZ_ADR&
68、lt;/p><p> MOV DX, PORT_8255_A</p><p> OUT DX, AL</p><p> CALL CMD_SETUP ;設(shè)定DDRAM地址命令</p><p> MOV AX,[BX]</p><p><b> PUSH AX</b><
69、/p><p> MOV AL,AH ;先送漢字編碼高位</p><p> MOV DX,PORT_8255_A</p><p><b> OUT DX,AL</b></p><p> CALL DATA_SETUP ;輸出漢字編碼高字節(jié)</p><p&g
70、t; CALL DELAY ;延遲</p><p><b> POP AX</b></p><p> MOV DX,PORT_8255_A</p><p> OUT DX, AL</p><p> CALL DATA_SETUP ;輸出漢字編碼低字節(jié)</p>
71、<p> CALL DELAY</p><p><b> INC BX</b></p><p> INC BX ;修改顯示內(nèi)碼緩沖區(qū)指針</p><p> INC BYTE PTR HZ_ADR ;修改LCD顯示端口地址</p><p><b>
72、 POP CX</b></p><p><b> DEC CL</b></p><p> JNZ CONTINUE</p><p><b> RET</b></p><p> LCD_DISP ENDP</p><p> CMD_SETUP PROC&
73、lt;/p><p> MOV DX,PORT_8255_A ;指向8255端口控制端口</p><p><b> ADD DX,2</b></p><p><b> NOP</b></p><p> MOV AL,00000000B ;PC1置0,pc0置0 (LCD
74、 I端=0,W端=0)</p><p> OUT DX, AL</p><p> CALL DELAY</p><p><b> NOP</b></p><p> MOV AL,00000100B ;PC2置1 (LCD E端=1)</p><p> OUT DX, AL
75、</p><p><b> NOP</b></p><p> CALL DELAY</p><p> MOV AL, 00000000B ;PC2置0,(LCD E端置0)</p><p> OUT DX, AL</p><p> CALL DELAY</p>
76、<p><b> RET</b></p><p> CMD_SETUP ENDP</p><p> DATA_SETUP PROC</p><p> MOV DX,PORT_8255_A ;指向8255控制端口</p><p><b> ADD DX,2</b><
77、;/p><p> MOV AL,00000001B ;PC1置0,PC0=1 (LCD I端=1)</p><p> OUT DX, AL</p><p><b> NOP</b></p><p> CALL DELAY</p><p> MOV AL,00000101B
78、 ;PC2置1 (LCD E端=1)</p><p> OUT DX, AL</p><p><b> NOP</b></p><p> CALL DELAY</p><p> MOV AL, 00000001B ;PC2置0,(LCD E端=0)</p><p> OUT
79、 DX, AL</p><p><b> NOP</b></p><p> CALL DELAY</p><p><b> RET</b></p><p> DATA_SETUP ENDP</p><p> DELAY PROC</p>&l
80、t;p><b> PUSH CX</b></p><p><b> PUSH DX</b></p><p> MOV CX, 0FFFH</p><p> X1: LOOP X1</p><p><b> POP DX</b></p>
81、;<p><b> POP CX</b></p><p><b> RET</b></p><p> DELAY ENDP</p><p><b> JMP READ</b></p><p><b> CODE ENDS</b&
82、gt;</p><p> END START </p><p> 4 典型問題及解決方案</p><p> 這次硬件課程設(shè)計確實遇到了不少問題,比如讀取8253脈沖信號,里程和價格的計算等等,但通過上網(wǎng)查資料、請教老師以及與同學(xué)討論等方式,這些問題都得到了解決。這里主要介紹兩個典型問題。</p><p> 第一個問題是路程和價格的計算
83、。在這次設(shè)計中,我把里程變量DIS和價格PAY根據(jù)脈沖信號進行加一操作。由于定義為DW,即十六進制,就需要將其轉(zhuǎn)化為十進制輸出。由于不知道其具體值,不方便處理。所以我將其與00H相加并進行DAA調(diào)整,這樣就可以將個位和十位分別存在AL的低四位和高四位中。然后與0FH相與可得個位的值;右移四位后再相與可得十位的值。這樣就得到了需要的結(jié)果了。</p><p> 第二個問題是12864LED顯示屏的動態(tài)顯示。由于HQ
84、FC的演示實驗是靜態(tài)顯示的,所以沒有動態(tài)顯示的相關(guān)信息。遇到這樣的問題,先想到的是上網(wǎng)查找類似的實驗來參考一下。可惜沒有找到。幸好有同學(xué)發(fā)現(xiàn)就是將原來的表中的值進行替換,就能將靜態(tài)顯示轉(zhuǎn)換為動態(tài)顯示。所以先定義靜態(tài)表和十個數(shù)字,將求到的個位或十位加到數(shù)字表的起始地址,然后再加一次,因為字庫編碼占十六位,這樣就得到了所得值的編碼。然后將其替換原來靜態(tài)表中的值,便能進行動態(tài)顯示了。</p><p><b>
85、 5 成果展示</b></p><p> (1)白天起步價內(nèi),即三公里內(nèi)5元</p><p> (2)白天超過起步價后,每公里一元,未滿一公里按一公里計算</p><p><b> ?。?)白天其他情況</b></p><p> (4)晚上從5元開始,一公里兩元</p><p>
86、;<b> 6 結(jié)論與心得體會</b></p><p> 這次硬件課程設(shè)計使用8253、8255、霍爾元件、直流電機和12864LED顯示屏等元件實現(xiàn)了出租車計價器的功能。實際的出租車可簡單分為兩個部分,一為傳感器部分,二是數(shù)據(jù)處理部分。其工作原理為:霍爾傳感器負責把車輪的轉(zhuǎn)動情況轉(zhuǎn)換成脈沖信號,送給8253計數(shù)處理部分,然后把計數(shù)結(jié)果轉(zhuǎn)化為相應(yīng)的路程送到8255處理,最后計算出乘客應(yīng)付
87、的金額。由于使用16進制,需要進行十進制轉(zhuǎn)化,這是比較麻煩的。先要用DAA調(diào)整指令獲取個位和十位,然后要把代表個位的低四位取出。然后把代表十位的高四位右移至低四位,最后存到一個變量里。除了這個難題,還要把個位和十位數(shù)字對比數(shù)字表獲取字庫碼,這樣將原來靜態(tài)表中的值替換掉就可以進行動態(tài)顯示了。</p><p> 這次課程設(shè)計使我對硬件和匯編的相關(guān)知識的了解更加深入了,而這離不開老師和同學(xué)的幫助。所以再次我要感謝在這
88、次實驗中給予我很多幫助的老師和同學(xué),沒有他們的幫助,我會多走不少彎路。</p><p> 最后想用一句話總結(jié)一下:沒有什么是簡單的,也沒有什么是不可能的。堅持不懈,一定能得到理想的結(jié)果。</p><p><b> 7 參考文獻</b></p><p><b> 參考文獻</b></p><p>
89、; [1] 周荷琴,吳秀清.微型計算機原理與接口技術(shù).合肥:中國科技大學(xué)出版社,2004</p><p> [2] TPC-ZK系列USB學(xué)生實驗指導(dǎo)書</p><p> [3] 韓衍鵬,出租車計價器傳感器原理及維護 企業(yè)標準化,2008 年</p><p> [4] st7920字庫碼,http://wenku.baidu.com/view/a6f4bb5
90、43b3567ec102d8ac3.html</p><p> [5] 12864專題,http://wenku.baidu.com/view/fcaf6eea6294dd88d0d26b7b.html</p><p><b> 8 附錄</b></p><p><b> 附錄:</b></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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬件課程設(shè)計----出租車計價器
- 硬件課程設(shè)計報告--出租車計價器
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 課程設(shè)計---出租車計價器設(shè)計
- 課程設(shè)計--出租車計價器設(shè)計
- 出租車計價器設(shè)計課程設(shè)計
- 課程設(shè)計---出租車計價器設(shè)計
- arm出租車計價器系統(tǒng)課程設(shè)計
- 出租車計價器課程設(shè)計報告
- 出租車計價器課程設(shè)計論文
- eda課程設(shè)計--出租車計價器
- eda課程設(shè)計--出租車計價器
- 接口課程設(shè)計---出租車計價器
- 課程設(shè)計---出租車計價器的設(shè)計
- 課程設(shè)計--出租車計價器的設(shè)計
- 硬件課程設(shè)計-- 出租車計價系統(tǒng)
- eda課程設(shè)計報告---出租車計價器
評論
0/150
提交評論