资源目录
压缩包内文档预览:
编号:12852411
类型:共享资源
大小:1.67MB
格式:RAR
上传时间:2019-01-08
上传人:机****料
认证信息
个人认证
高**(实名认证)
河南
IP属地:河南
12
积分
- 关 键 词:
-
超声波
测距
资料
hc
sr04
原理图
- 资源描述:
-
- 内容简介:
-
/ / / PIC16F877 + HC-SR04 + LCD03 example / Written October 2008 , using HITECH PIC16 compiler / / Note - assumes a 20MHz crystal, which is 5MHz timer clock / A 1:4 prescaler is used to give a 1.25MHz timer count (0.8uS per tick) / / This code is Freeware - Use it for any purpose you like. / / #include #include _CONFIG(0x3b32); #define trig RB0 #define echo RB1 void clrscn(void); / prototypes void cursor(char pos); void print(char *p); void setup(void); unsigned int get_srf04(void); char s21; / buffer used to hold text to print void main(void) unsigned int range; setup(); / sets up the PIC16F877 I2C port clrscn(); / clears the LCD03 disply cursor(2); / sets cursor to 1st row of LCD03 sprintf(s,“SRF04 Ranger Test“); / text, printed into our buffer print(s); / send it to the LCD03 while(1) / loop forever range = get_srf04(); / get range from srf04 (round trip flight time in 0.8uS units) cursor(24); / sets cursor to 2nd row of LCD03 sprintf(s,“Range = %dcm “, range/72); / convert to cm print(s); / send it to the LCD03 cursor(44); / sets cursor to 3rd row of LCD03 sprintf(s,“Range = %dinch “, range/185); / convert to inches print(s); / send it to the LCD03 TMR1H = 0; / 52mS delay - this is so that the SRF04 ranging is not too rapid TMR1L = 0; / and the previous pulse has faded away before we start the next one T1CON = 0x21; / 1:4 prescale and running TMR1IF = 0; while(!TMR1IF); / wait for delay time TMR1ON = 0; / stop timer unsigned int get_srf04(void) TMR1H = 0xff; / prepare timer for 10uS pulse TMR1L = -14; T1CON = 0x21; / 1:4 prescale and running TMR1IF = 0; trig = 1; / start trigger pulse while(!TMR1IF); / wait 10uS trig = 0; / end trigger pulse TMR1ON = 0; / stop timer TMR1H = 0; / prepare timer to measure echo pulse TMR1L = 0; T1CON = 0x20; / 1:4 prescale but not running yet TMR1IF = 0; while(!echo / wait for echo pulse to start (go high) TMR1ON = 1; / start timer to measure pulse while(echo / wait for echo pulse to stop (go low) TMR1ON = 0; / stop timer return (TMR1H8)+TMR1L; / TMR1H:TMR1L contains flight time of the pulse in 0.8uS units void clrscn(void) SEN = 1; / send start bit while(SEN); / and wait for it to clear SSPIF = 0; SSPBUF = 0xc6; / LCD02 I2C address while(!SSPIF); / wait for interrupt SSPIF = 0; / then clear it. SSPBUF = 0; / address of register to write to while(!SSPIF); / SSPIF = 0; / SSPBUF = 12; / clear screen while(!SSPIF); / SSPIF = 0; / SSPBUF = 4; / cursor off while(!SSPIF); / SSPIF = 0; / PEN = 1; / send stop bit while(PEN); / void cursor(char pos) SEN = 1; / send start bit while(SEN); / and wait for it to clear SSPIF = 0; SSPBUF = 0xc6; / LCD02 I2C address while(!SSPIF); / wait for interrupt SSPIF = 0; / then clear it. SSPBUF = 0; / address of register to write to while(!SSPIF); / SSPIF = 0; / SSPBUF = 2; / set cursor while(!SSPIF); / SSPIF = 0; / SSPBUF = pos; / while(!SSPIF); / SSPIF = 0; / PEN = 1; / send stop bit while(PEN); / void print(char *p) SEN = 1; / send start bit while(SEN); / and wait for it to clear SSPIF = 0; SSPBUF = 0xc6; / LCD02 I2C address while(!SSPIF); / wait for interrupt SSPIF = 0; / then clear it. SSPBUF = 0; / address of register to write to while(!SSPIF); / SSPIF = 0; / while(*p) SSPBUF = *p+; / write the data while(!SSPIF); / SSPIF = 0; / PEN = 1; / send stop bit while(PEN); / void setup(void) unsigned long x; TRISB = 0xfe; / RB0 (trig) is output PORTB = 0xfe; / and starts low TRISC = 0xff; PORTC = 0xff; SSPSTAT = 0x80; SSPCON = 0x38; SSPCON2 = 0x00; SSPADD = 50; / SCL = 91khz with 20Mhz Osc for(x=0; x300000L; x+); / wait for LCD03 to initialise 超声波测距模块(HC-SR04) 用户手册 版本号:V2.0 超声波测距模块(HC-SR04) 用户手册 版本号:V2.0 1. 1.产品特色产品特色 2. 2.产品实物图产品实物图 3. 3.接口定义接口定义 4.4.最远探测距离调节最远探测距离调节 5. 5.模块工作原理模块工作原理 6. 6.应用注意事项应用注意事项 7. 7.模块线路图模块线路图 1 产品特色: 1 产品特色: 1、典型工作用电压:5V1、典型工作用电压:5V 2、超小静态工作电流:小于 5mA 3、感应角度(R3 电阻越大,增益越高,探测角度越大): R3 电阻为 392,不大于 15 度 2、超小静态工作电流:小于 5mA 3、感应角度(R3 电阻越大,增益越高,探测角度越大): R3 电阻为 392,不大于 15 度 R3 电阻为 472, 不大于 30 度 R3 电阻为 472, 不大于 30 度 4、探测距离(R3 电阻可调节增益,即调节探测距离): R3 电阻为 392 2cm-450cm R3 电阻为 472 2cm-700cm 5、高精度:可达 0.3cm 4、探测距离(R3 电阻可调节增益,即调节探测距离): R3 电阻为 392 2cm-450cm R3 电阻为 472 2cm-700cm 5、高精度:可达 0.3cm 6、盲区(2cm)超近 6、盲区(2cm)超近 2 2 产品实物图:产品实物图: 顶部视图 底部视图 3 接口定义:接口定义: Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd 本产品使用方法:控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出. 一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测 距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。 4 最远探测距离调节:最远探测距离调节: 上图标志电阻即 R3,可以调节最大探测距离。R3 电阻为 392,探测距离最大 4.5M 左右, 探测角度小于 15 度;R3 电阻为 472,探测距离最大 7M 左右,探测角度小于 30 度;出厂默 认 392,即最大探测距离 4.5M 左右。R3 电阻大,接收部分增益高,检测距离大,但检测角 度会相应变大, 容易检测到前方旁边的物体。 当然,客户在不要求很高的测试距离的条件下, 可以改小 R3 来减小探测角度,这时最大测距会减小。 5 模块工作原理:模块工作原理: (1)采用 IO 触发测距,给至少 10us 的高电平信号; (2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回; (3)有信号返回,通过 IO 输出一高电平,高电平持续的时间就是 (4)超声波从发射到返回的时间测试距离=(高电平时间*声速(340M/S)/2; 6 应用注意事项:6 应用注意事项: 1:此模块不宜带电连接,如果要带电连接,则先让模块的 Gnd 端先连接。否则会影响 模块工作。 2:测距时,被测物体的面积不少于 0.5 平方米且要尽量平整。否则会影响测试结果。 7 7 模块线路图:模块线路图: 123456 A B C D 654321 D C B A Title NumberRevisionSize B Date:21-Jun-2012Sheet of File:J:超声波线路图.ddbDrawn By: O1 1 1- 2 1+ 3 VCC 4 2+ 5 2- 6 O2 7 O3 8 3- 9 3+ 10 GND 11 4+ 12 4- 13 O4 14 U1 LMC6034IM P50 1 P67 2 P66 3 VDD 4 P65/OSCI 5 P64/OSCO 6 P63/RST 7 P62/TCC 8 P61 9 P60/INT 10 VSS 11 P53 12 P52 13 P51 14 U3 EM78P153 C1+ 1 V+ 2 C1- 3 C2+ 4 C2- 5 V- 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 U2 MAX232 C7 105 C8 105 C17 105 C9 105 C10 105 Q2 857 R11 102 1 2 3 4 J1 CON4 R20 103 R21 103 C6 105 Y1 4M
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。