• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 49KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 3
    下载次数
  • 2019-12-21 20:47
    上传日期
使用CC2530获取HC-SR04超声波传感器的数据,并通过串口打印在PC端串口调试助手上
HC-SR04.zip
内容介绍
#include <ioCC2530.h> #include "Ultrasound.h" #include <stdio.h> #include <string.h> uchar RG; uchar H1; uchar L1; uchar H2; uchar L2; uchar H3; uchar L3; uint data; uchar TXData; float distance; uchar LoadRegBuf[4];//全局数据,用以存储定时计数器的值。 void Delay_1us(uint microSecs) { while(microSecs--) { /* 32 NOPs == 1 usecs 因为延时还有计算的缘故,用了31个nop*/ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); } } void Delay_10us(uint n) { /* 320NOPs == 10usecs 因为延时还有计算的缘故,用了310个nop*/ uint tt,yy; for(tt = 0;tt<n;tt++); for(yy = 310;yy>0;yy--); {asm("NOP");} } void Delay_1s(uint n) { uint ulloop=1000; uint tt; for(tt =n ;tt>0;tt--); for( ulloop=1000;ulloop>0;ulloop--) { Delay_10us(100); } } void SysClkSet32M() { CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定 CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ //此时的CLKCONSTA为0x88。即普通时钟和定时器时钟都是32M。 } void Init_UltrasoundRanging() { P1DIR = 0x08; //0为输入1为输出 00001000 设置TRIG P1_3为输出模式 TRIG=0; //将TRIG 设置为低电平 P0INP &= ~0x80; //有上拉、下拉 有初始化的左右 P0IEN |= 0x80; //P0_7 中断使能 PICTL |= 0x01; //设置P0_7引脚,下降沿触发中断 IEN1 |= 0x20; // P0IE = 1; P0IFG = 0; } void UltrasoundRanging(uchar *ulLoadBufPtr) { SysClkSet32M(); Init_UltrasoundRanging(); // T1CC0H = 0x00; //T1CC0L = 0xfa; EA = 0; TRIG =1; Delay_1us(10); //需要延时10us以上的高电平 TRIG =0; T1CNTL=0; T1CNTH=0; while(!ECHO); T1CTL = 0x09; //0000 1010 //0000 1001 //通道0,中断有效,32分频;自动重装模式(0x0000->0xffff); L1=T1CNTL; H1=T1CNTH; *ulLoadBufPtr++=T1CNTL; *ulLoadBufPtr++=T1CNTH; EA = 1; //Delay_10us(60000); //Delay_10us(60000); } /**********串口初始化函数****************************/ void InitUart(void){ PERCFG = 0x00; P0SEL = 0x0c; P2DIR &= ~0xc0; U0CSR |= 0x80; U0GCR |= 11; U0BAUD |= 216; UTX0IF = 0; } /**********串口发送函数****************************/ void UartSendString(char *Data, int len){ uint i; for(i=0;i<len;i++){ U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } } #pragma vector = P0INT_VECTOR __interrupt void P0_ISR(void) { EA=0; T1CTL = 0x00; LoadRegBuf[2]=T1CNTL; LoadRegBuf[3]=T1CNTH; L2=T1CNTL; H2=T1CNTH; if(P0IFG&0x080) //外部ECHO反馈信号 { P0IFG = 0; } T1CTL = 0x09; T1CNTL=0; T1CNTH=0; P0IF = 0; //清中断标志 EA=1; } void InitLed(void){ P1DIR |= 0x01; LED1 = 0; } void main(void) { InitUart(); InitLed(); char strTemp[6]; while(1) { UltrasoundRanging(LoadRegBuf); Delay_1s(1); data=256*H2+L2-L1-256*H1; distance=(float)data*340/10000; memset(strTemp, 0, 6); sprintf(strTemp,"%.02f", distance);//将浮点数转成字符串 UartSendString(strTemp, 5); UartSendString("\n",2); if((int)distance<=20){ LED1 = 1; }else{ LED1 = 0; } distance=0; Delay_1s(2); }; }
评论
    相关推荐
    • sr04.zip
      hs04测距,msp430控制,精确到2mm,简单易懂
    • 10136674+超声波+CC2530组网(成功).rar
      基于CC2530进行温湿度测量,并利用超声波模块HC-SR04测得的距离,进行温度校正,最后通过组网,传到PC端进行试验数据的采集与分析
    • Project_5_1_HC-SR04.zip
      基于msp430f149的超声波测距代码,测试通过
    • ultrasonic.zip
      利用msp430f149来显示温度,距离。其中温度传感器为18b20,距离传感器为hc-sr04
    • 3D可视化室-项目开发
      仅使用一个arduino板,两个伺服器,一个hc-sr04和一些python,您就可以创建一个能够显示深度的房间扫描仪!
    • 避障机器人(Arduino)-电路方案
      HC-SR04超声波声纳传感器 TowerPro微型伺服9g 7.4V 1300mah锂电池 跳线 迷你面包板 超声波声纳传感器安装支架 螺丝和螺母 螺丝刀 烙铁 双面胶带(可选) 热胶枪(可选) 第二步:组装机箱 将两根电线焊接到每台直流...
    • stm32f407使用超声波HC_SR04
      给超声波模块接入电源和地。 trig输入一个长为20us的高电平方波 输入方波后,模块会自动发射8个40KHz的声波,echo端的电平会由0变为1; 当超声波返回被模块接收到时,回波引 脚端的电平会由1变为0;...
    • Escornabot-STEMFIE:STEMFIE适应Escornabot
      Escornabot-STEMFIE 具有STEMFIE兼容性的Escornabot 电子Stemfie是一个STL库,支持具有Stemfie兼容性的...HC-SR04传感器支持 HC-SR04对称3H 执照 知识共享署名-非商业性-相同方式共享4.0国际版(CC BY-NC-SA 4.0)
    • HC-SR04:使用Raspberry Pi Pico PIO代码使用HC-SR04读取距离
      HC-SR04使用Raspberry Pi Pico PIO HC-SR04是超声波测距仪()。 基本上,它通过向Trig引脚发送脉冲并测量Echo引脚上的脉冲来工作。 回波脉冲的长度表示到设备前面的物体的距离。 HC-SR04使用5V,而Pico使用3V3。 ...
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路