- ஏடிசி என்றால் என்ன?
- ARM7-LPC2148 இல் ADC
- ARM7-LPC2148 இல் ADC பின்ஸ்
- ARM7-LPC2148 இல் ADC பதிவுகள்
- LPC2148 இல் ADxCR பதிவு
- ADxGDR: ADC Global Data Register
- Components Required
- Circuit Diagram
- Programming ARM7-LPC2148 for ADC
எலக்ட்ரானிக்ஸ் உலகில் வெப்பநிலை, வேகம், இடப்பெயர்ச்சி, அழுத்தம் போன்றவற்றை அளவிட சந்தையில் பல வகையான அனலாக் சென்சார்கள் பயன்படுத்தப்படுகின்றன. காலப்போக்கில் தொடர்ந்து மாறிக்கொண்டிருக்கும் வெளியீட்டை உருவாக்க அனலாக் சென்சார்கள் பயன்படுத்தப்படுகின்றன. அனலாக் சென்சார்களிடமிருந்து வரும் இந்த சமிக்ஞைகள் ஒரு சில மைக்ரோ வோல்ட் (யு.வி) முதல் பல மில்லி-வோல்ட் (எம்.வி) வரையிலான மதிப்பில் மிகக் குறைவாக இருக்கும், எனவே சில வகையான பெருக்கம் தேவைப்படுகிறது. மைக்ரோகண்ட்ரோலரில் இந்த அனலாக் சிக்னல்களைப் பயன்படுத்துவதற்கு, மைக்ரோகண்ட்ரோலர் புரிந்துகொண்டு டிஜிட்டல் சிக்னல்களை மட்டுமே செயலாக்குவதால் அனலாக் சிக்னலை டிஜிட்டல் சிக்னலாக மாற்ற வேண்டும். எனவே பெரும்பாலான மைக்ரோகண்ட்ரோலரில் ஏடிசி (அனலாக் டு டிஜிட்டல் மாற்றி) எனப்படும் உள்ளடிக்கிய முக்கியமான அம்சம் உள்ளது . எங்கள் மைக்ரோகண்ட்ரோலர் ARM7-LPC2148 ஒரு ADC அம்சத்தையும் கொண்டுள்ளது.
இந்த டுடோரியலில், அனலாக் முள் ஒரு மாறுபட்ட மின்னழுத்தத்தை வழங்குவதன் மூலம் ARM7-LPC2148 இல் ADC ஐ எவ்வாறு பயன்படுத்துவது என்பதைப் பார்ப்போம் மற்றும் டிஜிட்டல் மாற்றத்திற்கு அனலாக் செய்த பிறகு 16x2 எல்சிடி திரையில் காண்பிப்போம். எனவே ADC பற்றிய ஒரு சிறு அறிமுகம் மூலம் ஆரம்பிக்கலாம்.
ஏடிசி என்றால் என்ன?
முன்பு கூறியது போல் ஏடிசி என்பது அனலாக் டிஜிட்டல் மாற்றத்திற்கு குறிக்கிறது, மேலும் இது உண்மையான உலகத்திலிருந்து அனலாக் மதிப்புகளை 1 மற்றும் 0 போன்ற டிஜிட்டல் மதிப்புகளாக மாற்ற பயன்படுகிறது. இந்த அனலாக் மதிப்புகள் என்ன? வெப்பநிலை, வேகம், பிரகாசம் போன்ற நமது அன்றாட வாழ்க்கையில் இவைதான் நாம் காண்கிறோம். இந்த அளவுருக்கள் அந்தந்த சென்சார்களால் அனலாக் மின்னழுத்தங்களாக அளவிடப்படுகின்றன, பின்னர் இந்த அனலாக் மதிப்புகள் மைக்ரோகண்ட்ரோலர்களுக்கான டிஜிட்டல் மதிப்புகளாக மாற்றப்படுகின்றன.
எங்கள் ஏடிசி வரம்பு 0 வி முதல் 3.3 வி வரை உள்ளது என்று வைத்துக் கொள்வோம், எங்களிடம் 10 பிட் ஏடிசி உள்ளது, இதன் பொருள் எங்கள் உள்ளீட்டு மின்னழுத்தம் 0-3.3 வோல்ட்ஸ் 1024 நிலைகள் தனித்துவமான அனலாக் மதிப்புகளாக (2 10 = 1024) பிரிக்கப்படும். பொருள் 1024 என்பது 10-பிட் ஏடிசிக்கான தீர்மானம், அதேபோல் 8-பிட் ஏடிசி தீர்மானம் 512 (28) ஆகவும், 16 பிட் ஏடிசி தீர்மானத்திற்கு 65,536 (216) ஆகவும் இருக்கும். LPC2148 இல் 10 பிட் தீர்மானம் ADC உள்ளது.
இதன் மூலம் உண்மையான உள்ளீட்டு மின்னழுத்தம் 0V ஆக இருந்தால், MCU இன் ADC அதை 0 ஆகவும், 3.3V ஆக இருந்தால் MCU 1024 ஐயும் படிக்கும், மேலும் 1.65v போன்ற எங்காவது இருந்தால் MCU 512 ஐப் படிக்கும். நாம் கீழே பயன்படுத்தலாம் ADC மற்றும் இயக்க மின்னழுத்தத்தின் தீர்மானத்தின் அடிப்படையில் MCU ஆல் படிக்கப்படும் டிஜிட்டல் மதிப்பைக் கணக்கிடுவதற்கான சூத்திரங்கள்.
(ADC தீர்மானம் / இயக்க மின்னழுத்தம்) = (ADC டிஜிட்டல் மதிப்பு / உண்மையான மின்னழுத்த மதிப்பு)
குறிப்பு மின்னழுத்தம் 3v ஆக இருந்தால் எடுத்துக்காட்டாக விரும்புகிறேன்:

முந்தைய கட்டுரையில் ADC ஐ விரிவாக விளக்கினோம்.
ARM7-LPC2148 இல் ADC
- LPC2148 டிஜிட்டல் மாற்றிகள் இரண்டு அனலாக் கொண்டுள்ளது.
- இந்த மாற்றிகள் டிஜிட்டல் மாற்றிகளுக்கு ஒற்றை 10-பிட் அடுத்தடுத்த தோராயமான அனலாக் ஆகும்.
- ADC0 க்கு ஆறு சேனல்கள் உள்ளன, ADC1 க்கு எட்டு சேனல்கள் உள்ளன.
- எனவே, LPC2148 க்கான மொத்த ADC உள்ளீடுகளின் எண்ணிக்கை 14 ஆகும்.
- இது உள்ளீட்டு மின்னழுத்தத்தை (0 முதல் 3.3 வி) வரம்பில் மட்டுமே மாற்றுகிறது. இது மின்னழுத்த குறிப்பை 3.3V ஐ விட அதிகமாக இருக்கக்கூடாது. இது ஐ.சி.யை சேதப்படுத்தும் மற்றும் நிச்சயமற்ற மதிப்புகளையும் வழங்கும்.
LPC2148 இல் ADC இன் சில முக்கியமான அம்சம்
- ஒவ்வொரு மாற்றி வினாடிக்கு 400000 10-பிட் மாதிரிகளைச் செய்யக்கூடியது.
- ஒவ்வொரு அனலாக் உள்ளீட்டிலும் குறுக்கீடு மேல்நிலை குறைக்க ஒரு பிரத்யேக முடிவு பதிவு உள்ளது.
- ஒற்றை அல்லது பல உள்ளீடுகளுக்கான மாற்று முறை.
- உள்ளீட்டு முள் அல்லது டைமர் மேட்ச் சிக்னலில் மாற்றம் குறித்த விருப்ப மாற்றம்.
- இரண்டு மாற்றிகளுக்கும் குளோபல் ஸ்டார்ட் கட்டளை.
பிற மைக்ரோகண்ட்ரோலர்களில் ADC ஐ எவ்வாறு பயன்படுத்துவது என்பதையும் சரிபார்க்கவும்:
- Arduino Uno இல் ADC ஐ எவ்வாறு பயன்படுத்துவது?
- 8051 மைக்ரோகண்ட்ரோலருடன் ADC0808 ஐ இடைமுகப்படுத்துகிறது
- பிஐசி மைக்ரோகண்ட்ரோலரின் ஏடிசி தொகுதியைப் பயன்படுத்துதல்
- ராஸ்பெர்ரி பை ஏடிசி டுடோரியல்
- MSP430G2 இல் ADC ஐ எவ்வாறு பயன்படுத்துவது - அனலாக் மின்னழுத்தத்தை அளவிடுதல்
- STM32F103C8 இல் ADC ஐ எவ்வாறு பயன்படுத்துவது
ARM7-LPC2148 இல் ADC பின்ஸ்
ஆரம்பத்தில் கூறியது போல், ARM7-LPC2148 இல் 6 அனலாக் உள்ளீட்டு ஊசிகளுடன் ADC0 மற்றும் 8 அனலாக் உள்ளீட்டு ஊசிகளுடன் ADC1 ஆகிய இரண்டு சேனல்கள் உள்ளன. எனவே முற்றிலும் அனலாக் உள்ளீடுகளுக்கு 14 ஊசிகளும் உள்ளன. கீழேயுள்ள வரைபடம் அனலாக் உள்ளீட்டிற்குக் கிடைக்கும் ஊசிகளைக் காட்டுகிறது.

