پاسخ : درایو سنسور دما mlx90614 با avr
امکانش هست که کدتونو قرار بدید تا من روی یکی از بردهائی که دارم پروگرام کنم نتیجشو بهتون بگم
امکانش هست که کدتونو قرار بدید تا من روی یکی از بردهائی که دارم پروگرام کنم نتیجشو بهتون بگم
unsigned char a; unsigned char b; int w1; char *p; unsigned char buf[2]; int number=0; long int n=0;
w1=0x5A<<1; i2c_start(); i2c_write(w1); i2c_write(0x07); i2c_start(); i2c_write(w1 | 1); b=i2c_read(0); a=i2c_read(0); i2c_stop(); delay_ms(20); buf[1]=a; buf[0]=b; number = (buf[1]<<8)+buf[0]; n=number; n=(n*2)/100; lcd_puts("O:"); itoa(n-273,p); lcd_puts(p); lcd_clear(); delay_ms(180);
void main(void) { Initialize(); init(); read(); } void read() { char txt[7]; char lowbyte; char highbyte; char pec; char ack =0; int temp; print("started"); while(1){ do { do{ do{ Soft_I2C_Start(); ack = Soft_I2C_Write(0x5A); }while(ack == 0); //print("ack1"); ack = Soft_I2C_Write(0x07); }while(ack==0); //print("ack2"); Soft_I2C_Start(); ack = Soft_I2C_Write(0x01); }while(ack ==0); //print("ack3"); lowbyte = Soft_I2C_Read(1); highbyte = Soft_I2C_Read(1); pec = Soft_I2C_Read(0); Soft_I2C_Stop(); //print("finished"); temp = (((((highbyte&0x007F)<<8)+ lowbyte) * 0.02)-.01); temp = temp - 273; IntToStr(temp,txt); print(txt); _delay_ms(100); } } void print(char *ptr) { command(0x01); home(); while(*ptr) { write(*ptr++); } } void write(char i) { PORTC = i; RS = 1; R_W = 0; Nybble(); i = i << 4; PORTC = i; Nybble(); }
دیدگاه