Công nghệ cảm biến nhiệt độ

Thiết kế cảm biến nhiệt độ kỹ thuật số DS18B20 cho STM32

Bộ dụng cụ đầu dò bằng thép không gỉ cảm biến nhiệt độ DS18B20

DS18B20 là một cảm biến nhiệt độ kỹ thuật số sử dụng thời gian xe buýt duy nhất để giao tiếp với máy chủ. Chỉ một 1 Cần dây để hoàn thành việc đọc dữ liệu nhiệt độ;

DS18B20 có số sê-ri sản phẩm 64 bit tích hợp để nhận dạng dễ dàng. Nhiều cảm biến DS18B20 có thể được kết nối với 1 Dây điện, và thông qua xác thực nhận dạng 64 bit, Thông tin nhiệt độ được thu thập từ các cảm biến khác nhau có thể được đọc riêng.

Bộ dụng cụ đầu dò bằng thép không gỉ cảm biến nhiệt độ DS18B20

Bộ dụng cụ đầu dò bằng thép không gỉ cảm biến nhiệt độ DS18B20

Đầu dò cảm biến nhiệt độ DS18B20

Đầu dò cảm biến nhiệt độ DS18B20

1 dây cảm biến nhiệt độ DS18B20

1 dây cảm biến nhiệt độ DS18B20

Giới thiệu về DS18B20
2.1 Các tính năng chính của DS18B20
1. Chuyển đổi và đầu ra nhiệt độ kỹ thuật số hoàn toàn.
2. Giao tiếp dữ liệu xe buýt đơn tiên tiến.
3. Độ phân giải lên tới 12 bit, với độ chính xác lên tới ± 0,5 độ Celsius.
4. Chu kỳ làm việc tối đa ở độ phân giải 12 bit là 750 mili giây.
5. Chế độ làm việc ký sinh có thể được chọn.
6. Phạm vi nhiệt độ phát hiện là 5555 ° C ~+125 ° C (–67 ° F ~+257 ° F).
7. Eeprom tích hợp, Hàm báo động giới hạn nhiệt độ.
8. 64-Bit Photolithography rom, Số sê-ri sản phẩm tích hợp, thuận tiện cho kết nối đa máy.
9. Các hình thức bao bì khác nhau, thích ứng với các hệ thống phần cứng khác nhau.

Cấu trúc gói chip DS18B20

Cấu trúc gói chip DS18B20

2.2 Hàm pin DS18B20
Điện áp GND mặt đất;
Xe buýt dữ liệu đơn DQ;
Điện áp cung cấp điện VDD;
NC pin trống;

RAM chip DS18B20 và sơ đồ cấu trúc EEPROM

RAM chip DS18B20 và sơ đồ cấu trúc EEPROM

2.3 Nguyên tắc và ứng dụng làm việc DS18B20
Phát hiện nhiệt độ DS18B20 và đầu ra dữ liệu kỹ thuật số được tích hợp đầy đủ trên một chip, Vì vậy, nó có khả năng chống can thiệp mạnh mẽ hơn. Một chu kỳ làm việc của nó có thể được chia thành hai phần, cụ thể là phát hiện nhiệt độ và xử lý dữ liệu.

18B20 có ba dạng tài nguyên bộ nhớ. Họ là: Bộ nhớ chỉ đọc ROM, Được sử dụng để lưu trữ mã DS18B20ID; đầu tiên 8 bit là mã chuỗi đơn dòng (Mã DS18B20 là 19h), sau đây 48 bit là số sê -ri duy nhất của chip; cuối cùng 8 bit là mã CRC (Kiểm tra dự phòng) của những điều trên 56 bit. Dữ liệu được đặt tại sản xuất và không thể thay đổi bởi người dùng. DS18B20 có tổng số 64 bit của rom.

