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 28-11-2012, 02:37 PM   #1
iamtomriddle
Nhập môn đệ tử
 
Tham gia ngày: Apr 2012
Bài gửi: 4
:
Cảm biến góc ADXL345 +Pic 16f877a

Xin chào tất cả mọi người.
Mình tham gia diễn đàn đã khá lâu rồi nhưng không có đóng góp gì cho diễn đàn, mà chôm từ diễn đàn thì khá nhiều. Mình mới giao tiếp với con ADXL345 (cảm biến góc) dùng i2c với pic 16f877a. Mà chưa thấy ai post cả, Bạn nào có hứng thú làm điều khiển xe bằng góc nghiêng, hay đo góc thì có thể dùng con này.

#include <16F877A.h>
#use delay(clock=20000000)
#include <def_877A.h>
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use i2c(Master, sda=PIN_C4, scl=PIN_C3)
#fuses HS,NOPROTECT, BROWNOUT, PUT, NOLVP
//#include <lcd_lib_4bit_use.c>
#include <stdio.h>

void write(int dv, byte address, byte val);
byte read(int dv, byte address) ;

void ini_adxl345() //cai dat ban dau cho adxl345
{
write(0x53,0x38,0x9f);
write(0x53,0x31,0x00);
write(0x53,2C,0x0d);
delay_us(10);
write(0x53,0x2D,0x08);

}


void main() {

set_tris_e(0x00);
set_tris_d(0x00);
set_tris_a(0xff);
set_tris_c(0x00);
ini_adxl345();

while(true) {

int id, pow;
id= read(0x53,0x00); //lay dia chi id adxl345 va dia chi luon la e5
pow=read(0x53,0x2D); // lay gia tri cai dat POWER_CONTROL
int16 x,z,y;
//lay gia tri x,y,z
x=(read(0x53,0x33)*256) | (read(0x53,0x32));
y=(read(0x53,0x35)*256) | (read(0x53,0x34));
z=(read(0x53,0x37)*256) | (read(0x53,0x36));

printf(" x= %ld, y= %ld, z=%ld id=%x, pow=%x",x,y,z,id,pow); //hien thi len rs232
puts(" ");
}

}
//ham viet gia tri vao
void write(int dv, byte address, byte val) {
i2c_start();
i2c_write(dv<<1);
i2c_write(address);
i2c_write(val);
i2c_stop();
}
//ham doc gia tri ra
byte read(int dv, byte address) {
int value;
i2c_start();
i2c_write(dv<<1);
i2c_write(address);
i2c_start();
i2c_write(dv<<1|0x01);
value=i2c_read(0);
i2c_stop();
return value;
}


video: http://youtu.be/fbldodPhFRU
iamtomriddle 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à 04:00 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