傳感器與RFID試驗報告PC機的串口調(diào)試助手顯示HelloWorld_第1頁
傳感器與RFID試驗報告PC機的串口調(diào)試助手顯示HelloWorld_第2頁
傳感器與RFID試驗報告PC機的串口調(diào)試助手顯示HelloWorld_第3頁
傳感器與RFID試驗報告PC機的串口調(diào)試助手顯示HelloWorld_第4頁
傳感器與RFID試驗報告PC機的串口調(diào)試助手顯示HelloWorld_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

傳感器與RFID實驗報告一、實驗?zāi)康模?理解串口通信原理;.掌握CC2530單片機與PC機串口通信的方法。二、實驗設(shè)備:.unSPUSBProbe在線調(diào)試器一個;.物聯(lián)網(wǎng)多網(wǎng)技術(shù)綜合教學(xué)開發(fā)設(shè)計平臺一套。、實驗要求:.編程要求:編寫一段C語言程序;.實驗現(xiàn)象:PC機的串口調(diào)試助手顯示“HelloWorld!”;.實現(xiàn)功能:單片機向PC機發(fā)送字符串,PC機接收并顯示字符串內(nèi)容。四、實驗步驟:.使用MiniUSB延長線將協(xié)調(diào)器的MiniUSB接口連接至PC機的USB接口;.使用方口USB延長線將燒寫器連接至PC機上;.連接燒寫器和協(xié)調(diào)器,確認連接無誤;.使用“物聯(lián)網(wǎng)綜合應(yīng)用試驗箱”文件夾的對應(yīng)驅(qū)動程序,安裝至PC機上(具體安裝方法見前幾次實驗報告);.在控制面板一一設(shè)備管理器中,觀看是否成功安裝驅(qū)動,并查看串口的連接方式(本實驗為COM3);.打開IAR,編寫程序,燒寫進單片機中(具體操作方法同前幾次實驗),實現(xiàn)“helloworld!”字符的發(fā)送;.打開串口調(diào)試助手,可以發(fā)現(xiàn),程序已經(jīng)完成定時發(fā)送“helloworld”字符串;.修改程序,使程序?qū)嶒灴赏ㄟ^串口調(diào)試助手發(fā)送任何自定義數(shù)據(jù);.打開串口調(diào)試助手,選擇連接方式“COM3”,打開終端,在窗口輸入數(shù)據(jù),點擊“發(fā)送”,可以發(fā)現(xiàn),完成了自定義數(shù)據(jù)的發(fā)送。圖為使用程序發(fā)送HelloWorld!字節(jié)的實現(xiàn)結(jié)果。設(shè)愛字體|設(shè)蛋背祟色|

保存顯示|

清春顯本"|

HEX設(shè)愛字體|設(shè)蛋背祟色|

保存顯示|

清春顯本"|