Đăng ký dữ liệu RAM, được sử dụng để tính toán nội bộ và truy cập dữ liệu, Dữ liệu bị mất sau khi mất điện, DS18B20 có tổng số 9 byte của ram, Mỗi byte là 8 bit. Các byte thứ nhất và thứ hai là thông tin giá trị dữ liệu sau khi chuyển đổi nhiệt độ; Các byte thứ ba và thứ tư là hình ảnh phản chiếu của người dùng EEPROM (thường được sử dụng để lưu trữ giá trị báo động nhiệt độ). Giá trị của nó sẽ được làm mới khi nguồn được đặt lại. Byte thứ năm là hình ảnh phản chiếu của người dùng EEPROM thứ ba. Ngày 6, 7th, và các byte thứ 8 là số đăng ký đếm, được thiết kế để cho phép người dùng có được độ phân giải nhiệt độ cao hơn. Chúng cũng là các đơn vị lưu trữ tạm thời để chuyển đổi và tính toán nhiệt độ bên trong. Byte thứ 9 là mã CRC của cái đầu tiên 8 Byte. EEPROM là bộ nhớ không bay hơi được sử dụng để lưu trữ dữ liệu cần được lưu trong một thời gian dài, Giá trị báo động nhiệt độ trên và dưới, và dữ liệu xác minh. DS18B20 có tổng số 3 bit của eeprom, Và có hình ảnh phản chiếu trong RAM để tạo điều kiện cho hoạt động của người dùng.

DS18B20 hoạt động ở chế độ độ phân giải 12 bit theo mặc định. Dữ liệu 12 bit thu được sau khi chuyển đổi được lưu trữ trong hai RAM 8 bit của DS18B20 (Hai byte đầu tiên). Đầu tiên 5 bit trong nhị phân là bit dấu hiệu. Nếu nhiệt độ đo được lớn hơn 0, những cái này 5 bit là 0. Chỉ cần nhân giá trị đo được với 0.0625 Để có được nhiệt độ thực tế. Nếu nhiệt độ nhỏ hơn 0, những cái này 5 bit là 1. Giá trị đo được cần phải được đảo ngược, Được thêm bởi 1, và sau đó nhân với 0.0625 Để có được nhiệt độ thực tế. Hoặc sử dụng hoạt động bit để chiết xuất nhiệt độ: những nơi thập phân chiếm thấp hơn 4 bit, và các bit trên là các bit số nguyên (Số âm không được xem xét).

2.4 Bảng hướng dẫn ROM chip DS18B20
1. Đọc Rom [33H] (Từ lệnh thập lục phân nằm trong dấu ngoặc vuông).
Lệnh này cho phép bộ điều khiển xe buýt đọc ROM 64 bit của DS18B20. Hướng dẫn này chỉ có thể được sử dụng khi chỉ có một DS18B20 trên xe buýt. Nếu nhiều hơn một được kết nối, Xung đột dữ liệu sẽ xảy ra trong quá trình giao tiếp.

2. Atch Rom [55H]
Hướng dẫn này được theo sau bởi số sê-ri 64 bit do bộ điều khiển phát hành. Khi có nhiều DS18B20 trên xe buýt, Chỉ con chip có cùng số sê -ri với số do bộ điều khiển phát hành mới có thể trả lời, Và các chip khác sẽ đợi thiết lập lại tiếp theo. Hướng dẫn này phù hợp cho kết nối một chip và đa chip.

3. Phòng tàu [CCH]
Hướng dẫn này làm cho chip không trả lời mã ROM. Trong trường hợp của một xe buýt, Hướng dẫn này có thể được sử dụng để tiết kiệm thời gian. Nếu hướng dẫn này được sử dụng khi nhiều chip được kết nối, Xung đột dữ liệu sẽ xảy ra, dẫn đến lỗi.

4. Tìm kiếm rom [F0H]
Sau khi chip được khởi tạo, Hướng dẫn tìm kiếm cho phép ROM 64 bit của tất cả các thiết bị được xác định bằng cách loại bỏ khi nhiều chip được kết nối với xe buýt.

5. Tìm kiếm báo động [TÔI]
Trong trường hợp nhiều chip, Hướng dẫn tìm kiếm chip báo động chỉ đáp ứng với các chip đáp ứng điều kiện báo động của nhiệt độ cao hơn th hoặc nhỏ hơn TL. Miễn là chip không được cung cấp năng lượng, Trạng thái báo thức sẽ được duy trì cho đến khi nhiệt độ được đo lại và điều kiện báo động không đạt được.

6. Viết Scratchpad [4Hả]
Đây là hướng dẫn ghi dữ liệu vào RAM. Hai byte dữ liệu được viết sau đó sẽ được lưu trữ tại địa chỉ 2 (Của ram báo thức) và địa chỉ 3 (TL của ram báo thức). Quá trình ghi có thể được chấm dứt bằng tín hiệu đặt lại.

7. Đọc Scratchpad (Đọc dữ liệu từ RAM) [Beh]
Hướng dẫn này sẽ đọc dữ liệu từ RAM, Bắt đầu từ địa chỉ 0 và lên để giải quyết 9, Hoàn thành việc đọc toàn bộ dữ liệu RAM. Chip cho phép tín hiệu đặt lại chấm dứt quá trình đọc, đó là, Các byte không cần thiết tiếp theo có thể bị bỏ qua để giảm thời gian đọc.

8. Sao chép Scratchpad (Sao chép dữ liệu ram vào EEPROM) [48H]
Hướng dẫn này lưu trữ dữ liệu trong RAM vào EEPROM để dữ liệu sẽ không bị mất khi tắt nguồn. Vì chip đang bận rộn với việc xử lý lưu trữ EEPROM, Khi bộ điều khiển gửi khe thời gian đọc, các đầu ra xe buýt “0”, và khi công việc lưu trữ hoàn thành, Xe buýt sẽ xuất ra “1”.
Trong chế độ làm việc ký sinh, phải sử dụng một lực kéo mạnh ngay sau khi hướng dẫn này được ban hành và duy trì ít nhất 10ms để duy trì hoạt động chip.

9. Chuyển đổi t (Chuyển đổi nhiệt độ) [44H]
Sau khi nhận được hướng dẫn này, Chip sẽ thực hiện chuyển đổi nhiệt độ và lưu trữ giá trị nhiệt độ được chuyển đổi ở địa chỉ 1 và 2 của RAM. Vì chip đang bận rộn với việc xử lý chuyển đổi nhiệt độ, Khi bộ điều khiển gửi khe thời gian đọc, các đầu ra xe buýt “0”, và khi công việc lưu trữ hoàn thành, Xe buýt sẽ xuất ra “1”. Trong chế độ làm việc ký sinh, phải sử dụng một lực kéo mạnh ngay sau khi hướng dẫn này được ban hành và duy trì ít nhất 500ms để duy trì hoạt động chip.

10. Nhớ lại eeprom (Sao chép giá trị báo động trong EEPROM thành RAM) [B8H]
Hướng dẫn này sao chép giá trị báo động theo EEPROM lên byte thứ 3 và thứ 4 trong RAM. Vì chip đang bận rộn với việc sao chép xử lý, Khi bộ điều khiển gửi khe thời gian đọc, các đầu ra xe buýt “0”, và khi công việc lưu trữ hoàn thành, các đầu ra xe buýt “1”. Ngoài ra, Hướng dẫn này sẽ được tự động thực hiện khi chip được bật và đặt lại. Bằng cách này, Hai bit byte báo thức trong RAM sẽ luôn là hình ảnh phản chiếu của dữ liệu trong EEPROM.

11. Đọc nguồn cung cấp điện (Chuyển đổi chế độ làm việc) [B4H]
Sau khi hướng dẫn này được ban hành, Khoảng thời gian đọc được phát hành, và chip sẽ trả về từ trạng thái sức mạnh của nó. “0” là trạng thái sức mạnh ký sinh và “1” là trạng thái quyền lực bên ngoài.

2.5 Sơ đồ thời gian DS18B20
2.5.1 DS18B20 Đặt lại và sơ đồ mối quan hệ phản hồi
Đặt lại phải được thực hiện trước mỗi lần giao tiếp. Thời gian đặt lại, thời gian chờ đợi, và thời gian phản hồi nên được lập trình nghiêm ngặt theo thời gian.
DS18B20 Đọc và ghi khoảng cách thời gian: Đọc và ghi dữ liệu DS18B20 được xác nhận bởi bit xử lý khoảng cách thời gian và từ để trao đổi thông tin.

DS18B20 Đặt lại và sơ đồ mối quan hệ phản hồi

DS18B20 Đặt lại và sơ đồ mối quan hệ phản hồi

2.5.2 Viết dữ liệu 0 và dữ liệu 1 đến DS18B20
Trong 15us đầu tiên của khoảng cách thời gian ghi dữ liệu, Xe buýt cần được điều khiển thấp bởi bộ điều khiển, Và sau đó nó sẽ là thời gian lấy mẫu chip cho dữ liệu xe buýt. Thời gian lấy mẫu là 15 ~ 60us. Nếu bộ điều khiển kéo xe buýt cao trong thời gian lấy mẫu, Nó có nghĩa là viết “1”, Và nếu bộ điều khiển kéo xe buýt thấp, Nó có nghĩa là viết “0”.
Mỗi bit truyền nên có bit bắt đầu ở cấp độ thấp ít nhất là 15us, và dữ liệu tiếp theo “0” hoặc “1” nên được hoàn thành trong vòng 45us.
Thời gian truyền của toàn bộ bit nên được giữ ở mức 60 ~ 120us, nếu không, giao tiếp bình thường không thể được đảm bảo.
Ghi chú: DS18B20 đọc và ghi dữ liệu từ bit thấp.

Viết dữ liệu 0 và dữ liệu 1 đến DS18B20

Viết dữ liệu 0 và dữ liệu 1 đến DS18B20

2.5.3 Đọc dữ liệu 0 và dữ liệu 1 từ DS18B20
Thời gian lấy mẫu của điều khiển trong khoảng cách thời gian đọc phải chính xác hơn. Trong khoảng thời gian đọc khoảng cách, Máy chủ cũng phải tạo ra mức thấp nhất là 1us để chỉ ra thời gian đọc. Sau đó, trong 15us sau khi xe buýt được phát hành, DS18B20 sẽ gửi bit dữ liệu nội bộ. Tại thời điểm này, Nếu điều khiển thấy rằng xe buýt cao, Nó có nghĩa là đọc “1”, Và nếu xe buýt thấp, Nó có nghĩa là đọc dữ liệu “0”. Trước khi đọc từng bit, Bộ điều khiển thêm tín hiệu khởi động.

Đọc dữ liệu 0 và dữ liệu 1 từ DS18B20

Đọc dữ liệu 0 và dữ liệu 1 từ DS18B20

Ghi chú: Bit dữ liệu phải được đọc trong vòng 15us từ khi bắt đầu khoảng cách đọc để đảm bảo giao tiếp chính xác.

Trong quá trình giao tiếp, 8 bit của “0” hoặc “1” được sử dụng làm byte, và việc đọc hoặc viết byte bắt đầu từ bit thấp.

2.5.4 Thứ tự nhiệt độ đọc một lần (Chỉ một DS18B20 trên xe buýt)

1. Gửi tín hiệu đặt lại
2. Phát hiện tín hiệu phản hồi
3. Gửi 0xcc
4. Gửi 0x44
5. Gửi tín hiệu đặt lại
6. Phát hiện tín hiệu phản hồi
7. Viết 0xcc
8. Viết 0xbe
9. Vòng lặp 8 thời gian để đọc byte nhiệt độ thấp
10. Vòng lặp 8 thời gian để đọc byte nhiệt độ cao
11. Tổng hợp dữ liệu và quy trình nhiệt độ 16 bit

3. Mã trình điều khiển

3.1 DS18B20.C
#bao gồm “DS18B20.H”
/*
Chức năng: Khởi tạo DS18B20
Kết nối phần cứng: PB15
*/
void DS18B20_init(Vô hiệu)
{
Rcc->APB2ENR|= 1<<3; //PB
GPIOB->CRH&= 0x0FFFFFF;
GPIOB->CRH|= 0x30000000;
GPIOB->ODR|= 1<<15; //Kéo lên
}

/*
Chức năng: Kiểm tra xem thiết bị DS18B20 có tồn tại không
Giá trị trả lại: 1 có nghĩa là thiết bị không tồn tại 0 có nghĩa là thiết bị bình thường
*/
U8 DS18B20_CHECKDEVICE(Vô hiệu) //Chứa xung lại xung, Xung phát hiện
{
DS18B20_OUTPUT_MODE();//Khởi tạo vào chế độ đầu ra
DS18B20_OUT = 0; //Tạo xung lại xung
Delayus(750); //Tạo ra 750us mức thấp
DS18B20_OUT = 1; //Phát hành xe buýt
Delayus(15); //Chờ phản hồi của DS18B20
nếu như(DS18B20_Cleckack())//Phát hiện xung tồn tại
{
trở lại 1;
}
trở lại 0;
}

/*
Chức năng: Phát hiện xung tồn tại của thiết bị DS18B20
Giá trị trả lại: 1 biểu thị lỗi 0 chỉ ra bình thường
*/
U8 DS18B20_Cleckack(Vô hiệu)
{
U8 cnt = 0;
DS18B20_Input_Mode();//Khởi tạo đến chế độ nhập
trong khi(DS18B20_IN&&CNT<200) //Chờ xung tồn tại phản hồi của DS18B20
{
Delayus(1);
CNT ++;
}
nếu như(CNT>= 200)trở lại 1; //lỗi

cnt = 0;
trong khi((!DS18B20_IN)&&CNT<240) //Chờ DS18B20 để phát hành xe buýt
{
Delayus(1);
CNT ++;
}
nếu như(CNT>= 240)trở lại 1; //lỗi
trở lại 0;
}

