- 7-பிரிவு மற்றும் 4-இலக்க 7-பிரிவு காட்சி தொகுதி:
- PIC மைக்ரோகண்ட்ரோலருடன் 4-இலக்க ஏழு பிரிவு தொகுதியை இணைக்கிறது:
- PIC16F877A ஐப் பயன்படுத்தி நிரலாக்க:
- வன்பொருள் அமைப்பு மற்றும் சோதனை:
MPLAB மற்றும் XC8 ஐப் பயன்படுத்தி PIC மைக்ரோகண்ட்ரோலர்களைக் கற்றல் பற்றிய எங்கள் 8 வது பயிற்சி இது. MPLABX ஐ நிறுவுவதிலிருந்து PIC MCU உடன் எல்சிடியைப் பயன்படுத்துவது வரை நாங்கள் வந்துள்ளோம். நீங்கள் இங்கே புதியவராக இருந்தால், முந்தைய பயிற்சிகளைப் பாருங்கள், அங்கு நீங்கள் டைமர்கள், ஒளிரும் எல்.ஈ.டி, எல்.சி.டி இடைமுகம் போன்றவற்றைக் கற்றுக்கொள்ளலாம். எங்கள் அனைத்து பி.ஐ.சி டுடோரியல்களையும் இங்கே காணலாம். எங்கள் கடைசி டுடோரியலில், எங்கள் 16 * 2 எல்சிடி டிஸ்ப்ளே மூலம் தனிப்பயன் எழுத்துக்களை எவ்வாறு உருவாக்க முடியும் என்பதைக் கண்டோம், இப்போது 7-பிரிவு காட்சி எனப்படும் மற்றொரு வகை காட்சி தொகுதிடன் நம் சுயத்தை சித்தப்படுத்துகிறோம் மற்றும் அதை பிஐசி மைக்ரோகண்ட்ரோலருடன் இடைமுகப்படுத்துகிறோம்.
16x2 எல்சிடி 7-பிரிவு டிஸ்ப்ளேவை விட மிகவும் வசதியானது என்றாலும், எல்சிடி டிஸ்ப்ளேவை விட 7-பிரிவு டிஸ்ப்ளே எளிதில் வரும் சில காட்சிகள் உள்ளன. எல்.சி.டி குறைந்த எழுத்து அளவைக் கொண்டிருப்பதன் குறைபாட்டால் பாதிக்கப்படுகிறது, மேலும் நீங்கள் சில எண் மதிப்புகளைக் காட்டத் திட்டமிட்டால் உங்கள் திட்டத்திற்கு ஓவர்கில் இருக்கும். 7-பிரிவுகளும் மோசமான லைட்டிங் நிலைக்கு எதிராக நன்மையைக் கொண்டுள்ளன, மேலும் சாதாரண எல்சிடி திரையை விட லாகர் கோணங்களில் பார்க்கலாம். எனவே, அதை அறிய ஆரம்பிக்கலாம்.
7-பிரிவு மற்றும் 4-இலக்க 7-பிரிவு காட்சி தொகுதி:
7 பிரிவு காட்சி அதில் ஏழு பிரிவுகளைக் கொண்டுள்ளது மற்றும் ஒவ்வொரு பிரிவிலும் ஒரு எல்.ஈ.டி உள்ளது, அதனுடன் தொடர்புடைய பிரிவுகளை ஒளிரச் செய்வதன் மூலம் எண்களைக் காண்பிக்கும். 7-பிரிவு "5" எண்ணைக் காட்ட விரும்பினால், அதனுடன் தொடர்புடைய ஊசிகளை அதிகமாக்குவதன் மூலம் நீங்கள் ஒரு, எஃப், ஜி, சி மற்றும் டி பிரிவை ஒளிரச் செய்ய வேண்டும். 7-பிரிவு காட்சிகளில் இரண்டு வகைகள் உள்ளன: பொதுவான கத்தோட் மற்றும் பொதுவான அனோட், இங்கே நாம் பொதுவான கத்தோட் ஏழு பிரிவு காட்சியைப் பயன்படுத்துகிறோம். 7 பிரிவு காட்சி பற்றி இங்கே மேலும் அறிக.