ஏடிசி உள்ளீட்டு ஊசிகளை மற்ற ஜிபிஐஓ ஊசிகளுடன் மல்டிபிளக்ஸ் செய்யப்படுவதால். ஏடிசி செயல்பாட்டைத் தேர்ந்தெடுக்க பின்செல் பதிவை உள்ளமைப்பதன் மூலம் அவற்றை இயக்க வேண்டும்.
கீழேயுள்ள அட்டவணையில் LPC2148 இல் ADC மற்றும் மதிப்பிற்குரிய ADC சேனல் எண் ஆகியவற்றைக் காட்டுகிறது. AD0 சேனல் 0 மற்றும் AD1 சேனல் 1 ஆகும்
|
எல்பிசி 2148 பின் |
ஏடிசி சேனல் எண் |
|
பி.0.28 |
AD0.1 |
|
பி.0.29 |
AD0.2 |
|
பி.0.30 |
AD0.3 |
|
பி.0.25 |
AD0.4 |
|
பி.0.4 |
AD0.6 |
|
பி.0.5 |
AD0.7 |
|
பி.0.6 |
AD1.0 |
|
பி.0.8 |
AD1.1 |
|
பி.0.10 |
AD1.2 |
|
பி.0.12 |
AD1.3 |
|
பி.0.13 |
AD1.4 |
|
பி.0.15 |
AD1.5 |
|
பி.0.21 |
AD1.6 |
|
பி.0.22 |
AD1.7 |
ARM7-LPC2148 இல் ADC பதிவுகள்
LPC2148 இல் A / D மாற்று அம்சத்தைப் பயன்படுத்துவதற்கு பதிவேடுகள் நிரலாக்கத்தில் பயன்படுத்தப்படுகின்றன.
A / D மாற்றத்திற்காக LPC2148 இல் பயன்படுத்தப்படும் பதிவேடுகளின் பட்டியல் கீழே
1. ADCR: டிஜிட்டல் கட்டுப்பாட்டு பதிவுக்கு அனலாக்
பயன்படுத்தவும்: LPC2148 இல் A / D மாற்றி கட்டமைக்க இந்த பதிவு பயன்படுத்தப்படுகிறது
2. ஏடிஜிடிஆர்: டிஜிட்டல் குளோபல் டேட்டா ரெஜிஸ்டருக்கு அனலாக்
பயன்படுத்தவும்: இந்த பதிவேட்டில் A / D மாற்றிக்கு DONE பிட் உள்ளது மற்றும் மாற்றத்தின் முடிவு இங்கே சேமிக்கப்படுகிறது.
3. ADINTERN: டிஜிட்டல் குறுக்கீட்டிற்கான அனலாக் பதிவை இயக்கு
பயன்படுத்தவும்: இது ஒரு குறுக்கீடு இயக்கு பதிவு.
4. ADDR0 - ADDR7: டிஜிட்டல் சேனல் தரவு பதிவுக்கு அனலாக்
பயன்பாடு: இந்த பதிவேட்டில் அந்தந்த சேனல்களுக்கான ஏ / டி மதிப்பு உள்ளது.
5. ADSTAT: டிஜிட்டல் நிலை பதிவுக்கு அனலாக்.
பயன்படுத்தவும்: இந்த பதிவேட்டில் அந்தந்த ஏடிசி சேனலுக்கான DONE கொடியும், அந்தந்த ஏடிசி சேனலுக்கான ஓவர்ரூன் கொடியும் உள்ளன.
இந்த டுடோரியலில் நாங்கள் ADCR & ADGDR பதிவேடுகளை மட்டுமே பயன்படுத்துவோம். அவற்றைப் பற்றி விரிவாகப் பார்ப்போம்
LPC2148 இல் ADxCR பதிவு
சேனல் 0 மற்றும் சேனல் 1 க்கு முறையே AD0CR & AD1CR. இது 32 பிட் பதிவு. கீழே உள்ள அட்டவணை ADCR பதிவின் பிட் புலங்களைக் குறிக்கிறது.
|
31:28 |
27 |
26:24 |
23:22 |
21 |
20 |
19:17 |
16 |
15: 8 |
7: 0 |
|
மீட்டெடுக்கப்பட்டது |
எட்ஜ் |
START |
மீட்டெடுக்கப்பட்டது |
பி.டி.என் |
மீட்டெடுக்கப்பட்டது |
சி.எல்.கே.எஸ் |
BURST |
CLCKDIV |
SEL |
தனிப்பட்ட பதிவேடுகளை எவ்வாறு கட்டமைப்பது என்பது பற்றி பார்ப்போம்
1. SEL: ADC மாற்றத்திற்கான சேனலைத் தேர்ந்தெடுக்க (0 முதல் 7 வரை) பிட்கள் பயன்படுத்தப்படுகின்றன. ஒவ்வொரு சேனலுக்கும் ஒரு பிட் ஒதுக்கப்பட்டுள்ளது. எடுத்துக்காட்டாக, பிட் -0 ஐ அமைப்பது, மாற்றுவதற்காக ADC1 மாதிரியை ADC ஆக்கும். பிட் -1 ஐ அமைப்பது AD0.1 ஐ உருவாக்கும்; இதேபோல் பிட் -7 ஐ அமைப்பது AD0.7 க்கான மாற்றத்தை செய்யும். PLC2148 இல் PORT0 க்கான PINSEL0 எடுத்துக்காட்டாக நாம் பயன்படுத்தும் துறைமுகத்தின் படி PINSEL உள்ளது என்பது முக்கியமான படி.
2. சி.எல்.சி.கே.டி.வி: பிட்கள் (8 முதல் 15 வரை) கடிகார வகுப்பான். இங்கே ஏபிபி கடிகாரம் (ஏஆர்எம் பெரிஃபெரல் பஸ் கடிகாரம்) இந்த மதிப்பு மற்றும் ஏ / டி மாற்றிக்குத் தேவையான கடிகாரத்தை உருவாக்க ஒன்று மூலம் பிரிக்கப்பட்டுள்ளது, இது எல்பிசி 2148 இல் அடுத்தடுத்த தோராய முறையைப் பயன்படுத்துவதால் 4.5 மெகா ஹெர்ட்ஸுக்குக் குறைவாகவோ அல்லது சமமாகவோ இருக்க வேண்டும்.
3. BURST: BURST மாற்று பயன்முறையில் பிட் 16 பயன்படுத்தப்படுகிறது.
அமைத்தல் 1: SEL பிட்களில் தேர்ந்தெடுக்கப்பட்ட அனைத்து சேனல்களுக்கும் மாற்றத்தை ADC செய்யும்.
அமைத்தல் 0: BURST மாற்று பயன்முறையை முடக்கும்.
4. சி.எல்.சி.கே.எஸ்: (17 முதல் 19 வரை) மூன்று பிட்கள் தெளிவுத்திறனைத் தேர்ந்தெடுப்பதற்குப் பயன்படுத்தப்படுகின்றன மற்றும் தொடர்ச்சியான ஏ / டி மாற்று முறை என்பதால் வெடிப்பு பயன்முறையில் ஏ / டி மாற்றத்திற்கான கடிகாரங்களின் எண்ணிக்கை.
|
பிட்களுக்கான மதிப்பு (17 முதல் 19 வரை) |
பிட்கள் (துல்லியம்) |
கடிகாரம் இல்லை |
|
000 |
10 |
11 |
|
001 |
9 |
10 |
|
010 |
8 |
9 |
|
011 |
7 |
8 |
|
100 |
6 |
7 |
|
101 |
5 |
6 |
|
110 |
4 |
5 |
|
111 |
3 |
4 |
5. பி.டி.என்: பிட் 21 என்பது எல்பிசி 2148 இல் ஏடிசியின் பவர் டவுன் பயன்முறையைத் தேர்ந்தெடுப்பதாகும்.
- A / D PDN பயன்முறையில் உள்ளது.
- A / D செயல்பாட்டு பயன்முறையில் உள்ளது
6. START: (24 முதல் 26 வரை) பிட்கள் START க்கானவை. 0 அமைப்பதன் மூலம் BURST மாற்று முறை முடக்கத்தில் இருக்கும்போது, A / D மாற்றத்தை எப்போது தொடங்குவது என்பதற்கு இந்த START பிட்கள் பயனுள்ளதாக இருக்கும். விளிம்பில் கட்டுப்படுத்தப்பட்ட மாற்றத்திற்கும் START பயன்படுத்தப்படுகிறது. LPC2148 இன் CAP அல்லது MAT முள் உள்ளீடு இருக்கும்போது A / D மாற்றத் தொடங்குகிறது. கீழே உள்ள அட்டவணையை சரிபார்க்கலாம்
|
பிட்களுக்கான மதிப்பு (24 முதல் 26 வரை) |
LPC2148 இன் பின்ஸ் |
ADC இன் செயல்பாடு |
|
000 |
பி.டி.என் பயன்முறையில் ஏ.டி.சி அமைக்க பயன்படுகிறது தொடக்கமில்லை |
|
|
001 |
A / D மாற்றத்தைத் தொடங்கவும் |
|
|
010 |
CAP0.2 / MAT0.2 |
LPC2148 இன் CAP / MAT ஊசிகளில் முள் 27 (உயரும் அல்லது வீழ்ச்சி) இல் தேர்ந்தெடுக்கப்பட்ட EDGE இல் A / D மாற்றத்தைத் தொடங்கவும் |
|
011 |
CAP0.0 / MAT0.0 |
|
|
100 |
MAT0.1 |
|
|
101 |
MAT0.3 |
|
|
110 |
MAT1.0 |
|
|
111 |
MAT1.1 |
7. EDGE: The 27th bit is for EDGE is used only when the START bit contains 010-111. It starts conversion when there is CAP or MAT input you can see above table for that.
Setting: 0 - On Falling Edge
1- On Rising Edge
ADxGDR: ADC Global Data Register
AD0GDR & AD1GDR for ADC Channel 0 & ADC channel 1 respectively.
It is a 32-bit register contains the RESULT of A/D conversion and also the DONE bit which indicates that A/D conversion is done. Below table indicates the bit fields for ADGDR register.
|
31 |
30 |
29:27 |
26:24 |
23:16 |
15:6 |
5:0 |
|
DONE |
OVERRUN |
RESERVED |
CHN |
RESERVED |
RESULT |
RESERVED |
1. RESULT: These bits (6 to 15) contains the result of A/D conversion for the selected channel in the ADCR SEL register. The value is read only after the A/D conversion is completed and this is indicated by DONE bit.
EXAMPLE: For a 10-Bit ADC result the value stored varies from (0 to 1023).
2. CHANNEL: These bits 24 to 26 contain the channel number for which the A/D conversion is done. The converted digital value is present in RESULT bit.
EXAMPLE: 000 is for ADC channel 0 and 001 is for ADC channel 1, etc
3. OVERRUN: The 30th bit for OVERRUN is used in BURST mode. When set 1 the previous converted ADC value is overwritten by the newly converted ADC value. When the register is read it clears the OVERRUN bit.
4. DONE: The 31th bit is for DONE bit.
Set 1: When A/D conversion is completed.
Set 0: When the register is read and ADCR written.
We have seen about the important registers that are used in ADC in LPC2148. Now lets start using ADC in ARM7.
Components Required
Hardware
- ARM7-LPC2148 Microcontroller
- 3.3V voltage regulator IC
- 5V voltage regulator IC
- 10K Potentiometer – 2 Nos
- LED (Any Colour)
- LCD display(16X2)
- 9V battery
- Breadboard
- Connecting Wires
Software
- Keil uVision5
- Magic Flash Tool
Circuit Diagram


