PIC Microcontroller কি?
PIC (Peripheral Interface Controller) হল Microchip Technology দ্বারা নির্মিত এবং General Instrument এর পৃষ্ঠপোষকতায় তৈরি এক শ্রেণীর Microcontroller। Microcontroller হল processor core, memory, এবং programmable input/output যন্ত্রাংশের সমন্বয়ে একক Chip এ তৈরি একটি ক্ষুদ্র Computer।
এই Tutorial এ PIC Microcontroller এর উপর basic একটি project থাকবে। তার আগে প্রথমেই কিছু Irrelevant কিন্তু Inevitable বিষয় তুলে ধরছি। বর্তমানে Hobbyist দের মধ্যে Arduino এর ব্যাপক জনপ্রিয়তা লক্ষ্য করা যাচ্ছে। একেবারে গোড়া থেকে শুরু করার সময় সকলেই একটি দোদুল্যমান অবস্থার সম্মুখীন হয় যে- কোন Platform থেকে কাজ শুরু করবে। এখানে দুটো ব্যাপার আসে।
এক: একটি Platform নির্বাচন করে Project এ হাত দেওয়া;
দুই: একটি Project নির্বাচন করে তারপর Platform ঠিক করা।
Hobbyist রা সাধারণত প্রথমটিই করে থাকে। কিন্তু সহজ কথায়, আমাদের দুইটা বিষয় লক্ষ্য রাখতে হবে।
প্রথমত: দেয়াল ভাংতে ঘুষি মারা চলবে না;
দ্বিতীয়ত: মশা মারতে কামান দাগা যাবে না।
Development Board (e.g. Arduino, BasicATOM, BasicX, POB Technology, Pololu, Parallax etc.) বনাম MCU / Microcontroller Unit (e.g PIC, Atmel AVR, ARM, Intel etc.):
এই Tutorial এ আমি এর গভীরে যাব না। সংক্ষেপে; Arduino এর মত বিভিন্ন Development Board এর Programming Syntax খুবই সহজ এবং অত্যন্ত জটিল Project করার উপযোগী। এগুলতে সহজেই বিভিন্ন External Device যোগ করা যায়। অপরদিকে Microcontroller বিভিন্ন Entry Level এর Project করার জন্য উপযোগী। কিন্তু MCU এর Programming Syntax কিছুটা দুরূহ এবং Configure করা অপেক্ষাকৃত কঠিন।
এবার আমরা PIC Microcontroller দিয়ে LCD Display নিয়ন্ত্রণ করার Tutorial এর মূল পর্বে আসছি।
PIC Microcontroller নিয়ে কাজ করার জন্য তিনটি জনপ্রিয় IDE আছে।
- (i) MikroC Pro,
- (ii) Hi Tech C এবং
- (iii) MPLAB XC8
আমরা এই Tutorial এ MikroC Pro ব্যবহার করব।
উপকরণ সমূহঃ
- PIC Microcontroller (PIC16F877A)
- 16×2 LCD Display (LM016L)
- XTAL Crystal 8MHz
- Capacitor 22pF
- Variable Resister / Potentiometer 10KΩ
প্রথমেই আমাদেরকে MCU এর Pin গুলো কে LCD এর জন্য Configure করতে হবে।
MCU এর মোট ৪০ টি Pin এবং LCD Display এর মোট ১৬ টি Pin। নিচে বিস্তারিত Pinout দেওয়া হল।
Output হিসেবে MCU এর RC2, RC3, RC4, RC5, RC6 ও RC7 Pin কে ব্যবহার করা হবে।
LCD এর ৬ টি Pin: RS, EN, DB4, DB5, DB6 ও DB7 এর জন্য MCU কে Configure করতে হবে।
sbit LCD_RS at RC2_bit; sbit LCD_EN at RC3_bit; sbit LCD_D4 at RC4_bit; sbit LCD_D5 at RC5_bit; sbit LCD_D6 at RC6_bit; sbit LCD_D7 at RC7_bit; sbit LCD_RS_Direction at TRISC2_bit; sbit LCD_EN_Direction at TRISC3_bit; sbit LCD_D4_Direction at TRISC4_bit; sbit LCD_D5_Direction at TRISC5_bit; sbit LCD_D6_Direction at TRISC6_bit; sbit LCD_D7_Direction at TRISC7_bit;
প্রথম অংশঃ
…………………..
sbit LCD_D5 at RC5_bit;
…………………..
এখানে বলা হচ্ছে যে LCD এর DB5 Pin MCU এর RC5 Pin এ সংযুক্ত হবে।
দ্বিতীয় অংশঃ
………………………………
sbit LCD_D5_Direction at TRISC5_bit;
………………………………
এখানে বলা হচ্ছে যে RC5 Pin Output হিসেবে কাজ করবে DB5 Pin এর জন্য।
এরপর Program এর মূল অংশ
void main() { Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,1," Hello, AE!"); }
” Lcd_Init();” দ্বারা LCD Initialize করা হল।
এরপর LCD কে দুইটি Command দেওয়া হয়েছে। কি Command তা Code দেখেই বুঝতে পারছেন। LCD এর আরও কিছু Command নিচে দেওয়া হল।
_LCD_TURN_ON – Turns ON the LCD Display.
_LCD_TURN_OFF – Turns OFF the LCD Display.
_LCD_FIRST_ROW – Moves the cursor to the first row.
_LCD_SECOND_ROW – Moves the cursor to the the second row.
_LCD_THIRD_ROW – Moves the cursor to the third row.
_LCD_FOURTH_ROW – Moves the cursor to the fourth row.
_LCD_CLEAR – Clears the LCD Display.
_LCD_CURSOR_OFF – Turns ON the cursor.
_LCD_UNDERLINE_ON – Turns ON the cursor underline.
_LCD_BLINK_CURSOR_ON – Turns ON the cursor blink.
_LCD_MOVE_CURSOR_LEFT – Moves cursor LEFT without changing the data.
_LCD_MOVE_CURSOR_RIGHT – Moves cursor RIGHT without changing the data.
_LCD_SHIFT_LEFT – Shifts the display left without changing the data in the display RAM.
_LCD_SHIFT_RIGHT – Shifts the display right without changing the data in the display RAM.
_LCD_RETURN_HOME – Returns the cursor and shifted display to Home position.
“Lcd_Out(1,1,” Hello, AE!”);” এখানে LCD তে String Print করা হল। “1, 1” দ্বারা প্রথম Row, প্রথম Column এ Output নির্দেশ করা হয়েছে।
এবার Circuit এর সম্পূর্ণ Schematic নিচে দেখি-
(বি. দ্র: Diagram এ Vss এবং Vdd Pin গুলো দেখান হয়নি।)
এখানে Source Code এবং Programmable HEX File অন্তর্ভুক্ত করা আছে।
Password: 16F877A
Credits:
Idea and Code: electrosome.com
MCU Pinout: Microchip
LCD Pinout: engineersgarage.com
Software: MikroElektronika, Labcenter Electronics