單片機與pc機通訊課程設(shè)計--8251a可編程通訊接口與pc機通訊_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計IV</b></p><p><b>  設(shè)計說明書</b></p><p>  數(shù)學(xué)與計算機科學(xué)學(xué)院</p><p>  2013年9月10日 </p><p><b>  課程設(shè)計任務(wù)書</b></p><p>

2、;  2013—2014學(xué)年第一學(xué)期</p><p>  課程設(shè)計名稱: 課程設(shè)計IV </p><p>  設(shè)計題目: 8251A可編程通訊接口與PC機通訊 </p><p>  完成期限:自 2013 年 9 月 2日至 2013年 9 月 14 日共 2 周</p><p>  設(shè)計依據(jù)要求及主要內(nèi)容<

3、;/p><p><b>  一、目的任務(wù):</b></p><p>  依據(jù)實驗器材提供的功能,利用可編程串行接口8251芯片,實現(xiàn)與PC機通訊。</p><p><b>  二、設(shè)計內(nèi)容:</b></p><p>  1. 復(fù)習(xí)相關(guān)課程內(nèi)容:微機原理及應(yīng)用課程相關(guān)內(nèi)容;匯編語言程序設(shè)計的相關(guān)內(nèi)容;熟悉

4、模擬電路、數(shù)字電路的相關(guān)知識;</p><p>  2. 熟悉實驗相關(guān)器材的主要功能。</p><p>  3. 在上述基礎(chǔ)上,根據(jù)課程設(shè)計的基本要求,完成以下各項任務(wù)(反映在設(shè)計說明書中):</p><p> ?。?)題目要求涉及的硬件電路圖及摘要說明。</p><p> ?。?)題目的工作原理及相應(yīng)描述。</p><p

5、> ?。?)程序流程框圖。</p><p>  (4)程序文本輸入及實驗完成。</p><p><b>  三、設(shè)計要求:</b></p><p>  1.軟件程序文檔 ;2.硬件電路圖(用專用軟件);3.完成實驗;4.完成設(shè)計說明書。</p><p><b>  課程設(shè)計評閱</b><

6、/p><p><b>  摘 要</b></p><p>  設(shè)計了一個8251可編程通訊接口與PC機通信,8251是一種可編程的通用同步/異步接收發(fā)送器,被廣泛應(yīng)用于Intel80X86為CPU的 微型計算機中。本設(shè)計采用8253芯片的分頻作為8251的收發(fā)時鐘頻率,實現(xiàn)8251可編程通信接口與PC機的通訊。 </p><p>  關(guān)鍵詞:異步

7、;串行通信;8251</p><p><b>  目 錄</b></p><p>  1課題描述······················

8、3;····································&#

9、183;······1</p><p>  2課題分析·························&

10、#183;····································

11、;····2</p><p>  2.1 8251基本功能··························

12、83;·································2</p><p&

13、gt;  2.2 8251的內(nèi)部結(jié)構(gòu)·································

14、3;························2</p><p>  2.3 8251編程字······

15、83;····································&

16、#183;·················2</p><p>  3.設(shè)計過程··············

17、;····································

18、83;···············4</p><p>  3.1 電路圖設(shè)計···············

19、3;····································&#

20、183;·········4</p><p>  3.2 硬件設(shè)計·····················

21、3;····································&#

22、183;····4</p><p>  3.3 軟件設(shè)計··························

23、3;····································4&

24、lt;/p><p>  4驗證測試································&

25、#183;································12</p><p>

26、  5總結(jié)····································

27、;·································13</p><p&g

28、t;  參考文獻···································&#

29、183;······························14</p><p><b>  1

30、課題描述</b></p><p>  利用8253芯片的分頻作為8251的收發(fā)時鐘頻率,8251異步串行通信,實現(xiàn)8251可編程通信接口與PC機的通訊。采用查詢 I/O方式,故收/發(fā)程序中只需檢查發(fā)/收準(zhǔn)備好的狀態(tài)是否置位,即可收發(fā) l個字節(jié),每按動一次任一數(shù)字鍵,就把該鍵值通過8251發(fā)送給PC機接收,并在PC機屏幕上顯示出該鍵值。</p><p><b>  2

31、課題分析</b></p><p>  2.1 8251基本功能</p><p>  8251A是一種可編程的通用同步/異步接收發(fā)送器,通常作為串行通信接口使用,被廣泛應(yīng)用Intel80X86為CPU的 微型計算機中。其基本功能為:</p><p>  (1)它是全雙工、雙緩沖器的接收/發(fā)送器。</p><p>  (2)可工作在同

