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
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Bài hát mới, nhạc Phật: Về Giữa Chiêm Bao, sáng tác: Hoàng Đình Thường.
[Verse 1] Nhân gian bao thay đổi
ĐỜI là giấc CHIÊM BAO
Người mê lầm tranh đấu
KHỔ ĐAU mãi LUÂN HỒI.
VÔ THƯỜNG nào ai thấu
...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:01 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi davidcopyBạn muốn hỏi nguyên lý làm việc của mạch nào...
-
Channel: Hỗ trợ học tập
24-03-2026, 22:50 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi N_Tu_Hoc_HoiBạn cần sơ đồ mạch ổn áp bao nhiêu Volt, Nếu giống anh bạn guiwr có khả năng ổn áp dùng iC họ 78XX, 79XX. Những mạch này bạn tim kiếm trên google sẽ thấy!!
-
Channel: Hỗ trợ học tập
23-03-2026, 02:32 -
-
bởi chinhnguyen9
Điến âp vào 24V;Điên áp ra 30V;Dòng điện ra 10A
Trên nền tảng mạch Boost thay đổi như sau: cự âm tụ lọc C không nối mas mà nối vào Vc +24V
Mach phản hồi tao điê áp trên tụ lọc này ổn đinh ở 6V
Kết quả:
· Điện áp ra =24V+ 6V=30V
· Công...-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:33 -
-
bởi chinhnguyen92. Các yếu tố để dòng điện đầu ra không bị "thiếu"
Dòng điện đầu ra bị "thiếu" có thể hiểu là không đủ 10A theo yêu cầu hoặc bị sụt áp khi tải thay đổi. Để đảm bảo điều này, bạn cần xem xét các yếu tố sau:
a. Khả năng chịu dòng của cuộn cảm- Dòng bão hòa (I_sat): Như
-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:06 -
bởi chinhnguyen9
1. Tính toán cuộn cảm (Inductor)
Để tính giá trị cuộn cảm, chúng ta cần thực hiện các bước sau:
a. Xác định chu kỳ nhiệm vụ (Duty Cycle - D)
Với mạch tăng áp lý tưởng, chu kỳ nhiệm vụ được tính theo công thức :
D=1-VinVout=1-24V30V=0.2
Vậy D = 0.2 (20%)
b....-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:03 -
-
bởi chinhnguyen9Công thức
Gain (dB) = 20 × log₁₀(A)
Thí dụ 1; 60dB
log₁₀(A)=60/20=3
⇒ A=V_out / V_in = 10³ = 1.000
Thí dụ 2; 100dB
log₁₀(A)=100/20=5
⇒ A=V_out / V_in = 105 = 100.000
Tí dụ 3; LM 358
Large Signal Open Loop Voltage Gain AVOL V/mV RL = 2.0...-
Channel: Hướng dẫn sử dụng diễn đàn
19-03-2026, 08:44 -
-
Trả lời cho Mạch 3s bị giảm điện áp đầu rabởi minhtri0405chả biết bạn xử lý được chưa , kích sạc hoặc điện áp > điện áp khối pin vào 2 chân P - P+ , nhiều mạch phải yêu cầu có kích lần đầu sau đó mới chạy...
-
Channel: Điện tử dành cho người mới bắt đầu
18-03-2026, 10:01 -
-
bởi minhtri0405đây có phải là 1 cách để test mosfet xịn hay dỏm khi mua đồ tàu không nhỉ , vì ko thể đập ra để coi lõi rồi trả hàng được....
-
Channel: Tâm tình dân kỹ thuật
18-03-2026, 09:57 -

Comment