DS18B20 என்பது ஒரு டிஜிட்டல் வெப்பநிலை சென்சார் ஆகும், இது ஹோஸ்டுடன் தொடர்பு கொள்ள ஒரு பஸ் நேரத்தைப் பயன்படுத்துகிறது. மட்டுமே 1 வெப்பநிலை தரவு வாசிப்பை முடிக்க கம்பி தேவை;
எளிதாக அடையாளம் காண DS18B20 ஆனது உள்ளமைக்கப்பட்ட 64-பிட் தயாரிப்பு வரிசை எண்ணைக் கொண்டுள்ளது. பல DS18B20 சென்சார்கள் இணைக்கப்படலாம் 1 கம்பி, மற்றும் 64-பிட் அடையாள அங்கீகாரம் மூலம், வெவ்வேறு சென்சார்களில் இருந்து சேகரிக்கப்பட்ட வெப்பநிலை தகவலை தனித்தனியாக படிக்க முடியும்.
DS18B20 அறிமுகம்
2.1 DS18B20 இன் முக்கிய அம்சங்கள்
1. முழு டிஜிட்டல் வெப்பநிலை மாற்றம் மற்றும் வெளியீடு.
2. மேம்பட்ட ஒற்றை பஸ் தரவு தொடர்பு.
3. 12-பிட் தெளிவுத்திறன் வரை, ±0.5 டிகிரி செல்சியஸ் வரை துல்லியத்துடன்.
4. 12-பிட் தெளிவுத்திறனில் அதிகபட்ச வேலை சுழற்சி 750 மில்லி விநாடிகள்.
5. ஒட்டுண்ணி வேலை செய்யும் முறையைத் தேர்ந்தெடுக்கலாம்.
6. கண்டறிதல் வெப்பநிலை வரம்பு –55° C ~+125° C (–67° F ~+257° F).
7. உள்ளமைக்கப்பட்ட EEPROM, வெப்பநிலை வரம்பு எச்சரிக்கை செயல்பாடு.
8. 64-பிட் போட்டோலித்தோகிராபி ROM, உள்ளமைக்கப்பட்ட தயாரிப்பு வரிசை எண், பல இயந்திர இணைப்புக்கு வசதியானது.
9. பல்வேறு பேக்கேஜிங் வடிவங்கள், வெவ்வேறு வன்பொருள் அமைப்புகளுக்கு ஏற்ப.
2.2 DS18B20 பின் செயல்பாடு
GND மின்னழுத்த மைதானம்;
DQ ஒற்றை தரவு பேருந்து;
VDD மின்சாரம் வழங்கல் மின்னழுத்தம்;
NC வெற்று முள்;
2.3 DS18B20 செயல்பாட்டுக் கொள்கை மற்றும் பயன்பாடு
DS18B20 வெப்பநிலை கண்டறிதல் மற்றும் டிஜிட்டல் தரவு வெளியீடு ஆகியவை ஒரு சிப்பில் முழுமையாக ஒருங்கிணைக்கப்பட்டுள்ளன, எனவே இது வலுவான எதிர்ப்பு குறுக்கீடு திறனை கொண்டுள்ளது. அதன் ஒரு வேலை சுழற்சியை இரண்டு பகுதிகளாகப் பிரிக்கலாம், அதாவது வெப்பநிலை கண்டறிதல் மற்றும் தரவு செயலாக்கம்.
18B20 மூன்று வகையான நினைவக வளங்களைக் கொண்டுள்ளது. அவர்கள்: ROM படிக்க மட்டும் நினைவகம், DS18B20ID குறியீட்டைச் சேமிக்கப் பயன்படுகிறது; முதலாவது 8 பிட்கள் ஒற்றை வரி தொடர் குறியீடு (DS18B20 குறியீடு 19H), பின்வரும் 48 பிட்கள் என்பது சிப்பின் தனித்துவமான வரிசை எண்; கடைசி 8 பிட்கள் என்பது CRC குறியீடு (பணிநீக்கம் சோதனை) மேலே உள்ள 56 பிட்கள். தரவு உற்பத்தியில் அமைக்கப்பட்டுள்ளது மற்றும் பயனரால் மாற்ற முடியாது. DS18B20 மொத்தம் உள்ளது 64 ROM இன் பிட்கள்.
ரேம் தரவு பதிவு, உள் கணக்கீடு மற்றும் தரவு அணுகலுக்குப் பயன்படுத்தப்படுகிறது, மின்சாரம் செயலிழந்த பிறகு தரவு இழக்கப்படுகிறது, DS18B20 மொத்தம் உள்ளது 9 ரேம் பைட்டுகள், ஒவ்வொரு பைட்டும் 8 பிட்கள். முதல் மற்றும் இரண்டாவது பைட்டுகள் வெப்பநிலை மாற்றத்திற்குப் பிறகு தரவு மதிப்பு தகவல் ஆகும்; மூன்றாவது மற்றும் நான்காவது பைட்டுகள் பயனரின் EEPROM இன் கண்ணாடிப் படமாகும் (வெப்பநிலை எச்சரிக்கை மதிப்பு சேமிப்பிற்கு பொதுவாகப் பயன்படுத்தப்படுகிறது). மின்சாரம் மீட்டமைக்கப்படும் போது அதன் மதிப்பு புதுப்பிக்கப்படும். ஐந்தாவது பைட் என்பது பயனரின் மூன்றாவது EEPROM இன் கண்ணாடிப் படமாகும். 6வது, 7வது, மற்றும் 8வது பைட்டுகள் எண்ணிக்கை பதிவேடுகள், அதிக வெப்பநிலை தெளிவுத்திறனைப் பெற பயனர்களை அனுமதிக்கும் வகையில் வடிவமைக்கப்பட்டுள்ளது. அவை உள் வெப்பநிலை மாற்றம் மற்றும் கணக்கீட்டிற்கான தற்காலிக சேமிப்பு அலகுகளாகும். 9வது பைட் என்பது முதல் சிஆர்சி குறியீடாகும் 8 பைட்டுகள். EEPROM என்பது ஒரு நிலையற்ற நினைவகமாகும், இது நீண்ட காலத்திற்கு சேமிக்கப்பட வேண்டிய தரவைச் சேமிக்கப் பயன்படுகிறது, மேல் மற்றும் கீழ் வெப்பநிலை எச்சரிக்கை மதிப்புகள், மற்றும் சரிபார்ப்பு தரவு. DS18B20 மொத்தம் உள்ளது 3 EEPROM இன் பிட்கள், மற்றும் பயனர் செயல்பாட்டை எளிதாக்க ரேமில் கண்ணாடி படங்கள் உள்ளன.
DS18B20 இயல்பாக 12-பிட் தெளிவுத்திறன் பயன்முறையில் வேலை செய்கிறது. மாற்றத்திற்குப் பிறகு பெறப்பட்ட 12-பிட் தரவு DS18B20 இன் இரண்டு 8-பிட் ரேம்களில் சேமிக்கப்படுகிறது. (முதல் இரண்டு பைட்டுகள்). முதலாவது 5 பைனரியில் உள்ள பிட்கள் சைன் பிட்கள். அளவிடப்பட்ட வெப்பநிலை அதிகமாக இருந்தால் 0, இவை 5 பிட்கள் உள்ளன 0. அளவிடப்பட்ட மதிப்பை மட்டும் பெருக்கவும் 0.0625 உண்மையான வெப்பநிலை பெற. வெப்பநிலை குறைவாக இருந்தால் 0, இவை 5 பிட்கள் உள்ளன 1. அளவிடப்பட்ட மதிப்பு தலைகீழாக மாற்றப்பட வேண்டும், மூலம் சேர்க்கப்பட்டது 1, பின்னர் பெருக்கப்படும் 0.0625 உண்மையான வெப்பநிலை பெற. அல்லது வெப்பநிலையைப் பிரித்தெடுக்க பிட் செயல்பாட்டைப் பயன்படுத்தவும்: தசம இடங்கள் குறைந்த இடத்தை ஆக்கிரமிக்கின்றன 4 பிட்கள், மற்றும் மேல் பிட்கள் முழு எண் பிட்கள் (எதிர்மறை எண்கள் கருதப்படுவதில்லை).
2.4 DS18B20 சிப் ROM அறிவுறுத்தல் அட்டவணை
1. ROM ஐப் படியுங்கள் [33எச்] (ஹெக்ஸாடெசிமல் கட்டளை வார்த்தை சதுர அடைப்புக்குறிக்குள் உள்ளது).
இந்த கட்டளையானது DS18B20 இன் 64-பிட் ROM ஐப் படிக்க பேருந்துக் கட்டுப்படுத்தியை அனுமதிக்கிறது. பேருந்தில் ஒரே ஒரு DS18B20 இருந்தால் மட்டுமே இந்த அறிவுறுத்தலைப் பயன்படுத்த முடியும். ஒன்றுக்கு மேற்பட்டவை இணைக்கப்பட்டிருந்தால், தகவல் பரிமாற்றத்தின் போது தரவு முரண்பாடுகள் ஏற்படும்.
2. அட்ச் ரோம் [55எச்]
இந்த அறிவுறுத்தலைத் தொடர்ந்து கன்ட்ரோலரால் வழங்கப்பட்ட 64-பிட் வரிசை எண். பேருந்தில் பல DS18B20கள் இருக்கும்போது, கட்டுப்படுத்தி வழங்கிய அதே வரிசை எண்ணைக் கொண்ட சிப் மட்டுமே பதிலளிக்க முடியும், மற்ற சில்லுகள் அடுத்த மீட்டமைப்பிற்காக காத்திருக்கும். இந்த அறிவுறுத்தல் ஒற்றை சிப் மற்றும் பல சிப் இணைப்புக்கு ஏற்றது.
3. ROM ஐத் தவிர்க்கவும் [CCH]
இந்த அறிவுறுத்தல் சிப் ரோம் குறியீட்டிற்கு பதிலளிக்காது. ஒற்றைப் பேருந்து விஷயத்தில், நேரத்தை மிச்சப்படுத்த இந்த அறிவுறுத்தலைப் பயன்படுத்தலாம். பல சில்லுகள் இணைக்கப்பட்டிருக்கும் போது இந்த அறிவுறுத்தல் பயன்படுத்தப்பட்டால், தரவு முரண்பாடுகள் ஏற்படும், பிழைகள் விளைவாக.
4. ரோம் தேடு [F0H]
சிப் துவக்கப்பட்ட பிறகு, பல சில்லுகள் பஸ்ஸுடன் இணைக்கப்படும்போது, அனைத்து சாதனங்களின் 64-பிட் ரோம் நீக்குவதன் மூலம் அடையாளம் காண, தேடல் அறிவுறுத்தல் அனுமதிக்கிறது..
5. அலாரம் தேடல் [ஒவ்வொரு]
பல சில்லுகள் விஷயத்தில், அலாரம் சிப் தேடல் அறிவுறுத்தலானது TH ஐ விட அதிகமான அல்லது TL ஐ விட குறைவான வெப்பநிலையின் எச்சரிக்கை நிலையை சந்திக்கும் சில்லுகளுக்கு மட்டுமே பதிலளிக்கிறது. சிப் அணைக்கப்படாத வரை, வெப்பநிலை மீண்டும் அளவிடப்படும் வரை எச்சரிக்கை நிலை பராமரிக்கப்படும் மற்றும் எச்சரிக்கை நிலையை அடையவில்லை.
6. ஸ்க்ராட்ச்பேட் எழுதவும் [4EH]
RAM இல் தரவை எழுதுவதற்கான வழிமுறை இதுவாகும். பின்னர் எழுதப்பட்ட இரண்டு பைட் தரவுகள் முகவரியில் சேமிக்கப்படும் 2 (அலாரம் ரேமின் TH) மற்றும் முகவரி 3 (அலாரம் ரேமின் TL). ரீசெட் சிக்னல் மூலம் எழுதும் செயல்முறையை நிறுத்தலாம்.
7. ஸ்க்ராட்ச்பேடைப் படியுங்கள் (RAM இலிருந்து தரவைப் படிக்கவும்) [BEH]
இந்த அறிவுறுத்தல் RAM இலிருந்து தரவைப் படிக்கும், முகவரியில் இருந்து தொடங்குகிறது 0 மற்றும் முகவரி வரை 9, முழு RAM தரவையும் வாசிப்பதை நிறைவு செய்கிறது. சிப் ரீசெட் சிக்னலை வாசிப்பு செயல்முறையை நிறுத்த அனுமதிக்கிறது, அதாவது, படிக்கும் நேரத்தைக் குறைக்க அடுத்தடுத்த தேவையற்ற பைட்டுகள் புறக்கணிக்கப்படலாம்.
8. ஸ்கிராட்ச்பேடை நகலெடுக்கவும் (ரேம் தரவை EEPROM க்கு நகலெடுக்கவும்) [48எச்]
இந்த அறிவுறுத்தல் RAM இல் உள்ள தரவை EEPROM இல் சேமிக்கிறது, இதனால் மின்சாரம் நிறுத்தப்படும் போது தரவு இழக்கப்படாது.. EEPROM சேமிப்பக செயலாக்கத்தில் சிப் பிஸியாக இருப்பதால், கட்டுப்படுத்தி படிக்கும் நேர ஸ்லாட்டை அனுப்பும் போது, பஸ் வெளியீடுகள் “0”, மற்றும் சேமிப்பு வேலை முடிந்ததும், பேருந்து வெளியேறும் “1”.
ஒட்டுண்ணி வேலை முறையில், இந்த அறிவுறுத்தல் வழங்கப்பட்ட பிறகு உடனடியாக ஒரு வலுவான புல்-அப் பயன்படுத்தப்பட வேண்டும் மற்றும் சிப் செயல்பாட்டை பராமரிக்க குறைந்தபட்சம் 10MS வரை பராமரிக்க வேண்டும்.
9. டி (வெப்பநிலை மாற்றம்) [44எச்]
இந்த அறிவுறுத்தலைப் பெற்ற பிறகு, சிப் வெப்பநிலை மாற்றத்தைச் செய்து, மாற்றப்பட்ட வெப்பநிலை மதிப்பை ரேமின் 1வது மற்றும் 2வது முகவரிகளில் சேமிக்கும்.. சிப் வெப்பநிலை மாற்ற செயலாக்கத்தில் பிஸியாக இருப்பதால், கட்டுப்படுத்தி படிக்கும் நேர ஸ்லாட்டை அனுப்பும் போது, பஸ் வெளியீடுகள் “0”, மற்றும் சேமிப்பு வேலை முடிந்ததும், பேருந்து வெளியேறும் “1”. ஒட்டுண்ணி வேலை முறையில், இந்த அறிவுறுத்தல் வழங்கப்பட்ட பிறகு உடனடியாக ஒரு வலுவான புல்-அப் பயன்படுத்தப்பட வேண்டும் மற்றும் சிப் செயல்பாட்டை பராமரிக்க குறைந்தபட்சம் 500MS வரை பராமரிக்க வேண்டும்.
10. EEPROM ஐ நினைவுகூருங்கள் (EEPROM இல் உள்ள அலார மதிப்பை RAM க்கு நகலெடுக்கவும்) [B8H]
இந்த அறிவுறுத்தல் EEPROM இல் உள்ள அலார மதிப்பை RAM இல் 3வது மற்றும் 4வது பைட்டுகளுக்கு நகலெடுக்கிறது.. சிப் நகலெடுக்கும் செயலாக்கத்தில் பிஸியாக இருப்பதால், கட்டுப்படுத்தி படிக்கும் நேர ஸ்லாட்டை அனுப்பும் போது, பஸ் வெளியீடுகள் “0”, மற்றும் சேமிப்பு வேலை முடிந்ததும், பஸ் வெளியீடுகள் “1”. கூடுதலாக, சிப் இயக்கப்பட்டு மீட்டமைக்கப்படும் போது இந்த அறிவுறுத்தல் தானாகவே செயல்படுத்தப்படும். இந்த வழியில், ரேமில் உள்ள இரண்டு அலாரம் பைட் பிட்கள் எப்பொழுதும் EEPROM இல் உள்ள தரவின் பிரதிபலிப்புப் படமாக இருக்கும்.
11. பவர் சப்ளை படிக்கவும் (வேலை செய்யும் முறை சுவிட்ச்) [B4H]
இந்த உத்தரவு பிறப்பிக்கப்பட்ட பிறகு, வாசிப்பு நேர இடைவெளி வழங்கப்படுகிறது, மற்றும் சிப் அதன் சக்தி நிலை வார்த்தையைத் தரும். “0” ஒட்டுண்ணி சக்தி நிலை மற்றும் “1” வெளிப்புற சக்தி நிலை ஆகும்.
2.5 DS18B20 நேர வரைபடம்
2.5.1 DS18B20 மீட்டமைப்பு மற்றும் பதில் உறவு வரைபடம்
ஒவ்வொரு தகவல்தொடர்புக்கும் முன் ஒரு மீட்டமைப்பு செய்யப்பட வேண்டும். மீட்டமைப்பு நேரம், காத்திருக்கும் நேரம், மற்றும் மறுமொழி நேரம் கண்டிப்பாக நேரத்தின் படி திட்டமிடப்பட வேண்டும்.
DS18B20 படிக்க மற்றும் எழுத நேர இடைவெளி: DS18B20 தரவு வாசிப்பு மற்றும் எழுதுதல் என்பது நேர இடைவெளி செயலாக்க பிட் மற்றும் தகவல் பரிமாற்றத்திற்கான கட்டளை வார்த்தை மூலம் உறுதிப்படுத்தப்படுகிறது.
2.5.2 தரவு எழுதவும் 0 மற்றும் தரவு 1 DS18B20க்கு
எழுதும் தரவு நேர இடைவெளியின் முதல் 15uS இல், கன்ட்ரோலரால் பேருந்து கீழே இழுக்கப்பட வேண்டும், பின்னர் அது பேருந்து தரவுக்கான சிப் மாதிரி நேரமாக இருக்கும். மாதிரி நேரம் 15-60uS ஆகும். மாதிரி நேரத்தில் கன்ட்ரோலர் பஸ்ஸை உயரமாக இழுத்தால், எழுத்து என்று பொருள் “1”, மற்றும் கட்டுப்பாட்டாளர் பஸ்சை கீழே இழுத்தால், எழுத்து என்று பொருள் “0”.
ஒவ்வொரு பிட் டிரான்ஸ்மிஷனும் குறைந்தபட்சம் 15uS குறைந்த-நிலை தொடக்க பிட்டைக் கொண்டிருக்க வேண்டும், மற்றும் அடுத்தடுத்த தரவு “0” அல்லது “1” 45uSக்குள் முடிக்க வேண்டும்.
முழு பிட்டின் பரிமாற்ற நேரம் 60~120uS ஆக இருக்க வேண்டும், இல்லையெனில் சாதாரண தகவல்தொடர்புக்கு உத்தரவாதம் அளிக்க முடியாது.
குறிப்பு: DS18B20 குறைந்த பிட்டிலிருந்து தரவைப் படிக்கிறது மற்றும் எழுதுகிறது.
2.5.3 தரவுகளைப் படித்தல் 0 மற்றும் தரவு 1 DS18B20 இலிருந்து
வாசிப்பு நேர இடைவெளியின் போது கட்டுப்பாட்டின் மாதிரி நேரம் மிகவும் துல்லியமாக இருக்க வேண்டும். படிக்கும் நேர இடைவெளியில், வாசிப்பு நேரத்தின் தொடக்கத்தைக் குறிக்க ஹோஸ்ட் குறைந்தபட்சம் 1uS இன் குறைந்த அளவை உருவாக்க வேண்டும். பிறகு, பேருந்து வெளியான பிறகு 15uS இல், DS18B20 உள் தரவு பிட்டை அனுப்பும். இந்த நேரத்தில், பேருந்து அதிகமாக இருப்பதைக் கட்டுப்படுத்தினால், வாசிப்பு என்று பொருள் “1”, மற்றும் பேருந்து குறைவாக இருந்தால், இது தரவுகளைப் படிப்பதைக் குறிக்கிறது “0”. ஒவ்வொரு துளியும் படிப்பதற்கு முன், கட்டுப்படுத்தி ஒரு தொடக்க சமிக்ஞையை சேர்க்கிறது.
குறிப்பு: சரியான தகவல்தொடர்புகளை உறுதிப்படுத்த, வாசிப்பு இடைவெளியின் தொடக்கத்திலிருந்து 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 துவக்கம்
வன்பொருள் இணைப்பு: பிபி15
*/
வெற்றிடமான DS18B20_Init(வெற்றிடமானது)
{
RCC->APB2ENR|=1<<3; //பிபி
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;
}
/*
செயல்பாடு: ஒரு பைட் எழுதுங்கள்
முதலில் கொஞ்சம் எழுத கற்றுக்கொள்ளுங்கள்.
*/
வெற்றிடமான DS18B20_WriteByte(u8 cmd)
{
u8 i;
DS18B20_OUTPUT_MODE(); //வெளியீட்டு பயன்முறையைத் தொடங்கவும்
க்கான(i=0;i<8;நான்++)
{
DS18B20_OUT=0; //எழுதும் நேர இடைவெளியை உருவாக்குங்கள் (எழுத ஆரம்பம்)
தாமதம்(2);
DS18B20_OUT=cmd&0x01; //உண்மையான தரவு பிட்டை அனுப்பவும்
தாமதம்(60); //எழுதி முடிக்கும் வரை காத்திருங்கள்
DS18B20_OUT=1; //பஸ்ஸை விடுவித்து, அடுத்த டிரான்ஸ்மிஷனுக்கு தயாராகுங்கள்
cmd>>=1; //அடுத்த பிட் தரவை அனுப்புவதைத் தொடரவும்
}
}
/*
செயல்பாடு: ஒரு பைட்டைப் படியுங்கள்
முதலில் கொஞ்சம் படிக்க கற்றுக்கொள்ளுங்கள்.
*/
u8 DS18B20_ReadByte(வெற்றிடமானது)
{
u8 i,தரவு=0;
க்கான(i=0;i<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”
#அடங்கும் “தாமதம்.h”
#அடங்கும் “ds18b20.h”
#அடங்கும் “usart.h”
/*தொகுப்பு இடைமுகம்*/
//உள்ளீட்டு பயன்முறையில் DS18B20 ஐ துவக்கவும்
#DS18B20_INPUT_MODE ஐ வரையறுக்கவும்() {GPIOB->CRH&=0x0FFFFFFF;GPIOB->CRH|=0x80000000;}
//வெளியீட்டு பயன்முறையில் DS18B20 ஐ துவக்கவும்
#DS18B20_OUTPUT_MODE ஐ வரையறுக்கவும்(){GPIOB->CRH&=0x0FFFFFFF;GPIOB->CRH|=0x30000000;}
//DS18B20 IO போர்ட் வெளியீடு
#DS18B20_OUT PBout ஐ வரையறுக்கவும்(15)
//DS18B20 IO போர்ட் உள்ளீடு
#DS18B20_IN PBin ஐ வரையறுக்கவும்(15)
//செயல்பாடு அறிவிப்பு
u8 DS18B20_CleckAck(வெற்றிடமானது);
u8 DS18B20_CheckDevice(வெற்றிடமானது);
வெற்றிடமான DS18B20_Init(வெற்றிடமானது);
u16 DS18B20_ReadTemp(வெற்றிடமானது);
u8 DS18B20_ReadByte(வெற்றிடமானது);
வெற்றிடமான DS18B20_WriteByte(u8 cmd);
#endif
poYBAGDYdXCAWkKMAAAK8RNs4s030.png
3.3 தாமத செயல்பாடு
/*
செயல்பாடு: நமக்குள் தாமதம்
*/
வெற்றிடமான தாமதம்(int us)
{
#ifdef _SYSTICK_IRQ_
int i,ஜே;
க்கான(i=0;iVAL=0; //CNT கவுண்டர் மதிப்பு
சிஸ்டிக்->LOAD=9* us; //9 1us என்று பொருள்
சிஸ்டிக்->CTRL|=1<<0; //டைமரைத் தொடங்கு
செய்ய
{
tmp=SysTick->CTRL; //நிலையை படிக்கவும்
}போது((!(tmp&1<<16))&&(tmp&1<<0));
சிஸ்டிக்->VAL=0; //CNT கவுண்டர் மதிப்பு
சிஸ்டிக்->CTRL&=~(1<<0); //டைமரை அணைக்கவும்
#endif
};நான்++)>
3.4 main.c வெப்பநிலையைப் படிக்க DS18B20 ஐ அழைக்கவும் மற்றும் அதை சீரியல் போர்ட்டில் அச்சிடவும்
#அடங்கும் “stm32f10x.h”
#அடங்கும் “ds18b20.h”
u8 DS18B20_ROM[8]; //DS18B20 இன் 64-பிட் ரோம் குறியீட்டை சேமிக்கவும்
முழு எண்ணாக(வெற்றிடமானது)
{
u16 வெப்பநிலை;
USARTx_ஹீட்(USART1,72,115200);//தொடர் துறைமுகத்தின் துவக்கம் 1
DS18B20_ஹீட்(); //DS18B20 துவக்கம்
/*1. DS18B20*/ இன் 64-பிட் ரோம் குறியீட்டைப் படிக்கவும்
//மீட்டமை துடிப்பை அனுப்பவும், இருப்பு துடிப்பைக் கண்டறியவும்
போது(DS18B20_CheckDevice())
{
printf(“DS18B20 சாதனம் இல்லை!\n”);
தாமதம்(500);
}
//64-பிட் ரோம் குறியீட்டைப் படிக்க கட்டளையை அனுப்பவும்
DS18B20_WriteByte(0x33);
//லூப் ரீட் 64-பிட் ரோம் குறியீடு
க்கான(i=0;i<8;நான்++)
{
DS18B20_ROM[i]= DS18B20_ReadByte();
printf(“DS18B20_ROM[%ஈ]=0x%X\n”,i,DS18B20_ROM[i]);
}
போது(1)
{
/*2. வெப்பநிலையை மாற்றத் தொடங்க பஸ்ஸில் அனைத்து DS18B20 ஐ ஒரே நேரத்தில் இயக்கவும்*/
DS18B20_CheckDevice(); //மீட்டமை துடிப்பை அனுப்பவும், நாடித்துடிப்பை கண்டறிய
DS18B20_WriteByte(0xCC); //ROM வரிசை கண்டறிதலைத் தவிர்க்கவும்
DS18B20_WriteByte(0x44); //வெப்பநிலை மாற்றத்தைத் தொடங்கவும் (பஸ்ஸில் உள்ள அனைத்து DS18B20 வெப்பநிலையை மாற்றட்டும்)
தாமதம்(500); //வரியில் உள்ள அனைத்து DS18B20 வெப்பநிலை மாற்றங்களும் முடிவடையும் வரை காத்திருக்கவும்
/*3. ஒவ்வொரு DS18B20*/ வெப்பநிலையின் ஒற்றை இலக்கு வாசிப்பு
DS18B20_CheckDevice(); //மீட்டமை துடிப்பை அனுப்பவும், நாடித்துடிப்பை கண்டறிய
DS18B20_WriteByte(0x55); //ROM உடன் பொருத்த கட்டளையை அனுப்பவும்
க்கான(i=0;i<8;நான்++) //64-பிட் குறியீட்டை அனுப்பவும்
{
DS18B20_WriteByte(DS18B20_ROM[i]);
}
DS18B20_WriteByte(0xBE); //வெப்பநிலையைப் படிக்கவும்
temp=DS18B20_ReadByte(); //குறைந்த வரிசை வெப்பநிலை தரவைப் படிக்கவும்
வெப்பநிலை|=DS18B20_ReadByte()<<8; //உயர் வரிசை வெப்பநிலை தரவைப் படிக்கவும்
printf(“temp1=%d.%d\n”,வெப்பநிலை>>4,வெப்பநிலை&0xF);
printf(“temp2=%f\n”,வெப்பநிலை*0.0625);
தாமதம்(500);
}
}
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt







