版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 計算機科學與技術學院</p><p><b> 硬件課程設計報告</b></p><p> 姓 名: 學 號: </p><p> 專 業(yè): 計算機科學與技術 </p><p> 班 級:
2、 </p><p> 設計題目: 出租車計價系統(tǒng) </p><p> 指導教師: </p><p> 2013年 10月 </p><p><b> 目 錄<
3、/b></p><p> 1需求分析………………………………………………………………………3</p><p> 1.1任務要求……………………………………………………………………3</p><p> 1.2參數(shù)設置……………………………………………………………………3</p><p> 1.3功能實現(xiàn)……………………………………
4、……………………………4</p><p> 2 總體設計……………………………………………………………………5</p><p> 2.1總體方案及框圖……………………………………………………………5</p><p> 2.2芯片原理…………………………………………………………………6</p><p> 2.3電路連接圖……………………
5、……………………………………………9</p><p> 2.4軟件模塊流程圖……………………………………………………………11</p><p> 3詳細設計………………………………………………………………12</p><p> 3.1代碼及注釋…………………………………………………………………12</p><p> 3.2 問題分析及
6、解決方案……………………………………………………16</p><p> 3.3運行結果…………………………………………………………………17</p><p> 3.4心得體會…………………………………………………………………19</p><p> 參考文獻………………………………………………………………………20</p><p><
7、;b> 需求分析</b></p><p><b> 1.1任務要求</b></p><p> 如今,出租車已經(jīng)遍布全國各地每一個城市每一個角落,已經(jīng)成為人們出行的重要交通工具。隨著出租車行業(yè)的壯大和發(fā)展,一些不良現(xiàn)象比如出租車司機亂收費等情況也時有發(fā)生。而出租車計價系統(tǒng)能夠使出租車收費更加快捷方便、透明公正,具有廣闊的市場前景。</p&g
8、t;<p> 從用戶的角度看,出租車計價系統(tǒng)要能夠?qū)崿F(xiàn)自動測算里程數(shù)并計算收費金額。在輸入方面,應該能夠手動控制計價器的啟動和關閉,還要能切換白天和夜間模式,方便不同模式的計價;輸出方面,要將能將里程數(shù)和價格顯示出來,方便司機和乘客查看,真正實現(xiàn)公開透明收費。</p><p><b> 1.2參數(shù)設置</b></p><p> 輸入?yún)?shù):通過邏輯
9、電平開關來開關計價器、切換白天/夜間模式</p><p> K1:閉合/啟動 斷開/關閉 </p><p> K2:閉合/夜間模式 斷開/白天模式</p><p> 輸出參數(shù):將計算得出的數(shù)據(jù)顯示在LCD液晶顯示屏上</p><p> 里 程:XX km 金 額:XX元</p><p><b&
10、gt; 價格設置:</b></p><p> 白天模式——起步價3公里內(nèi)8元錢,3公里外2元/公里</p><p> 夜間模式——起步價3公里內(nèi)10元錢,3公里外3元/公里</p><p><b> 1.3功能實現(xiàn)</b></p><p> 直流電機控制——邏輯電平開關K1直接與電直流機相連,通過
11、</p><p> 輸出高低電平控制電機的開閉</p><p> 白天、黑夜模式切換——邏輯電平開關K2與8255A的PB0口連 </p><p> 接,8255A讀取數(shù)據(jù)進行檢測判斷,然后定義 </p><p><b> 模式進行計算</b></p><p> 數(shù)據(jù)輸出顯示——利用
12、128*64LCD液晶顯示屏做最終顯示載體,</p><p> 8255A將程序計算所得的數(shù)據(jù)通過事先定義 </p><p> 的字符內(nèi)碼顯示在LCD上</p><p> 檢測里程——利用直流電機里的霍爾傳感器將脈沖傳導到8254 </p><p> 的CLK0口,設置計數(shù)初值為1000(即1000個脈</p>&
13、lt;p> 記作1公里),然后從OUT0輸出到8255A的PB1</p><p> 口,8255A從中讀取電平(一次負跳變記為1公里)</p><p><b> 并通過程序進行計算</b></p><p> 復位清0——通過邏輯電平開關K3與8255A的PB2口相連,</p><p> 8255A進行檢測
14、,若為高電平,則將所有數(shù)據(jù)全部 </p><p> 初始化,實現(xiàn)清0功能</p><p><b> 總體設計</b></p><p> 2.1總體方案及框圖</p><p> 通過邏輯電平開關K1控制白天黑夜模式切換,連接到 8255A 的B口,另一個開關K2控制直流電機轉動,然后霍爾傳感器檢測直流電機的轉動,
15、將信息傳入8254計數(shù)器通道0接口中(設1000個脈沖為一公里路程),然后連接到8255A的B口,8255A在B口讀取數(shù)據(jù)并進行計算,最后將顯示到LCD液晶顯示屏上。邏輯電平開關K3在任意時刻控制系統(tǒng)清0.</p><p><b> 系統(tǒng)框圖:</b></p><p> 2.2芯片原理(有部分資料摘抄)</p><p> (1)8254計
16、數(shù)器</p><p><b> 8254功能分析</b></p><p> Intel8253是NMOS工藝制成的可編程計數(shù)器/定時器, 8253內(nèi)部有三個計數(shù)器,分別成為計數(shù)器0、計數(shù)器1和計數(shù)器2,他們的機構完全相同。每個計數(shù)器的輸入和輸出都決定于設置在控制寄存器中的控制字,互相之間工作完全獨立。每個計數(shù)器通過三個引腳和外部聯(lián)系,一個為時鐘輸入端CLK,一
17、個為門控信號輸入端OUT,另一個為輸出端OUT。每個計數(shù)器內(nèi)部有一個8位的控制寄存器,還有一個16位的計數(shù)初值寄存器CR、一個計數(shù)執(zhí)行部件CE和一個輸出鎖存器OL。執(zhí)行部件實際上是一個16位的減法計數(shù)器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通過程序設置的。輸出鎖存器的值是通過程序設置的。輸出鎖存器OL用來鎖存計數(shù)執(zhí)行部件CE的內(nèi)容,從而使CPU可以對此進行讀操作。</p><p> 本次實驗僅利用
18、8254通道0,控制字00110111B,使用方式3,設置計數(shù)初值為1000,霍爾傳感器的脈沖每輸入CLK0口1000個,在OUT0口就輸出一個,實現(xiàn)計數(shù)功能。</p><p><b> 8253引腳信號</b></p><p><b> (2)8255A</b></p><p><b> 8255A功能分
19、析</b></p><p> 8255A是可編程并行接口,可以根據(jù)外界條件(I/O設備需要的信號線和它能提供的狀態(tài)線)來使其構成多種接口電路。8255A內(nèi)部有3個數(shù)據(jù)端口,即A口、B口、C口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡信號使用。</p><p> 在三種工作方式中,本設計只使用了方式0,即方式0是基本的
20、輸入/輸出方式,在這種方式下,三個端口都可以由程序規(guī)定為輸入/出方式。C口分為兩個4位---高4位和低4位,可以分別設置為輸入或輸出方式。</p><p> 本實驗將控制字設為10000010B,初始化8255A,使得A口輸出,B口輸入,C口輸出,A口、B口工作在方式0。</p><p><b> 8255A引腳信號</b></p><p>
21、;<b> 1)與外設相連的</b></p><p> PA7~PA0:A口數(shù)據(jù)信號線;</p><p> PB7~PB0:B口數(shù)據(jù)信號線;</p><p> PC7~PC0:C口數(shù)據(jù)信號線;</p><p><b> 2)與CPU相連的</b></p><p>
22、 RESET:復位信號。</p><p> D7~D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。</p><p> CS:片選信號。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配若于低位地址(比如A5、A4、A3)組成各種芯片選擇碼,當這幾位地址組成某一個低電平,于8255A被選中。只有當有效時,讀信號寫才對8255進行讀寫。 </p><p> RD:讀信號。當此信號
23、有效時,CPU可從8255A中讀取數(shù)據(jù)。</p><p> WR:寫信號。當此信號有效時,CPU可向8255A中寫入數(shù)據(jù)。</p><p> A1、A0:端口選擇信號。8255A內(nèi)部有3個數(shù)據(jù)端口和1個控制端口,共4個端口。規(guī)定:</p><p> A1、A0為00時,選中A端口;</p><p> A1、A0為01時,選中B端口;&
24、lt;/p><p> A1、A0為10時,選中C端口;</p><p> A1、A0為11時,選中控制口。</p><p><b> 2.3電路連接圖</b></p><p> 連線: K1/邏輯電平開關——直流電機</p><p> K2/邏輯電平開關——PB0/8255A</p
25、><p> K3/邏輯電平開關——PB2/8255A</p><p> 計數(shù)/直流電機——CLK/08254 GATE/08254——+5V</p><p> OUT/08254——PB1/8255A </p><p> PA7~PA0/8255A——D7~D0/LCD</p><p> PC0/8255
26、A——D/ILCD PC1/8255A——RW/LCD</p><p> PC2/8255A——E/LCD LCD工作于并行模式</p><p> CS/8255A——288H~28FH CS/8254——280H~287H</p><p> 2.4軟件模塊流程圖</p><p><b> 詳細設計<
27、;/b></p><p> 3.1重要代碼及注釋</p><p><b> 清0</b></p><p> MOV DX,PORT_8255_B</p><p> IN AL,DX</p><p> AND AL,04H</p><p> TES
28、T AL,04H</p><p> JZ JUDGE</p><p> MOV PAY,8</p><p> MOV DIST,0</p><p><b> 計程</b></p><p><b> JUDGE: </b></p><p&g
29、t; IN AL,DX</p><p> AND AL,02H</p><p> TEST AL,02H ;判斷是否為高電平</p><p> JNZ JUDGE ;若為高電平,繼續(xù)檢測</p><p> INC DIST ;若不是高電平了,即有一個脈 &
30、lt;/p><p><b> 沖,路程加1km</b></p><p> 判斷并設置白天/夜間模式</p><p> ;設置晚上起步價(在路程為1km時將起步價在原基礎上加2) </p><p> CMP DIST,1 ;判斷是否超過1km</p><p> JA A
31、 </p><p> IN AL,DX</p><p> AND AL,01H </p><p> TEST AL,01H ;判斷開關狀態(tài),閉合高電平表示晚上</p><p> JZ A ;若最低位為低電平,表示白天</p><p> ADD
32、 PAY,02H ;晚上,起步價由8元變成10元</p><p> ;判斷是否超過起步里程3km</p><p> A: CMP DIST,3 ;與起步里程比較,判斷是否超過3km</p><p> JBE TRANS ;小于3km則金額仍為起步價 </p><p>
33、 IN AL,DX</p><p> AND AL,01H</p><p> TEST AL,01H ;檢查是否為晚上</p><p> JZ DAY ;白天</p><p> INC PAY ;晚上一公里三元</p><p><b> ;白
34、天一公里兩元</b></p><p> DAY: ADD PAY,02H</p><p> 分離路程、金額的個十位并匹配內(nèi)碼</p><p> ;利用除法求十進制的個位和十位</p><p> TRANS: MOV AX,DIST </p><p> MOV B
35、L,10 </p><p><b> DIV BL</b></p><p> MOV T2,AH ;路程個位</p><p> MOV T1,AL ;路程十位</p><p> MOV AX,PAY</p><p><b&g
36、t; MOV BL,10</b></p><p><b> DIV BL</b></p><p> MOV T4,AH ;金額個位</p><p> MOV T3,AL ;金額十位</p><p> ;將金額、路程的個位、十位分別轉換為LCD上顯示的內(nèi)碼</
37、p><p> LEA BX,NUMBER</p><p><b> ADD BL,T1</b></p><p><b> ADD BL,T1</b></p><p> MOV AX,[BX]</p><p> LEA DI,TABLE1</p><p
38、> MOV WORD PTR[DI+8],AX ;路程十位</p><p> LEA BX,NUMBER</p><p><b> ADD BL,T2</b></p><p><b> ADD BL,T2</b></p><p> MOV AX,[BX]</p><
39、;p> LEA DI,TABLE1</p><p> MOV WORD PTR[DI+10],AX ;路程個位</p><p> LEA BX,NUMBER</p><p><b> ADD BL,T3</b></p><p><b> ADD BL,T3</b></p>
40、<p> MOV AX,[BX]</p><p> LEA DI,TABLE1</p><p> MOV WORD PTR[DI+24],AX ;金額十位</p><p> LEA BX,NUMBER</p><p><b> ADD BL,T4</b></p><p>&
41、lt;b> ADD BL,T4</b></p><p> MOV AX,[BX]</p><p> LEA DI,TABLE1</p><p> MOV WORD PTR[DI+26],AX ;金額個位</p><p> 3.2問題分析及解決方案</p><p><b> 個位、
42、十位分離顯示</b></p><p> 在設計程序時,我設想將路程、金額數(shù)據(jù)各設計成2位十進制數(shù)。在程序計算得出數(shù)據(jù)之后,將其個位、十位分離出來,讀出各自字符內(nèi)碼,再進行顯示。但是當程序設計出來之后,發(fā)現(xiàn)顯示很不正常,路程顯示總是在15km的時候突然跳成10km,而金額的十位一直都是0。這個問題一直困擾了我兩節(jié)課的時間,改了幾次都沒能正常輸出。</p><p> 后來經(jīng)過老
43、師點撥,我才發(fā)現(xiàn)是我對DAA指令的理解出錯,在個位十位分離的時候錯誤的使用這個語句,造成程序出錯。于是我聽從老師建議,采用除法進行分離:MOV AX,DIST ;MOV BL,10 ;DIV BL。既簡介明了,又不容易出錯。</p><p><b> 起步價設置</b></p><p> 設置價格時只用一個變量PAY,8255A的PB1口每得到一個脈沖,路程變量D
44、IST加1,金額變量PAY加2(如果是夜間模式,則再加1)。而夜間模式的起步價比白天高2元,所以編程首先檢測模式,如果是夜間模式就將PAY加2。原本我這個解決很完美,一運行才發(fā)現(xiàn),白天模式完全正確,但是夜間模式起步價根本沒變,還是原來的8元,而單價則變成了5元。</p><p> 于是我判定應該是增加起步價那一步在每一個脈沖輸入時都進行了循環(huán)。改了幾次都沒辦法解決,后來想辦法在前面加上一段 CMP DIST,
45、1 JA A。首先判斷路程是否超過1km,如果超過了,則不執(zhí)行此段,避免了起步價每次增加的錯誤。</p><p><b> 復位</b></p><p> 最初的設想里并沒有復位這一步,但是后來發(fā)現(xiàn)每一次運行完之后想要再次運行都要重啟機箱,還要將程序重新運行,很是麻煩??紤]到實際運用過程中,出租車司機不可能每一次都把機器關掉來清除原來的數(shù)據(jù)。</p&g
46、t;<p> 所以加上了復位清0這一功能,用邏輯電平開關K3作為控制端,連接到PB2,每次只要8255A檢測到變成高電平,程序就立馬把里程和金額數(shù)據(jù)初始化,實現(xiàn)復位的功能,更加人性化,貼合實際需求。</p><p><b> 3.3 運行結果</b></p><p> 程序運行后,打開K1開關,直流電機就開始轉動,數(shù)據(jù)直接顯示在LCD液晶屏上。隨著
47、電機的轉動,數(shù)據(jù)也在不斷地更新。如果斷開K1開關,電機停止轉動,數(shù)據(jù)顯示保持不動。</p><p> 如果閉合K2開關,立刻切換到夜間模式進行運行顯示。如果閉合K3開關,顯示會一下變成最初的數(shù)據(jù),里程變?yōu)?km,金額變成起步價。經(jīng)過長時間的編程調(diào)試,最終運行結果完全符合最初的設想和要求。</p><p><b> 3.4心得體會</b></p>&l
48、t;p> 這次硬件課程設計是上大學以來做的實驗設計中歷時最久、最為困難的一個。以前的實驗大都是軟件編程,程序比較短小,而且不涉及硬件。而這次花了半個學期的課程時間來做一個成果,這是以前都沒有過的。困難主要體現(xiàn)在對于硬件編程不熟練,匯編語言的生疏,還有硬件調(diào)試更加復雜。</p><p> 但是通過這次實驗真的學到了很多,首先是獨自處理問題的能力。面對一個現(xiàn)成的題目,怎么利用現(xiàn)有的硬件條件進行設計,這已經(jīng)跟
49、以前單純的實驗不一樣了,需要結合需求和現(xiàn)有條件進行取舍,找出最為可行的設計方案。這對于我而言非常重要,讓我學到了除了單純編程寫代碼更多的東西。程序僅僅是一個工具,而利用這個工具去解決實際問題的能力和方法對于我們而言更加重要。</p><p> 整個程序設計的過程是比較麻煩的,主要是對于匯編語言掌握不到位,很多語句都不熟練,編程開始階段幾乎是一邊查書一邊寫,中間也走了很多彎路。過程中也出現(xiàn)了各種問題,不僅僅是3.
50、2里面列舉的那些。有時感覺根本想不到解決的方法,或者根本就找不到問題出在哪兒。但是最終通過自己的努力和詢問老師解決了問題,那種成就感也是很振奮人心的。在編程解決問題實現(xiàn)目標之后的那一點點成就感和興奮感,激發(fā)自己學習的動力。經(jīng)過這段時期的實驗設計和自主學習,對于硬件編程的方式方法還有匯編語言的掌握都有了一定的提高,自主學習和解決的問題的能力也受到了鍛煉,總之受益匪淺。</p><p><b> 參考文獻
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬件課程設計--出租車計價器系統(tǒng)
- 硬件課程設計----出租車計價器
- 硬件課程設計報告--出租車計價器
- 出租車計價器課程設計
- 出租車計價器課程設計
- 出租車計價器課程設計
- 出租車計價器課程設計
- arm出租車計價器系統(tǒng)課程設計
- 課程設計---出租車計價器設計
- 課程設計--出租車計價器設計
- 出租車計價器設計課程設計
- 課程設計---出租車計價器設計
- 接口課程設計---出租車計價器
- 出租車計價器課程設計報告
- eda課程設計--出租車計價器
- eda課程設計--出租車計價器
- 出租車計價器課程設計論文
- 計算機硬件課程設計---出租車計價器設計
- 課程設計---出租車計價器的設計
- 課程設計--出租車計價器的設計
評論
0/150
提交評論