HEX顯示端口.13T[關(guān)詡珊口]昱DdtrDrts Ddsr波特率115200 "口定時發(fā)送100ms[□發(fā)送時添加換行[OHEX發(fā)送獷展數(shù)據(jù)位[8 11 一重停止位 一 T校始位慶校蛤伽。凌陽科技大學(xué)計劃AuthonLeajianR:60 S:20 COM3,115200,8,1,0已打開圖為完成程序修改,使用自定義字符發(fā)送的實現(xiàn)結(jié)果。附:完成實驗步驟8的關(guān)鍵為:修改UART.c文件中的函數(shù)__interruptvoidUART0_ISR(void),去掉使其失效的注釋符,使該函數(shù)完成自己的作用,完成自定義數(shù)據(jù)的發(fā)送。如圖所示:++J.I£:d^.JIL:dWt!L:L.IJL-Ul\j,U_VIL.1UJX__interruptvoidUART0_ISR(void)staticchartEmp[1]定義一個元素的temp數(shù)組temp[0]=UDDEUF;”接收到的元素哦值給第0個元素UARTO_Send(temp,1);/7■調(diào)用發(fā)送函數(shù)將收到的數(shù)據(jù)發(fā)送出去URX0IF=0; /7■清中斷標(biāo)志五、實驗總結(jié):.了解了串口通訊的使用,UARTUSB轉(zhuǎn)串口通信數(shù)據(jù)線的使用;.學(xué)會了如何使用程序發(fā)送程序中自帶的字符;.學(xué)會了如何使用UART文件中包含的項目,實現(xiàn)自定義的字符發(fā)送;.最后程序的修改是在老師的指導(dǎo)下完成,說明自己對程序的理解還不夠;.完成通信的函數(shù)大部分為系統(tǒng)自帶,自己能獨立編程的能力有限,希望能庚隨老師繼續(xù)學(xué)習(xí)。六、實驗中使用的程序的理解和注釋:Basic.c文件#include"Basic.h"/************************************************************函數(shù)名稱:delay**實現(xiàn)功能:微秒級短暫延時函數(shù)*入口參數(shù):n:延時值;**返回結(jié)果:Nonevoiddelay(uintn)(uinti;for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);)/************************************************************函數(shù)名稱:Delay**實現(xiàn)功能:約10_ms延時函數(shù)*入口參數(shù):n:需要延時的10ms數(shù);**返回結(jié)果:NonevoidDelay(uintn)(uinti,j,k;for(i=0;i<n;i++)for(j=0;j<100;j++)for(k=0;k<100;k++) ;)/************************************************************函數(shù)名稱:LEDPortInit**實現(xiàn)功能:初始化LED_D8_D9(P2_0.P1_1)*入口參數(shù):None**返回結(jié)果:NonevoidLEDPortInit(void)(P1SEL&=~0X02;//P1接口置為00000010P2SEL&=~0X01;//P2接口置為00000001P1DIR|=0X02;P2DIR|=0X01;CLR_LED_D8;CLR_LED_D9;)/************************************************************函數(shù)名稱:GetCh08bitADC**實現(xiàn)功能:獲取ADC通道0的8位ADC輸入值*入口參數(shù):None**返回結(jié)果:1ByteADC值uint8GetCh08bitADC(void)(uint8v=0;ADCCFG=0x01;〃ADCCFG被置為00000001ADCCON1=0x33;//ADCCON1被置為00110011ADCCON2=0xB0;//ADCCON2被置為11000000ADCCON1|=0x40;//ADCCON1被置為01000000while(!(ADCCON1&0x80));v=ADCL;//把ADCL賦值給vv=ADCH;//把ADCH賦值給vreturn(v);)/*************************************************************函數(shù)名稱:SetlOInput**實現(xiàn)功能:設(shè)置端口為三態(tài)輸入(不啟用內(nèi)部上下拉電阻)**入口參數(shù):group:Port**bit:BitinPort**返回結(jié)果:None//pull:0-disable,1-pulldown,2-pullupvoidSetIOInput(uint8group,uint8bit)(switch(group)(/*當(dāng)group=0,6比左移一位,取反和PODIR與運算賦值給PODIR;6設(shè)左移一位,取反和POSEL與運算賦值給POSEL;6設(shè)左移一位,取非和POINP與運算賦值給POINP;*/case0:P0DIR&=~(1<<bit);P0SEL&=~(1<<bit);P0INP|=(1<<bit);break;/*當(dāng)group=1,6比左移一位,取反和P1DIR與運算賦值給P1DIR;6設(shè)左移一位,取反和P1SEL與運算賦值給P1SEL;6設(shè)左移一位,取非和P1INP與運算賦值給P1INP;*/P1DIR&=~(1<<bit);P1SEL&=~(1<<bit);P1INP|=(1<<bit);break;/*當(dāng)group=2,6比左移一位,取反和P2DIR與運算賦值給P2DIR;6設(shè)左移一位,取反和P2SEL與運算賦值給P2SEL;6設(shè)左移一位,取非和P2INP與運算賦值給P2INP;*/P2DIR&=~(1<<bit);P2SEL&=~(1<<bit);P2INP|=(1<<bit);break;))/*************************************************************函數(shù)名稱:SetIOOutput**實現(xiàn)功能:設(shè)置端口為通用輸出IO口**入口參數(shù):group:Port**bit:BitinPort**返回結(jié)果:NonevoidSetIOOutput(uint8group,uint8bit)(switch(group)

(/*當(dāng)group=0,狀土左移一位,取反和P0DIR與運算賦值給P0DIR;狀土左移一位,取反和P0SEL與運算賦值給P0SEL;case0:P0DIR|=(1<<bit);P0SEL&=~(1<<bit);break;/當(dāng)group=0,狀土左移一位,取反/*和P1DIR與運算賦值給P1DIR;6比左移一位,取反和P1SEL與運算賦值給P1SEL;*/P1DIR|=(1<<bit);P1SEL&=~(1<<bit);break;/*當(dāng)group=2;6比左移一位,取反和P2DIR與運算賦值給P2DIR;6設(shè)左移一位,取反和P2SEL與運算賦值給P2SEL;P2DIR|=(1<<bit);P2SEL&=~(1<<bit);break;))/*************************************************************函數(shù)名稱:GetIOLevel**實現(xiàn)功能:獲取對應(yīng)端口上的輸入電平**入口參數(shù):group:Port**bit:BitinPort**返回結(jié)果:1Byte(1:輸入為高電平;0:輸入為低電平;)uint8GetIOLevel(uint8group,uint8bit)(switch(group)(case0: return !!(P0 & (1 << bit));return !!(P1 & (1 << bit));return !!(P2 & (1 << bit));)return0;)/************************************************************函數(shù)名稱:SetIOLevel**實現(xiàn)功能:設(shè)置IO口輸出電平*入口參數(shù):group:Port**bit:BitinPort*value:(1:輸出高電平;0:輸出低電平;)**返回結(jié)果:NonevoidSetIOLevel(uint8group,uint8bit,uint8value)(switch(group)(case0:if(value)P0|=(1<<bit);elseP0&=~(1<<bit);break;if(value)P1|=(1<<bit);P1|=(1<<bit);elseP1&=~(1<<bit);break;if(value)P2|=(1<<bit);elseP2&=~(1<<bit);break;))Basic.h文件#ifndef__BASIC_H__#define__BASIC_H__#include<iocc2530.h>〃數(shù)據(jù)類型重命名typedefunsignedintuint;typedefunsignedcharuchar;typedefunsignedintuint16;typedefunsignedcharuint8;//LED_D8_D9操作#defineSET_LED_D8 (P2 &= 0XFE) 〃點亮LED_D8#defineSET_LED_D9 (P1 &= 0XFD) 〃點亮LED_D9#defineCLR_LED_D8 (P2 |= 0X01) 〃熄滅LED_D8#defineCLR_LED_D9 (P1 |= 0X02) 〃熄滅LED_D9#defineLED_D8_TURN(P2=0X01)〃改變LED_D8狀態(tài)(亮變滅,滅變亮)#defineLED_D9_TURN(P1"=0X02)〃改變LED_D9狀態(tài)(亮變滅,滅變亮)voiddelay(uint);//微秒級短暫延時函數(shù)voidDelay(uintn);//約10ms延時函數(shù)voidLEDPortInit(void);//LED_D8_D9端口初始化函數(shù)uint8GetCh08bitADC(void);//ADC通道0以8采樣位獲取輸入voidSetIOInput(uint8group,uint8bit);//設(shè)置端口為三態(tài)輸入voidSetIOOutput(uint8group,uint8bit);//設(shè)置端口為通用輸出IO口uint8GetIOLevel(uint8group,uint8bit);//獲取IO□輸入電平狀態(tài)voidSetIOLevel(uint8group,uint8bit,uint8value);/設(shè)置IO端口輸出電平狀態(tài)UART.h文件#ifndef__UART_H__#define__UART_H__#include"Basic.h"#include<string.h>//CC2530UART波特率可選值typedefenum(

BAUD_2400,//U0GCR=6U0BAUD=59;BAUD_4800,//U0GCR=7U0BAUD=59;BAUD_9600,//U0GCR=8U0BAUD=59;BAUD_14400,//U0GCR=8U0BAUD=216;BAUD_19200,//U0GCR=9U0BAUD=59;BAUD_28800,//U0GCR|=9U0BAUD=216;BAUD_38400,//U0GCR|=10;U0BAUD=59;BAUD_57600,//U0GCR|=10;U0BAUD=216;BAUD_76800,//U0GCR|=11;U0BAUD=59;BAUD_115200,//U0GCR|=11;U0BAUD=216;BAUD_230400,//U0GCR|=12;U0BAUD=216;}BaudSel;voidUART0_Init(BaudSelbaud);//UART0初始化設(shè)置voidUART0_Send(char*Data,intlen);//UART0發(fā)送數(shù)據(jù)voidUART0_Dis_uNum(uint16uValue);//UART0以十進制方式顯示無符號數(shù)voidUART0_Dis_fNum(floatfValue);//UART0以十進制方式顯示浮點型數(shù)UART.c文件#include〃UART.h〃/************************************************************函數(shù)名稱:UART0_Init**實現(xiàn)功能:初始化UART0*入口參數(shù):baud:波特率設(shè)置;**返回結(jié)果:NonevoidUART0_Init(BaudSelbaud)(CLKCONCMD&=~0X40; 〃晶振while(!(SLEEPSTA&0X40)); 〃等待晶振穩(wěn)定CLKCONCMD&=~0X47; 〃TICHSPD128分頻,CLKSPD不分頻SLEEPCMD|=0X04;〃關(guān)閉不用的RC振蕩器PERCFG=0X00; 〃位置1P0口P0SEL|=0X0C; 〃P0用作串口U0CSR|=0X80; 〃UART方式switch(baud)(caseBAUD_2400: U0GCR|=6U0BAUD|=59; breakcaseBAUD_4800: U0GCR|=7U0BAUD|=59; breakcaseBAUD_9600: U0GCR|=8U0BAUD|=59; break;caseBAUD_14400: U0GCR|=8U0BAUD|=216;break;caseBAUD_19200: U0GCR|=9U0BAUD|=59; break;caseBAUD_28800: U0GCR|=9U0BAUD|=216;break;caseBAUD_38400: U0GCR=10U0BAUD|=59; break;caseBAUD_57600: U0GCR=10U0BAUD|=216;break;caseBAUD_76800: U0GCR=11U0BAUD|=59; break;caseBAUD_115200:U0GCR=11U0BAUD|=216;break;caseBAUD_230400:U0GCR=12U0BAUD|=216;break;default :U0GCR=11U0BAUD|=216;break;//BAUD_115200;)UTX0IF=0;U0CSR|=0X40; 〃允許接收IEN0|=0X84; 〃開總中斷,接收中斷)/************************************************************函數(shù)名稱:UART0_Send**實現(xiàn)功能:UART0發(fā)送數(shù)據(jù)**返回結(jié)果:None*入口參數(shù):Data:待發(fā)送數(shù)據(jù)區(qū)首地址len:待發(fā)送數(shù)據(jù)的字節(jié)數(shù)voidUART0_Send(char*Data,intlen)(inti;for(i=0;i<len;i++)(U0DBUF=*Data++;while(UTX0IF==0);UTX0IF=0;))/*************************************************************函數(shù)名稱:UART0_Dis_uNum**實現(xiàn)功能:UART0以十進制方式顯示uint16型數(shù)據(jù)**入口參數(shù):uValue:需要顯示的無符號型數(shù)據(jù)**返回結(jié)果:NonevoidUART0_Dis_uNum(uint16uValue)(uint8i;charcData[5]={'0','0','0','0','0'};cData[0]=uValue%100000/10000+'0'//nValue對100000取余出10000賦值于cData第0個元素cData[1]=uValue%10000/1000+'0';〃nValue對10000取余出1000賦值于cData第01個元素cData[2]=uValue%1000/100+'0';〃nValue對1000取余出100賦值于cData第2個元素cData[3]=uValue%100/10+'0';〃nValue對100取余出10賦值于cData第3個元素cData[4]=uValue%10/1+'0';〃nValue對10取余出1賦值于cData第4個元素if(0!=uValue)(for(i=0;i<5;i++)(if('0'!=cData[i])break;if('0'==cData[i])cData[i]='';))elseif(0==uValue)(for(i=0;i<4;i++)(cData[i]='';))UART0_Send("",1);〃數(shù)字和其他輸出內(nèi)容前后都有一個空格間距UART0_Send(cData,5);UART0_Send("",1);)/************************************************************函數(shù)名稱:UART0_Dis_fNum**實現(xiàn)功能:UART0以十進制方式顯示float型數(shù)據(jù)*入口參數(shù):fValue:需要顯示的浮點型數(shù)據(jù)**返回結(jié)果:NonevoidUART0_Dis_fNum(floatfValue)(uint16u

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論