ஒற்றை 7-பிரிவு காட்சியில் நாம் விரும்பிய எண் எழுத்தை எவ்வாறு காண்பிப்பது என்பது இப்போது எங்களுக்குத் தெரியும். ஆனால், ஒன்றுக்கு மேற்பட்ட இலக்கங்களைக் கொண்ட எந்தவொரு தகவலையும் தெரிவிக்க ஒன்றுக்கு மேற்பட்ட 7-பிரிவு காட்சி தேவை என்பது தெளிவாகத் தெரிகிறது. எனவே, இந்த டுடோரியலில் கீழே காட்டப்பட்டுள்ளபடி 4 இலக்க 7-பிரிவு காட்சி தொகுதிகளைப் பயன்படுத்துவோம்.

நாம் பார்க்க முடியும் என நான்கு ஏழு பிரிவு காட்சிகள் ஒன்றாக இணைக்கப்பட்டுள்ளன. ஒவ்வொரு 7-பிரிவு தொகுதிக்கும் 10 ஊசிகளும், 4 ஏழு பிரிவு காட்சிகளுக்கு மொத்தம் 40 ஊசிகளும் இருக்கும் என்பதை நாங்கள் அறிவோம், மேலும் யாரையும் ஒரு புள்ளி பலகையில் சாலிடரிங் செய்வது பரபரப்பாக இருக்கும், எனவே ஒரு தொகுதியை வாங்க யாரையும் நான் மிகவும் பரிந்துரைக்கிறேன் அல்லது 4 இலக்க 7-பிரிவு காட்சியைப் பயன்படுத்துவதற்கு உங்கள் சொந்த பிசிபியை உருவாக்கவும். அதற்கான இணைப்புத் திட்டம் கீழே காட்டப்பட்டுள்ளது:

4-இலக்க ஏழு பிரிவு தொகுதி எவ்வாறு இயங்குகிறது என்பதைப் புரிந்து கொள்ள, மேலே உள்ள திட்டங்களை நாம் கவனிக்க வேண்டும், நான்கு காட்சிகளின் A ஊசிகளும் ஒரு A ஆகவும், B, C…. டிபி வரை சேகரிக்கவும் இணைக்கப்பட்டுள்ளன. எனவே, அடிப்படையில் A ஐத் தூண்டினால், நான்கு A களும் வலதுபுறம் செல்ல வேண்டுமா?
ஆனால், அது நடக்காது. எங்களிடம் D0 முதல் D3 (D0, D1, D2 மற்றும் D3) வரை கூடுதல் நான்கு ஊசிகளும் உள்ளன, அவை நான்கில் எந்த காட்சி அதிக அளவில் செல்ல வேண்டும் என்பதைக் கட்டுப்படுத்த பயன்படுத்தலாம். எடுத்துக்காட்டாக: எனது வெளியீடு இரண்டாவது காட்சியில் மட்டுமே இருக்க வேண்டும் என்றால், மற்ற ஊசிகளை (டி 0, டி 2 மற்றும் டி 3) குறைவாக வைத்திருக்கும் போது டி 1 மட்டுமே உயர்ந்ததாக இருக்க வேண்டும். டி 0 முதல் டி 3 வரையிலான ஊசிகளைப் பயன்படுத்தி எந்த காட்சி சுறுசுறுப்பாக செல்ல வேண்டும் என்பதையும், ஏ முதல் டிபி வரையிலான ஊசிகளைப் பயன்படுத்தி எந்தக் கதாபாத்திரத்தைக் காட்ட வேண்டும் என்பதையும் நாம் தேர்ந்தெடுக்கலாம்.
PIC மைக்ரோகண்ட்ரோலருடன் 4-இலக்க ஏழு பிரிவு தொகுதியை இணைக்கிறது:
இங்கே நாம் PIC மைக்ரோகண்ட்ரோலர் PIC16F877A ஐப் பயன்படுத்தினோம், மேலும் சுற்றுக்கான திட்டவட்டம் கீழே காட்டப்பட்டுள்ளது.

