PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 15-09-2012, 05:17 PM   #1
nvb_moitrang
Nhập môn đệ tử
 
nvb_moitrang's Avatar
 
Tham gia ngày: Aug 2010
Bài gửi: 7
:
Post Cần giúp về SRS05 dùng pic18

Em đang làm ứng dụng dùng srf05 để đo khoảng cách code của em như sau:


#include "18F4550.h"
#device *=16
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL5,CPUDIV1,V REGEN
#use delay(clock=20000000)
#define LCD_ENABLE_PIN PIN_D2
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include "lcd.c"
#define SRF05_IN PIN_B4


//=================================

long rise,fall,pulse_width;
int8 tram1,chuc1,donvi1;
//int16 d;
#int_ccp1
#int_ccp2
void isr(void)
{
rise = CCP_1;
fall = CCP_2;
pulse_width =fall-rise; // CCP_1 luu thoi gian xung len muc cao
// CCP_2 luu thoi gian xung xuong muc thap

}
void convert_bcd1(int16 x)
{ donvi1=(((x%1000)%100)%10) + 0x30; //chia lay phan du, so hang don vi
tram1=((x%1000)/100) + 0x30; //tach hang tram va hang chuc
chuc1=((x%1000)%100)/10 + 0x30;
lcd_gotoxy(7,2);
lcd_putc(tram1);
lcd_gotoxy(8,2);
lcd_putc(chuc1);
lcd_gotoxy(9,5);
lcd_putc(donvi1);
lcd_gotoxy(10,2);
lcd_putc("cm");
}

void main() {
LCD_init();
setup_ccp1(CCP_CAPTURE_RE); // Configure CCP1 to capture rise
setup_ccp2(CCP_CAPTURE_FE); // Configure CCP2 to capture fall
setup_timer_1(T1_INTERNAL); // Start timer 1
//enable_interrupts(INT_CCP1); // Setup interrupt on rising edge
enable_interrupts(INT_CCP2); // Setup interrupt on falling edge
enable_interrupts(GLOBAL);

while (1)
{
int16 d;
//10us cho trigger
output_high(SRF05_IN);
delay_us(10);
output_low(SRF05_IN);
d =pulse_width/(12*58);
//d =123;
printf(lcd_putc,"\f Khoang cach");
convert_bcd1(d);
delay_ms(100);
}
}

Em nạp vào mạch thì khoảng cánh đo được nhảy loạn xa lên, bác nào có thể chỉ cho em sai chổ nào không à
__________________
học thầy không tày học bạn
nvb_moitrang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 01:37 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam