接口課程設計---出租車計價器_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  信息科學與技術學院</b></p><p><b>  微機原理與接口技術</b></p><p><b>  課程設計報告</b></p><p>  題目名稱: 出租車計價器 </p><p><b>  出租車計價器&

2、lt;/b></p><p><b>  目錄</b></p><p><b>  1. 方案選擇2</b></p><p>  1.1 題義與需求分析2</p><p>  1.2 解決問題的方法與思路2</p><p>  2. 硬件原理電路圖的設計及分析3

3、</p><p><b>  2.1電路原理3</b></p><p>  2.2 路程測量部分4</p><p>  2.3 數(shù)據(jù)顯示部分4</p><p>  2.4 電源部分5</p><p>  2.5 按鍵設置部分5</p><p>  3.程序設計與分

4、析6</p><p>  3.1主程序設計6</p><p>  3.2定時中斷服務程序設計7</p><p>  3.3顯示服務程序設計8</p><p><b>  4. 系統(tǒng)評價9</b></p><p>  5. 心得體會11</p><p>  6.

5、主要參考文獻12</p><p>  7. 附錄(源代碼)13</p><p><b>  1. 方案選擇</b></p><p>  1.1 題義與需求分析</p><p>  1、能進手動改價行。</p><p>  2、具有數(shù)據(jù)的復位功能。</p><p>  3

6、、數(shù)據(jù)的清零開關,單價的調(diào)整,單價輸出2位,路程輸出2位,總金額輸出3位。</p><p>  4、按鍵:啟動計時開關,數(shù)據(jù)復位(清零)。</p><p>  1.2 解決問題的方法與思路</p><p>  1.2.1 硬件部分</p><p><b>  實驗采用:</b></p><p> 

7、 8086最小系統(tǒng)配置版、可編程外圍接口芯片8255A一片,七段LED顯示器,555脈沖發(fā)生電路,時鐘電路。</p><p>  1.2.2 軟件部分</p><p>  1、該系統(tǒng)采用匯編語言編寫程序。</p><p>  2、首先要對系統(tǒng)的各個芯片進行初始化設計。</p><p>  3、采樣555脈沖電路的信號,以模擬霍爾傳感器所須檢測

8、的測速電路,并通過8086的運算和控制顯示出數(shù)據(jù)。</p><p>  4、在主程序模塊中還需要設置啟動/清除標志寄存器、里程寄存器和價格寄器,并對它們進行初始化。然后,主程序?qū)⒏鶕?jù)各標志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不同的操作。</p><p>  硬件原理電路圖的設計及分析</p><p><b>  2.1電路原理</b>

9、</p><p>  本課題的設計可通過實驗平臺上的一些功能模塊電路組成,由于各模塊電路內(nèi)部已經(jīng)連接,用戶在使用時只要設計模塊間電路的連接,因此,硬件電路的設計及實現(xiàn)相對簡單。硬件電路由0~5V電壓輸出、時鐘電路、8255可編程外圍接口模塊和LED顯示模塊、8086系統(tǒng)最小配置版。</p><p><b>  圖一 硬件框圖</b></p><p&

10、gt;  圖二 總的硬件連接圖</p><p>  2.2 路程測量部分</p><p>  里程計算是通過安裝在車輪上的霍爾傳感器A44E檢測到的信號,在該系統(tǒng)中用脈沖發(fā)生器進行模擬,送到8086,經(jīng)處理計算,送給顯示單元的。</p><p>  555電路來產(chǎn)生一個脈沖來模擬霍爾傳感器輸出的里程脈沖,選擇P1.0口作為信號的輸入端,內(nèi)部采用外部中斷0,555脈沖

11、產(chǎn)生電路輸出一個脈沖信號直接加到IO口D0上(產(chǎn)生的頻率F=1/T=1.414/[(R1+2R2)C1]),由8086的內(nèi)部算法對脈沖計數(shù),通過計算將脈沖增加體現(xiàn)在金額和里程上。具體電路如圖所示。</p><p>  圖三 555脈沖產(chǎn)生電路圖</p><p>  2.3 數(shù)據(jù)顯示部分</p><p>  由于設計要求有里程、金額、輸出,所以采用6位LED數(shù)碼管的分

12、屏顯示</p><p>  本次設計需要用到LED顯示器顯示時間,單價,總金額。因此需要七段LED顯示器。</p><p><b>  圖四 LED顯示</b></p><p><b>  2.4 電源部分</b></p><p>  由于計價器的工作環(huán)境比較差,他要求有抗振動、抗高低溫、抗潮濕、抗

13、電磁干擾等能力,特別是電源方面的干擾,如出租車上啟動時,發(fā)動機打火,電瓶充電等造成輸入計價器的+12V電源不穩(wěn)定。因此采用+12V電瓶電源經(jīng)過濾破和電源穩(wěn)壓管理心片7805后得到+5V的穩(wěn)定電壓輸出,保證整個系統(tǒng)能夠正常工作。</p><p><b>  圖五 電路設計</b></p><p>  2.5 按鍵設置部分</p><p>  鍵盤

14、接口采用4*4矩陣鍵盤,接在8255A的PA4接口上,所形成的行列矩陣接在PA0~PA3、PB0~PB3。鍵盤電路主要功能實現(xiàn)是復位、開始計價以及暫停計價。通過鍵盤電路和8086的內(nèi)部運算來實現(xiàn)單價、里程、總金額的顯示。</p><p>  圖六 4*4矩陣鍵盤</p><p><b>  3.程序設計與分析</b></p><p><b

15、>  3.1主程序設計</b></p><p><b>  主程序:</b></p><p>  實現(xiàn)啟動計價,將根據(jù)里程寄存器中的內(nèi)容計算和判斷出行駛里程是否 </p><p>  已超過起價公里數(shù)。若超過,則根據(jù)里程值、每公里的單價數(shù)和起價數(shù)來計算出</p><p>  當前的累計價格,然后將時間和

16、當前累計價格送顯示電路顯示出來。</p><p><b>  圖十 主程序</b></p><p>  3.2定時中斷服務程序設計</p><p>  定時中斷服務程序:在定時中斷服務程序中,每1/40s 產(chǎn)生一次中斷,當產(chǎn)生40 次中斷的時候,也就到了一秒,送數(shù)據(jù)到相應的顯示緩沖單元,并調(diào)用顯示子程序?qū)崟r顯示。</p><

17、p>  圖十一 定時中斷服務程序</p><p>  3.3顯示服務程序設計</p><p>  顯示服務程序:數(shù)碼管顯示里程數(shù),價格兩項數(shù)據(jù)。</p><p>  圖十二 顯示服務程序</p><p><b>  系統(tǒng)評價</b></p><p>  硬件總邏輯圖集說明:</p>

18、;<p>  8255的PA口和PB口分別作為七段LED顯示器的段選和位選,可以把單價、金額和里程通過LED顯示。8255A與8086最小系統(tǒng)相連,555脈沖電路與74LS245相連,通過它產(chǎn)生脈沖信號來模擬安裝在車輪上的霍爾傳感器A44E檢測到的信號。并通過程序的控制和運算來實現(xiàn)對里程的顯示和對總金額的計算。</p><p><b>  圖七</b></p>&

19、lt;p><b>  圖八</b></p><p><b>  圖九</b></p><p><b>  5. 心得體會</b></p><p>  在本次設計中,使用了8086最小系統(tǒng)、8255可編程外圍接口、通過該課程設計,掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務,熟

20、悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構(gòu)造工具及其相關的技術對課本上的知識有了更深的理解,課程設計歷時二個星期左右,理論聯(lián)系實際的能力還急需提高。這次的課程設計也讓我看到了團隊的力量,我認為我們的工作是一個團隊的工作,團隊需要個人,個人也離不開團隊,必須發(fā)揚團結(jié)協(xié)作的精神。一開始最小系統(tǒng)板的設計遇到了一點小障礙,但團結(jié)協(xié)作使我們順利的解決了這個問題。在時鐘模塊的設計中涉及到很多不懂的知識,在我們的通力合作下完成了時鐘電路圖的