தொகுதியிலிருந்து 12 வெளியீட்டு ஊசிகளை வைத்திருக்கிறோம், அவற்றில் 8 எழுத்துக்களைக் காண்பிக்கப் பயன்படுகிறது, மேலும் நான்கு காட்சிகளில் ஒன்றைத் தேர்ந்தெடுக்க நான்கு பயன்படுத்தப்படுகிறது. எனவே அனைத்து 8 எழுத்துக்குறி ஊசிகளும் PORTD க்கு ஒதுக்கப்பட்டுள்ளன, மேலும் காட்சி தேர்வு ஊசிகளும் PORTC இன் முதல் நான்கு ஊசிகளுக்கு ஒதுக்கப்படுகின்றன.
குறிப்பு: தொகுதியின் தரை முள் இங்கே காட்டப்படாத MCU இன் தரையுடன் இணைக்கப்பட வேண்டும்.
PIC16F877A ஐப் பயன்படுத்தி நிரலாக்க:
இப்போது, இந்த தொகுதி உண்மையில் எவ்வாறு இயங்குகிறது என்பதை நாங்கள் அறிவோம், PIC16F877A ஐ 4 இலக்க எண்ணைக் காண்பிப்பதை எவ்வாறு நிரல் செய்வது என்பதைக் கற்றுக்கொள்வோம். ஒரு மாறியை 0 முதல் 1000 வரை அதிகரிப்போம், அதை 7-பிரிவு காட்சியில் அச்சிடுவோம். MPLABX நிரலைத் தொடங்கி புதிய திட்டத்தை உருவாக்கவும், உள்ளமைவு பிட்களுடன் தொடங்குவோம்.
#pragma config FOSC = HS // ஆஸிலேட்டர் தேர்வு பிட்கள் (HS ஆஸிலேட்டர்) # ப்ராக்மா கட்டமைப்பு WDTE = OFF // வாட்ச் டாக் டைமர் பிட் இயக்கு (WDT முடக்கப்பட்டது) #pragma config PWRTE = ON // பவர்-அப் டைமர் பிட் (PWRT இயக்கப்பட்டது) # pragma config BOREN = ON // பிரவுன்-அவுட் மீட்டமை பிட் இயக்கு (BOR இயக்கப்பட்டது) நிரலாக்கத்திற்கு MCLR பயன்படுத்தப்பட வேண்டும்) #pragma config CPD = OFF // Data EEPROM மெமரி கோட் பாதுகாப்பு பிட் (தரவு EEPROM குறியீடு பாதுகாப்பு முடக்கப்பட்டுள்ளது) EECON கட்டுப்பாட்டால் எழுதப்படலாம்) #pragma config CP = OFF // Flash Program Memory Code Protection bit (குறியீடு பாதுகாப்பு முடக்கப்பட்டுள்ளது)
வழக்கம் போல் இந்த பிட்களை அமைக்க செட் உள்ளமைவு பிட்கள் சாளரத்தைப் பயன்படுத்துகிறோம். அவை என்னவென்று உங்களுக்குத் தெரியாவிட்டால், இங்கே எல்.ஈ.டி ஒளிரும் டுடோரியலைப் பார்வையிடவும்.
அடுத்து காட்சியின் ஒவ்வொரு இலக்கத்திற்கும் இடையில் மாறுவதற்கான வெளியீட்டு ஊசிகளை வரையறுப்போம்.
// *** நான்கு காட்சிகளின் சிக்னல் ஊசிகளையும் வரையறுக்கவும் *** // # s1 RC0 ஐ வரையறுக்கவும் # s2 RC1 ஐ வரையறுக்கவும் s3 RC2 ஐ வரையறுக்கவும் # s4 RC3 ஐ வரையறுக்கவும் ** *** வரையறையின் முடிவு ** ////
எங்கள் 7-பிரிவு காட்சி தொகுதியின் நான்கு இலக்கங்களுக்கு இடையில் தேர்ந்தெடுக்க RC0, RC1, RC2 மற்றும் RC3 ஊசிகளும் பயன்படுத்தப்படுகின்றன. இந்த ஊசிகளை முறையே s1, s2, s3 மற்றும் s4 என வரையறுக்கப்படுகிறது.
அடுத்து வெற்றிட மெயின் () க்குள் செல்வோம் , அதற்குள் பின்வரும் மாறி அறிவிப்பு உள்ளது:
int i = 0; // காட்டப்பட வேண்டிய 4 இலக்க மதிப்பு int கொடி = 0; // தாமதத்தை கையொப்பமிடாத int a, b, c, d, e, f, g, h; // வெறும் மாறிகள் கையொப்பமிடாத int seg = X 0X3F, // எண்ணைக் காண்பிப்பதற்கான ஹெக்ஸ் மதிப்பு 0 0X06, // எண்ணைக் காண்பிக்க ஹெக்ஸ் மதிப்பு 1 0X5B, // எண் 2 0X4F ஐக் காட்ட ஹெக்ஸ் மதிப்பு, // காண்பிக்க ஹெக்ஸ் மதிப்பு எண் 3 0X66, // எண் 4 0X6D ஐக் காண்பிப்பதற்கான ஹெக்ஸ் மதிப்பு, 5 0X7C எண்ணைக் காண்பிப்பதற்கான // ஹெக்ஸ் மதிப்பு, எண் 6 0X07 ஐக் காண்பிப்பதற்கான ஹெக்ஸ் மதிப்பு, 0 0X7F எண்ணைக் காட்ட ஹெக்ஸ் மதிப்பு, 0 0X7F, / எண் 8 ஐக் காட்ட ஹெக்ஸ் மதிப்பு 0 0X6F // எண் 9 ஐக் காட்ட ஹெக்ஸ் மதிப்பு; 0 முதல் 9 வரையிலான எண்களைக் காண்பிப்பதற்கான வரிசையின் முடிவு
இங்கே காண்பிக்கப்படும் மதிப்புகளை சேமிக்கவும் தாமதத்தை உருவாக்கவும் i மற்றும் கொடி மாறிகள் பயன்படுத்தப்படுகின்றன. கையொப்பமிடாத முழு மாறிகள் ஒரு ம ஒற்றை இலக்கங்கள் ஒரு நான்கு இலக்க எண்கள் உடைக்கும் மற்றும் அவற்றை சேமிக்க (பின்னர் இங்கே விளக்கினார் வேண்டிய) பயன்படுத்தப்படுகின்றன.
இங்கே கவனிக்க வேண்டிய ஒரு முக்கிய விஷயம் "செக்" வரிசை அறிவிப்பு. இந்த நிரலில் நாங்கள் வரிசை என்ற புதிய தரவு வகையைப் பயன்படுத்துகிறோம். வரிசை என்பது ஒத்த தரவு வகை மதிப்புகளின் தொகுப்பைத் தவிர வேறில்லை. இங்கே, 0 முதல் 9 வரையிலான எண்ணைக் காண்பிப்பதற்கான அனைத்து சமமான ஹெக்ஸ் மதிப்புகளையும் சேமிக்க இந்த வரிசையைப் பயன்படுத்தினோம்.
வரிசையின் முகவரி எப்போதும் பூஜ்ஜியத்திலிருந்து தொடங்குகிறது. எனவே இந்த வரிசையில் முகவரியில் சேமிக்கப்பட்டுள்ள ஒரு எண் எண்ணின் (0-9) ஹெக்ஸ் மதிப்பு இருக்கும், இது கீழே காட்டப்பட்டுள்ளபடி எண்ணுக்கு சமமாக இருக்கும்
|
மாறி: |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
|
ஹெக்ஸ் குறியீடு: |
0 எக்ஸ் 3 எஃப் |
0X06 |
0 எக்ஸ் 5 பி |
0 எக்ஸ் 4 எஃப் |
0 எக்ஸ் 66 |
0 எக்ஸ் 6 டி |
0 எக்ஸ் 7 சி |
0X07 |
0 எக்ஸ் 7 எஃப் |
0X6F |
|
Eq. எண் எண்: |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
எனவே, உங்கள் 7-பிரிவில் எண் 0 ஐக் காட்ட விரும்பினால், நீங்கள் seg ஐ அழைக்கலாம் , அதேபோல் 6 ஆம் எண்ணைக் காட்ட விரும்பினால் நீங்கள் seg ஐப் பயன்படுத்த வேண்டும் .
HEX மதிப்பு உண்மையில் எவ்வாறு பெறப்பட்டது என்பதைப் புரிந்து கொள்ள கீழேயுள்ள அட்டவணையைப் பார்ப்போம். ஒவ்வொரு தசம எண் சமமான எண்ம மதிப்பை வரிசை சேமிக்கப்படுகிறது அதை ஒரு குறிப்பிட்ட எண் காட்ட அழைக்க முடியும்.