32、步或異步工作方式。同步方式工作時,波特率在0~64K范圍內(nèi);異步方式時,波特率在0~ 9.2K范圍內(nèi)。</p><p>  (3)同步方式時,字符可選擇為5~8bit,可加奇偶校驗位,可自動檢測同步字符。</p><p>  (4)異步方式時,字符可選擇為5~8bit,可加奇偶校驗位,自動為每個字符添加一個啟動位,并允許通過編程選擇1、2.5、或2位停止位。</p><

33、p>  2.2 8251內(nèi)部結(jié)構(gòu)</p><p>  本設(shè)計采用異步方式,則由發(fā)送控制電路在其首尾加上起始位和停止位,然后從起始位開始,經(jīng)移位寄存器從數(shù)據(jù)輸出線TXD逐位串行輸出。</p><p>  圖 2.1 8251內(nèi)部結(jié)構(gòu)</p><p>  2.3 8251編程字</p><p><b>  工作方式控制字</

34、b></p><p>  D1D0確定是工作于同步方式還是異步方式。D1D0=00為同步方式,當(dāng)方式設(shè)為同步時,方式控制字后必須裝入 同步字符,并由同一個方式控制字規(guī)定裝入單同步字符還是雙同步字符;D1D0≠00為異步方式,且有3種組合來 選擇輸入的時鐘頻率與波特率之間的系數(shù)。</p><p>  D3D2確定每個字符的數(shù)據(jù)位(不包括奇偶校驗位)。</p><p&

35、gt;  D5D4確定是否校驗和奇偶校驗的性質(zhì)。</p><p>  D7D6含義因同步方式或異步方式而異。異步方式(D1D0≠00)時用來確定停止位個數(shù)。同步方式時D6用來確定 是內(nèi)同步(SYNDET腳為輸出)還是外同步(SYNDET為輸入),D7用來確定同步字符個數(shù)。外同步方式時,同步字 符只用于發(fā)送,接收時不作用。</p><p>  例:某異步通訊,數(shù)據(jù)位為8位,1位起始位、2位停

36、止位、奇校驗、波特率系數(shù)為16。</p><p>  則有:11011110B=0DEH</p><p>  MOV DX,309H ;8251A命令口</p><p>  MOV AL,0DEH</p><p><b>  OUT DX,AL</b></p><p>  (2)工作命令控制字&l

37、t;/p><p>  D0設(shè)置為1允許8251A開始發(fā)送操作。只有命令字的D0=1,引腳TXDRY(通知CPU:發(fā)送器準(zhǔn)備好)才可能有效(為1)??勺鳛榘l(fā)送中斷屏蔽位。</p><p>  D1 設(shè)置為1強制引腳DTR有效,表示數(shù)據(jù)終端準(zhǔn)備好,通知調(diào)制解調(diào)器:8251A已準(zhǔn)備好。 D2 設(shè)置為1允許8251A開始接收數(shù)據(jù)。只有命令字D2=1,RXRDY才有可能為1。允許接收時必須使錯誤標(biāo)志復(fù)

38、位(見D4)。在同步方式時還必須指定進入同步搜索操作(見D7)。</p><p>  D3設(shè)置為1迫使TXD端發(fā)送低電平,以此作斷點字符。</p><p>  D4設(shè)置為1則對狀態(tài)字中的所有操作出錯標(biāo)志(FE,OE,PE)復(fù)位。</p><p>  D5設(shè)置為1強制RTS引腳(請求發(fā)送)有效,向調(diào)制解調(diào)器提出發(fā)送請求。</p><p>  D

39、6設(shè)置為1強制8251A內(nèi)部復(fù)位,使之回到準(zhǔn)備接收方式字的狀態(tài)。</p><p>  D7只用于同步方式。為使8251A進入同步搜索操作,將輸入的信息和同步字符比較。</p><p><b>  (3)狀態(tài)字</b></p><p>  狀態(tài)字的作用是8251A向CPU送去數(shù)據(jù)傳送操作中的各種狀態(tài)信息。方式字,同步字符,命令字都是CPU寫入82

40、51A的,以控制8251A的工作方式和操作。那么,8251A在發(fā)送,接收數(shù)據(jù)的過程中實際工作狀態(tài)如何呢?如一個字符接收全了 沒有?接收的數(shù)據(jù)有沒有錯誤?有什么類型的錯 誤?發(fā)送緩沖器空了沒有?發(fā)送移位寄存器空了沒有?等等,這些在發(fā)送/接收數(shù)據(jù)操作過程中的狀態(tài)信息隨 時寄存在8251A內(nèi)部的狀態(tài)沖寄存器內(nèi),CPU可以通過I/O讀操作(=1)把狀態(tài)字讀入加以分析,控制CPU和 8251A之間的數(shù)據(jù)交換。狀態(tài)位D0(TXRDY)——發(fā)送器準(zhǔn)

41、備好。狀態(tài)位D1(RXRDY)——接收準(zhǔn)備好。</p><p>  狀態(tài)位D2(TxE)——發(fā)送器空。狀態(tài)位D3(PE)——奇偶校驗錯標(biāo)志</p><p>  狀態(tài)位D4(OE)——溢出(覆蓋)錯誤標(biāo)志。狀態(tài)位D5(FE)——幀格式錯誤標(biāo)志</p><p>  狀態(tài)位D6(SYNDET)——同步檢測。狀態(tài)位D7(DSR)——數(shù)據(jù)裝置準(zhǔn)備好。</p>&

42、lt;p><b>  3 設(shè)計過程</b></p><p><b>  3.1電路設(shè)計</b></p><p>  本次設(shè)計利用實驗機內(nèi)的8253芯片的分頻作為8251的收發(fā)時鐘頻率。利用實驗機內(nèi)小鍵盤,每按動一次任一數(shù)字鍵 ,就把該鍵值通過8251發(fā)送給PC機接收,并在PC機屏幕上顯示出該鍵值。</p><p> 

43、 圖3.1 8251與CPU的連接</p><p><b>  3.2 硬件設(shè)計</b></p><p>  采用最簡單的發(fā)送線TxD、接收線 RxD和 地線GND三 根線連接就能進行通信。采用8251A作為接口的主芯片再配置少量附加電路,如波特率發(fā)生器、 RS—232C 與TTL電平轉(zhuǎn)換電路、地址譯碼電路等就可構(gòu)成一個串行通信接口。</p><p

44、><b>  3.3 軟件設(shè)計</b></p><p><b>  (1) 程序流程圖</b></p><p>  圖3.2 主程序流程圖 圖3.3 中斷服務(wù)程序流程圖</p><p><b>  (2)程序清單</b><

45、/p><p>  CODE SEGMENT ;PC8251.ASM,8251TXD-->PCRXD</p><p>  ASSUME CS:CODE</p><p>  SECOPORT EQU 03F9H</p><p>  SEDAPORT EQU 03F8H</p><p>  P

46、A EQU 0FF21H ;字位口</p><p>  PB EQU 0FF22H ;字形口</p><p>  PC EQU 0FF23H ;鍵入口</p><p><b>  ORG 1A00H</b></p><p&g

47、t;  START: JMP START0</p><p>  BUF DB </p><p>  KZ DB </p><p>  lcntkz dw </p><p>  ;lkey db &l

48、t;/p><p>  zp dw </p><p>  data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH</p><

49、p>  START0: call for8251</p><p>  mov zp,offset buf</p><p>  CALL BUF1 ;DISP:8251-1</p><p>  redikey: call dispkey</p><p>  cmp KZ,10h</p><p><b

50、>  jc wattxd</b></p><p>  jmp funckey</p><p>  WATTXD: MOV DX,SECOPORT</p><p><b>  IN AL,DX</b></p><p>  TEST AL,01H</p><p><b&g

51、t;  JZ WATTXD</b></p><p><b>  MOV AL,KZ</b></p><p>  MOV DX,SEDAPORT</p><p><b>  OUT DX,AL</b></p><p><b>  mov bx,zp</b></p

52、><p>  mov [bx],al</p><p>  cmp bx,offset buf+5</p><p><b>  jz zp1</b></p><p><b>  inc bx</b></p><p><b>  mov zp,bx</b><

53、;/p><p>  jmp redikey</p><p>  zp1: mov zp,offset buf</p><p>  jmp redikey</p><p>  funckey: CMP KZ,1FH</p><p>  JNZ REDIKEY</p>&l

54、t;p>  call buf2 ;good</p><p>  monit: CALL DISP</p><p><b>  JMP monit</b></p><p>  dispkey: call disp</p><p><b>  call key</b></p

