تكنولوجيا استشعار درجة الحرارة

تصميم مستشعر درجة الحرارة الرقمية DS18B20 لـ STM32

DS18B20 درجة حرارة استشعار الأسلاك مجموعة مسبار الفولاذ المقاوم للصدأ

DS18B20 هو مستشعر درجة حرارة رقمي يستخدم توقيت حافلة واحد للتواصل مع المضيف. فقط 1 هناك حاجة إلى سلك لإكمال قراءة بيانات درجة الحرارة;

يحتوي DS18B20 على رقم مسلسل منتج 64 بت لسهولة التعرف. يمكن توصيل أجهزة استشعار DS18B20 المتعددة 1 سلك, ومن خلال مصادقة الهوية 64 بت, يمكن قراءة معلومات درجة الحرارة التي تم جمعها من أجهزة استشعار مختلفة بشكل منفصل.

DS18B20 درجة حرارة استشعار الأسلاك مجموعة مسبار الفولاذ المقاوم للصدأ

DS18B20 درجة حرارة استشعار الأسلاك مجموعة مسبار الفولاذ المقاوم للصدأ

DS18B20 درجة الحرارة مستشعر التحقيق TPE Overmolding طقم

DS18B20 درجة الحرارة مستشعر التحقيق TPE Overmolding طقم

1 مستشعر درجة حرارة السلك DS18B20

1 مستشعر درجة حرارة السلك DS18B20

مقدمة إلى DS18B20
2.1 الميزات الرئيسية لـ DS18B20
1. تحويل وإخراج درجة الحرارة الرقمية بالكامل.
2. اتصال بيانات الحافلة المتقدمة.
3. دقة ما يصل إلى 12 بت, بدقة تصل إلى 0.5 درجة مئوية.
4. الحد الأقصى لدورة العمل بدقة 12 بت هو 750 ميلي ثانية.
5. يمكن تحديد وضع العمل الطفيلي.
6. نطاق درجة حرارة الكشف هو -55 درجة مئوية ~+125 درجة مئوية (-67 درجة فهرنهايت ~+257 درجة فهرنهايت).
7. مدمج eeprom, وظيفة إنذار الحد من درجة الحرارة.
8. 64-البت photolithography rom, الرقم التسلسلي للمنتج المدمج, مريح للاتصال متعدد الآلات.
9. أشكال التعبئة المختلفة, التكيف مع أنظمة الأجهزة المختلفة.

بنية حزمة رقاقة DS18B20

بنية حزمة رقاقة DS18B20

2.2 DS18B20 دبوس وظيفة
GND الجهد الأرض;
DQ ناقل بيانات واحد;
VDD جهد إمدادات الطاقة;
NC دبوس فارغ;

DS18B20 CHIP RAM ومخطط هيكل EEPROM

DS18B20 CHIP RAM ومخطط هيكل EEPROM

2.3 DS18B20 مبدأ العمل والتطبيق
DS18B20 الكشف عن درجة حرارة وإخراج البيانات الرقمية متكاملة بالكامل على شريحة واحدة, لذلك لديها قدرة أقوى لمكافحة التداخل. يمكن تقسيم دورة عمل واحدة إلى جزأين, وهي اكتشاف درجة الحرارة ومعالجة البيانات.

18B20 لديه ثلاثة أشكال من موارد الذاكرة. هم: ذاكرة القراءة فقط, تستخدم لتخزين رمز DS18B20ID; الأول 8 البتات هي رمز سلسلة خط واحد (رمز DS18B20 هو 19 ساعة), ما يلي 48 البتات هي الرقم التسلسلي الفريد للرقاقة; الأخير 8 البتات هي رمز CRC (فحص التكرار) مما سبق 56 أجزاء. تم تعيين البيانات عند الإنتاج ولا يمكن تغييرها بواسطة المستخدم. DS18B20 لديه ما مجموعه 64 أجزاء من روم.

سجل بيانات RAM, تستخدم للحساب الداخلي والوصول إلى البيانات, تضيع البيانات بعد انقطاع التيار الكهربائي, DS18B20 لديه ما مجموعه 9 بايت من ذاكرة الوصول العشوائي, كل بايت 8 أجزاء. البايتات الأولى والثانية هي معلومات قيمة البيانات بعد تحويل درجة الحرارة; البايتات الثالثة والرابعة هما صورة المرآة لـ Eeprom للمستخدم (يستخدم عادة لتخزين قيمة إنذار درجة الحرارة). سيتم تحديث قيمتها عند إعادة تعيين الطاقة. البايت الخامس هي صورة المرآة لـ EEPROM الثالث للمستخدم. السادس, 7ذ, والبايت الثامن هي سجلات العد, التي تم تصميمها للسماح للمستخدمين بالحصول على دقة ارتفاع درجة الحرارة. كما أنها وحدات تخزين مؤقتة لتحويل درجة الحرارة الداخلية وحسابها. البايت التاسع هو رمز CRC لأول مرة 8 بايت. EEPROM هي ذاكرة غير متطايرة تستخدم لتخزين البيانات التي يجب حفظها لفترة طويلة, قيم إنذار درجة الحرارة العلوية والسفلية, وبيانات التحقق. DS18B20 لديه ما مجموعه 3 أجزاء من eeprom, وهناك صور مرآة في ذاكرة الوصول العشوائي لتسهيل تشغيل المستخدم.

يعمل DS18B20 في وضع دقة 12 بت افتراضيًا. يتم تخزين البيانات المكونة من 12 بت بعد التحويل في اثنين من الكباش 8 بت من DS18B20 (أول بايتان). الأول 5 البتات في ثنائي هي بتات لات. إذا كانت درجة الحرارة المقاسة أكبر من 0, هؤلاء 5 البتات 0. فقط اضرب القيمة المقاسة 0.0625 للحصول على درجة الحرارة الفعلية. إذا كانت درجة الحرارة أقل من 0, هؤلاء 5 البتات 1. يجب عكس القيمة المقاسة, أضيفت بواسطة 1, ثم تضاعف 0.0625 للحصول على درجة الحرارة الفعلية. أو استخدم عملية بت لاستخراج درجة الحرارة: تشغل الأماكن العشرية أقل 4 أجزاء, والبت العليا هي أجزاء عدد صحيح (لا يتم النظر في الأرقام السلبية).

2.4 جدول تعليمات DS18B20 رقاقة ROM
1. اقرأ روم [33ح] (كلمة الأمر سداسي عشري في أقواس مربعة).
يسمح هذا الأمر لوحدة التحكم في الحافلة بقراءة ROM 64 بت DS18B20. لا يمكن استخدام هذه التعليمات إلا عندما يكون هناك فقط DS18B20 على الحافلة. إذا كان أكثر من واحد متصلاً, ستحدث تعارضات البيانات أثناء الاتصال.

2. ATCH ROM [55ح]
يتبع هذه التعليمات رقم تسلسلي 64 بت أصدرها وحدة التحكم. عندما يكون هناك عدة DS18B20s على الحافلة, فقط الشريحة التي تحمل نفس الرقم التسلسلي مثل الرقم الصادر عن المراقب يمكنه الرد, وستنتظر الرقائق الأخرى إعادة التعيين التالي. هذه التعليمات مناسبة لاتصال الشرق الواحد ومتعدد السقوط.

3. غرفة السفينة [CCH]
هذه التعليمات تجعل الشريحة لا تستجيب لرمز ROM. في حالة حافلة واحدة, يمكن استخدام هذه التعليمات لتوفير الوقت. إذا تم استخدام هذه التعليمات عند توصيل رقائق متعددة, ستحدث تعارضات البيانات, مما أدى إلى أخطاء.

4. ابحث في ROM [F0H]
بعد تهيئة الشريحة, تتيح تعليمات البحث أن يتم تحديد ROM 64 بت لجميع الأجهزة عن طريق القضاء عند توصيل رقائق متعددة بالحافلة.

5. البحث الإنذار [أنا]
في حالة رقائق متعددة, تستجيب تعليمات بحث شريحة الإنذار فقط للرقائق التي تلبي حالة التنبيه من درجة الحرارة أعلى من TH أو أقل من TL. طالما أن الشريحة لا يتم تشغيلها, سيتم الحفاظ على حالة المنبه حتى يتم قياس درجة الحرارة مرة أخرى ولا يتم الوصول إلى حالة التنبيه.

6. اكتب scratchpad [4إيه]
هذه هي التعليمات لكتابة البيانات إلى ذاكرة الوصول العشوائي. سيتم تخزين بايتات البيانات المكتوبة لاحقًا على العنوان 2 (ال th من الإنذار رام) والعنوان 3 (TL من ذاكرة الوصول العشوائي المنبه). يمكن إنهاء عملية الكتابة بواسطة إشارة إعادة تعيين.

7. اقرأ scratchpad (اقرأ البيانات من ذاكرة الوصول العشوائي) [بيه]
سوف تقرأ هذه التعليمات البيانات من ذاكرة الوصول العشوائي, بدءا من العنوان 0 وحتى المعالجة 9, إكمال قراءة بيانات ذاكرة الوصول العشوائي بأكملها. تتيح الرقاقة إشارة إعادة تعيين لإنهاء عملية القراءة, إنه, يمكن تجاهل البايتات غير الضرورية اللاحقة لتقليل وقت القراءة.

8. نسخ scratchpad (نسخ بيانات ذاكرة الوصول العشوائي إلى EEPROM) [48ح]
تقوم هذه التعليمات بتخزين البيانات الموجودة في ذاكرة الوصول العشوائي إلى EEPROM حتى لا تضيع البيانات عند إيقاف الطاقة. نظرًا لأن الشريحة مشغولة بمعالجة تخزين EEPROM, عندما يرسل وحدة التحكم فتحة وقت القراءة, مخرجات الحافلة “0”, وعند اكتمال أعمال التخزين, ستخرج الحافلة “1”.
في وضع العمل الطفيلي, يجب استخدام سحب قوي مباشرة بعد إصدار هذه التعليمات وصيانتها لمدة 10 مللي ثانية على الأقل للحفاظ على تشغيل الرقاقة.

9. تحويل ر (تحويل درجة الحرارة) [44ح]
بعد تلقي هذه التعليمات, ستؤدي الشريحة تحويل درجة الحرارة وتخزين قيمة درجة الحرارة المحولة في العنوان الأول والثاني من ذاكرة الوصول العشوائي. نظرًا لأن الشريحة مشغولة بمعالجة تحويل درجة الحرارة, عندما يرسل وحدة التحكم فتحة وقت القراءة, مخرجات الحافلة “0”, وعند اكتمال أعمال التخزين, ستخرج الحافلة “1”. في وضع العمل الطفيلي, يجب استخدام سحب قوي مباشرة بعد إصدار هذه التعليمات وصيانتها لمدة 500 مللي ثانية على الأقل للحفاظ على تشغيل الرقاقة.

10. أذكر eeprom (انسخ قيمة الإنذار في EEPROM إلى ذاكرة الوصول العشوائي) [B8H]
تقوم هذه التعليمات بنسخ قيمة الإنذار في EEPROM إلى البايتات الثالثة والرابعة في ذاكرة الوصول العشوائي. نظرًا لأن الشريحة مشغولة بنسخ المعالجة, عندما يرسل وحدة التحكم فتحة وقت القراءة, مخرجات الحافلة “0”, وعند اكتمال أعمال التخزين, مخرجات الحافلة “1”. فضلاً عن ذلك, سيتم تنفيذ هذه التعليمات تلقائيًا عند تشغيل الشريحة وإعادة ضبطها. بهذه الطريقة, ستكون بتات بايت التنبيه في ذاكرة الوصول العشوائي دائمًا صورة المرآة للبيانات في EEPROM.

11. اقرأ إمدادات الطاقة (مفتاح وضع العمل) [B4H]
بعد إصدار هذه التعليمات, يتم إصدار فجوة وقت القراءة, وستقوم الشريحة بإرجاع كلمة حالة الطاقة الخاصة بها. “0” هي حالة القوة الطفيلية و “1” هي حالة الطاقة الخارجية.

2.5 DS18B20 مخطط توقيت
2.5.1 DS18B20 إعادة تعيين ورسم التخطيط لعلاقة الاستجابة
يجب إجراء إعادة تعيين قبل كل اتصال. وقت إعادة ضبط, وقت الانتظار, ويجب برمجة وقت الاستجابة بشكل صارم وفقًا لتوقيت.
DS18B20 اقرأ وكتابة فجوة الوقت: يتم تأكيد قراءة البيانات والكتابة DS18B20 من خلال BIT معالجة الفجوة الزمنية وكلمة الأمر لتبادل المعلومات.

DS18B20 إعادة تعيين ورسم التخطيط لعلاقة الاستجابة

DS18B20 إعادة تعيين ورسم التخطيط لعلاقة الاستجابة

2.5.2 اكتب البيانات 0 والبيانات 1 إلى DS18B20
في أول 15us من فجوة وقت بيانات الكتابة, يجب سحب الحافلة من قبل وحدة التحكم, وبعد ذلك سيكون وقت أخذ عينات الرقائق لبيانات الحافلة. وقت أخذ العينات هو 15 ~ 60us. إذا سحبت وحدة التحكم الحافلة عالية خلال وقت أخذ العينات, وهذا يعني الكتابة “1”, وإذا سحب وحدة التحكم منخفض الحافلة, وهذا يعني الكتابة “0”.
يجب أن يكون لكل جزء من ناقل الحركة جزءًا منخفضًا من مستوى 15US على الأقل, والبيانات اللاحقة “0” أو “1” يجب أن تكتمل خلال 45us.
يجب الاحتفاظ بوقت الإرسال للكت بأكمله في 60 ~ 120us, وإلا لا يمكن ضمان الاتصال العادي.
ملحوظة: يقرأ DS18B20 ويكتب البيانات من بتات منخفضة.

اكتب البيانات 0 والبيانات 1 إلى DS18B20

اكتب البيانات 0 والبيانات 1 إلى DS18B20

2.5.3 قراءة البيانات 0 والبيانات 1 من DS18B20
يجب أن يكون وقت أخذ العينات لعنصر التحكم أثناء الفجوة الزمنية أكثر دقة. خلال الفجوة الزمنية القراءة, يجب أن يولد المضيف أيضًا مستوى منخفض لا يقل عن 1us للإشارة إلى بداية وقت القراءة. ثم, في 15us بعد إطلاق الحافلة, سيرسل DS18B20 بت البيانات الداخلية. في هذا الوقت, إذا وجدت عنصر التحكم أن الحافلة مرتفع, وهذا يعني القراءة “1”, وإذا كانت الحافلة منخفضة, وهذا يعني قراءة البيانات “0”. قبل قراءة كل بت, يضيف وحدة التحكم إشارة البدء.

قراءة البيانات 0 والبيانات 1 من DS18B20

قراءة البيانات 0 والبيانات 1 من DS18B20

ملحوظة: يجب قراءة بت البيانات في غضون 15us من بداية الفجوة القراءة لضمان الاتصال الصحيح.

أثناء الاتصال, 8 أجزاء من “0” أو “1” تستخدم كبايت, وتبدأ القراءة أو كتابة البايت من بتات منخفضة.

2.5.4 ترتيب درجة حرارة القراءة مرة واحدة (فقط DS18B20 على الحافلة)

1. إرسال إشارة إعادة تعيين
2. اكتشاف إشارة الاستجابة
3. إرسال 0xcc
4. إرسال 0x44
5. إرسال إشارة إعادة تعيين
6. اكتشاف إشارة الاستجابة
7. اكتب 0xcc
8. اكتب 0xbe
9. حلقة 8 مرات لقراءة البايت المنخفض لدرجة الحرارة
10. حلقة 8 مرات لقراءة بايت ارتفاع درجة الحرارة
11. توليف بيانات وعملية درجة الحرارة 16 بت

3. رمز السائق

3.1 DS18B20.C
#يشمل “DS18B20.H”
/*
وظيفة: DS18B20 التهيئة
اتصال الأجهزة: PB15
*/
void ds18b20_init(فارغ)
{
RCC->APB2ENR|= 1<<3; //PB
gpiob->CRH&= 0x0fffffff;
gpiob->CRH|= 0x30000000;
gpiob->ODR|= 1<<15; //سحب
}

/*
وظيفة: تحقق مما إذا كان جهاز DS18B20 موجودًا
قيمة الإرجاع: 1 يعني أن الجهاز غير موجود 0 يعني أن الجهاز طبيعي
*/
U8 DS18B20_CheckDevice(فارغ) //يحتوي على إعادة ضبط النبض, النبض الكشف
{
DS18B20_OUTPUT_MODE();//تهيئة إلى وضع الإخراج
DS18B20_OUT = 0; //توليد النبض إعادة ضبط
تأخير(750); //توليد 750us مستوى منخفض
DS18B20_OUT = 1; //إطلاق الحافلة
تأخير(15); //انتظر استجابة DS18B20
لو(DS18B20_CLECKACK())//اكتشاف النبض الوجود
{
يعود 1;
}
يعود 0;
}