இப்போது, I / O உள்ளமைவான குறியீட்டின் அடுத்த பகுதிக்கு செல்லலாம்:
// ***** I / O கட்டமைப்பு **** // TRISC = 0X00; PORTC = 0X00; TRISD = 0x00; PORTD = 0X00; // *** I / O உள்ளமைவின் முடிவு ** ///
I / O உள்ளமைவு எளிதானது, ஏனென்றால் எங்கள் 7-பிரிவில் உள்ள அனைத்து ஊசிகளும் வெளியீட்டு ஊசிகளாக இருக்கின்றன, மேலும் இணைப்புகள் மேலே உள்ள சுற்று வரைபடத்தில் காட்டப்பட்டுள்ளன, எனவே அவற்றை வெளியீடுகளாக அறிவித்து அவற்றை பூஜ்ஜியத்திற்கு துவக்கவும்.
இப்போது நம் எல்லையற்ற வளையத்திற்குள் செல்லலாம் (அதே நேரத்தில் (1)). இங்கே நாம் "i" இன் மதிப்பை நான்கு இலக்கங்களாக பிரித்து அவற்றை 7-பிரிவில் காண்பிக்க வேண்டும். முதலில் "i" இல் மதிப்பைப் பிரிப்பதன் மூலம் ஆரம்பிக்கலாம்
// *** "i" ஐ நான்கு இலக்கங்களாகப் பிரித்தல் *** // a = i% 10; // 4 வது இலக்கமானது இங்கே சேமிக்கப்படுகிறது b = i / 10; c = b% 10; // 3 வது இலக்கமானது இங்கே சேமிக்கப்படுகிறது d = b / 10; e = d% 10; // 2 வது இலக்கமானது இங்கே சேமிக்கப்படுகிறது f = d / 10; g = f% 10; // 1 வது இலக்கமானது இங்கே சேமிக்கப்படுகிறது h = f / 10; // *** பிளவு முடிவு *** //
எளிய மட்டு மற்றும் பிரிவு செயல்பாட்டைப் பயன்படுத்துவதன் மூலம் 4 இலக்க எண் (i) தனிப்பட்ட எண்களாக பிரிக்கப்படுகிறது. எங்கள் விஷயத்தில் "i" இன் மதிப்பு 4578 ஆக இருக்கும் ஒரு எடுத்துக்காட்டை எடுத்துக்கொள்வோம். பின்னர் இந்த செயல்முறையின் முடிவில் g = 4, e = 5, c = 7 மற்றும் a = 8 என்ற மாறி இருக்கும். எனவே இப்போது அந்த மாறியைப் பயன்படுத்தி ஒவ்வொரு இலக்கத்தையும் காண்பிப்பது எளிதாக இருக்கும்.
PORTD = seg; s1 = 1; // காட்சி 1 ஐ இயக்கி 4 வது இலக்கத்தை __delay_ms (5); s1 = 0; // 5ms தாமதத்திற்குப் பிறகு காட்சி 1 ஐ முடக்கு PORTD = seg; s2 = 1; // காட்சி 2 ஐ இயக்கி 3 வது இலக்கத்தை __delay_ms (5); s2 = 0; // 5ms தாமதத்திற்குப் பிறகு காட்சி 2 ஐ முடக்கு PORTD = seg; s3 = 1; // காட்சி 3 ஐ இயக்கி 2 வது இலக்கத்தை __delay_ms (5); s3 = 0; // 5ms தாமதத்திற்குப் பிறகு காட்சி 3 ஐ முடக்கு PORTD = seg; s4 = 1; // காட்சி 4 ஐ இயக்கி, 1 வது இலக்கத்தை __delay_ms (5); s4 = 0; // 5ms தாமதத்திற்குப் பிறகு காட்சி 4 ஐ முடக்கு
MCU 7 பிரிவுகளுடன் பேசும் உண்மையான இடம் இதுதான். ஒரு நேரத்தில் ஒரு இலக்கத்தை மட்டுமே நாம் காண்பிக்க முடியும் என்பது எங்களுக்குத் தெரியும் , ஆனால் எங்களிடம் நான்கு இலக்கங்கள் காண்பிக்கப்பட வேண்டும், மேலும் நான்கு இலக்கங்களும் இருந்தால் மட்டுமே முழுமையான நான்கு இலக்க எண் பயனருக்குத் தெரியும்.
எனவே, இதை நாம் எவ்வாறு செல்வது?
எங்களுக்கு அதிர்ஷ்டம் எங்கள் MCU ஒரு மனித கண்ணை விட மிக வேகமாக உள்ளது, எனவே நாம் உண்மையில் என்ன செய்கிறோம்: ஒரு நேரத்தில் ஒரு இலக்கத்தைக் காண்பிப்போம், ஆனால் மேலே காட்டப்பட்டுள்ளபடி மிக வேகமாக செய்கிறோம்.
எம்.சி.யு மற்றும் 7-பிரிவு அதை செயலாக்க முடியும் என்பதற்காக ஒரு இலக்க காட்சியை நாங்கள் தேர்வு செய்கிறோம், பின்னர் அந்த இலக்கத்தை அணைத்துவிட்டு அடுத்த இலக்கத்திற்குச் சென்று கடைசி இலக்கத்தை அடையும் வரை அதைச் செய்யலாம். 5ms இன் இந்த தாமதத்தை ஒரு மனித கண்ணால் கவனிக்க முடியாது, மேலும் நான்கு இலக்கங்களும் ஒரே நேரத்தில் இயங்குவதாகத் தோன்றியது.
அதுதான், இறுதியாக கீழே காட்டப்பட்டுள்ளபடி தாமதத்தைப் பயன்படுத்தி காட்டப்படும் இலக்கத்தின் மதிப்பை அதிகரிக்கிறோம்
if (கொடி> = 100) // கொடி 100 {i ++ ஐ அடையும் வரை காத்திருங்கள்; கொடி = 0; // கொடி நூறு என்றால் "நான்" அதிகரிக்கப்படும்} கொடி ++; ஒவ்வொரு ஃபிளாஷிற்கும் // அதிகரிக்கும் கொடி
தாமதம் பயன்படுத்தப்படுகிறது, இதனால் ஒரு எண்ணிலிருந்து இன்னொரு எண்ணுக்கு மாறுவதற்கு எடுக்கப்பட்ட நேரம் மாற்றத்தை நாம் கவனிக்க நீண்ட நேரம் ஆகும்.
முழு குறியீடு கீழே கொடுக்கப்படுகிறது மற்றும் செயல்முறை விளக்கப்படுகிறது வீடியோ இறுதியில்.
வன்பொருள் அமைப்பு மற்றும் சோதனை:
எங்கள் வன்பொருளுடன் உண்மையில் செல்வதற்கு முன்பு எப்போதும் புரோட்டியஸைப் பயன்படுத்தி நிரலை உருவகப்படுத்துவோம். உருவகப்படுத்துதல் வெற்றிகரமாக இருந்தால், இது போன்ற ஒன்றை நீங்கள் பார்க்க வேண்டும்

இந்த திட்டத்தில் சிக்கலான வன்பொருள் அமைப்பு எதுவும் இல்லை, எல்இடி ஒளிரும் டுடோரியலில் நாங்கள் உருவாக்கிய அதே பிஐசி மைக்ரோகண்ட்ரோலர் போர்டை மீண்டும் பயன்படுத்துகிறோம். இணைப்பு வரைபடத்தின் படி 7-பிரிவு தொகுதிகளை உங்கள் PIC மைக்ரோகண்ட்ரோலர் போர்டுடன் இணைக்கவும். இணைப்புகளைச் செய்து முடித்ததும், உங்கள் பிக்கிட் 3 புரோகிராமரைப் பயன்படுத்தி குறியீட்டைக் கொடுங்கள், அது உங்கள் வெளியீட்டை அனுபவிக்கும்.



