View Full Version : Giao tiếp I2C
nvquyvn
11-08-2011, 08:10 PM
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
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);
}
}
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.