21、繪制,可以說團體的力量是很大的。而這次設計也正好鍛煉我們這一點,這也是非常寶貴的。</p><p>  此次實習查閱了很多資料,學習書本及課堂中老師不曾介紹過的知識.同時也學會了在動手實踐的過程中,發(fā)現(xiàn)問題,分析問題,在最短的時間內(nèi)尋找問題的解決方案。更重要的是通過本次的課程設計,我們把死板的微機原理課程的知識變得有趣,通過對出租車計價器功能實現(xiàn)的設計,加深了對理論知識的了解,從實踐上認識了操作系統(tǒng)是如何處理命令

22、,如何控制程序的流向。對計算機編譯的原理也有了更深一步的理解。</p><p><b>  6. 主要參考文獻</b></p><p>  [1] 彭虎、周佩玲、傅忠謙編著·《微機原理里與接口技術》·(第2版)·電子工業(yè)出版社,2008年版</p><p>  [2] 蔡啟先、王智文、黃曉璐編著·《匯編語

23、言程序設計實驗指導》·清華大學出版社,2008年版</p><p>  [3] 張曉明、白鳳鳳、李雅紅編著·《匯編語言程序設計》·國防工業(yè)出版社, 2009年版</p><p>  [4] 張坤編著·《匯編語言實驗教程》·清華大學出版社,2008年版 </p><p>  [5]

24、 卜艷萍、周偉編著·《匯編語言程序設計教程》·(第二版)·清華大學出版社,2007年版</p><p>  7. 附錄(源代碼)</p><p>  data segment</p><p>  ioport equ 0c800h-0280h</p><p>  ioport equ 0

25、c800h-280h</p><p>  io8253 equ ioport+283H ;8253端口地址,控制端口</p><p>  io82530 equ ioport+280H ;8253通道0地址</p><p>  io8255aequ ioport+288h</p><p>  io8255bequ ioport

26、+28bh</p><p>  io8255cequ ioport+28ah</p><p>  led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段碼</p><p>  buffer1 db 0,0,0,0,0,0 ;存放要顯示十萬,萬,千,百,十,個位</p>

27、<p>  print db '000000',0dh,0ah,'$'</p><p><b>  data ends</b></p><p>  stacks segment stack</p><p>  db 100 dup (?)</p><p>  stack

28、s ends</p><p>  code segment</p><p>  assume cs:code,ds:data,ss:stacks</p><p>  main proc far</p><p>  start:mov ax,stacks;初始化界面</p><p>  mov ss,ax&l

29、t;/p><p>  mov ax,data</p><p><b>  mov ds,ax</b></p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  mov di,offset b

30、uffer1</p><p>  mov si,offset led</p><p>  mov byte ptr [di+0],0</p><p>  mov byte ptr [di+1],8</p><p>  mov byte ptr [di+2],0</p><p>  mov byte ptr [di+3]

31、,0</p><p>  mov byte ptr [di+4],0</p><p>  mov byte ptr [di+5],0</p><p><b>  mov al,1</b></p><p>  start1: mov bx,3000</p><p>  zzz: mov cx,2&l

32、t;/p><p>  zz: call scan</p><p>  call delay</p><p><b>  loop zz</b></p><p><b>  cmp bx,1</b></p><p><b>  jnz out1</b><

33、/p><p><b>  push ax</b></p><p>  mov dx,io8255b;讀8255端口</p><p>  mov al,8bh</p><p><b>  out dx,al</b></p><p>  mov dx,io8255c

34、;顯示初始化</p><p><b>  in al,dx</b></p><p><b>  cmp al,0</b></p><p>  jne nnext1 </p><p>  mov byte ptr [di+0],0</p><p>  mov

35、 byte ptr [di+1],8</p><p>  mov byte ptr [di+2],0</p><p>  mov byte ptr [di+3],0</p><p>  mov byte ptr [di+4],0</p><p>  mov byte ptr [di+5],0</p><p>  jmp

36、 qianqian</p><p>  nnext1: cmp al,1;按里程計費</p><p>  jne nnext2</p><p>  call distance</p><p>  jmp qianqian</p><p>  nnext2: cmp al,2;按等待時間計費</p&

37、gt;<p>  jne nnext3</p><p><b>  call time</b></p><p>  jmp qianqian</p><p>  nnext3: cmp al,3;暫停</p><p>  jne qianqian</p><p><b&

