仪器网(yiqi.com)欢迎您!

| 注册 登录
网站首页-资讯-专题- 微头条-话题-产品- 品牌库-搜索-供应商- 展会-招标-采购- 社区-知识-技术-资料库-方案-直播- 视频

问答社区

求一个cc2530 超声波模块测距的程序

朵朵朵0116 2013-08-02 21:14:16 324  浏览
  •  

参与评论

全部评论(2条)

  • 捣魔臆d熬照 2013-08-03 00:00:00
    没有硬件,没有技术要求,别人实在没有办法给你做的。再说这种东西,还是自己做好些。

    赞(5)

    回复(0)

    评论

  • 1灬︶噢 2016-08-02 08:13:37
    #ifndef ULTRASOUND_H #define ULTRASOUND_H #define uchar unsigned char #define uint unsigned int #define TRIG P1_3 //P1_2 #define ECHO P0_7 //P0_1 extern uchar RG; extern uchar H1; extern uchar L1; extern uchar H2; extern uchar L2; extern uchar H3; extern uchar L3; extern uint data; extern float distance; extern uchar LoadRegBuf[4]; //void Delay(uint n); void Delay_1us(uint microSecs); void Delay_10us(uint n); void Delay_1s(uint n); void SysClkSet32M(); void Init_UltrasoundRanging(); void UltrasoundRanging(uchar *ulLoadBufPtr); __interrupt void P0_ISR(void); #endif ××××××××××××××××××××××××××××××××××××××××××× //×××××××××××Ultrasound.c**************************** #include <ioCC2530.h> #include "Ultrasound.h" uchar RG; uchar H1; uchar L1; uchar H2; uchar L2; uchar H3; uchar L3; uint data; 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(); EA = 0; TRIG =1; Delay_1us(10); //需要延时10us以上的高电平 TRIG =0; T1CNTL=0; T1CNTH=0; while(!ECHO); T1CTL = 0x09; //通道0,中断有效,32分频;自动重装模式(0x0000->0xffff); L1=T1CNTL; H1=T1CNTH; *ulLoadBufPtr++=T1CNTL; *ulLoadBufPtr++=T1CNTH; EA = 1; Delay_10us(60000); Delay_10us(60000); } #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; } ×××××××××××××××××××××××××××××××××××××× #include <ioCC2530.h> #include "Ultrasound.h" void main(void) { while(1) { UltrasoundRanging(LoadRegBuf); Delay_1s(1); data=256*H2+L2-L1-256*H1; distance=(float)data*340/10000; Delay_1s(2); }; }

    赞(9)

    回复(0)

    评论

获取验证码
我已经阅读并接受《仪器网服务协议》

热门问答

求一个cc2530 超声波模块测距的程序
 
2013-08-02 21:14:16 324 2
超声波测距模块
1——超声波模块测距的有效距离是多少?模块的有效距离与什么有关?2——怎样在一个单片机上同时使用几个频率不同的超声波模块(注意是完全同时工作)?是不是使用频率不同的模块就可... 1——超声波模块测距的有效距离是多少?模块的有效距离与什么有关? 2——怎样在一个单片机上同时使用几个频率不同的超声波模块(注意是完全同时工作)?是不是使用频率不同的模块就可以?如果是的话,那推荐一下每个模块的频率(同时使用3-4个)。 展开
2012-10-18 09:17:21 562 3
求一份verilog的超声波测距程序
基本要求: 1) 测量距离不低于0.5m,测量精度优于0.1m。 2) 数字显示测量结果,并能动态更新,更新周期约为0.5s。 拓展要求: 1) 测量距离大于1m,测量精度优于0.05m,显示精度为0.01m,显示要求同上。 2) 数字显示测量结果的更新周期可调,显示... 基本要求: 1) 测量距离不低于0.5m,测量精度优于0.1m。 2) 数字显示测量结果,并能动态更新,更新周期约为0.5s。 拓展要求: 1) 测量距离大于1m,测量精度优于0.05m,显示精度为0.01m,显示要求同上。 2) 数字显示测量结果的更新周期可调,显示稳定。当距离小于0.5m时,通过蜂鸣器给出间歇式的“滴-滴”声响告警;当距离小于0.3m时,告警声响变得更加急促。 3) 其它功能(如使用多个超声波传感器实现汽车倒车雷达的功能)。 拓展要求可要可不要,求做过的大佬给份程序谢谢。 展开
2018-07-02 06:15:24 230 1
求US-100(模块)超声波测距的C语言程序,基于51单片机的,3Q哦~
求基于51单片机的US-100超声波测距C语言程序。需要详细点的具体设计程序,O(∩_∩)O~ US-100模块参考资料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:实现2--150cm的测距,测得结果保留4位有效数字(取整数),单位:mm。 哪... 求基于51单片机的US-100超声波测距C语言程序。需要详细点的具体设计程序,O(∩_∩)O~ US-100模块参考资料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:实现2--150cm的测距,测得结果保留4位有效数字(取整数),单位:mm。 哪位大神帮帮忙喽,急啊!!!真心谢谢大神了~ 展开
2017-05-17 15:16:00 517 1
超声波测距程序问题
#include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit Tx = P3^3; //产生脉冲引脚 sbit Rx = P3^2; //回波引脚 uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0...
2012-07-17 06:51:21 504 2
求一份如图 基于单片机超声波倒车测距的程序
2016-08-01 00:14:58 561 1
超声波测距模块两次测距Z短间隔
 