The table below shows the circuit connections between LCD & ARM7-LPC2148.
|
ARM7-LPC2148 |
LCD (16x2) |
|
P0.4 |
RS (Register Select) |
|
P0.6 |
E (Enable) |
|
P0.12 |
D4 (Data pin 4) |
|
P0.13 |
D5(Data pin 5) |
|
P0.14 |
D6(Data pin 6) |
|
P0.15 |
D7 (Data pin 7) |
Learn more about using LCD with ARM 7 – LPC2148.
IMPORTANT: Here we are using two voltage regulator ICs one for 5V LCD display and another 3.3V for analog input which can be varied by potentiometer.
Connections between 5V Voltage Regulator with LCD & ARM7 Stick
|
5V Voltage Regulator IC |
Pin function |
LCD & ARM-7 LPC2148 |
|
1.Left Pin |
+ Ve from battery 9V Input |
NC |
|
2.Centre Pin |
- Ve from battery |
VSS,R/W,K of LCD GND of ARM7 |
|
3.Right Pin |
Regulated +5V Output |
VDD,A of LCD +5V of ARM7 |
Potentiometer with LCD
A potentiometer is used to vary the contrast of LCD display. A pot has three pins, Left pin (1) is connected to +5V and centre (2) to VEE or V0 of LCD module and right pin (3) is connected to GND. We can adjust the contrast by turning the knob.
Connection between LPC2148 & potentiometer with 3.3V voltage regulator
|
3.3V Voltage Regulator IC |
Pin function |
ARM-7 LPC2148 |
|
1.Left Pin |
- Ve from battery |
GND pin |
|
2.Centre Pin |
Regulated +3.3V Output |
To potentiometer Input and potentiometer’s output to P0.28 |
|
3.Right Pin |
+ Ve from battery 9V Input |
NC |
Programming ARM7-LPC2148 for ADC
To Program ARM7-LPC2148 we need keil uVision & Flash Magic tool. We are using USB Cable to program ARM7 Stick via micro USB port. We write code using Keil and create a hex file and then the HEX file is flashed to ARM7 stick using Flash Magic. To know more about installing keil uVision and Flash Magic and how to use them follow the link Getting Started With ARM7 LPC2148 Microcontroller and Program it using Keil uVision.
In this tutorial we convert the analog input voltage (0 to 3.3V) into digital value by using ADC in LPC2148 and display the analog voltage on LCD display (16x2). A potentiometer will be used to vary the input analog voltage.
To know more about interfacing LCD with ARM7-LPC2148 4-bit mode follow this link.
The complete code for using ADC with ARM 7 is given at the end of this tutorial, here we are explaining few parts of it.
Steps involved in LPC2148-ADC programming
1. PINSEL register is used to select the port pin of LPC2148 and the ADC function as analog input.
PINSEL1 = 0x01000000; // Select P0.28 as AD0.1
2. Select the clock and bit accuracy for conversion by writing value to the ADxCR (ADC control register).
AD0CR = 0x00200402; //Sets ADC operation as 10-bits/11 CLK for conversion (000)
3. Start the conversion by writing the value to START bits in ADxCR.
Here I have written to 24th bit of AD0CR register.
AD0CR = AD0CR - (1<<24);
4. Now we to have check the DONE bit (31th) of corresponding ADxDRy (ADC data register) as it changes from 0 to 1. So we use while loop to constantly check if conversion is done on the 31th bit of data register.
while (!(AD0DR1 & 0x80000000));
5. After done bit is set to 1, conversion is successful, next we read the result from the same ADC data register AD0DR1 and store the value in a variable.
adcvalue = AD0DR1;
Next we use a formula to convert the digital value to voltage and store in a variable named voltage .
voltage = ((adcvalue/1023.0) * 3.3);
5. Following lines are used to display digital values (0 to 1023) after analog to digital conversion.
adc = adcvalue; sprintf(displayadc, "adcvalue=%f", adc); LCD_DISPLAY(displayadc); //Display ADC value (0 to 1023)
6. Following lines are used to display input analog voltage (0 to 3.3V) after analog to digital conversion and after step 5.
LCD_SEND(0xC0); sprintf(voltvalue, "Voltage=%.2f V ", voltage); LCD_DISPLAY(voltvalue); //Display (input analog voltage)
7. Now we have to display the input voltage and digital values on the LCD display. Before that we have to initialize the LCD display and use appropriate commands for sending message to display.
Below code is used to Initialize the LCD
void LCD_INITILIZE(void) //Function to get ready the LCD { IO0DIR = 0x0000FFF0; //Sets pin P0.12,P0.13,P0.14,P0.15,P0.4,P0.6 as OUTPUT delay_ms(20); LCD_SEND(0x02); // Initialize lcd in 4-bit mode of operation LCD_SEND(0x28); // 2 lines (16X2) LCD_SEND(0x0C); // Display on cursor off LCD_SEND(0x06); // Auto increment cursor LCD_SEND(0x01); // Display clear LCD_SEND(0x80); // First line first position }
Below code is used to Display the values on LCD
void LCD_DISPLAY (char* msg) //Function to print the characters sent one by one { uint8_t i=0; while(msg!=0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0)<<8)); //Sends Upper nibble IO0SET = 0x00000050; //RS HIGH & ENABLE HIGH to print data IO0CLR = 0x00000020; //RW LOW Write mode delay_ms(2); IO0CLR = 0x00000040; // EN = 0, RS and RW unchanged(i.e. RS = 1, RW = 0) delay_ms(5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0x0F)<<12)); //Sends Lower nibble IO0SET = 0x00000050; //RS & EN HIGH IO0CLR = 0x00000020; delay_ms(2); IO0CLR = 0x00000040; delay_ms(5); i++; } }
Below function is used to create delay
void delay_ms(uint16_t j) // Function for making delay in milliseconds { uint16_t x,i; for(i=0;i
Complete code with demonstration Video is given below.
