PIC Vietnam

Go Back   PIC Vietnam > Robotics > Cảm biến

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

Cảm biến Camera, siêu âm, hồng ngoại, gyro, la bàn...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 15-10-2008, 11:28 AM   #5
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
Trích:
Nguyên văn bởi falleaf View Post
Bạn anh_gioi đang làm về đề tài này.
http://www.circuitcellar.com/library...50/2301013.pdf

http://www.robot-electronics.co.uk/htm/srf04tech.htm

http://www.best-microcontroller-proj...pic-sonar.html (source code có ở file đính kèm)
>> Các tính toán đã có hướng dẫn trên link được gửi.
LCD nếu muốn bạn liên hệ bạn anh_gioi để thực hiện, vì bạn ấy đã làm xong phần LCD nhưng vẫn đang loay hoay với phần siêu âm. Cần tự làm phần này, F không muốn trả lời chi tiết đơn giản vì đây là một đề tài rất cơ bản, đơn giản, mà nếu các bạn có thể tự viết code sẽ rất có lợi để hiểu về PIC.
Chúc vui
những đoạn code trên được viết bằng chương trình Mriko, ko hiểu lắm về 1 số lệnh.
còn đây là 1 đọan code em viết được sau vài ngày. mong các anh xem qua giúp em để em có thể hoàn thành kịp thời gian ạ..

Trích:
#include <16F877A.h>
#include <F:\NCKH 2009\PIC 16\count_timer2\def_877a.h>
#use delay(clock=2000000)
#fuses HS,NOWDT, NOPROTECT
#include <F:\NCKH 2009\PIC 16\count_timer2\LCD_lib_4bit.c>
int16 CCP1Value;
int16 CCP1OldValue;
BOOLEAN CCP1Captured;
float S,count;
int8 char1,char2,char3;
#int_CCP1 // Ngat do CCCP1 xay ra, thuc hien lenh...
CCP1_isr()
{
CCP1Value = CCP_1 - CCP1OldValue;
CCP1OldValue = CCP_1;
CCP1Captured = TRUE;
}
//--------------------------------------------------------------------------
void Init_ccp(void) //Khoi tao chuc nang CCCP
{
setup_ccp1(CCP_CAPTURE_RE);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
CCP1Value = 0;
CCP1OldValue = 0;
CCP1Captured = TRUE;
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
}
//--------------------------------------------------------------------------
void Convert_CCP1()
{

long temp;
int8 temp2;
//----- thoi gian SRF doc duoc
count = CCP1Value*1.6e-6;
// Timer1 prescaler DIV_BY_8
//Freq = 1.0/((float)CCP1Value*8e-6);
//-------- khoang cach can do--
S = count/58;
//--------chuyen sang BCD----
temp = (long)S;
char1 = ((temp / 100) + 0x30);
temp2 = (temp % 100);
char2 = ((temp2 / 10) + 0x30);
char3 = ((temp2 % 10) + 0x30);
//-----hien thi LCD----
LCD_putcmd(0x80);
LCD_putchar("S = ");
LCD_putcmd(0x8B);
LCD_putchar(" Cm");
LCD_putcmd(0x84);
LCD_putchar(char1);
LCD_putcmd(0x85);
LCD_putchar(char2);
LCD_putcmd(0x86);
LCD_putchar(char3);
LCD_putcmd(0xC5);
LCD_putchar("Anh_Gioi");

}
void main()
{
Init_ccp();
LCD_init();


while (TRUE) {
//---- 10uS cho trgger ----
output_high(pin_d1);
delay_us(10);
output_low(pin_d1);
if (CCP1Captured)

Convert_CCP1();
}
}
đoạn code này của em vẫn chưa ổn, nhưng không biết chỗ nào chưa ổn nữa. kết quả hiển thị LCD chi có số 0 thôi.

hức..cuối tuần em phải nộp cho thầy rồi hi vọng các anh giúp em ạ..?
anh_gioi 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:30 PM.


Đượ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