/*
وظيفة: اكتشف نبض وجود جهاز DS18B20
قيمة الإرجاع: 1 يشير إلى الخطأ 0 يشير إلى الطبيعي
*/
U8 DS18B20_CLECKACK(فارغ)
{
U8 CNT = 0;
DS18B20_INPUT_MODE();//تهيئة إلى وضع الإدخال
بينما(DS18B20_IN&&CNT<200) //انتظر نبض استجابة DS18B20
{
تأخير(1);
CNT ++;
}
لو(CNT>= 200)يعود 1; //خطأ

CNT = 0;
بينما((!DS18B20_IN)&&CNT<240) //انتظر DS18B20 لإطلاق الحافلة
{
تأخير(1);
CNT ++;
}
لو(CNT>= 240)يعود 1; //خطأ
يعود 0;
}

/*
وظيفة: اكتب بايت
تعرف أولاً على كيفية الكتابة قليلاً.
*/
void ds18b20_writeByte(U8 CMD)
{
u8 أنا;
DS18B20_OUTPUT_MODE(); //تهيئة إلى وضع الإخراج
ل(أنا = 0;أنا<8;أنا ++)
{
DS18B20_OUT = 0; //توليد فجوة وقت الكتابة (اكتب ابدأ)
تأخير(2);
DS18B20_OUT = CMD&0x01; //إرسال بت البيانات الفعلية
تأخير(60); //انتظر اكتمال الكتابة
DS18B20_OUT = 1; //حرر الحافلة واستعد للناقل التالي
CMD>>= 1; //استمر في إرسال الجزء التالي من البيانات
}
}

/*
وظيفة: اقرأ بايت
أولا تعلم كيف تقرأ قليلا.
*/
U8 DS18B20_READBYTE(فارغ)
{
u8 أنا,البيانات = 0;
ل(أنا = 0;أنا<8;أنا ++)
{
DS18B20_OUTPUT_MODE(); //تهيئة إلى وضع الإخراج
DS18B20_OUT = 0; //توليد فجوة وقت القراءة (اقرأ البدء)
تأخير(2);
DS18B20_OUT = 1; //إطلاق الحافلة
DS18B20_INPUT_MODE(); //تهيئة إلى وضع الإدخال
تأخير(8); //انتظر إخراج بيانات DS18B20
بيانات>>= 1; //املأ قليلا مع 0, الافتراضي هو 0
لو(DS18B20_IN) بيانات|= 0x80;
تأخير(60);
DS18B20_OUT = 1; //إطلاق الحافلة, انتظر قراءة الجزء التالي من البيانات
}
إرجاع البيانات;
}

/*
وظيفة: اقرأ بيانات درجة حرارة DS18B20 مرة واحدة
قيمة الإرجاع: قراءة بيانات درجة الحرارة
يعتبر الوضع: لا يوجد سوى واحد DS18B20 متصل بالحافلة
*/
U16 DS18B20_READTEMP(فارغ)
{
u16 temp = 0;
U8 TEMP_H,temp_l;
DS18B20_CheckDevice(); //إرسال نبض إعادة تعيين, اكتشاف النبض
DS18B20_WRITEBYTE(0XCC); //تخطي اكتشاف تسلسل ROM
DS18B20_WRITEBYTE(0x44); //بدء تحويل درجة الحرارة

//انتظر إكمال تحويل درجة الحرارة
بينما(DS18B20_READBYTE()!= 0xff){}

DS18B20_CheckDevice(); //إرسال نبض إعادة تعيين, اكتشاف النبض
DS18B20_WRITEBYTE(0XCC); //تخطي اكتشاف تسلسل ROM
DS18B20_WRITEBYTE(0xbe); //قراءة درجة الحرارة

temp_l = ds18b20_readbyte(); //اقرأ بيانات درجة الحرارة المنخفضة
temp_h = ds18b20_readbyte(); //قراءة بيانات درجة الحرارة العالية
temp = temp_l|(temp_h<<8); //درجة حرارة توليف
عودة درجة الحرارة;
}

3.2 DS18B20.H

#IFNDEF DS18B20_H
#تحديد DS18B20_H
#يشمل “STM32F10X.H”
#يشمل “sys.h”
#يشمل “تأخير”
#يشمل “DS18B20.H”
#يشمل “USART.H”

/*واجهة الحزمة*/

//تهيئة DS18B20 إلى وضع الإدخال
#DEFINE DS18B20_INPUT_MODE() {gpiob->CRH&= 0x0fffffff;gpiob->CRH|= 0x80000000;}

