em đang làm bài tập đo nhiệt độ dung 18b20 mà không biết làm thế nào. bác nào có sơ đồ nguyên lý và code C thì cho em tham khảo với ạ.
Thông báo
Collapse
No announcement yet.
8051, 18b20
Collapse
X
-
Nguyên văn bởi banhcay12345 Xem bài viếtem đang làm bài tập đo nhiệt độ dung 18b20 mà không biết làm thế nào. bác nào có sơ đồ nguyên lý và code C thì cho em tham khảo với ạ.
Code C cho bạn, nhưng mình chỉ viết cho 1 con DS18B20 trên BUS, viết nhiều con bạn tham khảo thêm trên datasheet nhé !
#define uint unsigned int
sbit DQ = P2^2;
unsigned char temp1,chucnhiet, dvnhiet;
unsigned int temp;
//----------------------------------------------
//##################DELAY#######################
//----------------------------------------------
void delay1(unsigned char time8us)
{
while(time8us--);
}
//----------------------------------------------
//++++++++++++++DS18B20++++++++++++++++++++++++
//------------------------------------------
void reset_ds18b20()
{
laplai:
DQ=1;
delay1(5);
DQ=0;
delay1(149); /* 300us */
delay1(149); /* 300us */
DQ=1;
delay1(29);/* 60us */
delay1(29);
//if(DQ==1)
//goto INIT;
//delay1(119); /* 240us */
if(DQ==0)
{
delay1(119);
goto laplai;
}
delay1(119);
delay1(119);
}
void write_ds18b20(unsigned char j)
{
unsigned char k;
for(k=0;k<8;k++)
{
DQ=1;
delay1(5);
DQ=0;
DQ=0;
DQ=j&0x01;
delay1(29); /*60us*/
j=j>>1;
}
delay1(4);
}
uint read_ds18b20()
{
unsigned char j,k=0;
for(j=0;j<8;j++)
{
DQ=0;
k=k>>1;
DQ=1; /* male D is input*/
delay1(6);/* 15us*/
if(DQ)
k=k|0x80;
delay1(22); /*45us*/
}
return k;
}
void hieu_chinh()//(uint j)
{
temp<<=8;
temp=temp|temp1;
temp=temp/16;
//tramnhiet=temp/100;
chucnhiet=(temp%100)/10;
dvnhiet=temp%10;
}
void xulynhiet_do()
{
reset_ds18b20(); //reset DS18b20 de bat dau qua trinh nhan lay nhiet do tu DS18B20
write_ds18b20(0xcc); //- SKIP ROM (CCh) : Lenh này cho phép thiet bi dieu khien truy nhap thang den các lenh bo nho cua DS1820 mà không can gui chuoi mă 64 bit ROM. Nhu vay se tiet kiem duoc thoi gian cho doi nhung chi mang hieu qua khi trên bus chi có mot cam bien.
write_ds18b20(0x44); //- CONVERT T (44h) : Lenh này khoi dong mot quá tŕnh do và chuyen doi giá tri nhiet do thành so (nhi phân). Sau khi chuyen doi giá tri ket qua do nhiet do duoc luu tru trên thanh ghi nhiet do 2 byte trong bo nho nháp Thoi gian chuyen doi không quá 200 ms, trong thoi gian dang chuyen doi neu thuc hien lenh doc th́ các giá tri doc ra deu bang 0.
reset_ds18b20(); //reset DS18b20
write_ds18b20(0xcc); //- CONVERT T (44h)
write_ds18b20(0xbe); //- READ SCRATCHPAD (BEh) : Lenh này cho phép thiet bi chu doc noi dung bo nho nháp. Quá tŕnh doc bat dau tu bit có ư nghia nhat cua byte 0 và tiep tuc cho den byte thu 9 (byte 8 - CRC). Thiet bi chu có the xuat ra mot xung reset de làm dung quá tŕnh doc bat ky lúc nào neu nhu chi có mot phan cua du lieu trên bo nho nháp can duoc doc.
temp1=read_ds18b20();
temp=read_ds18b20();
hieu_chinh();
}Last edited by tramng; 21-02-2014, 18:43.
-
thank bạn. để mình thử.bây h mình muốn hiển thị nhiệt độ lên led 7 thanh thì làm thế nào hả bạn.Nguyên văn bởi tramng Xem bài viếtSơ đồ nguyên lý cho bạn : [ATTACH]82904[/ATTACH]
Code C cho bạn, nhưng mình chỉ viết cho 1 con DS18B20 trên BUS, viết nhiều con bạn tham khảo thêm trên datasheet nhé !Last edited by banhcay12345; 24-02-2014, 12:05.
Comment
-
Nguyên văn bởi banhcay12345 Xem bài viếtthank bạn. để mình thử.bây h mình muốn hiển thị nhiệt độ lên led 7 thanh thì làm thế nào hả bạn.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho tìm mua đồng hồ vạn năngbởi mèomướpDạ chú mua cái kẹp dòng ấy ạ. Chị hàng xóm nhà cháu có 1 cái thấy lâu lâu rùi chưa hỏng ạ. Ví dụ như mẫu này trên shoppee đầy ạ...
https://vn.shp.ee/dWYVgq7-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 12:48 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi vi van phamBác Đinh Vặn sai rồi,bây giờ con nít mẫu giáo đã giải phương trình 2 ẩn số rồi.
Tôi chứng minh bác lên youtube đầy video đơn giản tựa rất hot, chỉ 1 transistor hay 1 con diode và hướng dẩn cách làm, tác giả không vẽ sơ đồ mạch điện...-
Channel: Điện tử công suất
Hôm qua, 11:55 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nguyendinhvanBây giờ mới có tháng giêng, bao giờ mới đến tháng mười ?
Các cháu mẫu giáo mới lên lớp 1 được có 4 tháng. Nên đừng lấy lý do chúng nó đã đi học rồi để bắt nó viết một bài luận văn, hay là giải bài toán hàm. Phải kiên nhẫn...-
Channel: Điện tử công suất
Hôm qua, 00:47 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nguyendinhvanKhông có loại nào đủ một vạn chức năng đâu. Nó chỉ được 2345678 , hoặc khủng lắm thì được 10 chức năng.
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 00:16 -
-
bởi since0501Cảm ơn bác đã chia sẻ!...
-
Channel: Điện tử dành cho người mới bắt đầu
19-01-2025, 19:00 -
-
bởi Lê Gia TứMình muốn tìm mua đồng hồ vạn năng giá khoảng 200k có đo tần số cao khoảng 0~1mhz mọi người tư vấn giúp mình với
-
Channel: Điện tử dành cho người mới bắt đầu
19-01-2025, 15:47 -
-
Trả lời cho Mạch tự động bật nguồnbởi davidcopyChỉ cần dùng R C mắc vô phím power là ok....
-
Channel: Điện tử gia dụng
18-01-2025, 20:47 -
-
Trả lời cho Hỏi cách điều chế xungbởi davidcopydùng mach khuếch opamp...
-
Channel: Kỹ thuật điện tử tương tự
18-01-2025, 20:42 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi davidcopy
-
Channel: Điện tử dành cho người mới bắt đầu
18-01-2025, 18:56 -
-
bởi bqvietĐấy gọi là cái "điểm gãy" trong đồ thị điện áp - dung lượng còn lại. Dùng điện áp hở cực để xác định sắp hết hoặc gần đầy thì vẫn tạm ổn. Dùng để đo SOC/DOD thì đừng. Ngay cả số km đã đi cũng chả xác định được...
-
Channel: Điện tử dành cho người mới bắt đầu
17-01-2025, 21:36 -
Comment