2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  姓名: </p><p>  專業(yè): </p><p>  課程名稱:微機(jī)接口技術(shù)</p><p>  班級: </p><p> 

2、 系(分院): </p><p><b>  年 月</b></p><p><b>  目 錄</b></p><p>  一、課程設(shè)計要求錯誤!未定義書簽。</p><p><b>  二、總體設(shè)計3</b></p&

3、gt;<p>  三、 硬件原理圖4</p><p><b>  四、程序設(shè)計7</b></p><p><b>  五、調(diào)試過程15</b></p><p>  六、心得體會:16</p><p><b>  七、參考文獻(xiàn)17</b></p>

4、;<p><b>  一、課程設(shè)計要求</b></p><p><b>  1、要求</b></p><p>  選取8255A作為擴(kuò)展接口芯片,輸入設(shè)備為開關(guān)和非編碼鍵盤,輸出設(shè)備為發(fā)光二極管和七段數(shù)碼管。要求由鍵盤輸入倒計時時間(至少為三位,分和秒用“-”隔開),要求計時精度高于0.1秒,輸入計時時間后,由七段數(shù)碼管顯示并在開關(guān)

5、的控制下,實現(xiàn)“開始倒計時”、“暫停倒計時”和“結(jié)束倒計時”。倒計時結(jié)束、倒計時暫停、倒計時開始要由不同的發(fā)光二極管點(diǎn)亮或閃爍狀態(tài)予以指示。</p><p><b>  2、目的 </b></p><p>  單片機(jī)是一款功能十分強(qiáng)大,集成度非常高的數(shù)字處理系統(tǒng)。為了進(jìn)一步加強(qiáng)對理論理解的深度和掌握的程度,提高動手能力以及初步的系統(tǒng)分析與設(shè)計實現(xiàn)的能力,特作此設(shè)計。&

6、lt;/p><p><b>  二、總體設(shè)計</b></p><p><b>  1、總體要求</b></p><p>  設(shè)計中包括開關(guān)、非編碼矩陣鍵盤、發(fā)光二極管、七段數(shù)碼管在內(nèi)的兩種輸入設(shè)備和兩種輸出設(shè)備??傮w設(shè)計中至少要給出這4部分的硬件連接、軟件驅(qū)動、地址分配及相應(yīng)的設(shè)計原理的描述。</p><p

7、><b>  2、設(shè)計原理的描述</b></p><p>  電源開關(guān)=PC0,暫停開關(guān)=PC1;電源指示燈=PC7,暫停指示燈=PC6;PC0=1啟動,=0退出,PC1=1暫停,=0不暫停,電源燈常亮,暫停等閃爍,非暫停時刻熄滅。</p><p><b>  三、 硬件原理圖</b></p><p><b&g

8、t;  1、模塊一硬件圖</b></p><p>  圖 1 單片機(jī)原理圖</p><p><b>  2、模塊二引腳表</b></p><p>  表 1 74ls48引腳功能表</p><p><b>  3、模塊三字形顯示</b></p><p>  圖

9、 2 七段數(shù)碼管的字形</p><p>  圖 3 數(shù)碼管與各設(shè)備互連</p><p>  圖 4 鍵位碼與各設(shè)備原理圖</p><p><b>  四、程序設(shè)計</b></p><p><b>  1、程序流程圖</b></p><p><b>  圖 四 流程圖

10、</b></p><p><b>  2、源代碼</b></p><p>  data segment</p><p>  pap equ 218h</p><p>  pbp equ 219h</p><p>  pcp equ 21ah</p><p>  

11、cp equ 21bh ;控制字</p><p>  dp equ 210h ;段選</p><p>  wp equ 211h ;位選</p><p><b>  table dw</b></p><p>  0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180h&l

12、t;/p><p>  dw 0201h,0202h,0204h,0208h,0210h,0220h,0240h,0280h,0410h,0420h,0440h,0480h</p><p><b>  char db</b></p><p>  12,13,14,15,11,10,9,8,4,5,6,7,3,2,1,0</p><

13、p><b>  Da1 db</b></p><p>  3fh,30h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,58h,5eh,79h,71h,40h</p><p><b>  Cc1 dw ?</b></p><p><b>  Cc2 dw ?</b&g

14、t;</p><p><b>  W2 db ?</b></p><p><b>  data ends</b></p><p>  code segment</p><p>  assume cs:code,ds:data</p><p>  start:mov ax,da

15、ta</p><p><b>  mov ds,ax</b></p><p>  call kg ;開關(guān)</p><p>  mov w2,1 ;輸入第一個鍵位碼</p><p><b>  call key</b></p><p>  mov bh,[di]

16、;保存第一個鍵位碼</p><p>  mov w2,2 ;輸入第二個鍵位碼</p><p>  call dey </p><p>  mov bl,[di] ;保存第二個鍵位碼</p><p>  call zyc ;延遲程序</p><p>  call ds1 ;進(jìn)行

17、倒數(shù)程序</p><p>  mov ah,4ch</p><p><b>  int 21h</b></p><p>  dey proc ;按鍵子程序</p><p>  push si ;保存寄存器</p><p><b>  push ax</b

18、></p><p><b>  push bx</b></p><p><b>  push cx</b></p><p><b>  push dx</b></p><p>  mov al,82h ;初始化a口,c口為輸出,b口為輸入</p>&

19、lt;p><b>  mov dx,cp</b></p><p><b>  out dx,al</b></p><p><b>  mov ax,0</b></p><p>  r1:mov al,0 ;用反轉(zhuǎn)法對鍵位進(jìn)行掃描</p><p>  mov dx,pa

20、p</p><p><b>  out dx,al</b></p><p>  mov dx,pbp</p><p><b>  in al,dx</b></p><p>  cmp al,offh</p><p><b>  mov dx,di</b>

21、</p><p>  lea di,da1</p><p>  sub dx,cc1 ;還原[di]的值</p><p>  mov cc2,si ;找到[di](十位)數(shù)字的所在相對一個數(shù)的位置</p><p><b>  mov cx,si</b></p><p>  lea

22、 si,da1</p><p>  sub cx,si ;得到十位的循環(huán)次數(shù)</p><p>  mov si cc2 ;還原[s2]的值</p><p><b>  dec di</b></p><p><b>  sub dx,0</b></p><p>

23、  jz e2 ;判斷個位是不是為零;如果為0,跳過下面的調(diào)用</p><p>  call ds4 ;輸出在輸入時候不滿十個數(shù)的各位數(shù)字</p><p>  e2:sub cx,0</p><p>  jz e1 ;判斷十位是否為零,如果為0,跳過下面的調(diào)用</p><p>  dec si ;因為在前面已經(jīng)輸出了一次個位數(shù),

24、所以這里減一</p><p><b>  mov dx,10</b></p><p>  d5:lea di,da1+9 ;從第九個數(shù)開始倒數(shù),完成最后的倒數(shù)循環(huán)</p><p>  call ds4 ;進(jìn)行倒數(shù)</p><p>  dec si ;十位數(shù)字減一</p><p><

25、;b>  loop d5</b></p><p><b>  e1:pop ax</b></p><p><b>  pop bx</b></p><p><b>  pop cx</b></p><p><b>  pop dx</b>

26、</p><p><b>  pop si</b></p><p>  pop di ret</p><p><b>  ds1 endp</b></p><p>  ds4 proc ;倒數(shù)子程序</p><p><b>  push dx</b>&

27、lt;/p><p><b>  push cx</b></p><p><b>  push bx</b></p><p><b>  push ax</b></p><p><b>  mov cx,dx</b></p><p>  

28、dp1:mov dx,20</p><p>  dg2:push dx</p><p>  mov bh,[si]</p><p>  mov bl,[di]</p><p>  call zyc ;調(diào)用延遲程序</p><p>  call exit ;調(diào)用退出程序</p><p&g

29、t;  mov al,[si] ;顯示倒數(shù)的數(shù)字</p><p>  mov dx,211h</p><p><b>  out dx,al</b></p><p><b>  mov al,1</b></p><p>  mov dx,210h</p><p><

30、b>  out dx,al</b></p><p><b>  call yca</b></p><p>  mov al,[di]</p><p>  mov dx,211h</p><p><b>  out dx,al</b></p><p><

31、b>  mov al,2</b></p><p>  mov dx,210h</p><p><b>  out dx,al</b></p><p><b>  call yca</b></p><p><b>  call zyc</b></p>

32、<p><b>  pop dx</b></p><p><b>  dec dx</b></p><p><b>  cmp dx,0</b></p><p><b>  jnz dg2</b></p><p><b>  dec

33、 di</b></p><p><b>  loop dp1</b></p><p><b>  pop ax</b></p><p><b>  pop bx</b></p><p><b>  pop cx</b></p>&

34、lt;p><b>  pop dx</b></p><p><b>  ret</b></p><p><b>  ds4 endp</b></p><p>  yc proc ;延遲程序</p><p><b>  push cx</b><

35、/p><p><b>  push bx</b></p><p>  mov bx,5000</p><p>  yc1:movcx,4000</p><p><b>  loop $</b></p><p><b>  dec bx</b></p&g

36、t;<p><b>  jnz yc1</b></p><p><b>  pop bx</b></p><p><b>  pop cx</b></p><p><b>  mov bl,al</b></p><p>  mov cx of

37、ffh</p><p><b>  loop $</b></p><p><b>  mov dx,cp</b></p><p>  mov al,90h</p><p><b>  out dx,al</b></p><p>  mov dx,pbp&

38、lt;/p><p><b>  mov al,bl</b></p><p><b>  out dx,al</b></p><p><b>  movdx,pap</b></p><p><b>  in al,dx</b></p><p&

39、gt;<b>  mov ah,bl</b></p><p><b>  not ax</b></p><p>  lea si table</p><p>  lea di char</p><p><b>  mov cx,16</b></p><p&g

40、t;  r2:cmp ax,[si]</p><p><b>  jz nxt</b></p><p><b>  add si,2</b></p><p><b>  inc di</b></p><p><b>  loop r2</b></p&

41、gt;<p>  nxt:mov dx,dp ;將鍵盤上輸入數(shù)據(jù)顯示在數(shù)碼管上</p><p><b>  mov alw2</b></p><p><b>  out dx,al</b></p><p>  mov al,[di]</p><p><b>  out dx

42、,al</b></p><p><b>  mov dx,cp</b></p><p>  mov al,82h</p><p><b>  out dx,al</b></p><p><b>  call yc</b></p><p>&l

43、t;b>  pop dx</b></p><p><b>  pop cx</b></p><p><b>  pop ax</b></p><p><b>  pop si</b></p><p><b>  ret</b></p

44、><p><b>  key endp</b></p><p>  kg proc ;開關(guān)</p><p><b>  push ax</b></p><p><b>  push bx</b></p><p><b>  push cx<

45、;/b></p><p><b>  push dx</b></p><p>  mov dx,cp ;初始化c口為輸入,其他口為輸出</p><p>  mov al,89h</p><p><b>  out dx,al</b></p><p>  mov dx,

46、pcp</p><p>  kg1:in al,dx</p><p>  test al,1 ;當(dāng)k1為0時啟動程序</p><p><b>  jz kg1</b></p><p>  mov cx,5000h</p><p>  kg2:mov dx,pap</p><

47、;p>  mov al,ofeh</p><p><b>  loop kg2</b></p><p><b>  pop dx</b></p><p><b>  pop cx</b></p><p><b>  pop bx</b></p&

48、gt;<p><b>  pop ax</b></p><p><b>  ret</b></p><p><b>  kg endp</b></p><p>  ds1 proc ;倒數(shù)程序</p><p><b>  push di</b&g

49、t;</p><p><b>  push si</b></p><p><b>  push cx</b></p><p><b>  push ax</b></p><p>  lea si,da1</p><p>  lea di,da1</

50、p><p>  d1:cmp [di],bl </p><p><b>  jz d2</b></p><p><b>  inc di</b></p><p><b>  jmp d1</b></p><p>  d2:cmp [si],bh</p

51、><p><b>  jz d4</b></p><p><b>  inc si</b></p><p><b>  jmp d2</b></p><p>  d4:mov cc1,di</p><p>  yca proc ;延遲程序</p&g

52、t;<p><b>  push cx</b></p><p><b>  push bx</b></p><p>  mov bx,1500</p><p>  c2:mov cx,1000</p><p><b>  loop $</b></p>

53、<p><b>  dec bx</b></p><p><b>  jnz yc2</b></p><p><b>  pop bx</b></p><p><b>  pop cx</b></p><p><b>  ret<

54、;/b></p><p><b>  yca endp</b></p><p>  zyc proc ;延遲主程序,主要是用于顯示和延遲</p><p><b>  push si</b></p><p><b>  push di</b></p>&l

55、t;p><b>  push ax</b></p><p><b>  push bx</b></p><p><b>  push cx</b></p><p><b>  push dx</b></p><p>  s2:call exit<

56、;/p><p>  mov dx,cp ;初始化a口,b口為輸出,c口低四位為輸入,高四位為輸出</p><p>  mov al,81h</p><p><b>  out dx,al</b></p><p>  mov dx,pcp ;判斷k3是否為0,如果為0,則進(jìn)入延遲</p><p>&

57、lt;b>  in al,dx</b></p><p>  test al,4h</p><p><b>  jnz s3</b></p><p><b>  mov dx,dp</b></p><p>  mov al,01h</p><p><b&

58、gt;  out dx,al</b></p><p><b>  mov dx,wp</b></p><p><b>  mov al,bh</b></p><p><b>  out dx,al</b></p><p>  mov dx,pcp ;顯示燈<

59、/p><p><b>  mov al,0h</b></p><p><b>  out dx,al</b></p><p><b>  call yca</b></p><p><b>  mov dx,dp</b></p><p>

60、  mov al,02h</p><p><b>  out dx,al</b></p><p><b>  mov dx,wp</b></p><p><b>  mov al,bl</b></p><p><b>  out dx,al</b><

61、/p><p>  mov dx,pcp ;顯示燈滅</p><p>  mov al,40h</p><p><b>  out dx,al</b></p><p><b>  call yca</b></p><p><b>  jmp s2</b>&

62、lt;/p><p><b>  s3:pop dx</b></p><p><b>  pop cx</b></p><p><b>  pop bx</b></p><p><b>  pop ax</b></p><p><b

63、>  pop di</b></p><p><b>  pop si</b></p><p><b>  ret</b></p><p><b>  zyc endp</b></p><p>  exit proc ;退出程序</p><

64、;p><b>  push ax</b></p><p><b>  push bx</b></p><p><b>  push cx</b></p><p><b>  push dx</b></p><p><b>  push di

65、</b></p><p><b>  push si</b></p><p>  mov dx,cp ;初始化c口輸入,a,b口為輸出</p><p>  mov al,89h</p><p><b>  out dx,al</b></p><p>  mov

66、dx,pcp</p><p><b>  in al,dx</b></p><p>  test al,2h</p><p><b>  jz ex1</b></p><p>  mov ah,4ch</p><p><b>  int 21h</b>&

67、lt;/p><p>  ex1:pop si</p><p><b>  pop di</b></p><p><b>  pop dx</b></p><p><b>  pop cx</b></p><p><b>  pop bx</b

68、></p><p><b>  pop ax</b></p><p><b>  ret</b></p><p><b>  exit endp</b></p><p><b>  code ends</b></p><p>

69、<b>  end start</b></p><p><b>  五、調(diào)試過程</b></p><p>  首先將發(fā)光二級管,鍵盤,七段數(shù)碼管一個一個的分別進(jìn)行調(diào)用,在調(diào)試過程中,通過實驗的效果來發(fā)現(xiàn)錯誤的地方,并加以改善,直到調(diào)試到的結(jié)果與想要的現(xiàn)象相符,再將各模塊進(jìn)行拼接,進(jìn)行調(diào)試,調(diào)試成功為止。</p><p> 

