接口通訊課程設(shè)計(jì)
接口通訊課程設(shè)計(jì),接口,通訊,通信,課程設(shè)計(jì)
設(shè)計(jì)目的及任務(wù):了解PC機(jī)串行口的使用。(1) 用RS-232C的零MODEN的連接法連好兩機(jī)的連線(xiàn);(2) 用DEBUG的O命令將一數(shù)發(fā)送到串行口(3F8H/2F8H),然后再另一臺(tái)機(jī)上用DEBUG的I命令讀入串行口的內(nèi)容。如果發(fā)送的內(nèi)容與接受的內(nèi)容一致,說(shuō)明兩機(jī)已經(jīng)連好線(xiàn),否則必須檢查連線(xiàn),直到兩機(jī)可通訊為止;(3) 編一程序,將一臺(tái)機(jī)的鍵盤(pán)輸入的鍵值通過(guò)RS-232C口傳送到另一臺(tái)機(jī),并在CRT上顯示鍵值,實(shí)現(xiàn)遠(yuǎn)程鍵盤(pán)功能;(4) 編一程序,通過(guò)RS-232C口進(jìn)行一臺(tái)機(jī)到另一臺(tái)機(jī)的文件復(fù)制。(即將一臺(tái)機(jī)上的文件傳送到另一臺(tái)機(jī)上)設(shè)計(jì)所需設(shè)備及環(huán)境:PC機(jī)、RS-232C插座及連線(xiàn),選擇Win-TC可視化編程環(huán)境設(shè)計(jì)概要:1 首先由主函數(shù)輸出初始界面,并提示用戶(hù)選擇所需功能。如下:2 本設(shè)計(jì)中通過(guò)零MODEM來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳輸。1) 發(fā)送字符串功能由SendString()函數(shù)實(shí)現(xiàn):先由鍵盤(pán)輸入字符串并以Esc結(jié)尾,由putchar(c)將字符c寫(xiě)到標(biāo)準(zhǔn)輸出設(shè)備,之后讀取線(xiàn)路狀態(tài)寄存器并測(cè)試發(fā)送保持寄存器是否為空,當(dāng)為空時(shí)發(fā)送一個(gè)字符到端口。重復(fù)以上過(guò)程發(fā)送字符串,直到遇到ESC退出發(fā)送;2) 接收字符串功能由void ReceiveString()函數(shù)實(shí)現(xiàn),與發(fā)送字符串不同的是, 通過(guò)讀取線(xiàn)路狀態(tài)寄存器,當(dāng)接收數(shù)據(jù)準(zhǔn)備好時(shí),從該口讀入數(shù)據(jù)并以#結(jié)束;3) 發(fā)送文件功能由void Sendfile()函數(shù)實(shí)現(xiàn),如果按照用戶(hù)輸入的文件路徑和文件名,文件能被成功打開(kāi),則把文件的內(nèi)容逐一讀出,如果查詢(xún)到狀態(tài)寄存器的發(fā)送保持寄存器空”位的值為真,那么就把數(shù)據(jù)發(fā)送到寄存器,從文件中讀出要一直讀到文件的結(jié)尾為止;4) 接收文件功能由void Receivefile()函數(shù)實(shí)現(xiàn),首先新建文件,再打開(kāi)此文件,當(dāng)查詢(xún)到狀態(tài)寄存器的接收數(shù)據(jù)準(zhǔn)備好為真,就在文件的當(dāng)前位置寫(xiě)入一個(gè)字符,最后關(guān)閉文件,和文件句柄handle(由open()函數(shù)產(chǎn)生)。 printf(nn ok! n);串行口的有關(guān)硬件資料9芯接口標(biāo)準(zhǔn)()引腳:,載體檢測(cè);()引腳:,接收數(shù)據(jù);()引腳:,發(fā)送數(shù)據(jù);()引腳:,終端準(zhǔn)備好;()引腳:信號(hào)地;()引腳:,準(zhǔn)備好;()引腳:,請(qǐng)求發(fā)送;()引腳:,清除發(fā)送;()引腳:,響鈴指示。29芯的零的連接方法3線(xiàn)路控制寄存器(端口地址3FBH/2FBH) 其中:奇偶校驗(yàn)停止位 字長(zhǎng)無(wú)效驗(yàn) 奇效驗(yàn).5(字長(zhǎng)為位時(shí)) 6 1 1 偶效驗(yàn)(字長(zhǎng)為6,7,8位時(shí)) 1 0 71 1 8 4.可編程波特率發(fā)生器(3F9H,3F8H,或2F9,2F8H)時(shí),向(高八位),(低八位)寫(xiě)入位數(shù),即可對(duì)1.8432hz的時(shí)鐘分頻,得到串行口的波特率。公式為:波特率=1846200/(分頻值)輸入頻率1.8432hz波特率分頻器分頻器60000HC0H120000H60H180000H40H200000H3AH240000H30H360000H20H480000H18H720000H10H960000H0CH1920000H03H5.線(xiàn)路狀態(tài)寄存器(3FDH/2FDH)6.中斷識(shí)別寄存器(3FAH/2FAH)其中:D2 D1 D0 中斷來(lái)源 NONE1 1 0 線(xiàn)路故障1 0 接收數(shù)據(jù)準(zhǔn)保好發(fā)送保持寄存器ODEM中斷7.中斷允許寄存器(3F9H/2F9H,且DLAB=0)8.MODEM控制寄存器(3FEH/2FEH)9.MODEM控制寄存器 (3FEH/2FEH )8250內(nèi)部寄存器端口地址及讀寫(xiě)情況端口地址寄存器名稱(chēng)讀寫(xiě)3F8H發(fā)送保持寄存器3F8H接收數(shù)據(jù)寄存器3F8H波特率分頻器3F9H波特率分頻器3F9H中斷允許寄存器3FAH中斷標(biāo)識(shí)寄存器3FBH線(xiàn)路控制寄存器3FHMODEM控制寄存器3FDH線(xiàn)路狀態(tài)控制器3FEHMODEM狀態(tài)寄存器10.以上四.3四.4介紹的寄存器中D7D0的各位均為1有效,0無(wú)效功能實(shí)現(xiàn):數(shù)據(jù)收發(fā)時(shí),一臺(tái)機(jī)選擇發(fā)送信息,另一臺(tái)選擇接收信息。雙方用鍵盤(pán)進(jìn)行輸入,就可以發(fā)送、接收信息。文件收發(fā)時(shí) 一臺(tái)機(jī)選擇發(fā)送文件, 另一臺(tái)選擇接收文件。發(fā)送方輸入要發(fā)送的文件的路徑就可以傳送文件,系統(tǒng)將提示接收方輸入所要保存的文件的名稱(chēng)。 程序代碼:#include /* creat函數(shù)的參數(shù)S_IREAD S_IWRITE要用到 */#include /* for creat (file) function */#include /* 文件指針結(jié)構(gòu)體FILE的頭文件 | putchar() */#include /* for outportb function */void Init(void)/*以下為8250的初始化 */ outportb(0x3fb,0x80); /* 波特率的最高位置1 */ outportb(0x3f8,0x0c); /* 除數(shù)低位 */ outportb(0x3f9,0x00); /* 除數(shù)高位 */ outportb(0x3fb,0x0f); /* 設(shè)置幀格式 奇校驗(yàn),2停止位, 8字長(zhǎng)*/ outportb(0x3f9,0x0f); /* 允許所有中斷 */ outportb(0x3fc,0x0b); /* 由于使用零modem連接使其恒有效 */void SendChar() unsigned char status; int i,c; int flag=1; printf(Input a character:(press ESC to back)n); while(flag) c=getch(); putchar(c); /* 將字符顯示輸出 */ if (c=27) flag=0; /* 按esc退出輸入 */ do status=inportb(0x3fd); /* 讀取通信線(xiàn)路狀態(tài)寄存器 */ status=status & 0x20; /* 測(cè)試發(fā)送保持寄存器是否為空(第5位) */ while (status=0); /*直到發(fā)送狀態(tài)寄存器為空*/ outportb(0x3f8,c);/* 發(fā)送字符到端口 */ printf(tsend out successful!n); void ReceiveChar() int i; char ch=0; unsigned char status; printf(Receiving .n); while(ch!=#) do status=inportb(0x3fd); /* 讀取線(xiàn)路狀態(tài)寄存器 */ status=status & 0x01; while (status=0); /* 直到接收數(shù)據(jù)就緒*/ ch=inportb(0x3f8); /* 從該口讀入數(shù)據(jù) */ putchar(ch); void Sendfile() FILE *in; char ch; char infile255; unsigned char status; int flag=1,i; printf(Enter the infile name :n); scanf(%s,infile); getchar(); if(in=fopen(infile,rb)=NULL)/*無(wú)法讀取文件*/ printf(cannot open infilen); exit(0); printf(Sending file.nn); while(flag) ch=fgetc(in); putchar(ch); if(ch=EOF) /* 讀到文件的結(jié)束符時(shí)退出 */ fclose(in); /*關(guān)閉文件*/ flag=0; /*標(biāo)志位改為零*/ do status=inportb(0x3fd); /*線(xiàn)路狀態(tài)寄存器*/ status=status & 0x20; /* 測(cè)試發(fā)送保持寄存器是否為空 */ while (status=0); outportb(0x3f8,ch);/* 發(fā)送字符到端口*/ printf(nncompleten);void Receivefile() FILE *fp; int handle; int flag=1; char c; int i; unsigned char status; char fname255; /* 本地接收文件的名字 */ printf(please enter the file name!n); scanf(%s,fname); getchar(); handle=creat(fname, S_IREAD|S_IWRITE); /* 創(chuàng)建一個(gè)文件fname */ if(handle=-1) /*創(chuàng)建失敗*/ printf(Creat file Faild.n); exit(0); if(fp=fopen(fname,wb)=NULL) /*打開(kāi)文件失敗*/ printf(Open file Faild.n); exit(0); printf(Receiving file.nn); while(flag) do status=inportb(0x3fd);/* 查詢(xún)是否接受到數(shù)據(jù) */ status=status & 0x01; while (status=0); c=inportb(0x3f8); /* 從該口讀入數(shù)據(jù) */ if(c!=EOF) /*不是最末*/ printf(%c,c); fputc(c,fp); /* 在文件的當(dāng)前位置寫(xiě)入一個(gè)字符*/ continue; fclose(fp); /* 關(guān)閉文件 */ flag=0; close(handle); /* 要關(guān)閉的文件句柄handle?創(chuàng)建文件時(shí)產(chǎn)生*/ printf(nn ok! n);void main() char ch; Init(); while(ch!=5) clrscr(); printf(*n); printf( The connection between two PC n); printf(*n); printf(n); printf(*n); printf( PRODUCER n); printf( panxinwei 3106006671 n); printf( AND n); printf( pengbo 3106006672 n); printf(*n); printf(n); printf(*n); printf(* 1.Send Char *n); printf(* 2.Send File *n); printf(* 3.Receive Char *n); printf(* 4.Receive File *n); printf(* 5.Exit *n); printf(*n); printf( n); printf(Please enter your choice :); ch=getchar(); getchar(); switch(ch) case1:SendChar(); break; case2:Sendfile(); break; case3:ReceiveChar(); break; case4:Receivefile(); break; case5: break; default: printf(Error!n); 第9頁(yè)
壓縮包目錄 | 預(yù)覽區(qū) |
|
請(qǐng)點(diǎn)擊導(dǎo)航文件預(yù)覽
|
編號(hào):2680878
類(lèi)型:共享資源
大?。?span id="ykuktmy" class="font-tahoma">114.05KB
格式:RAR
上傳時(shí)間:2019-11-28
15
積分
積分
- 關(guān) 鍵 詞:
- 接口 通訊 通信 課程設(shè)計(jì)
- 資源描述:
-
接口通訊課程設(shè)計(jì),接口,通訊,通信,課程設(shè)計(jì)展開(kāi)閱讀全文
裝配圖網(wǎng)所有資源均是用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶(hù)書(shū)面授權(quán),請(qǐng)勿作他用。
鏈接地址:http://m.italysoccerbets.com/p-2680878.html