55、><p>  XD: MOV BX,lcntkz</p><p>  MOV CX,[BX]</p><p><b>  MOV AH,AL</b></p><p><b>  CMP AL,CH</b></p><p><b>  JE XD1<

56、/b></p><p>  MOV CL,88H</p><p>  XD1: DEC CL</p><p>  CMP CL,82H</p><p><b>  JE XD3</b></p><p>  CMP CL,0EH</p><p><b

57、>  JE XD3</b></p><p>  CMP CL,00H</p><p><b>  JE XD2</b></p><p>  MOV AL,20H</p><p><b>  JMP XD3</b></p><p>  XD2:

58、 MOV CL,0FH</p><p>  XD3: MOV BX,lcntkz</p><p><b>  MOV CH,AH</b></p><p>  MOV [BX],CX</p><p><b>  mov kz,al</b></p>

59、<p><b>  RET</b></p><p>  key: mov al,0ffh</p><p>  mov dx,0ff22h</p><p><b>  out dx,al</b></p><p>  mov bl,00h</p><

60、;p>  mov ah,0feh</p><p>  mov cx,08h</p><p>  key1: mov al,ah</p><p>  mov dx,0ff21h</p><p><b>  out dx,al</b></p><p>  rol al,

61、01h</p><p><b>  mov ah,al</b></p><p><b>  nop</b></p><p><b>  nop</b></p><p><b>  nop</b></p><p><b> 

62、 nop</b></p><p><b>  nop</b></p><p><b>  nop</b></p><p>  mov dx,0ff23h</p><p><b>  in al,dx</b></p><p><b>

63、  not al</b></p><p><b>  nop</b></p><p><b>  nop</b></p><p>  and al,0fh</p><p><b>  jnz key2</b></p><p><b>

64、;  inc bl</b></p><p>  loop key1 </p><p><b>  jmp nkey</b></p><p>  key2: test al,01h</p><p><b>  je key3</b></p><p>  

65、mov al,00h</p><p><b>  jmp key6</b></p><p>  key3: test al,02h</p><p><b>  je key4</b></p><p>  mov al,08h</p><p><b>  j

66、mp key6</b></p><p>  key4: test al,04h</p><p><b>  je key5</b></p><p>  mov al,10h</p><p><b>  jmp key6</b></p><p>  key

67、5: test al,08h</p><p><b>  je nkey</b></p><p>  mov al,18h</p><p>  key6: add al,bl</p><p>  cmp al,10h</p><p><b>  jnc

68、 fkey</b></p><p><b>  mov bl,al</b></p><p><b>  MOV BH,0H</b></p><p>  MOV SI,OFFSET DATA2</p><p>  MOV AL,[bx+si]</p><p><

69、;b>  RET</b></p><p>  nkey: MOV AL,20h</p><p><b>  fkey: ret</b></p><p>  data2:DB 07h,04h,08h,05h,09h,06h,0ah,0bh,DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh</p>

70、<p>  for8251: CALL T8253</p><p>  MOV AL,65H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,03f9h</p><p>  MOV AL,25h</p><p><b>  OUT D

71、X,AL</b></p><p>  MOV DX,03f9h</p><p>  MOV DX,65h</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,03f9h</p><p>  MOV AL,4eh</p><p&g

72、t;<b>  OUT DX,AL</b></p><p>  MOV DX,03f9H</p><p>  MOV AL,25h</p><p><b>  out dx,al</b></p><p><b>  ret</b></p><p>  T

73、8253: MOV DX,43H ;9600</p><p>  MOV AL,76H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,41H</p><p>  MOV AL,0CH</p><p><b>  OUT DX,AL</b

74、></p><p>  MOV DX,41H</p><p>  MOV AL,00H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,03F9H</p><p>  MOV DX,03f9h</p><p><b>

75、;  RET</b></p><p>  DISP: MOV AL,0FFH ;00H</p><p><b>  MOV DX,PA</b></p><p><b>  OUT DX,AL</b></p><p>  MOV CL,0DFH ;20H ;顯示子程序 ,5ms <

76、/p><p>  MOV BX,OFFSET BUF</p><p>  DIS1: MOV AL,[BX]</p><p>  MOV AH,00H</p><p><b>  PUSH BX</b></p><p>  MOV BX,OFFSET DATA1</p><p&

