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
-
hiể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ử.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
-
cá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.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
-
thế là cái serial do mình quy định hay sao bác?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
-
số serial này trong post #14, bạn đã nói rồi. là nhà sản xuất khắt số bằng lazer gọi là 64-BIT LASERED ROM CODE.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
-
Anh văn của bạn thế nào? xem mấy trang này coi có giúp gì được không nha? bạn phải đánh vào ds18b20 trên trang của CCS CCS :: SearchNguyê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.rarem hiểu lộn phần lệnh của ds12, chừ giải quyết được, cám ơn bác giúp đỡNguyê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 songchodep76Cảm ơn bác đã nhiệt thành chia sẻ kinh nghiệm bản thân mình cho mọi người.
Tuy nhiên, theo tiếp xúc hạn hẹp của em với mosfet thì vấn đề bác đo vôn ở cực D và thấy đỉnh nó 70V/55V Vds max, như thí nghiệm và trong hình của bác...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 09:46 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 17:01 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Kính chào cả nhà, nhân dịp Tết đang về, sắp 23 tháng chạp rồi, xin gởi lời chúc xuân qua bài hát sau ạ:
Bao nhiêu hân hoan
Chúc Mừng Năm Mới, xuân sang!
Nơi nơi hát vang
nâng chén vui chúc câu An Lành.
Vạn Sự đều Hanh Thông,
Rạng...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 16:46 -
-
bởi ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
05-02-2026, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
05-02-2026, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
03-02-2026, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
03-02-2026, 14:57 -
-
bởi Nexus 6Pe cài KiCAD 2012 khi mở ra nó chỉ hiện ntn...
-
Channel: Điện tử công suất
03-02-2026, 11:20 -

Comment