




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)與上位機(jī)通信協(xié)議的制定單片機(jī)和上位機(jī)的串口通信協(xié)議分為上行協(xié)議和下行協(xié)議,要分別制定!上行協(xié)議,即由單片機(jī)向上位機(jī)發(fā)送數(shù)據(jù)。下行協(xié)議,即由上位機(jī)向單片機(jī)發(fā)送數(shù)據(jù)。 而通信協(xié)議又要分固定長(zhǎng)度和不定長(zhǎng)度兩種本文所介紹的協(xié)議屬于簡(jiǎn)單的固定字長(zhǎng)的通信協(xié)議! 下行協(xié)議由四個(gè)字節(jié)構(gòu)成 起始字PRE命令字ORD值VAL結(jié)束字END附注1byte1byte1byte1byteBBHAAH(ORD_SATA)單片機(jī)狀態(tài)轉(zhuǎn)換命令標(biāo)識(shí)01HEEH模式1:空閑02HEEH模式2:溫度采集03HEEH模式3:溫度采集向上位機(jī)傳送采集值04HEEH模式4:PWM測(cè)試BBHDDH(ORD
2、_PWM)valueEEHPWM占空比值修改指令BBHFFH(ORD_TEM)valueEEH目標(biāo)溫度控制指令 上表是簡(jiǎn)單的上位機(jī)對(duì)單片機(jī)的控制指令下述函數(shù)是C#中封裝的串口通信類中的發(fā)送函數(shù)的封裝 public void SerSendCommu(byte orderDef, byte data)/參數(shù)1為命令字,參數(shù)二為要發(fā)送的數(shù)下位機(jī)中用中斷方式接收字符,本文用的是GCC語(yǔ)言,下面是串口接收數(shù)據(jù)中斷ISR(USART_RXC_vect)/串口接收中斷 unsigned char sta
3、tus,data; status = UCSRA; /*首先讀取UCSRA的值,再讀取UDR值,順序不能顛倒,否則讀取UDR后的UCSRA的
4、60; /值即會(huì)改變* data = UDR; if(!Uart_RecvFlag)/判斷緩存中的數(shù)據(jù)是否讀完,讀完則接收指令 if(status&(1<<FE)|(1<<PE)|(1<<DOR)=0) rx_bufferrx_counter=dat
5、a; rx_counter+; switch(rx_counter) case 1: if(data!=USART_BEGIN_STX) rx_counter=0; break;&
6、#160; case 4: rx_counter=0; if(data=USART_END_STX) Uart_RecvFlag=1; break; 在單片
7、機(jī)主循環(huán)程序的最前部分進(jìn)行指令譯碼 if(Uart_RecvFlag)/接收到命令 switch(rx_buffer1) case 0xAA:/單片機(jī)狀態(tài)命令控制; ucWorkStatue=rx_buffer2;/指令數(shù)據(jù) OCR2=rx_buffer2;
8、160; break; case 0xFF:/初始溫度設(shè)定 break; Uart_RecvFlag=0; /隨后進(jìn)行執(zhí)行指令 switch(ucWorkStatue) case
9、1:/空閑模式 break; case 2:/測(cè)量模式,但不輸出 break; case 3:/測(cè)量模式,由串口輸出 break; case 4
10、:/PWM輸出測(cè)試 break; default: break; 這樣就可以利用串口對(duì)單片機(jī)進(jìn)行在線命令控制了;上行協(xié)議的制定!和下行協(xié)議基本一致!在AVR單片機(jī)程序中定義了串口通信輸出緩沖區(qū),緩沖區(qū)的字長(zhǎng)正好為協(xié)議的長(zhǎng)度;/串口發(fā)送緩沖區(qū)變量聲明volatile unsigned char tx_bufferTX_BUFFER_SIZE;/定義串口發(fā)送緩沖區(qū)volatile
11、unsigned char tx_wr_index=0,tx_rd_index=0,tx_counter=0;/rx_wr_index寫指針,rx_rd_index讀指針,rx_counter緩沖區(qū)數(shù)據(jù)個(gè)數(shù)/USART發(fā)送函數(shù) void USART_Transmit(unsigned char data)/發(fā)送數(shù)據(jù)函數(shù) while(tx_counter=TX_BUFFER_SIZE);/輸出緩沖區(qū)滿,等待 asm("cli"); if(tx_counter|(UCSRA & DA
12、TA_REGISTER_EMPTY)=0) tx_buffertx_wr_index=data; if(+tx_wr_index=TX_BUFFER_SIZE) tx_wr_index=0; +tx_counter; else UDR = data; asm("sei");
13、0;/發(fā)送中斷服務(wù)程序ISR(USART_TXC_vect)/USART發(fā)送數(shù)據(jù)中斷 if(tx_counter) -tx_counter; UDR=tx_buffertx_rd_index; if(+tx_rd_index=TX_BUFFER_SIZE) tx_rd_index=0; 在C#編寫的上位機(jī)中,利用串口接收事件響應(yīng)方法定義serialPort1.ReceivedByt
14、esThreshold = RECEIVE_LENTH;在時(shí)間響應(yīng)事件中調(diào)用協(xié)議分析處理函數(shù)serialPortCaculate()來分析協(xié)議 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
15、 ()
16、0;
17、0; break;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化肥銷售合作合同范本
- 包裝稻草出售合同范本
- 勞務(wù)代理用工合同范本
- 單位汽車借用合同范本
- 代理機(jī)構(gòu)中標(biāo)合同范本
- 義工合同范本
- 個(gè)人對(duì)公勞務(wù)合同范本
- 與人投資飯店合同范本
- 醫(yī)院供氧安裝合同范例
- 一方婚前貸款買房合同范本
- 2025年四川省宜賓敘州區(qū)事業(yè)單位考調(diào)83人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 米非司酮使用培訓(xùn)
- 二氧化碳捕集、運(yùn)輸和地質(zhì)封存 - 地質(zhì)封存 征求意見稿
- 2024-2030年中國(guó)淀粉糖行業(yè)運(yùn)行態(tài)勢(shì)與發(fā)展趨勢(shì)分析報(bào)告
- 診所信息保密和安全管理制度
- 護(hù)士臨床護(hù)理組長(zhǎng)
- 土建、裝飾、維修改造等零星工程施工組織設(shè)計(jì)技術(shù)標(biāo)
- 高速公路養(yǎng)護(hù)作業(yè)安全培訓(xùn)內(nèi)容
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 《大白菜種植栽培技》課件
- 北京工業(yè)大學(xué)《數(shù)據(jù)挖掘》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論