PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp USB, CAN, I2C, SPI, USART... (http://www.picvietnam.com/forum/forumdisplay.php?f=45)
-   -   Giao tiếp I2C (http://www.picvietnam.com/forum/showthread.php?t=10613)

nvquyvn 11-08-2011 08:10 PM

Giao tiếp I2C
 
1 Attachment(s)
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 .

nvquyvn 11-08-2011 11:06 PM

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ỉ ???

nvquyvn 25-08-2011 06:04 AM

Chan qua , cha ai them qtam den , toan la .....

DINH THANH SANG 25-08-2011 08:05 AM

Trích:

Nguyên văn bởi nvquyvn (Post 48121)
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]

nvquyvn 05-09-2011 12:45 PM

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);
}
}


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam