全部評(píng)論(2條)
-
- 搗魔臆d熬照 2013-08-03 00:00:00
- 沒(méi)有硬件,沒(méi)有技術(shù)要求,別人實(shí)在沒(méi)有辦法給你做的。再說(shuō)這種東西,還是自己做好些。
-
贊(5)
回復(fù)(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];//全局?jǐn)?shù)據(jù),用以存儲(chǔ)定時(shí)計(jì)數(shù)器的值。 void Delay_1us(uint microSecs) { while(microSecs--) { /* 32 NOPs == 1 usecs 因?yàn)檠訒r(shí)還有計(jì)算的緣故,用了31個(gè)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 因?yàn)檠訒r(shí)還有計(jì)算的緣故,用了310個(gè)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; //設(shè)置系統(tǒng)時(shí)鐘源為32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振穩(wěn)定 CLKCONCMD &= ~0x47; //設(shè)置系統(tǒng)主時(shí)鐘頻率為32MHZ //此時(shí)的CLKCONSTA為0x88。即普通時(shí)鐘和定時(shí)器時(shí)鐘都是32M。 } void Init_UltrasoundRanging() { P1DIR = 0x08; //0為輸入1為輸出 00001000 設(shè)置TRIG P1_3為輸出模式 TRIG=0; //將TRIG 設(shè)置為低電平 P0INP &= ~0x80; //有上拉、下拉 有初始化的左右 P0IEN |= 0x80; //P0_7 中斷使能 PICTL |= 0x01; //設(shè)置P0_7引腳,下降沿觸發(fā)中斷 IEN1 |= 0x20; // P0IE = 1; P0IFG = 0; } void UltrasoundRanging(uchar *ulLoadBufPtr) { SysClkSet32M(); Init_UltrasoundRanging(); EA = 0; TRIG =1; Delay_1us(10); //需要延時(shí)10us以上的高電平 TRIG =0; T1CNTL=0; T1CNTH=0; while(!ECHO); T1CTL = 0x09; //通道0,中斷有效,32分頻;自動(dòng)重裝模式(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反饋信號(hào) { P0IFG = 0; } T1CTL = 0x09; T1CNTL=0; T1CNTH=0; P0IF = 0; //清中斷標(biāo)志 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)
回復(fù)(0)
登錄或新用戶注冊(cè)
- 微信登錄
- 密碼登錄
- 短信登錄
請(qǐng)用手機(jī)微信掃描下方二維碼
快速登錄或注冊(cè)新賬號(hào)
微信掃碼,手機(jī)電腦聯(lián)動(dòng)
注冊(cè)登錄即表示同意《儀器網(wǎng)服務(wù)條款》和《隱私協(xié)議》
熱門問(wèn)答
- 求一個(gè)cc2530 超聲波模塊測(cè)距的程序
2013-08-02 21:14:16
394
2
- 超聲波測(cè)距模塊
- 1——超聲波模塊測(cè)距的有效距離是多少?模塊的有效距離與什么有關(guān)?2——怎樣在一個(gè)單片機(jī)上同時(shí)使用幾個(gè)頻率不同的超聲波模塊(注意是完全同時(shí)工作)?是不是使用頻率不同的模塊就可... 1——超聲波模塊測(cè)距的有效距離是多少?模塊的有效距離與什么有關(guān)? 2——怎樣在一個(gè)單片機(jī)上同時(shí)使用幾個(gè)頻率不同的超聲波模塊(注意是完全同時(shí)工作)?是不是使用頻率不同的模塊就可以?如果是的話,那推薦一下每個(gè)模塊的頻率(同時(shí)使用3-4個(gè))。 展開(kāi)
2012-10-18 09:17:21
690
3
- 求一份verilog的超聲波測(cè)距程序
- 基本要求: 1) 測(cè)量距離不低于0.5m,測(cè)量精度優(yōu)于0.1m。 2) 數(shù)字顯示測(cè)量結(jié)果,并能動(dòng)態(tài)更新,更新周期約為0.5s。 拓展要求: 1) 測(cè)量距離大于1m,測(cè)量精度優(yōu)于0.05m,顯示精度為0.01m,顯示要求同上。 2) 數(shù)字顯示測(cè)量結(jié)果的更新周期可調(diào),顯示... 基本要求: 1) 測(cè)量距離不低于0.5m,測(cè)量精度優(yōu)于0.1m。 2) 數(shù)字顯示測(cè)量結(jié)果,并能動(dòng)態(tài)更新,更新周期約為0.5s。 拓展要求: 1) 測(cè)量距離大于1m,測(cè)量精度優(yōu)于0.05m,顯示精度為0.01m,顯示要求同上。 2) 數(shù)字顯示測(cè)量結(jié)果的更新周期可調(diào),顯示穩(wěn)定。當(dāng)距離小于0.5m時(shí),通過(guò)蜂鳴器給出間歇式的“滴-滴”聲響告警;當(dāng)距離小于0.3m時(shí),告警聲響變得更加急促。 3) 其它功能(如使用多個(gè)超聲波傳感器實(shí)現(xiàn)汽車倒車?yán)走_(dá)的功能)。 拓展要求可要可不要,求做過(guò)的大佬給份程序謝謝。 展開(kāi)
2018-07-02 06:15:24
307
1
- 求US-100(模塊)超聲波測(cè)距的C語(yǔ)言程序,基于51單片機(jī)的,3Q哦~
- 求基于51單片機(jī)的US-100超聲波測(cè)距C語(yǔ)言程序。需要詳細(xì)點(diǎn)的具體設(shè)計(jì)程序,O(∩_∩)O~ US-100模塊參考資料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:實(shí)現(xiàn)2--150cm的測(cè)距,測(cè)得結(jié)果保留4位有效數(shù)字(取整數(shù)),單位:mm。 哪... 求基于51單片機(jī)的US-100超聲波測(cè)距C語(yǔ)言程序。需要詳細(xì)點(diǎn)的具體設(shè)計(jì)程序,O(∩_∩)O~ US-100模塊參考資料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:實(shí)現(xiàn)2--150cm的測(cè)距,測(cè)得結(jié)果保留4位有效數(shù)字(取整數(shù)),單位:mm。 哪位大神幫幫忙嘍,急?。。?!真心謝謝大神了~ 展開(kāi)
2017-05-17 15:16:00
580
1
- 超聲波測(cè)距程序問(wèn)題
- #include
#define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit Tx = P3^3; //產(chǎn)生脈沖引腳 sbit Rx = P3^2; //回波引腳 uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0...
2012-07-17 06:51:21
601
2
- 求一份如圖 基于單片機(jī)超聲波倒車測(cè)距的程序
2016-08-01 00:14:58
662
1
- 超聲波測(cè)距模塊兩次測(cè)距Z短間隔
2012-07-25 02:10:55
421
2
- 51單片機(jī)超聲波測(cè)距模塊代碼
- ****************************************************************************************這是代碼原文 我想問(wèn)一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來(lái)了 才打開(kāi)定時(shí)器1和外部中斷呢 這時(shí)候回波已經(jīng)回來(lái)了啊 不是測(cè)不出超聲波回波的時(shí)間了... ****************************************************************************************這是代碼原文 我想問(wèn)一下主函數(shù)下的while循環(huán)里面 為什么等到echo回波回來(lái)了 才打開(kāi)定時(shí)器1和外部中斷呢 這時(shí)候回波已經(jīng)回來(lái)了啊 不是測(cè)不出超聲波回波的時(shí)間了嗎還有就是 為什么在whlie循環(huán)前先打開(kāi)了總中斷 然后進(jìn)入whlie又立刻關(guān)閉 再重新打開(kāi) 那diyi次打開(kāi)不是很多余嗎 麻煩大神解答一下 展開(kāi)
2018-06-26 20:47:55
563
1
- 求個(gè)51單片機(jī)超聲波測(cè)距(距離+報(bào)警)的c程序
- 求個(gè)51單片機(jī)超聲波測(cè)距(距離+報(bào)警)的c程序
2017-05-19 03:18:16
460
1
- 求一個(gè)基于stm32和us-100的超聲波測(cè)距原理圖
2018-06-17 12:43:03
737
1
- 超聲波模塊測(cè)距時(shí),多個(gè)回波的檢測(cè)
- 用超聲波模塊進(jìn)行測(cè)距,有幾個(gè)疑問(wèn): 1、模塊自動(dòng)發(fā)送8個(gè)40khz的方波,這8個(gè)方波遇到多個(gè)物體時(shí)有沒(méi)有可能返回多個(gè)回波? 2、如果會(huì)返回多個(gè)回波,比如距離超聲波模塊20cm處有個(gè)物體,40cm處也有個(gè)物體,那么應(yīng)該會(huì)有兩個(gè)回波返回,模塊應(yīng)該先接收到20cm處的... 用超聲波模塊進(jìn)行測(cè)距,有幾個(gè)疑問(wèn): 1、模塊自動(dòng)發(fā)送8個(gè)40khz的方波,這8個(gè)方波遇到多個(gè)物體時(shí)有沒(méi)有可能返回多個(gè)回波? 2、如果會(huì)返回多個(gè)回波,比如距離超聲波模塊20cm處有個(gè)物體,40cm處也有個(gè)物體,那么應(yīng)該會(huì)有兩個(gè)回波返回,模塊應(yīng)該先接收到20cm處的回波,此時(shí)接收管腳Echo已經(jīng)拉低了(Echo高電平持續(xù)時(shí)間結(jié)束,測(cè)距完成),40cm處的回波到來(lái)時(shí)就被模塊忽略了嗎?如果想檢測(cè)40cm處的物體該怎么辦? 展開(kāi)
2013-04-13 02:50:25
952
2
- 基于89C52單片機(jī)的HC-SR04超聲波測(cè)距系統(tǒng)程序
2018-12-09 01:37:42
379
0
- 求51單片機(jī)超聲波測(cè)距代碼
2011-08-20 06:16:46
488
2
- 超聲波測(cè)距模塊是什么?哪里有?具體點(diǎn)的,謝謝
2016-12-02 03:53:37
310
1
- 超聲波測(cè)距模塊顯示距離的時(shí)候?yàn)槭裁磿?huì)跳動(dòng)
2012-08-27 00:28:46
503
2
- 幫幫忙 幫我解釋詳細(xì)下 這個(gè)程序 超聲波測(cè)距的
- void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.72)/100; //算出來(lái)是CM
2013-06-17 03:22:24
481
1
- 51單片機(jī)超聲波模塊測(cè)厚度程序怎么寫?
2018-12-03 12:10:19
487
0
- 這個(gè)51單片機(jī)HC-SR04超聲波測(cè)距程序哪里錯(cuò)了
- //晶振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)//定時(shí)器1初始化 { TMOD=0x22;//定時(shí)器1工作方式2,TH1是重裝值,TL1是初值 TH1=0xd2; //重載值 溢出一次約50us TL1=0xd2; //初始化值 ET1=1; //開(kāi)中斷 } void EX1init(void) //外部中斷1初始化 { IT1 = 1; //指定外部中斷0下降沿觸發(fā),INT1 (P3.3) EA = 1; //開(kāi)總中斷 } /*------------------------------------------------ 定時(shí)器1中斷處理 ------------------------------------------------*/ void tim1_isr (void) interrupt 3 { irtime++; //用于計(jì)數(shù)2個(gè)下降沿之間的時(shí)間 } /*------------------------------------------------ 外部中斷1中斷處理 ------------------------------------------------*/ void EX1_ISR (void) interrupt 2 //外部中斷1服務(wù)函數(shù) { 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); } } 主函數(shù)調(diào)用test,然后在數(shù)碼管上顯示(顯示函數(shù)略過(guò)),測(cè)試的時(shí)候,在數(shù)碼管上顯示的距離明顯不對(duì),還各種不穩(wěn)定,有時(shí)就個(gè)位數(shù)上顯示一個(gè)1或2,不知道怎么回事 展開(kāi)
2016-01-25 09:17:10
409
2
- 誰(shuí)有基于AVR atmega16超聲波測(cè)距程序 發(fā)給我
2011-04-03 04:30:42
363
1
- 微波模塊 雷達(dá)測(cè)距
- 在做一個(gè)雷達(dá)液位計(jì)也就是雷達(dá)測(cè)距的項(xiàng)目,主要問(wèn)題在前端,市場(chǎng)上有哪些廉價(jià)的傳感器呢?脈沖雷達(dá),F(xiàn)MCW雷達(dá)都可以。除了innosent就沒(méi)有其他公司生產(chǎn)這一類傳感器呢么?國(guó)產(chǎn)的沒(méi)有?
2011-10-24 16:18:50
366
2
4月突出貢獻(xiàn)榜
推薦主頁(yè)
最新話題





參與評(píng)論
登錄后參與評(píng)論