欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    传感器与RFID实验报告PC 机的串口调试助手显示Hello World.docx

    • 资源ID:10447966       资源大小:285.99KB        全文页数:16页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    传感器与RFID实验报告PC 机的串口调试助手显示Hello World.docx

    1、传感器与RFID实验报告PC 机的串口调试助手显示Hello World传感器与RFID实验报告1、实验目的:1. 理解串口通信原理;2. 掌握 CC2530 单片机与 PC 机串口通信的方法。二、实验设备:1.unSP USB Probe 在线调试器一个; 2. 物联网多网技术综合教学开发设计平台一套。三、实验要求:1. 编程要求:编写一段 C 语言程序;2. 实验现象:PC 机的串口调试助手显示“Hello World!”;3. 实现功能:单片机向 PC 机发送字符串,PC 机接收并显示字符串内容。四、实验步骤:1.使用Mini USB延长线将协调器的Mini USB接口连接至PC机的US

    2、B接口;2.使用方口USB延长线将烧写器连接至PC机上;3.连接烧写器和协调器,确认连接无误;4.使用“物联网综合应用试验箱”文件夹的对应驱动程序,安装至PC机上(具体安装方法见前几次实验报告);5.在控制面板设备管理器中,观看是否成功安装驱动,并查看串口的连接方式(本实验为COM3);6.打开IAR,编写程序,烧写进单片机中(具体操作方法同前几次实验),实现“hello world!”字符的发送;7.打开串口调试助手,可以发现,程序已经完成定时发送“hello world”字符串;8.修改程序,使程序实验可通过串口调试助手发送任何自定义数据;9.打开串口调试助手,选择连接方式“COM3”,打

    3、开终端,在窗口输入数据,点击“发送”,可以发现,完成了自定义数据的发送。图为使用程序发送Hello World!字节的实现结果。图为完成程序修改,使用自定义字符发送的实现结果。附:完成实验步骤8的关键为:修改UART.c文件中的函数_interrupt void UART0_ISR(void),去掉使其失效的注释符,使该函数完成自己的作用,完成自定义数据的发送。如图所示:五、实验总结:1.了解了串口通讯的使用,UART USB转串口通信数据线的使用;2.学会了如何使用程序发送程序中自带的字符;3.学会了如何使用UART文件中包含的项目,实现自定义的字符发送;4.最后程序的修改是在老师的指导下完

    4、成,说明自己对程序的理解还不够;5.完成通信的函数大部分为系统自带,自己能独立编程的能力有限,希望能庚随老师继续学习。六、实验中使用的程序的理解和注释:Basic.c文件#includeBasic.h/* 函数名称: delay* 实现功能: 微秒级短暂延时函数* 入口参数: n:延时值;* 返回结果: Nonevoid delay(uint n)uinti;for(i=0;in;i+);for(i=0;in;i+);for(i=0;in;i+);for(i=0;in;i+);for(i=0;in;i+);/* 函数名称: Delay* 实现功能: 约 10_ms 延时函数* 入口参数: n:

    5、需要延时的 10ms 数;* 返回结果: Nonevoid Delay(uint n)uinti,j,k;for(i=0;in;i+)for(j=0;j100;j+)for(k=0;k100;k+) ;/* 函数名称: LEDPortInit* 实现功能: 初始化 LED_D8_D9(P2_0.P1_1)* 入口参数: None* 返回结果: NonevoidLEDPortInit(void) P1SEL &= 0X02;/P1接口置为0000 0010 P2SEL &= 0X01;/P2接口置为0000 0001 P1DIR |= 0X02; P2DIR |= 0X01; CLR_LED_D

    6、8; CLR_LED_D9;/* 函数名称: GetCh08bitADC* 实现功能: 获取 ADC 通道0 的8位 ADC 输入值* 入口参数: None* 返回结果: 1 Byte ADC值uint8 GetCh08bitADC(void)uint8 v = 0; ADCCFG = 0x01;/ADCCFG被置为0000 0001 ADCCON1 = 0x33;/ ADCCON1被置为0011 0011 ADCCON2 = 0xB0;/ ADCCON2被置为1100 0000 ADCCON1 |= 0x40;/ ADCCON1被置为0100 0000while(!(ADCCON1 & 0x

    7、80); v = ADCL;/把ADCL赋值给v v = ADCH;/把ADCH赋值给vreturn(v);/* 函数名称: SetIOInput* 实现功能: 设置端口为三态输入(不启用内部上下拉电阻)* 入口参数: group:Port* bit:Bit in Port* 返回结果: None/ pull: 0 - disable, 1 - pulldown, 2 - pullupvoidSetIOInput(uint8 group, uint8 bit)switch(group) /*当group=0,bit左移一位,取反和PODIR与运算赋值给PODIR;bit左移一位,取反和POSE

    8、L与运算赋值给POSEL;bit左移一位,取非和POINP与运算赋值给POINP;*/case 0: P0DIR &= (1 bit); P0SEL &= (1 bit); P0INP |=(1 bit); break;/*当group=1,bit左移一位,取反和P1DIR与运算赋值给P1DIR;bit左移一位,取反和P1SEL与运算赋值给P1SEL;bit左移一位,取非和P1INP与运算赋值给P1INP;*/case 1: P1DIR &= (1 bit); P1SEL &= (1 bit); P1INP |=(1 bit); break;/*当group=2,bit左移一位,取反和P2DI

    9、R与运算赋值给P2DIR;bit左移一位,取反和P2SEL与运算赋值给P2SEL;bit左移一位,取非和P2INP与运算赋值给P2INP;*/case 2: P2DIR &= (1 bit); P2SEL &= (1 bit); P2INP |=(1 bit); break; /* 函数名称: SetIOOutput* 实现功能: 设置端口为通用输出IO口* 入口参数: group:Port * bit:Bit in Port* 返回结果: NonevoidSetIOOutput(uint8 group, uint8 bit)switch(group) /*当group=0,bit左移一位,取

    10、反和P0DIR与运算赋值给P0DIR;bit左移一位,取反和P0SEL与运算赋值给P0SEL;case 0: P0DIR |= (1 bit); P0SEL &= (1 bit); break; /*当group=0,bit左移一位,取反/*和P1DIR与运算赋值给P1DIR;bit左移一位,取反和P1SEL与运算赋值给P1SEL;*/case 1: P1DIR |= (1 bit); P1SEL &= (1 bit); break;/*当group=2;bit左移一位,取反和P2DIR与运算赋值给P2DIR;bit左移一位,取反和P2SEL与运算赋值给P2SEL;case 2: P2DIR

    11、|= (1 bit); P2SEL &= (1 bit); break; /* 函数名称: GetIOLevel* 实现功能: 获取对应端口上的输入电平* 入口参数: group:Port* bit:Bit in Port* 返回结果: 1 Byte(1 :输入为高电平; 0 :输入为低电平;)uint8GetIOLevel(uint8 group, uint8 bit)switch(group) case 0: return !(P0 & (1 bit);case 1: return !(P1 & (1 bit);case 2: return !(P2 & (1 bit); return 0

    12、;/* 函数名称: SetIOLevel* 实现功能: 设置IO口输出电平* 入口参数: group:Port * bit:Bit in Port* value:(1 :输出高电平; 0 :输出低电平;)* 返回结果: NonevoidSetIOLevel(uint8 group, uint8 bit, uint8 value)switch(group) case 0:if(value) P0 |= (1 bit);else P0 &=(1 bit);break;case 1:if(value) P1 |= (1 bit);else P1 &=(1 bit);break;case 2:if(v

    13、alue) P2 |= (1 bit);else P2 &=(1 bit);break; Basic.h 文件#ifndef _BASIC_H_#define _BASIC_H_#include/数据类型重命名typedefunsignedintuint;typedefunsignedcharuchar;typedefunsignedint uint16;typedefunsignedchar uint8;/LED_D8_D9 操作#define SET_LED_D8 (P2 &= 0XFE) /点亮LED_D8#define SET_LED_D9 (P1 &= 0XFD) /点亮LED_D9

    14、#define CLR_LED_D8 (P2 |= 0X01) /熄灭LED_D8#define CLR_LED_D9 (P1 |= 0X02) /熄灭LED_D9#define LED_D8_TURN (P2 = 0X01) /改变LED_D8状态(亮变灭,灭变亮)#define LED_D9_TURN (P1 = 0X02) /改变LED_D9状态(亮变灭,灭变亮)void delay(uint);/微秒级短暂延时函数void Delay(uint n);/约10ms延时函数voidLEDPortInit(void);/LED_D8_D9 端口初始化函数uint8 GetCh08bitAD

    15、C(void);/ADC通道0以8采样位获取输入voidSetIOInput(uint8 group, uint8 bit);/设置端口为三态输入voidSetIOOutput(uint8 group, uint8 bit);/设置端口为通用输出IO口uint8 GetIOLevel(uint8 group, uint8 bit);/获取IO口输入电平状态voidSetIOLevel(uint8 group, uint8 bit, uint8 value);/设置IO端口输出电平状态UART.h 文件#ifndef _UART_H_#define _UART_H_#includeBasic.h

    16、#include/ CC2530 UART 波特率可选值typedefenum BAUD_2400, /U0GCR |= 6; U0BAUD |= 59; BAUD_4800, /U0GCR |= 7; U0BAUD |= 59; BAUD_9600, /U0GCR |= 8; U0BAUD |= 59; BAUD_14400, /U0GCR |= 8; U0BAUD |= 216; BAUD_19200, /U0GCR |= 9; U0BAUD |= 59; BAUD_28800, /U0GCR |= 9; U0BAUD |= 216; BAUD_38400, /U0GCR |= 10; U

    17、0BAUD |= 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;void UART0_Init(BaudSel baud);/UART0 初始化设置void UART0_Send(char *Data,intlen);/UART0 发送数据void UART0_Dis_uNum(uint16

    18、uValue );/UART0 以十进制方式显示无符号数void UART0_Dis_fNum(floatfValue );/UART0 以十进制方式显示浮点型数UART.c文件#includeUART.h/* 函数名称: UART0_Init* 实现功能: 初始化 UART0* 入口参数: baud:波特率设置;* 返回结果: Nonevoid UART0_Init(BaudSel baud) CLKCONCMD &= 0X40; /晶振while(!(SLEEPSTA & 0X40) ; /等待晶振稳定 CLKCONCMD &= 0X47; /TICHSPD128分频,CLKSPD不分频

    19、SLEEPCMD |= 0X04; /关闭不用的RC振荡器 PERCFG = 0X00; /位置1 P0口 P0SEL |= 0X0C; /P0用作串口 U0CSR |= 0X80; /UART方式switch(baud) case BAUD_2400: U0GCR |= 6; U0BAUD |= 59; break;case BAUD_4800: U0GCR |= 7; U0BAUD |= 59; break;case BAUD_9600: U0GCR |= 8; U0BAUD |= 59; break;case BAUD_14400: U0GCR |= 8; U0BAUD |= 216;

    20、break;case BAUD_19200: U0GCR |= 9; U0BAUD |= 59; break;case BAUD_28800: U0GCR |= 9; U0BAUD |= 216; break;case BAUD_38400: U0GCR |= 10; U0BAUD |= 59; break;case BAUD_57600: U0GCR |= 10; U0BAUD |= 216; break;case BAUD_76800: U0GCR |= 11; U0BAUD |= 59; break;case BAUD_115200: U0GCR |= 11; U0BAUD |= 216

    21、; break;case BAUD_230400: U0GCR |= 12; U0BAUD |= 216; break;default : U0GCR |= 11; U0BAUD |= 216; break; /BAUD_115200; UTX0IF = 0; U0CSR |= 0X40; /允许接收 IEN0 |= 0X84; /开总中断,接收中断/* 函数名称: UART0_Send* 实现功能: UART0 发送数据* 返回结果: None* 入口参数: Data:待发送数据区首地址len:待发送数据的字节数void UART0_Send(char *Data,intlen)inti;f

    22、or(i=0;ilen;i+) U0DBUF = *Data+;while(UTX0IF = 0) ; UTX0IF = 0; /* 函数名称: UART0_Dis_uNum* 实现功能: UART0 以十进制方式显示 uint16 型数据* 入口参数: uValue:需要显示的无符号型数据* 返回结果: Nonevoid UART0_Dis_uNum(uint16 uValue )uint8i;charcData5 = 0,0,0,0,0;cData0 = uValue % 100000 / 10000 + 0/nValue对100000取余出10000赋值于cData第0个元素cData1

    23、 = uValue % 10000 / 1000 + 0; /nValue对10000取余出1000赋值于cData第01个元素cData2 = uValue % 1000 / 100 + 0; /nValue对1000取余出100赋值于cData第2个元素cData3 = uValue % 100 / 10 + 0; /nValue对100取余出10赋值于cData第3个元素cData4 = uValue % 10 / 1 + 0; /nValue对10取余出1赋值于cData第4个元素if(0 != uValue ) for(i=0; i5; i+) if(0 != cDatai )bre

    24、ak;if(0 = cDatai )cDatai = ; elseif(0 = uValue ) for(i=0; i4; i+) cDatai = ; UART0_Send( , 1);/数字和其他输出内容前后都有一个空格间距 UART0_Send(cData, 5); UART0_Send( , 1);/* 函数名称: UART0_Dis_fNum* 实现功能: UART0 以十进制方式显示 float 型数据* 入口参数: fValue:需要显示的浮点型数据* 返回结果: Nonevoid UART0_Dis_fNum(floatfValue )uint16uValue = (uint1

    25、6)( 100 * fValue );charcData5 = 0,0,.,0,0;cData0 = uValue % 10000 / 1000 + 0;cData1 = uValue % 1000 / 100 + 0;cData2 = .;cData3 = uValue % 100 / 10 + 0;cData4 = uValue % 10 / 1 + 0;/数字和其他输出内容前后都有一个空格间距 UART0_Send( , 1); UART0_Send(cData, 5); UART0_Send( , 1);/* 函数名称: UART0_ISR* 实现功能: UART0 接收中断处理函数*

    26、 入口参数: None* 返回结果: None#pragma vector = URX0_VECTOR _interrupt void UART0_ISR(void) static char temp1;/定义一个元素的temp数组temp0 = U0DBUF;/接收到的元素赋值给第0个元素 UART0_Send(temp, 1);/调用发送函数将收到的数据发送出去 URX0IF = 0; /清中断标志 Main.c 文件#includeUART.h#includeBasic.hvoid main(void) #define SENDSTRING Hello World!rnLEDPortInit(); UART0_Init( BAUD_115200 );for( ; ; ) UART0_Send( SENDSTRING, sizeof(SENDSTRING)-1);/发送SENDSTRING的数据 SET_LED_D8; /P1 &= 0x02; /P2 &= 0xfe; /Delay(5); /Delay(5); CLR_LED_D8; /P2 |= 0x01; /Delay(120);


    注意事项

    本文(传感器与RFID实验报告PC 机的串口调试助手显示Hello World.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开