38、gt;  push dx</b></p><p><b>  push ax</b></p><p><b>  push di</b></p><p><b>  push si</b></p><p><b>  push cx</b>&l

39、t;/p><p><b>  mov cx,3</b></p><p>  mov di,offset print</p><p><b>  mov si,10</b></p><p>  loopp: mov ax,[si];將內(nèi)容在屏幕上顯示出來</p><p>

40、  mov [di],ax</p><p>  add [di],3030h</p><p><b>  inc si</b></p><p><b>  inc si</b></p><p><b>  inc di</b></p><p><b

41、>  inc di</b></p><p>  loop loopp</p><p>  mov dx,offset print</p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p><

42、;b>  pop cx</b></p><p><b>  pop si</b></p><p><b>  pop di</b></p><p><b>  pop ax</b></p><p><b>  pop dx</b><

43、/p><p>  qianqian:call qian</p><p><b>  pop ax</b></p><p>  out1: dec bx</p><p><b>  jne zzz</b></p><p>  jmp start1</p><

44、p>  mov ah,4ch</p><p><b>  int 21h</b></p><p><b>  main endp</b></p><p>  delay proc near</p><p><b>  push cx</b></p><

45、p><b>  push bx</b></p><p>  mov bx,20;20</p><p>  qqq:mov cx,0;0</p><p>  qq:loop qq</p><p><b>  dec bx</b></p><p><b>  jn

46、e qqq</b></p><p><b>  pop bx</b></p><p><b>  pop cx</b></p><p><b>  ret</b></p><p>  delay endp</p><p>  distance

47、 proc near</p><p>  mov dx,io8253 ;寫8253控制字</p><p>  mov al,36h ;計數(shù)器0工作方式2</p><p>  out dx,al ;初始化計數(shù)器0</p><p>  mov dx,io82530</p>&

48、lt;p>  mov al,0e8H ;寫初值1000的低字節(jié)</p><p>  out dx,al</p><p>  mov al,03H ;寫高字節(jié)</p><p>  out dx,al</p><p>  lp1:mov dx,0c832h ;為out0的輸出端口<

49、;/p><p>  in al,dx</p><p>  cmp al,1 ;當out0為1時,進行里程數(shù)加一</p><p><b>  jnz lp2</b></p><p><b>  push di</b></p><p><b>  mov

50、di,10</b></p><p>  cmp byte ptr [di+3],9</p><p><b>  jz jinwei</b></p><p>  add byte ptr [di+3],1</p><p><b>  jmp jx</b></p><p&

51、gt;  jinwei: add byte ptr [di+2],1</p><p>  mov byte ptr [di+3],0</p><p>  jx: pop di</p><p><b>  ret</b></p><p>  lp2:jmp lp1</p><p>  di

52、stance endp</p><p>  time proc near</p><p><b>  mov di,10</b></p><p>  cmp byte ptr [di+5],9</p><p>  jz tjinwei</p><p>  add byte ptr [di+5],1

53、</p><p><b>  jmp tjx</b></p><p>  tjinwei: add byte ptr [di+4],1</p><p>  mov byte ptr [di+5],0</p><p>  tjx: ret</p><p><b>  time end

54、p</b></p><p>  qian proc near</p><p><b>  mov di,10</b></p><p><b>  push ax</b></p><p>  cmp byte ptr [di+3],0</p><p><b&g

55、t;  jz ret1</b></p><p>  ret1: cmp byte ptr[di+2],8</p><p><b>  jz ret2</b></p><p><b>  mov al,3</b></p><p>  mul byte ptr [di+3]</p&

56、gt;<p>  mov byte ptr [di+7],al</p><p><b>  mov al,30</b></p><p>  mul byte ptr [di+2]</p><p>  mov byte ptr [di+6],al</p><p><b>  mov al,1<

57、/b></p><p>  mul byte ptr [di+5]</p><p>  mov byte ptr [di+9],al</p><p><b>  mov al,10</b></p><p>  mul byte ptr [di+4]</p><p>  mov byte pt

58、r [di+8],al</p><p><b>  push cx</b></p><p><b>  mov cx,8</b></p><p>  add cl,byte ptr [di+6]</p><p>  add cl,byte ptr [di+7]</p><p>

59、;  add cl,byte ptr [di+8]</p><p>  add cl,byte ptr [di+9]</p><p><b>  mov ax,0</b></p><p>  qianchuli:cmp al,9</p><p>  jz qjinwei</p><p><b

60、>  add al,1</b></p><p><b>  jmp qjixu</b></p><p>  qjinwei: add ah,1</p><p><b>  mov al,0</b></p><p>  qjixu: loop qianchuli</p>

61、<p><b>  pop cx</b></p><p>  mov byte ptr [di],ah</p><p>  mov byte ptr [di+1],al</p><p><b>  pop ax</b></p><p><b>  ret</b>&

62、lt;/p><p>  ret2: ret</p><p>  qian endp </p><p>  scan proc near</p><p>  cmp al,20h</p><p><b>  jz set</b></p><p><b>  add

63、al,al</b></p><p><b>  jmp next</b></p><p>  set : mov al,01</p><p>  next: mov dx,0C830H</p><p><b>  out dx,al</b></p><p>  c

64、mp al,01h</p><p><b>  jz next1</b></p><p>  cmp al,02h</p><p><b>  jz next2</b></p><p>  cmp al,04h</p><p><b>  jz next3</

65、b></p><p>  cmp al,08h</p><p><b>  jz next4</b></p><p>  cmp al,10h</p><p><b>  jz next5</b></p><p>  cmp al,20h</p><

66、p><b>  jz next6</b></p><p>  next1:push ax</p><p><b>  mov di,10</b></p><p><b>  push ax</b></p><p>  mov ax,[di]</p><

67、p><b>  mov ah,0</b></p><p><b>  mov si,ax</b></p><p><b>  pop ax</b></p><p>  mov al,byte ptr[si]</p><p>  mov dx,0C831H</p>

68、;<p><b>  out dx,al</b></p><p><b>  pop ax</b></p><p><b>  jmp last</b></p><p>  next2:push ax</p><p><b>  mov di,11<

69、;/b></p><p><b>  push ax</b></p><p>  mov ax,[di]</p><p><b>  mov ah,0</b></p><p><b>  mov si,ax</b></p><p><b>

70、;  pop ax</b></p><p>  mov al,byte ptr[si]</p><p>  mov dx,0C831H</p><p><b>  out dx,al</b></p><p><b>  pop ax</b></p><p>  j

71、mp last </p><p>  next3:push ax</p><p><b>  mov di,12</b></p><p><b>  push ax</b></p><p>  mov ax,[di]</p><p><b>  mov

72、ah,0</b></p><p><b>  mov si,ax</b></p><p><b>  pop ax</b></p><p>  mov al,byte ptr[si]</p><p>  mov dx,0C831H</p><p><b>

73、;  out dx,al</b></p><p><b>  pop ax</b></p><p><b>  jmp last</b></p><p>  next4:push ax</p><p><b>  mov di,13</b></p>&

74、lt;p><b>  push ax</b></p><p>  mov ax,[di]</p><p><b>  mov ah,0</b></p><p><b>  mov si,ax</b></p><p><b>  pop ax</b>&

75、lt;/p><p>  mov al,byte ptr[si]</p><p>  mov dx,0C831H</p><p><b>  out dx,al</b></p><p><b>  pop ax</b></p><p><b>  jmp last<

76、/b></p><p>  next5:push ax</p><p><b>  mov di,14</b></p><p><b>  push ax</b></p><p>  mov ax,[di]</p><p><b>  mov ah,0<

77、/b></p><p><b>  mov si,ax</b></p><p><b>  pop ax</b></p><p>  mov al,byte ptr[si]</p><p>  mov dx,0C831H</p><p><b>  out d

78、x,al</b></p><p><b>  pop ax</b></p><p><b>  jmp last</b></p><p>  next6:push ax</p><p><b>  mov di,15</b></p><p>

79、<b>  push ax</b></p><p>  mov ax,[di]</p><p><b>  mov ah,0</b></p><p><b>  mov si,ax</b></p><p><b>  pop ax</b></p>

80、;<p>  mov al,byte ptr[si]</p><p>  mov dx,0C831H</p><p><b>  out dx,al</b></p><p><b>  pop ax</b></p><p><b>  jmp last</b>&l

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論