cám ơn bác
Thông báo
Collapse
No announcement yet.
pic16F876A và DS18B20
Collapse
X
-
chẳng hiểu sao em gán địa chỉ vào cho 1 con, rồi viết ct khác đọc địa chỉ đó để lấy nhiệt độ thì không đúng.
#include <16F886.h>
#device *=16
#device adc=8
#FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=8000000)
#include <LCDdriver.c>
#define ONE_WIRE_PIN PIN_A5
void onewire_reset() // OK if just using a single permanently connected device
{
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.
}
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.
}
}
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 );
}
float ds1820_read()
{
int8 busy=0, temp1, temp2;
signed int16 temp3;
float result;
onewire_reset();
onewire_write(0x55);
onewire_write(0x28);
onewire_write(0x6c);
onewire_write(0xde);
onewire_write(0x0f);
onewire_write(0x01);
onewire_write(0x00);
onewire_write(0x00);
onewire_write(0x6d);
onewire_write(0x44);// convert T
while (busy == 0) busy = onewire_read();
output_high(ONE_WIRE_PIN);
delay_ms(100);
output_low(ONE_WIRE_PIN);
onewire_reset();
onewire_write(0x55);
onewire_write(0x28);
onewire_write(0x6c);
onewire_write(0xde);
onewire_write(0x0f);
onewire_write(0x01);
onewire_write(0x00);
onewire_write(0x00);
onewire_write(0x6d);
onewire_write(0xBE);
temp1 = onewire_read();
temp2 = onewire_read();
temp3 = make16(temp2, temp1);
result = (float)temp3/16.0;
delay_ms(200);
return(result);
}
void main()
{
float temp;
set_tris_b(0x00);
lcd_init();
lcd_putc("\f");
while (TRUE)
{
temp = ds1820_read();
lcd_gotoxy(1,1);
printf(lcd_putc,"temp: %3.1f ", temp);
lcd_putc(223);
lcd_putc("C ");
}
}Đời không như mình nghĩ. phải tranh thủ thôi ***********
Comment
-
bạn lấy số serial # của cái cảm biến của tôi mà đem đi đọc cảm biến của bạn thì làm sao đọc được?
bạn nên tham khảo datasheet con ds18b10, nó có chỉ cách đọc không cần biết trước số mã (serial #)
tôi dùng picbasic pro, bạn dùng C, chúng ta không nói cùng ngôn ngữ
trên diễn đàn cũng có nhiều người dùng con cảm biến này , viết bằng C, bạn tìm thử xem.
tôi có thể đọc và hiểu C, nhưng giúp bạn thì hơi khó đấy.Mãi đi tìm vàng.
Comment
-
muốn biết số của con nào thì gắn vào lần lượt từ con một, dán nhãn số cho nó, xong hết rồi thì gắn 1 lượt tất cả vào.
trên hiển thị có hiện ra T1: ##### , t2:#####. những số này cũng có thể hiện lên trên terminal trên windows.
hay ý bác là phải đọc nó ra.
vì trong datasheet cái phần địa chỉ này không có đoạn nào nói rõ cả, e cũng mới tìm hiểu mong mọi người giúp đỡĐời không như mình nghĩ. phải tranh thủ thôi ***********
Comment
-
Nguyên văn bởi chairman_t Xem bài viếthiểu cách bác nói như sau, mỗi con mình sẽ tự dán nhãn do mình quy ước, bắt đầu bằng mã 28h, do đó em tạm lấy serial đó thử.
hay ý bác là phải đọc nó ra.
vì trong datasheet cái phần địa chỉ này không có đoạn nào nói rõ cả, e cũng mới tìm hiểu mong mọi người giúp đỡMãi đi tìm vàng.
Comment
-
Nguyên văn bởi KVLV Xem bài viếtcái số serial # này là phải gắn con cảm biến vào cái kit tôi đưa lên rồi chạy chương trình mới đọc được.Đời không như mình nghĩ. phải tranh thủ thôi ***********
Comment
-
Nguyên văn bởi chairman_t Xem bài viếtthế là cái serial do mình quy định hay sao bác?
bạn nên đọc datasheet. (tiếng Anh) tôi có kèm theo
bạn nên tìm trên diễn đàn này và picvietnam xem có ai có chương trình mẫu viết bằng C cho con cảm biến này.Attached FilesMãi đi tìm vàng.
Comment
-
Nguyên văn bởi chairman_t Xem bài viếtđúng đó bác, em viết bằng CCS, chương trình đọc viết trực tiếp vào 1 con thì ok, còn lấy địa chỉ của nó, rồi trỏ đến địa chỉ đó đọc còn bị vướng????
Tôi cũng vừa lướt qua, nhiều quá 1 ngày xem không hết.Mãi đi tìm vàng.
Comment
-
chairman_t,
ở post #18, chương trình của bạn có đoạn này #include <LCDdriver.c>
bạn có thể cho tôi xin LCDdriver.c được không ?
sẵn dịp, bạn up luôn file proteus mô phỏng của bạn đang có? (tôi cũng có thể vẽ được nhưng 0 đủ giờ)
Cám ơn trước nha.Mãi đi tìm vàng.
Comment
-
New Folder.rarNguyên văn bởi KVLV Xem bài viếtchairman_t,
ở post #18, chương trình của bạn có đoạn này #include <LCDdriver.c>
bạn có thể cho tôi xin LCDdriver.c được không ?
sẵn dịp, bạn up luôn file proteus mô phỏng của bạn đang có? (tôi cũng có thể vẽ được nhưng 0 đủ giờ)
Cám ơn trước nha.Đời không như mình nghĩ. phải tranh thủ thôi ***********
Comment
-
Đây là pcb layout 1 to 1 copy, nếu bạn muốn làm pcb bằng phương pháp "ủi". PCB hai mặt.
có top & bottom layer, components overlay cho top & bottom.Attached FilesMãi đi tìm vàng.
Comment
Bài viết mới nhất
Collapse
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
hôm nay, 11:37 -
-
bởi pia2k1Cùng câu hỏi và cần được giải đáp thêm ạ...
-
Channel: Hướng dẫn sử dụng diễn đàn
hôm nay, 11:28 -
-
bởi trun9Chào các bạn,
Tôi vừa làm 1 video Youtube đăng lên vào tối hôm qua, hiện tại có 4 lượt xem đều là của tôi vào xem có ai xem không
https://www.youtube.com/watch?v=_oFIBAcvoSY
Vào xem và chửi tôi để tôi bớt làm lại đi.-
Channel: Quảng cáo
hôm nay, 08:55 -
-
Trả lời cho Công thức điện tửbởi mèomướpDạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
25-11-2024, 22:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
-
Channel: Thiết bị điện tử cá nhân
25-11-2024, 22:14 -
-
Trả lời cho Tự làm máy đo Cuộn cảmbởi bacthoHay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
-
Channel: Điện tử dành cho người mới bắt đầu
25-11-2024, 21:48 -
Comment