2012-07-25 02:10:55 348 2
51单片机超声波测距模块代码
****************************************************************************************这是代码原文 我想问一下主函数下的while循环里面 为什么等到echo回波回来了 才打开定时器1和外部中断呢 这时候回波已经回来了啊 不是测不出超声波回波的时间了... ****************************************************************************************这是代码原文 我想问一下主函数下的while循环里面 为什么等到echo回波回来了 才打开定时器1和外部中断呢 这时候回波已经回来了啊 不是测不出超声波回波的时间了吗还有就是 为什么在whlie循环前先打开了总中断 然后进入whlie又立刻关闭 再重新打开 那diyi次打开不是很多余吗 麻烦大神解答一下 展开
2018-06-26 20:47:55 487 1
求个51单片机超声波测距(距离+报警)的c程序
求个51单片机超声波测距(距离+报警)的c程序
2017-05-19 03:18:16 374 1
求一个基于stm32和us-100的超声波测距原理图
 
2018-06-17 12:43:03 627 1
超声波模块测距时,多个回波的检测
用超声波模块进行测距,有几个疑问: 1、模块自动发送8个40khz的方波,这8个方波遇到多个物体时有没有可能返回多个回波? 2、如果会返回多个回波,比如距离超声波模块20cm处有个物体,40cm处也有个物体,那么应该会有两个回波返回,模块应该先接收到20cm处的... 用超声波模块进行测距,有几个疑问: 1、模块自动发送8个40khz的方波,这8个方波遇到多个物体时有没有可能返回多个回波? 2、如果会返回多个回波,比如距离超声波模块20cm处有个物体,40cm处也有个物体,那么应该会有两个回波返回,模块应该先接收到20cm处的回波,此时接收管脚Echo已经拉低了(Echo高电平持续时间结束,测距完成),40cm处的回波到来时就被模块忽略了吗?如果想检测40cm处的物体该怎么办? 展开
2013-04-13 02:50:25 870 2
基于89C52单片机的HC-SR04超声波测距系统程序
 
2018-12-09 01:37:42 290 0
求51单片机超声波测距代码
 
2011-08-20 06:16:46 409 2
超声波测距模块显示距离的时候为什么会跳动
 
2012-08-27 00:28:46 391 2
超声波测距模块是什么?哪里有?具体点的,谢谢
 
2016-12-02 03:53:37 240 1
帮帮忙 帮我解释详细下 这个程序 超声波测距的
void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.72)/100; //算出来是CM
2013-06-17 03:22:24 401 1
51单片机超声波模块测厚度程序怎么写?
 
2018-12-03 12:10:19 401 0
谁有基于AVR atmega16超声波测距程序 发给我
 
2011-04-03 04:30:42 285 1
这个51单片机HC-SR04超声波测距程序哪里错了
//晶振11.0592MHz #include #define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TI... //晶振11.0592MHz #include #define uchar unsigned char #define uint unsigned int sbit trig=P0^2; sbit echo=P3^3; float dis=0; uint irtime=0; void delay_20us() { uchar bt ; for(bt=0;bt<100;bt++); } void TIM1init(void)//定时器1初始化 { TMOD=0x22;//定时器1工作方式2,TH1是重装值,TL1是初值 TH1=0xd2; //重载值 溢出一次约50us TL1=0xd2; //初始化值 ET1=1; //开中断 } void EX1init(void) //外部中断1初始化 { IT1 = 1; //指定外部中断0下降沿触发,INT1 (P3.3) EA = 1; //开总中断 } /*------------------------------------------------ 定时器1中断处理 ------------------------------------------------*/ void tim1_isr (void) interrupt 3 { irtime++; //用于计数2个下降沿之间的时间 } /*------------------------------------------------ 外部中断1中断处理 ------------------------------------------------*/ void EX1_ISR (void) interrupt 2 //外部中断1服务函数 { dis=340*(irtime/2.0)*50/10000; irtime=0; TR1=0; EX1=0; } void test(void) { trig=1; delay_20us(); trig=0; EX1=1; while(!echo); TR1=1; } void main(void) { TIM1init(); EX1init(); while(1) { test(); display(dis); } } 主函数调用test,然后在数码管上显示(显示函数略过),测试的时候,在数码管上显示的距离明显不对,还各种不稳定,有时就个位数上显示一个1或2,不知道怎么回事 展开
2016-01-25 09:17:10 337 2
微波模块 雷达测距
在做一个雷达液位计也就是雷达测距的项目,主要问题在前端,市场上有哪些廉价的传感器呢?脉冲雷达,FMCW雷达都可以。除了innosent就没有其他公司生产这一类传感器呢么?国产的没有?
2011-10-24 16:18:50 305 2

10月突出贡献榜

推荐主页

最新话题