/*
Chức năng: Viết một byte
Đầu tiên tìm hiểu cách viết một chút.
*/
void DS18B20_Writebyte(U8 CMD)
{
u8 i;
DS18B20_OUTPUT_MODE(); //Khởi tạo vào chế độ đầu ra
vì(i = 0;Tôi<8;i ++)
{
DS18B20_OUT = 0; //Tạo khoảng cách thời gian ghi (Viết bắt đầu)
Delayus(2);
DS18B20_OUT = CMD&0x01; //Gửi bit dữ liệu thực tế
Delayus(60); //Chờ đã hoàn thành viết
DS18B20_OUT = 1; //Phát hành xe buýt và chuẩn bị cho hộp số tiếp theo
CMD>>= 1; //Tiếp tục gửi bit dữ liệu tiếp theo
}
}

/*
Chức năng: Đọc một byte
Đầu tiên tìm hiểu cách đọc một chút.
*/
U8 DS18B20_READBYTE(Vô hiệu)
{
u8 i,Dữ liệu = 0;
vì(i = 0;Tôi<8;i ++)
{
DS18B20_OUTPUT_MODE(); //Khởi tạo vào chế độ đầu ra
DS18B20_OUT = 0; //Tạo khoảng cách thời gian đọc (Đọc bắt đầu)
Delayus(2);
DS18B20_OUT = 1; //Phát hành xe buýt
DS18B20_Input_Mode(); //Khởi tạo đến chế độ nhập
Delayus(8); //Chờ đầu ra dữ liệu DS18B20
dữ liệu>>= 1; //Điền vào bit cao với 0, Mặc định là 0
nếu như(DS18B20_IN) dữ liệu|= 0x80;
Delayus(60);
DS18B20_OUT = 1; //Phát hành xe buýt, Chờ đọc bit dữ liệu tiếp theo
}
Trả về dữ liệu;
}

/*
Chức năng: Đọc dữ liệu nhiệt độ của DS18B20 một lần
Giá trị trả lại: Dữ liệu nhiệt độ đọc
Được coi là tình huống: Chỉ có một DS18B20 được kết nối với xe buýt
*/
U16 DS18B20_READTEMP(Vô hiệu)
{
u16 temp = 0;
u8 temp_h,TEMP_L;
DS18B20_CHECKDEVICE(); //Gửi xung lại xung, Phát hiện xung
DS18B20_WRITEBYTE(0XCC); //Bỏ qua phát hiện trình tự ROM
DS18B20_WRITEBYTE(0x44); //Bắt đầu chuyển đổi nhiệt độ

//Chờ chuyển đổi nhiệt độ để hoàn thành
trong khi(DS18B20_READBYTE()!= 0xff){}

DS18B20_CHECKDEVICE(); //Gửi xung lại xung, Phát hiện xung
DS18B20_WRITEBYTE(0XCC); //Bỏ qua phát hiện trình tự ROM
DS18B20_WRITEBYTE(0Xbe); //Đọc nhiệt độ

TEMP_L = DS18B20_READBYTE(); //Đọc dữ liệu nhiệt độ thấp
TEMP_H = DS18B20_READBYTE(); //Đọc dữ liệu nhiệt độ cao
TEMP = TEMP_L|(TEMP_H<<8); //Nhiệt độ tổng hợp
trả lại temp;
}

3.2 DS18B20.H

#IFNDEF DS18B20_H
#Xác định DS18B20_H
#bao gồm “STM32F10X.H”
#bao gồm “sys.h”
#bao gồm “trễ.h”
#bao gồm “DS18B20.H”
#bao gồm “usart.h”

/*Giao diện gói*/

//Khởi tạo chế độ DS18B20 sang đầu vào
#Xác định DS18B20_Input_Mode() {GPIOB->CRH&= 0x0FFFFFF;GPIOB->CRH|= 0x80000000;}

//Khởi tạo DS18B20 sang chế độ đầu ra
#Xác định DS18B20_OUTPUT_MODE(){GPIOB->CRH&= 0x0FFFFFF;GPIOB->CRH|= 0x30000000;}

//Đầu ra cổng DS18B20 IO
#Xác định DS18B20_OUT PBOUT(15)

//Đầu vào cổng IO DS18B20
#Xác định DS18B20_IN PBIN(15)

//Tuyên bố chức năng
U8 DS18B20_Cleckack(Vô hiệu);
U8 DS18B20_CHECKDEVICE(Vô hiệu);
void DS18B20_init(Vô hiệu);
U16 DS18B20_READTEMP(Vô hiệu);
U8 DS18B20_READBYTE(Vô hiệu);
void DS18B20_Writebyte(U8 CMD);
#endif

POYBAGDYDXCAWKKMAAAAK8RNS4S030.PNG
3.3 Chức năng trì hoãn

/*
Chức năng: Chậm trễ trong chúng tôi
*/
Khoảng trống chậm trễ(int chúng tôi)
{
#IFDEF _Systick_irq_
int i,j;
vì(i = 0;Ival = 0; //Giá trị bộ đếm CNT
Thuốc phụ>Tải = 9*chúng tôi; //9 có nghĩa là 1us
Thuốc phụ>ĐIỀU KHIỂN|= 1<<0; //Bắt đầu hẹn giờ
LÀM
{
tmp = systick->ĐIỀU KHIỂN; //Đọc trạng thái
}trong khi((!(TMP&1<<16))&&(TMP&1<<0));
Thuốc phụ>Val = 0; //Giá trị bộ đếm CNT
Thuốc phụ>ĐIỀU KHIỂN&= ~(1<<0); //Tắt bộ hẹn giờ
#endif
};i ++)>

3.4 Main.c Gọi DS18B20 để đọc nhiệt độ và in nó vào cổng nối tiếp

#bao gồm “STM32F10X.H”

#bao gồm “DS18B20.H”

U8 DS18B20_ROM[8]; //Lưu trữ mã ROM 64 bit của DS18B20

int chính(Vô hiệu)
{
u16 temp;
Usartx_init(USART1,72.115200);//Khởi tạo cổng nối tiếp 1
DS18B20_INIT(); //Khởi tạo DS18B20

/*1. Đọc mã ROM 64 bit của DS18B20*//
//Gửi xung lại xung, Phát hiện xung tồn tại
trong khi(DS18B20_CHECKDEVICE())
{
printf(“Thiết bị DS18B20 không tồn tại!\N”);
Trì hoãn(500);
}
//Gửi lệnh để đọc mã ROM 64 bit
DS18B20_WRITEBYTE(0x33);

//Vòng lặp đọc mã ROM 64 bit
vì(i = 0;Tôi<8;i ++)
{
DS18B20_ROM[Tôi]= DS18B20_READBYTE();
printf(“DS18B20_ROM[%d]= 0x% x n”,Tôi,DS18B20_ROM[Tôi]);
}

trong khi(1)
{
/*2. Đồng thời vận hành tất cả DS18B20 trên xe buýt để bắt đầu chuyển đổi nhiệt độ*/
DS18B20_CHECKDEVICE(); //Gửi xung lại xung, Phát hiện xung
DS18B20_WRITEBYTE(0XCC); //Bỏ qua phát hiện trình tự ROM
DS18B20_WRITEBYTE(0x44); //Bắt đầu chuyển đổi nhiệt độ (Đặt tất cả DS18B20 trên xe buýt chuyển đổi nhiệt độ)
Trì hoãn(500); //Đợi tất cả các chuyển đổi nhiệt độ DS18B20 trên đường dây hoàn thành

/*3. Đọc một mục tiêu đơn vị của nhiệt độ của mỗi DS18B20*/
DS18B20_CHECKDEVICE(); //Gửi xung lại xung, Phát hiện xung
DS18B20_WRITEBYTE(0x55); //Gửi lệnh để phù hợp với ROM
vì(i = 0;Tôi<8;i ++) //Gửi mã 64 bit
{
DS18B20_WRITEBYTE(DS18B20_ROM[Tôi]);
}
DS18B20_WRITEBYTE(0Xbe); //Đọc nhiệt độ
TEMP = DS18B20_READBYTE(); //Đọc dữ liệu nhiệt độ bậc thấp
nhiệt độ|= DS18B20_READBYTE()<<8; //Đọc dữ liệu nhiệt độ bậc cao
printf(“temp1 =%d.%d n”,nhiệt độ>>4,nhiệt độ&0xf);
printf(“temp2 =%f n”,Nhiệt độ*0,0625);

Trì hoãn(500);
}
}