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
-
bởi appongthoMã lỗi H-51 Máy giặt Panasonic là gì?
https://appongtho.com/tu-xoa-loi-h-5...iat-panasonic/
Mã lỗi H-51 trên máy giặt Panasonic là cảnh báo về sự cố quá tải động cơ hoặc hệ thống truyền động, khiến lồng giặt không thể quay...-
Channel: Điện tử gia dụng
hôm nay, 09:53 -
-
bởi tuyennhanTôi đọc từ lâu ở đâu đó đo lưu lượng gió thì phải đặt quạt trước 1 cái ống có đường kính bằng đướng kính cánh quạt rồi đo tốc ở cuối ống thì tính được lưu lượng gió chính xác
Cánh quạt to thì gió tản rộng , êm còn cánh nhỏ thì gió xoáy mạnh , ồn .-
Channel: Điện tử gia dụng
hôm nay, 09:03 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Viết tạm đoạn code C cổ tặng lão:
while(true)
{
Dậy đi bộ();
Ăn sáng();
Uống cà phê();
If(có người rủ phê cà){
Đi luôn();
}
Về ngủ tiếp();
If(vợ gọi){
Dậy ăn...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 23:26 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Không vui chưa chắc đã buồn.
Lão cứ uốn tẹt ga, làm tẹt mông, ngủ tẹt tèn ten đi.
Nếu ngủ quên dậy cứ báo mộng em địa chỉ bên đó. Vài năm nữa ta lại... NHẬU.
Nhậu xong lại đi HÀN hay NHẬT nhỉ!
...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:54 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamHôm nay bác sỹ báo tin ko vui về trái tim già nua của huynh, ngồi uống rượu 1 mình, nhớ đệ và tất cả bạn bè trên phố rum.
Có 1 số kỹ sư trẻ còn nhớ đến huynh qua diễn đàn, hàng năm chúc tết. Huynh thấy cái kinh nghiệm cũ kỹ...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:07 -
-
bởi mèomướpDạ. Chú dinh... có thể vẽ 1 hình bất kỳ, chỉ cần có ghi kích thước thật theo 2 chiều x, y là tính được diện tích ạ. Cháu thấy chị hàng xóm nhà cháu tính cho cụ trưởng bản nhanh lắm ạ, dùng autocad ạ...
-
Channel: Điện tử gia dụng
Hôm qua, 12:40 -
-
bởi vi van phamKhông cần biết code đâu cháu.
Cháu làm mạch phát xung LM 555, điều khiển xung bằng biến trở.
Vẽ lên vị trí biến trở các tần số, sau đó x60 là xong. Máy đo tốc độ của Pháp ngày xưa đo tốc độ máy ly tâm hematocrite cũng...-
Channel: Điện tử gia dụng
Hôm qua, 10:56 -
-
bởi appongthoMã lỗi H-46, H-47 Máy giặt Panasonic là gì?
https://appongtho.com/tu-sua-loi-h-4...iat-panasonic/
Mã lỗi H-46 và H-47 trên máy giặt Panasonic liên quan đến sự cố cảm biến, ảnh hưởng đến khả năng xác định mức nước, chất lượng...-
Channel: Điện tử gia dụng
Hôm qua, 09:57 -
-
bởi dinhthuong80Cảm ơn bạn, tài liệu đó cũng có thể tham khảo được, tuy nhiên nó chuyên về cơ khí chất lưu, công thức kí hiệu khủng khiếp quá mà như là vì viết cho người trong ngành nên công thức không ghi chú chi tiết rõ ràng, cần có thời gian để...
-
Channel: Điện tử gia dụng
Hôm qua, 09:50 -
-
bởi dinhthuong80Cảm ơn bác, cách đo của bác rất chính xác, tiếc là cháu mù về code và vđk nên nếu cháu mà làm theo thì phải chỉnh tần số mạch 555 bằng biến trở rồi lại cho nó đếm xung bằng 1 mạch khác ạ, hoặc là làm bộ thu phát hồng ngoại cho mạch đến xung!!!
Chỉ xác định cánh quạt nào nhiều gió hơn thì...-
Channel: Điện tử gia dụng
Hôm qua, 09:46 -
Comment