|
Tài trợ cho PIC Vietnam |
Analog - Bộ nhớ - Bảo mật - Cảm biến nhiệt độ Thảo luận việc sử dụng và thay thế các sản phẩm Analog, Memory, KEELOG và cảm biến nhiệt độ của Microchip cho các thiết kế |
|
Ðiều Chỉnh | Xếp Bài |
09-03-2009, 02:38 PM | #4 |
Đệ tử 6 túi
|
Minh chua biet gui file len:
Ban copy lai nhé: DS1820.c: Code:
//************* Reset ******************* void onewire_reset() { output_low(ONE_WIRE_PIN); delay_us( 500 ); // pull 1-wire low for reset pulse output_float(ONE_WIRE_PIN); // float 1-wire high delay_us( 500 ); // wait-out remaining initialisation window. output_float(ONE_WIRE_PIN); } //************* Write data to the chip******************* void onewire_write(int data) { int count; for (count=0; count<8; ++count) { output_low(ONE_WIRE_PIN); delay_us( 2 ); // pull 1-wire low to initiate write time-slot. output_bit(ONE_WIRE_PIN, shift_right(&data,1,0)); // set output bit on 1-wire delay_us( 60 ); // wait until end of write slot. output_float(ONE_WIRE_PIN); // set 1-wire high again, delay_us( 2 ); // for more than 1us minimum. } } //****************Read data from the chip******************** int onewire_read() { int count, data; for (count=0; count<8; ++count) { output_low(ONE_WIRE_PIN); delay_us( 2 ); // pull 1-wire low to initiate read time-slot. output_float(ONE_WIRE_PIN); // now let 1-wire float high, delay_us( 8 ); // let device state stabilise, shift_right(&data,1,input(ONE_WIRE_PIN)); // and load result. delay_us( 120 ); // wait until end of read slot. } return( data ) ; } và file Temperature.c float ds1820_read() { int8 busy=0, temp1, temp2; signed int16 temp3; float result; onewire_reset(); onewire_write(0xCC); //SkipRom:cho phep truy cap den DS1820 onewire_write(0x44); //Convert Command: chuyen doi gia tri nhiet do thanh so nhi phan /////////////// delay_ms(100); /////////////// while (busy == 0) busy = onewire_read(); onewire_reset(); onewire_write(0xCC); onewire_write(0xBE); //cho Phep MU doc data trong DS1820 temp1 = onewire_read(); temp2 = onewire_read(); temp3 = make16(temp2, temp1); result = (float) temp3 / 2.0; //Calculation for DS18S20 with 0.5 deg C resolution // result = (float) temp3 / 16.0; //Calculation for DS18B20 with 0.1 deg C resolution // delay_ms(200); return(result); }
__________________
-------------------------------------------------------------------------------------- Phùng Minh Tuân Email: tuan.phmt@gmail.com "Cuộc đời sóng gió nuôi ta lớn Bao lần thất bại dạy ta khôn". thay đổi nội dung bởi: namqn, 09-03-2009 lúc 04:48 PM. Lý do: định dạng code |
|
|