70、 鍵盤和七段數(shù)碼管的程序模塊首先經(jīng)過單獨(dú)調(diào)試,然后在模塊拼接后再進(jìn)行調(diào)試。在調(diào)試過程中遇到的問題要給出分析過程及解決辦法。</p><p>  在調(diào)試過程中,首先出現(xiàn)的問題是在做發(fā)光二極管實驗中連線總是出現(xiàn)問題,導(dǎo)致部分指示燈不能準(zhǔn)確的顯示,經(jīng)調(diào)整實驗成功,在編程過程中也出現(xiàn)了由于對匯編語句撐握不夠熟練導(dǎo)致程序無法調(diào)試,檢查最終得以解決.其次是在七段數(shù)碼管顯示中出現(xiàn)多位顯示的閃爍問題,后經(jīng)老師指導(dǎo),檢查出是延時程

71、序出現(xiàn)問題,通過縮短刷新時間間隔將問題解決。</p><p>  在DOS狀態(tài)下編譯程序,編譯通過后建立連接。輸入文件名才能運(yùn)行程序。</p><p><b>  六、心得體會</b></p><p>  通過前幾個的小實驗,從中了解了輸出端口211h,還有每個數(shù)字輸出的位置由幾個數(shù)控制。若想在第一個位置上顯示則將210h處的dl賦值為1h,第

72、二個為2h,第三個為4h,第四個為8h,第五個為10h,第六個為20h,這只是在幾個位置上顯示單個的數(shù)。若想要顯示前3個位置,就將210h處的al賦值為7。在掌握8255A的工作方式 ,開始做實驗時,沒有想到延遲的位置,導(dǎo)致燈的閃爍沒有規(guī)律,其次程序正常執(zhí)行后,因把5、6的線序互相插反了,導(dǎo)致燈亮的順序發(fā)生了變化。最后燈循環(huán)時,最后2盞燈沒有循環(huán)到,因開始把燈設(shè)置為全亮,此時為0,占有用了一個空間,經(jīng)過幾次反復(fù)的試驗,做出了正確的程序。

73、在上面的實驗中,加了開關(guān)控制、暫停,退出一系列的操作。總體思想為當(dāng)開關(guān)1開時,流水燈開始循環(huán);當(dāng)開關(guān)2開時,流水燈暫停,流水燈繼續(xù)循環(huán)流動,當(dāng)開關(guān)2關(guān)時,流水燈暫停,開關(guān)1關(guān)閉。數(shù)碼管的顯示,之前是靜態(tài)的初始化,動態(tài)數(shù)碼管顯示是在靜態(tài)的基礎(chǔ)上修改完成的,首先判斷十位和個位上的數(shù)時,調(diào)用延遲的位置加錯了地方。因之前在實驗沒有加過數(shù)據(jù)段。所以在這次實驗中,數(shù)據(jù)段的使用不夠熟練,依次讀數(shù)中出錯了,在整體中沒有將數(shù)據(jù)保存,經(jīng)</p>

74、<p>  總得來說通過對<<微機(jī)接口技術(shù)>>這門課程的學(xué)習(xí) ,及后期的課程設(shè)計使我對單片機(jī)的基本結(jié)構(gòu)和特點(diǎn)、單片機(jī)的應(yīng)用模式和領(lǐng)域,以及單片機(jī)的供應(yīng)狀態(tài)有了進(jìn)一步的認(rèn)識,從而掌握了單片機(jī)與其他設(shè)備相連接的輸入輸出中斷等接口技術(shù)的基本知識,使我從硬件軟件彼此相結(jié)合的基礎(chǔ)上理論聯(lián)系實際,進(jìn)一步提高了動手能力,綜合應(yīng)用的同時對單片機(jī)應(yīng)用系統(tǒng)及其在計算機(jī)內(nèi)運(yùn)行過程中相應(yīng)步驟有了進(jìn)一步的認(rèn)識。</p&

75、gt;<p><b>  七、參考文獻(xiàn)</b></p><p>  1、趙秀珍,單永磊.單片微型計算機(jī)原理及應(yīng)用.中國水利水電出版社,2001年</p><p>  2、胡漢才. 單片原理及其接口技術(shù).北京:清華大學(xué)出版社,1996年</p><p>  3、孫一林.匯編語言程序設(shè)計.高等教育出版社,2001年</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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論