传感器与RFID试验报告PC机的串口调试助手显示HelloWorld_第1页
传感器与RFID试验报告PC机的串口调试助手显示HelloWorld_第2页
传感器与RFID试验报告PC机的串口调试助手显示HelloWorld_第3页
传感器与RFID试验报告PC机的串口调试助手显示HelloWorld_第4页
传感器与RFID试验报告PC机的串口调试助手显示HelloWorld_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

传感器与RFID实验报告一、实验目的:.理解串口通信原理;.掌握CC2530单片机与PC机串口通信的方法。二、实验设备:.unSPUSBProbe在线调试器一个;.物联网多网技术综合教学开发设计平台一套。、实验要求:.编程要求:编写一段C语言程序;.实验现象:PC机的串口调试助手显示“HelloWorld!”;.实现功能:单片机向PC机发送字符串,PC机接收并显示字符串内容。四、实验步骤:.使用MiniUSB延长线将协调器的MiniUSB接口连接至PC机的USB接口;.使用方口USB延长线将烧写器连接至PC机上;.连接烧写器和协调器,确认连接无误;.使用“物联网综合应用试验箱”文件夹的对应驱动程序,安装至PC机上(具体安装方法见前几次实验报告);.在控制面板一一设备管理器中,观看是否成功安装驱动,并查看串口的连接方式(本实验为COM3);.打开IAR,编写程序,烧写进单片机中(具体操作方法同前几次实验),实现“helloworld!”字符的发送;.打开串口调试助手,可以发现,程序已经完成定时发送“helloworld”字符串;.修改程序,使程序实验可通过串口调试助手发送任何自定义数据;.打开串口调试助手,选择连接方式“COM3”,打开终端,在窗口输入数据,点击“发送”,可以发现,完成了自定义数据的发送。图为使用程序发送HelloWorld!字节的实现结果。设爱字体|设蛋背祟色|

保存显示|

清春显本"|

HEX设爱字体|设蛋背祟色|

保存显示|

清春显本"|

HEX显示端口.13T[关诩珊口]昱DdtrDrts Ddsr波特率115200 "口定时发送100ms[□发送时添加换行[OHEX发送犷展数据位[8 11 一重停止位 一 T校始位庆校蛤伽。凌阳科技大学计划AuthonLeajianR:60 S:20 COM3,115200,8,1,0已打开图为完成程序修改,使用自定义字符发送的实现结果。附:完成实验步骤8的关键为:修改UART.c文件中的函数__interruptvoidUART0_ISR(void),去掉使其失效的注释符,使该函数完成自己的作用,完成自定义数据的发送。如图所示:++J.I£:d^.JIL:dWt!L:L.IJL-Ul\j,U_VIL.1UJX__interruptvoidUART0_ISR(void)staticchartEmp[1]定义一个元素的temp数组temp[0]=UDDEUF;”接收到的元素哦值给第0个元素UARTO_Send(temp,1);/7■调用发送函数将收到的数据发送出去URX0IF=0; /7■清中断标志五、实验总结:.了解了串口通讯的使用,UARTUSB转串口通信数据线的使用;.学会了如何使用程序发送程序中自带的字符;.学会了如何使用UART文件中包含的项目,实现自定义的字符发送;.最后程序的修改是在老师的指导下完成,说明自己对程序的理解还不够;.完成通信的函数大部分为系统自带,自己能独立编程的能力有限,希望能庚随老师继续学习。六、实验中使用的程序的理解和注释:Basic.c文件#include"Basic.h"/************************************************************函数名称:delay**实现功能:微秒级短暂延时函数*入口参数:n:延时值;**返回结果: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++);)/************************************************************函数名称:Delay**实现功能:约10_ms延时函数*入口参数:n:需要延时的10ms数;**返回结果:NonevoidDelay(uintn)(uinti,j,k;for(i=0;i<n;i++)for(j=0;j<100;j++)for(k=0;k<100;k++) ;)/************************************************************函数名称:LEDPortInit**实现功能:初始化LED_D8_D9(P2_0.P1_1)*入口参数:None**返回结果:NonevoidLEDPortInit(void)(P1SEL&=~0X02;//P1接口置为00000010P2SEL&=~0X01;//P2接口置为00000001P1DIR|=0X02;P2DIR|=0X01;CLR_LED_D8;CLR_LED_D9;)/************************************************************函数名称:GetCh08bitADC**实现功能:获取ADC通道0的8位ADC输入值*入口参数:None**返回结果: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);)/*************************************************************函数名称:SetlOInput**实现功能:设置端口为三态输入(不启用内部上下拉电阻)**入口参数:group:Port**bit:BitinPort**返回结果:None//pull:0-disable,1-pulldown,2-pullupvoidSetIOInput(uint8group,uint8bit)(switch(group)(/*当group=0,6比左移一位,取反和PODIR与运算赋值给PODIR;6设左移一位,取反和POSEL与运算赋值给POSEL;6设左移一位,取非和POINP与运算赋值给POINP;*/case0:P0DIR&=~(1<<bit);P0SEL&=~(1<<bit);P0INP|=(1<<bit);break;/*当group=1,6比左移一位,取反和P1DIR与运算赋值给P1DIR;6设左移一位,取反和P1SEL与运算赋值给P1SEL;6设左移一位,取非和P1INP与运算赋值给P1INP;*/P1DIR&=~(1<<bit);P1SEL&=~(1<<bit);P1INP|=(1<<bit);break;/*当group=2,6比左移一位,取反和P2DIR与运算赋值给P2DIR;6设左移一位,取反和P2SEL与运算赋值给P2SEL;6设左移一位,取非和P2INP与运算赋值给P2INP;*/P2DIR&=~(1<<bit);P2SEL&=~(1<<bit);P2INP|=(1<<bit);break;))/*************************************************************函数名称:SetIOOutput**实现功能:设置端口为通用输出IO口**入口参数:group:Port**bit:BitinPort**返回结果:NonevoidSetIOOutput(uint8group,uint8bit)(switch(group)

(/*当group=0,状土左移一位,取反和P0DIR与运算赋值给P0DIR;状土左移一位,取反和P0SEL与运算赋值给P0SEL;case0:P0DIR|=(1<<bit);P0SEL&=~(1<<bit);break;/当group=0,状土左移一位,取反/*和P1DIR与运算赋值给P1DIR;6比左移一位,取反和P1SEL与运算赋值给P1SEL;*/P1DIR|=(1<<bit);P1SEL&=~(1<<bit);break;/*当group=2;6比左移一位,取反和P2DIR与运算赋值给P2DIR;6设左移一位,取反和P2SEL与运算赋值给P2SEL;P2DIR|=(1<<bit);P2SEL&=~(1<<bit);break;))/*************************************************************函数名称:GetIOLevel**实现功能:获取对应端口上的输入电平**入口参数:group:Port**bit:BitinPort**返回结果:1Byte(1:输入为高电平;0:输入为低电平;)uint8GetIOLevel(uint8group,uint8bit)(switch(group)(case0: return !!(P0 & (1 << bit));return !!(P1 & (1 << bit));return !!(P2 & (1 << bit));)return0;)/************************************************************函数名称:SetIOLevel**实现功能:设置IO口输出电平*入口参数:group:Port**bit:BitinPort*value:(1:输出高电平;0:输出低电平;)**返回结果: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>〃数据类型重命名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状态(亮变灭,灭变亮)#defineLED_D9_TURN(P1"=0X02)〃改变LED_D9状态(亮变灭,灭变亮)voiddelay(uint);//微秒级短暂延时函数voidDelay(uintn);//约10ms延时函数voidLEDPortInit(void);//LED_D8_D9端口初始化函数uint8GetCh08bitADC(void);//ADC通道0以8采样位获取输入voidSetIOInput(uint8group,uint8bit);//设置端口为三态输入voidSetIOOutput(uint8group,uint8bit);//设置端口为通用输出IO口uint8GetIOLevel(uint8group,uint8bit);//获取IO□输入电平状态voidSetIOLevel(uint8group,uint8bit,uint8value);/设置IO端口输出电平状态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初始化设置voidUART0_Send(char*Data,intlen);//UART0发送数据voidUART0_Dis_uNum(uint16uValue);//UART0以十进制方式显示无符号数voidUART0_Dis_fNum(floatfValue);//UART0以十进制方式显示浮点型数UART.c文件#include〃UART.h〃/************************************************************函数名称:UART0_Init**实现功能:初始化UART0*入口参数:baud:波特率设置;**返回结果:NonevoidUART0_Init(BaudSelbaud)(CLKCONCMD&=~0X40; 〃晶振while(!(SLEEPSTA&0X40)); 〃等待晶振稳定CLKCONCMD&=~0X47; 〃TICHSPD128分频,CLKSPD不分频SLEEPCMD|=0X04;〃关闭不用的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; 〃开总中断,接收中断)/************************************************************函数名称:UART0_Send**实现功能:UART0发送数据**返回结果:None*入口参数:Data:待发送数据区首地址len:待发送数据的字节数voidUART0_Send(char*Data,intlen)(inti;for(i=0;i<len;i++)(U0DBUF=*Data++;while(UTX0IF==0);UTX0IF=0;))/*************************************************************函数名称:UART0_Dis_uNum**实现功能:UART0以十进制方式显示uint16型数据**入口参数:uValue:需要显示的无符号型数据**返回结果: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);〃数字和其他输出内容前后都有一个空格间距UART0_Send(cData,5);UART0_Send("",1);)/************************************************************函数名称:UART0_Dis_fNum**实现功能:UART0以十进制方式显示float型数据*入口参数:fValue:需要显示的浮点型数据**返回结果:NonevoidUART0_Dis_fNum(floatfValue)(uint16u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论