//تهيئة DS18B20 إلى وضع الإخراج
#DEFINE DS18B20_OUTPUT_MODE(){gpiob->CRH&= 0x0fffffff;gpiob->CRH|= 0x30000000;}

//DS18B20 IO Output
#تحديد DS18B20_OUT PBOUT(15)

//DS18B20 IO إدخال منفذ
#تحديد DS18B20_IN PBIN(15)

//إعلان الوظيفة
U8 DS18B20_CLECKACK(فارغ);
U8 DS18B20_CheckDevice(فارغ);
void ds18b20_init(فارغ);
U16 DS18B20_READTEMP(فارغ);
U8 DS18B20_READBYTE(فارغ);
void ds18b20_writeByte(U8 CMD);
#Endif

poybagdydxcawkmaaaak8rns4s030.png
3.3 وظيفة التأخير

/*
وظيفة: تأخير فينا
*/
تأخير باطل(int لنا)
{
#IFDEF _SYSTICK_IRQ_
int أنا,ي;
ل(أنا = 0;Ival = 0; //CNT قيمة العداد
بنى>تحميل = 9*لنا; //9 يعني 1us
بنى>كنترول|= 1<<0; //بدء توقيت
يفعل
{
TMP = SYSTICK->كنترول; //قراءة الحالة
}بينما((!(TMP&1<<16))&&(TMP&1<<0));
بنى>فال = 0; //CNT قيمة العداد
بنى>كنترول&= ~(1<<0); //قم بإيقاف تشغيل المؤقت
#Endif
};أنا ++)>

3.4 Main.C Call DS18B20 لقراءة درجة الحرارة وطباعتها إلى المنفذ التسلسلي

#يشمل “STM32F10X.H”

#يشمل “DS18B20.H”

U8 DS18B20_ROM[8]; //تخزين رمز ROM 64 بت DS18B20

int main(فارغ)
{
U16 Temp;
USARTX_INIT(USART1،72،115200);//تهيئة المنفذ التسلسلي 1
DS18B20_INIT(); //DS18B20 التهيئة

/*1. اقرأ رمز ROM 64 بت من DS18B20*/
//إرسال نبض إعادة تعيين, اكتشاف النبض الوجود
بينما(DS18B20_CheckDevice())
{
printf(“جهاز DS18B20 غير موجود!\ن”);
تأخير(500);
}
//أرسل الأمر لقراءة رمز ROM 64 بت
DS18B20_WRITEBYTE(0x33);

//حلقة قراءة رمز 64 بت ROM
ل(أنا = 0;أنا<8;أنا ++)
{
DS18B20_ROM[أنا]= DS18B20_READBYTE();
printf(“DS18B20_ROM[%د]=0x%X\n”,أنا,DS18B20_ROM[أنا]);
}

بينما(1)
{
/*2. قم بتشغيل جميع DS18B20 في وقت واحد على الحافلة لبدء تحويل درجة الحرارة*/
DS18B20_CheckDevice(); //إرسال نبض إعادة تعيين, اكتشاف النبض
DS18B20_WRITEBYTE(0XCC); //تخطي اكتشاف تسلسل ROM
DS18B20_WRITEBYTE(0x44); //بدء تحويل درجة الحرارة (دع جميع DS18B20 على الحافلة يحول درجة الحرارة)
تأخير(500); //انتظر جميع تحويلات درجة حرارة DS18B20 على الخط لإكمال

/*3. قراءة واحدة مستهدفة لدرجة حرارة كل DS18B20*/
DS18B20_CheckDevice(); //إرسال نبض إعادة تعيين, اكتشاف النبض
DS18B20_WRITEBYTE(0x55); //أرسل الأمر لمطابقة ROM
ل(أنا = 0;أنا<8;أنا ++) //إرسال رمز 64 بت
{
DS18B20_WRITEBYTE(DS18B20_ROM[أنا]);
}
DS18B20_WRITEBYTE(0xbe); //قراءة درجة الحرارة
temp = ds18b20_readbyte(); //اقرأ بيانات درجة الحرارة منخفضة الترتيب
درجة حرارة|= DS18B20_READBYTE()<<8; //قراءة بيانات درجة الحرارة عالية الترتيب
printf(“temp1 = ٪ d. ٪ d n”,درجة حرارة>>4,درجة حرارة&0XF);
printf(“temp2 = ٪ f n”,درجة الحرارة*0.0625);

تأخير(500);
}
}