77、gt;<b>  ADD BX,AX</b></p><p>  MOV AL,[BX]</p><p><b>  POP BX</b></p><p><b>  MOV DX,PB</b></p><p><b>  OUT DX,AL</b><

78、;/p><p><b>  MOV AL,CL</b></p><p><b>  MOV DX,PA</b></p><p><b>  OUT DX,AL</b></p><p><b>  PUSH CX</b></p><p>

79、  DIS2: MOV CX,00A0H</p><p><b>  INC BX</b></p><p>  ROR CL,1 ;SHR CL,1</p><p><b>  JMP DIS1</b></p><p>  LX1: MOV AL,0FFH</p><p&

80、gt;<b>  MOV DX,PB</b></p><p><b>  OUT DX,AL</b></p><p><b>  RET</b></p><p>  BUF1: MOV BUF,08H</p><p>  MOV BUF+1,02H</p>&

81、lt;p>  MOV BUF+2,05H</p><p>  MOV BUF+3,01H</p><p>  MOV BUF+4,17H</p><p>  MOV BUF+5,01H</p><p><b>  RET</b></p><p>  BUF2: MOV BUF,09H&l

82、t;/p><p>  MOV BUF+1,00H</p><p>  MOV BUF+2,00H</p><p>  MOV BUF+3,0dH</p><p>  MOV BUF+4,10H</p><p>  MOV BUF+5,10H</p><p><b>  RET</b&

83、gt;</p><p>  BUF3: MOV BUF,0eH</p><p>  MOV BUF+1,18H</p><p>  MOV BUF+2,18H</p><p>  MOV BUF+3,10H</p><p>  MOV BUF+4,10H</p><p>  MOV BUF+

84、5,10H</p><p><b>  RET</b></p><p>  CODE ENDS</p><p><b>  END START</b></p><p><b>  4 驗證測試</b></p><p>  采用DICE-8086對本

85、設(shè)計進行驗證。在P.態(tài)下,運行實驗程序,如在PC機和實驗系統(tǒng)聯(lián)機狀態(tài)下,可用鼠標(biāo)左鍵單擊菜單欄“文件”或工具欄“新建圖標(biāo)”, 建立以“.ASM”為后綴的文件,輸入源文件并保存,再單擊工具欄中編譯,即可完成源文件自動編譯、裝載目標(biāo)代碼功能,再單擊“調(diào)試”中“R運行”或工具圖標(biāo)運行,運行后的結(jié)果如圖4.1,此時數(shù)碼顯示8251—1,等待按鍵,發(fā)送鍵值;運行“串口調(diào)試助手”,按動小鍵盤數(shù)字鍵,在PC機屏幕上顯示相應(yīng)的數(shù)字,按MON鍵發(fā)送結(jié)束,

86、串口調(diào)試助手顯示如圖4.2。按RST鍵,返回P.態(tài)。</p><p><b>  測試結(jié)果如下:</b></p><p>  圖4.1 裝載運行程序結(jié)果</p><p>  圖4.2 小鍵盤輸入后串口調(diào)試助手顯示</p><p><b>  5總結(jié)</b></p><p> 

87、 課程設(shè)計的過程是艱辛的,但是收獲卻是很大的。這次課程設(shè)計主要是應(yīng)用以前學(xué)習(xí)的8253芯片的分頻作為8251的收發(fā)時鐘頻率,8251異步串行通信,實現(xiàn)8251可編程通信接口與PC機的通信,每按動一次任一數(shù)字鍵,就把該鍵值通過8251發(fā)送給PC機接收,并在PC機屏幕上顯示出該鍵值。 </p><p>  首先,綜合課程設(shè)計把以前學(xué)習(xí)到的知識得到鞏固和進一步的提高認(rèn)識,對已有知識有了更進一步的理解和認(rèn)識,再次,在課程

88、設(shè)計中碰到了很多的問題,通過查閱相關(guān)書籍資料,自己鉆研,特別是得到了老師的諄諄教導(dǎo),老師給予了我很大的幫助,不僅給了我思路上的開闊,還讓我認(rèn)識到了自己對以前所學(xué)知識的不足方面。當(dāng)然,通過這次課程設(shè)計,也發(fā)現(xiàn)了自身的很多不足之處,在以后的學(xué)習(xí)中,會不斷的完善自我,不斷進取,能使自己有一個大的發(fā)展。</p><p><b>  參考文獻</b></p><p>  [1]

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論