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 ww88vipWW88, một trong những đơn vị tiên phong trong lĩnh vực cá cược trực tuyến, tự hào mang đến cho người chơi những trải nghiệm giải trí đỉnh cao với hệ sinh thái sản phẩm đa dạng. Từ cá cược thể thao đầy kịch tính đến casino trực...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 12:46 -
-
bởi tungdqEm cần tìm sơ đồ mạch một số Main máy tính đời cao như Asrock B560M-HDV, các cao nhân chỉ giúp với. Thank!
-
Channel: Các mạch điện ứng dụng
hôm nay, 08:27 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677nhân tiện cho mình hỏi thêm về cái phần test hipot (cao áp),là để kiểm tra độ bền cách điện giưa các cuộn dây,mà thấy thông số test thường ở mức 4kvac,vậy nếu mấy con fail đó xài bình thường vẫn dduocj phải không ạ,vì điện mình làm gì lên tới mức đó
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:52 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677máy đo số vòng thì cty có ,mà nó to quá,tưởng có máy nào gọn gọn bỏ túi được thì tiện hơn,vì đi lại nhiều...
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:47 -
-
bởi tmcodonMình thấy diễn đàn có chuyên mục quảng cáo rồi mà. Bạn đóng góp để mở luồng riêng
-
Channel: Hướng dẫn sử dụng diễn đàn
09-11-2024, 13:36 -
-
bởi Nicole08Xin chào mọi người, tôi đã sử dụng Flashforge Inventor 2 được gần 5 năm và rất hài lòng với nó, nhưng tuần trước đã xảy ra sự cố. Có vẻ như động cơ bước đưa sợi in vào đầu nóng đã bị hỏng. Mọi thứ khác có vẻ ổn trên máy...
-
Channel: Điện tử dành cho người mới bắt đầu
09-11-2024, 12:55 -
Comment