第一篇:串口通信實驗報告
實驗三
雙機通信實驗
一、實驗目的
UART 串行通信接口技術應用
二、實驗實現的功能
用兩片核心板之間實現串行通信,將按鍵信息互發到對方數碼管顯示。
三、系統硬件設計
(1)單片機的最小系統部分
(2)電源部分
(3)人機界面部分
數碼管部分
按鍵部分
(4)串口通信部分
四、系統軟件設計
#include
sbit H1=P3^6;sbit H2=P3^7;sbit L1=P0^5;sbit L2=P0^6;sbit L3=P0^7;
uint m=0,i=0,j;uchar temp,prt;/***y延時函數***/ void delay(uint k){ uint i,j;
}
/***鍵盤掃描***/ char scan_key(){ H1=0;H2=0;
L1=1;L2=1;L3=1;if(L1==0){ delay(5);if(L1==0){ L1=0;H1=1;H2=1;if(H1==0)} //定義局部變量ij
//外層循環 for(i=0;i { m=1;return(m);} if(H2==0){ m=4;return(m);} } } //KEY1鍵按下 //KEY4鍵按下 if(L2==0){ delay(5);if(L2==0){ L2=0;H1=1;H2=1;if(H1==0) { m=2;return(m);} if(H2==0){ m=5;return(m);} } } //KEY5鍵按下 //KEY2鍵按下 if(L3==0){ delay(5);if(L3==0){ L3=0;H1=1;H2=1;if(H1==0){ m=3; //KEY3鍵按下 } return(m);} if(H2==0){ m=6;return(m);} } } return(0); // KEY6鍵按下 /***主函數***/ main(){ P1M1=0x00;P1M0=0xff; SCON=0x50;//設定串行口工作方式1 TMOD=0x20;//定時器1,自動重載,產生數據傳輸速率 TH1=0xfd;//數據傳輸率為9600 TR1=1;//啟動定時器1 P0&=0xf0;while(1){ //如果有按鍵按下 if(scan_key()){ SBUF=scan_key();//發送數據 while(!TI);TI=0;} if(RI){ RI=0;} // // 等待數據傳送 清除數據傳送標志 //是否有數據到來 // 清除數據傳送標志 temp=SBUF; // 將接收到的數據暫存在temp中 P1=code0[temp];// 數據傳送到P1口輸出 delay(500);} } //延時500ms 五、實驗中遇到的問題及解決方法 (1)串行口和定時器的工作方式設定是關鍵,本次是按需傳輸的是兩位十六進制數,串行口為工作方式1,定時器為8位自動重載;(2)采用P0&=0xf0語句使4個數碼管靜態點亮; (3)在發送和接受過程中,用標識位TI和RI來檢測發送和接受是否完成;(4)在用電腦和單片機進行串口通信測試時,電腦的傳世速率一定要和單片機的傳輸速率相等,否則顯示會出現錯誤。 指導老師簽字: 日期: 華南農業大學 實驗報告 ----------目錄---------- 1、實驗任務和目的..............................................................................................................2、實驗準備..........................................................................................................................3、實驗步驟................................................................................................................................4、實驗分析與總結....................................................................................................................(1)、分析.............................................................................................................................(2)、總結.............................................................................................................................1、實驗任務和目的 了解串行通信的背景知識后,通過三線制制作一條串口通信線(PC-PC),并編程實現兩臺PC間通過RS-232C通信。要求兩臺PC機能進行實時的字符通信,并了解工業自動化控制中的基本通信方式。 2、實驗準備 1、檢查PC是否具有串行通信接口,并按其針腳類準備一條串口通信線纜。 2、串口包的安裝,下載javacomm20-win32.zip并解壓,將win32com.dll復制到 3、實驗步驟 1、將實驗所需RS-232纜線準備好,并將JAVA串口包復制到相應地目錄下。 2、查找有關串口通信的書籍以及在網上查找相應地串口通信代碼。 3、用JAVA編程軟件JCreator編寫代碼。 4、實驗分析與總結 (1)、分析 (I)、對串口讀寫之前需要先打開一個串口并檢測串口是否被占用: public void open(){//打開串口以及輸入輸出流 recieve=false; try {serialPort=(SerialPort)portId.open(“Serial Communication”, 2000);} catch(PortInUseException e){System.out.println(“端口正被占用!”);} try {serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);} catch(UnsupportedCommOperationException e){System.out.println(“不支持通信”);} try { outputStream=serialPort.getOutputStream(); inputStream=serialPort.getInputStream(); 1-完整運行程序如圖所示: 圖1 (2)、總結 通過本次串口實驗,我對串口通信的知識了解的更透徹,這是在剛開始對串口通信知識不了解的情況下就編程而造成許多錯誤之后才得到的結果。在網上查找資料的時候也接觸到了不少其他的編程語言例如VB,delphi,C#等,這也讓我對這些從沒有學過的語言有所了解,我想這些知識對以后的實驗工作都有幫助。 3-- 網絡編程與實踐實驗報告 實驗內容:串口通信編程 學號:S201502189 姓名:職榮豪 日期:2015-9-28 一、實驗要求 使用VS2010編寫基于對話框的MFC應用程序,兩個窗口分別使用兩個串口,使得這兩個窗口可以進行通信,包括數據的發送與接收。 二、實驗原理 本實驗使用Microsoft Communications Control控件,利用這個ActiveX控件,只需要編寫少量代碼即可輕松進行通信。 該控件相關的函數如下: put__CommPort:設置串口號 put_Settings:以字符串的形式設置波特率、奇偶校驗位(n-無校驗,e-偶校驗,o-奇校驗)、數據位數、停止位數 put_InputMode:設置接收數據的類型(0-文本類型,1-二進制類型)put_InputLen:設置從接收緩沖區讀取的字節數,0表示全部讀取 put_InBufferSize:設置接收緩沖區大小 put_OutBufferSize:設置發送緩沖區大小 put_RThreshold:設定當接收幾個字符時觸發OnComm事件,0表示不產生事件,1表示每接收一個字符就產生一個事件 put_SThreshold:設定在觸發OnComm事件前,發送緩沖區內所允許的最少的字符數,0表示發送數據時不產生事件,1表示當發送緩沖區空時產生OnComm事件 put_PortOpen:打開或關閉串口,傳入參數為true時打開串口,傳入參數為false時關閉串口 get_CommEvent:獲得串口上剛發生的事件,事件值為2表示接收到數據 get_InBufferCount:獲得緩沖區中的數據位數 get_Input:獲取緩沖區數據,返回類型為VARIANT put_Output:發送數據 三、設計思路 需要添加一個Microsoft Communications Control控件,用于進行串口通信。由于要求同一程序可運行兩個窗口進行相互通信,需要兩個窗口開啟兩個不同串口,故需要添加一個Edit Control控件用于輸入串口號,并添加打開串口按鈕,在點擊該按鈕時對串口控件的參數進行設置并開啟串口。同時添加關閉串口按鈕,點擊后關閉串口并可以對串口號進行修改。 需要添加兩個Edit Control 分別用于顯示接收到的數據以及輸入要發送的數據。需要添加一個發送按鈕,點擊后發送輸入的數據。 四、實驗步驟 1.建立基于對話框的MFC應用程序 2.添加界面控件并設置ID與Caption 添加Microsoft Communications Control控件,用于進行串口通信 添加一個Edit Control控件,用于輸入串口號,ID設置為IDC_PORT 添加一個Static Text控件,用于標注端口號,將Caption設置為“串口號:” 添加兩個按鈕,分別用于打開串口、關閉串口。IDC分別設置為IDC_BTN_OPEN、IDC_BTN_CLOSE,Caption分別設置為“打開”、“關閉” 添加兩個Edit Control,分別用于顯示接收到的數據以及輸入要發送的數據,ID分別設置為IDC_RECEIVE、IDC_SEND 添加兩個Static Text控件,用于標注接收區與發送區,Caption分別設置為“接收區”、“發送區” 添加一個按鈕用于發送數據,ID設置為IDC_BTN_SEND,Caption設置為“發送” 調整控件的大小與位置。 完成后如圖: 3.給控件綁定變量 右鍵單擊Microsoft Communications Control控件,選擇“添加變量”,變量名為m_com 打開類向導給控件添加變量: 給IDC_PORT綁定變量,用于存放輸入的端口號,數據類型為int,變量名為m_port 給IDC_RECEIVE綁定變量,用于存放接收到的數據,數據類型為CString,變量名為m_strReceive 給IDC_SEND綁定變量,用于存放輸入的待發送的數據,數據類型為CString,變量名為m_strSend 4.給控件添加事件響應函數 右鍵單擊Microsoft Communications Control控件,選擇“添加事件處理程序”,點擊“添加編輯”,生成響應函數,此函數用于接收數據。 在函數中添加以下代碼: UpdateData(TRUE);if(nEvent == 2){ } UpdateData(FALSE);//將m_strReceive的值顯示到控件中 //更新m_strReceive的值 //獲取事件值 //獲取緩沖區位數 //時間值為2,此時為收到數據 int nEvent = m_com.get_CommEvent();int k = m_com.get_InBufferCount();if(k <= 0)//位數小于等于0時則返回 return;char* str =(char*)m_com.get_Input().parray->pvData;//獲取接收到數據的字*(str + k)= '
主站蜘蛛池模板:
无码一区二区|
好好日网站|
性无码免费一区二区三区在线网站|
国产精品免费久久久久电影|
亚洲国产成人久久精品99|
精品国产一区二区三区四区vr|
欧美性暴力变态xxxx|
无码av片av片av无码|
亚洲午夜理论片在线观看|
亚洲性色av日韩在线观看|
日本一区二区三区日本免费|
双腿张开被9个黑人调教影片|
国产成人精品一区二区三区无码|
欧美 偷窥 清纯 综合图区|
亚洲一卡二卡三卡四卡无卡麻豆|
天天躁日日躁狠狠躁欧美老妇小说|
久久精品国产99国产精品|
国产亚洲精品久久久久久久久动漫|
级r片内射在线视频播放|
久久无码av一区二区三区电影网|
亚洲精品综合网在线8050影院|
一区二区狠狠色丁香久久婷婷|
女的被弄到高潮娇喘喷水视频|
国产片av片永久免费观看|
欧美性生交xxxxx无码久久久|
久久久精品人妻一区亚美研究所|
亚洲精品一区二区三区蜜臀|
无码av大香线蕉伊人久久|
丰满人妻av无码一区二区三区|
欧美人与动性xxxxx杂性|
国产在线精品第一区二区|
免费毛片全部不收费的|
国产色爱av资源综合区|
久久99亚洲精品久久久久|
国产又色又爽又黄刺激的视频|
亚洲中文精品久久久久久|
亚洲综合欧美在线…|
亚洲精品久久久一二三区|
97国产婷婷综合在线视频|
国产欧美久久一区二区三区|
人妻无码不卡中文字幕系列|
第二篇:串口通信實驗報告范文
第三篇:串口通訊實驗報告