版權(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ù),當(dāng)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> 出租車計價器充當(dāng)了一個中立者的角色。公平的體現(xiàn)往往需要當(dāng)事雙方以外的媒質(zhì)。而出租車計價器恰好充當(dāng)這種媒質(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è)計目標(biāo),我們可以選擇8253計數(shù)器和可編程接口芯片8255。用8255作為接口,通常不需要附加外部邏輯電路就可以直接為CPU與外設(shè)提供數(shù)據(jù)通道。</p><p><b> 1.3 設(shè)計任務(wù)</b><
13、;/p><p> 最重要的任務(wù)目標(biāo)是精確。出租車計價器如果不夠精確,肯定會導(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ù)操作。當(dāng)計數(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> (3).通道選擇 </
18、b></p><p> CS——片選信號,由CPU輸入,低電平有效,通常由端口地址的高位地址譯碼形成。 RD、WR——讀/寫控制命令,由CPU輸入,低電平有效。RD有效時,CPU讀取由A1A0所選定的通道內(nèi)計數(shù)器的內(nèi)容。WR有效時,CPU將計數(shù)值寫入各個通道的計數(shù)器中, 或者是將方式控制字寫入控制字寄存器中。 </p><p> (4).計數(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> 當(dāng)某通道用
20、作計數(shù)器時,應(yīng)將要求計數(shù)的次數(shù)預(yù)置到該通道的計數(shù)器中、被計數(shù)的事件應(yīng)以脈沖方式從CLK端輸入, 每輸入一個計數(shù)脈沖,計數(shù)器內(nèi)容減“1”,待計數(shù)值計到“0”。 OUT端將有輸出。表示計數(shù)次數(shù)到。當(dāng)某個通道用作定時器時。 由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取當(dāng)前的計數(shù)值:向指定通道讀取當(dāng)前計數(shù)器值時,8253將計數(shù)器值存入鎖存器,從鎖存器向外提供當(dāng)前的計數(shù)器值,計數(shù)器則繼續(xù)作計數(shù)操作。 </p><p> ④計數(shù)到:當(dāng)計數(shù)器減1為0時,通過
23、引腳OUTi向外輸出“到”的脈沖信號。 </p><p> 計數(shù)初值輸入存放在初值寄存器中,計數(shù)開始或重裝入時被復(fù)制到計數(shù)器中。 鎖存器在非鎖存狀態(tài),其值隨計數(shù)器的變化而變化;一旦鎖存了計數(shù)器的當(dāng)前值,直到鎖存器值被讀取后才能解除鎖存狀態(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)楦唠娖?。如果?dāng)GATE為高電平, 則立即開始減“1”計數(shù),OUT保持為高電平,若n為偶數(shù),則當(dāng)計數(shù)值減到n/2時,OUT跳變?yōu)榈碗娖剑恢北3值接嫈?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> 在這個實驗當(dāng)中,我們選擇了通道0,對其采用了方式3,它能把霍爾傳感器收集起來。當(dāng)信號采集過來以后,就需要進行處理轉(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)動的物體上置定一個磁鐵,當(dāng)磁鐵隨物體轉(zhuǎn)動一圈時,就通過霍爾傳感器旁邊一次,霍爾傳感器此時接到信號,并向外輸出一個脈沖,完成一次信號的采集。</p><p> 2.4 液晶顯示器的應(yīng)用</p><p> 12864是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字
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。在這個實驗當(dāng)中
34、采用的端口的起始的地址是280H,所以就有這樣的分配:通道0的地址端口280H,通道1的地址端口為281H,通道2的地址端口為282H,8253的控制端口的地址為284H。</p><p> 當(dāng)信號采集完畢后,無法讓人們看到具體的脈沖,因此必須用顯示器將脈沖顯示出來。整體的顯示過程是:讓霍爾傳感器采集信號,8253 計數(shù),8255 將其輸出,輸出給LCD,從而完成整個過程。</p><p&g
35、t; 主要功能:以直流電動機模擬出租車車輪的轉(zhuǎn)動,直流電動機車輪上有一個磁鐵,然后用霍爾傳感器采集信號,然后用8253對信號進行減數(shù)計數(shù),當(dāng)8253輸出一個信號時,就由8255輸出給顯示器。</p><p><b> 電路圖如下:</b></p><p><b> 3 軟件方案</b></p><p><b&g
36、t; 3.1 流程圖</b></p><p><b> (1)讀取脈沖信號</b></p><p><b> ?。?)里程處理</b></p><p> ?。?)價格處理與里程處理類似</p><p> (4)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> ?。?)白天起步價內(nèi),即三公里內(nèi)5元</p><p> ?。?)白天超過起步價后,每公里一元,未滿一公里按一公里計算</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ù)處理部分。其工作原理為:霍爾傳感器負責(zé)把車輪的轉(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è)標(biāo)準化,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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬件課程設(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
提交評論