PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

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

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 11-08-2011, 08:10 PM   #1
nvquyvn
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Bài gửi: 15
:
Giao tiếp I2C

Mình đanh học giao tiếp i2c , mình đo nhiệt độ sử dụng IC số TC74 nhưng mô phỏng ko chạy được. Bác nào biết chỉ em với .
File Kèm Theo
File Type: rar Giao Tiep i2c.rar (29.0 KB, 87 lần tải)
nvquyvn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-08-2011, 11:06 PM   #2
nvquyvn
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Bài gửi: 15
:
Ah file mp mình nối sai dây phải là sclk=pin_c3, sda=pin_c4 . mình ko hiểu sao nó chạy sai ra kêt quả 255 nhỉ ???

thay đổi nội dung bởi: nvquyvn, 12-08-2011 lúc 11:43 AM.
nvquyvn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-08-2011, 06:04 AM   #3
nvquyvn
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Bài gửi: 15
:
Chan qua , cha ai them qtam den , toan la .....
nvquyvn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-08-2011, 08:05 AM   #4
DINH THANH SANG
Đệ tử 3 túi
 
Tham gia ngày: Jul 2011
Bài gửi: 55
:
Trích:
Nguyên văn bởi nvquyvn View Post
Mình đanh học giao tiếp i2c , mình đo nhiệt độ sử dụng IC số TC74 nhưng mô phỏng ko chạy được. Bác nào biết chỉ em với .
bạn tham khảo bài này nhé.
[code=
#include <htc.h>
#include <stdio.h>
#include "lcd.h"
#include "i2c.h"

//__CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);

char khoi_dong_sensor();
char doc_nhiet_do_sesor();


char t;

void main()
{
unsigned int i;

lcd_init();
i2c_init();

if(khoi_dong_sensor())
{
printf("\fI2C Sensor fails");
while(1);
}

printf("\f----- Lab5 -----\n***I2C Sensor***");

// delay 3s
for(i=0;i<30;i++)
__delay_ms(100);

while(1)
{
t = doc_nhiet_do_sesor();
printf("\fNhiet do phong:\n %d", t);
__delay_ms(100);
__delay_ms(100);
__delay_ms(100);
}

}

void putch(char c)
{
lcd_putc(c);
}

char khoi_dong_sensor()
{
i2c_start();
if(i2c_write(0x90)) return -1;
if(i2c_write(0x00)) return -1;
i2c_stop();
return 0;
}

char doc_nhiet_do_sesor()
{
char nhiet;
i2c_start();
if(i2c_write(0x90)) return -1;
if(i2c_write(0x00)) return -1;
i2c_start();
if(i2c_write(0x91)) return -1;

nhiet = i2c_read(1);
i2c_stop();
//return nhiet;
}[\code]
__________________
ĐINH THANH SANG 1990
AN MỸ - CẨM CHÂU - HỘI AN - QUẢNG NAM
DĐ: 01684222047
Yahoo ID: thanh_sang_mua_he_mai_xanh@yahoo.com.vn
DINH THANH SANG vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-09-2011, 12:45 PM   #5
nvquyvn
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Bài gửi: 15
:
e thu rui ko duoc !
co ai giup minh vs .
#include "16f877a.h"
#device *=16
#use delay(clock=20M)
#fuses nowdt, hs, noput, nodebug,noprotect, nobrownout, nolvp, nocpd, nowrt
#use i2c(master,sda=pin_c4,scl=pin_c3)
#include "lcd.c"


void main()
{

int i,temp;
lcd_init();
lcd_putc("STARTING");
for(i=0;i<=10;i++)
{
lcd_putc(".");
delay_ms(5);
}
lcd_putc("\f");
while(1)
{
// khoi dong sensor
i2c_start();
i2c_write(0x9B);
i2c_write(0x00) ;
i2c_stop();
// doc nhiet do
i2c_start();
i2c_write(0x9B);
i2c_write(0x00);
i2c_start();
//if(i2c_write(0x91))
temp=i2c_read(1);
i2c_stop();

lcd_putc(" Nhiet do phong ");
lcd_putc("\n");
printf(lcd_putc,"\r %u",temp);
delay_ms(100);
}
}
nvquyvn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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à 11:25 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