9A. পার্শ্ব সহযোগী সংযুক্তিকরণ (Interfacing peripherals – Seven segment – keypad – LCD)

Instruction set

9.1.1 সেভেন সিগমেন্ট ডিসপ্লে পরিচিতিঃ(Interfacing seven segment display):

সেভেন সিগমেন্ট ডিসপ্লে (SSD) ইউনিট বিভিন্ন আকারের এবং বিভিন্ন পিন অবয়বের হতে পারে। নীচে আমরা আপ-এন্ড-ডাউন পিন অবয়বের SSD এর স্ববর্ণিত চিত্র প্রদর্শন করবঃ

9.1.2 8051 ও কি প্যাড ম্যাট্রিক্সের সংযোগ (Interfacing 8051 with matrix keyPad):

এখন আমরা ৮০৫১ মাইক্রোকন্ট্রলারের সাথে 3×4 ম্যাট্রিক্স কি প্যাডের সংযোগ তৈরি করব। নীচে আমরা একটি সাধারণ ম্যাট্রিক্স কি প্যাডের সার্কিট ভিউ এবং ফিজিকাল ভিউ দেখতে পাচ্ছিঃ

উপরের চিত্রানুযায়ী R1,R2,R3,R4 কোন 3×4 ম্যাট্রিক্স কি প্যাডের প্রথম, দ্বিতীয়, তৃতীয় ও চথুর্থ – এই চারিটি রো নির্দেশ করছে। য়াবার একই রকম ভাবে C1,C2,C3 পিন তিনটি 3×4 ম্যাট্রিক্স কি প্যাডের প্রথম, দ্বিতীয় ও তৃতীয় এই তিনটি কলামকে নির্দেশ করছে।

কি প্যাড ম্যাট্রিক্সের রো এবং কলামগুলি পূর্বের ন্যায় ক্রমান্বয়ে না থেকে অন্য ভাবেও থাকতে পারে। সেক্ষেত্রে আমাদের রো এবং কলামগুলি চিহ্নিত করে নিতে হবে।

ম্যাট্রিক্সের প্রতিটি রো এবং প্রতিটি কলাম একটি করে পুশ সুইচের মাধ্যমে যুক্ত থাকায় ম্যাট্রিক্সের ১২ টি অবস্থান আমরা ৪টি রো এবং ৩টি কলাম অর্থাৎ ৪+৩ এই ৭টি ইনপুট লাইনের মাধ্যমে নির্দিষ্ট করতে পারব।

9.1.3 ম্যাট্রিক্স কি প্যাড কিভাবে কাজ করেঃ

কি প্যাড ম্যাট্রিক্সের প্রতিটি রো এবং প্রতিটি কলাম একটি করে সুইচের মাধ্যমে সংযুক্ত থাকে।  রো এবং কলামগুলির মধ্যে যেকোন একটি দলকে ঊচ্চ বিভবে রাখা হয়। অপর দল্ টির প্রতিটিকে ক্রমান্বয়ে নিম্ন বিভবে পরিবর্তন করে প্রথম দলের প্রতিটির বিভব নির্ণয় করা হয়। এইভাবে চলতে চলতে নির্দিষ্ট যে রো এবং কলম যুগলের জন্য উচ্চ বিভব সম্পন্ন রো বা কলাম(যে দল্টিকে উচ্চ বিভবে রাখা হয়েছিল) নিম্ন বিভব নির্দেশ করবে সেই রো বা কলাম যুগলই নির্দিষ্ট কি কে নির্দেশ করবে। এখন ধরা যাক রো গুলিকে উচ্চ বিভবে রাখা হয়েছে। এই অবস্থায় ৯ নং কি টিকে প্রেস করা হল। ৯ নং কি অর্থাৎ তৃতীয় রো এবং তৃতীয় কলামের সংযোগ স্থলের পুশ সুইচটি প্রেস করা হয়েছে। অর্থাৎ তৃতীয় কলামটি নিম্ন বিভব যুক্ত হলে তৃতীয় রো টিও নিম্ন বিভব যুক্ত হয়ে পড়বে। এখন প্রথম, দ্বিতীয়, তৃতীয় কলামকে ক্রমান্বয়ে নিম্ন বিভব যুক্ত করে অমরা প্রতিটি রোকে চেক করব। যে রো টি যে কলামের জন্য নিম্ন বিভব প্রাপ্ত হবে সেই রো এবং কলাম যুগল হবে আমাদের কাঙ্ক্ষিত সংখ্যা। ৯ নং কি প্রেস করা হলে যখনই তৃতীয় কলামের নিম্ন বিভবের জন্য তৃতীয় রো টি নিম্ন বিভব যুক্ত হয়ে পড়বে তখনই আমরা নির্দিষ্ট সাব রুটিন এক্সিকিউট করব। অনুরূপে অন্যান্য কি প্রেসের জন্যও নির্দিষ্ট সাব রুটিন এক্সিকিউট করতে হবে।

9.1.4 নমুনা প্রকল্পঃ

9.1.4.1 পরীক্ষার জন্য প্রয়োজনীয় পার্ট লিস্টঃ

১। AT80S51

২। 10uF Capacitor

৩। 10K resistor(1+2 = 3 Pieces)*

৪। 11.0592MHz Crystal Oscillator

৫। 33pF Capacitor(2 pieces)

৬। 3×4 KeyPad

৭। Seven Segment Display Unit – Common Anode (2 Pieces)

৮। BC548 Transistor (2 Pieces)

৯। Indicating LED (2 Pieces)

*এখানে দুটি বাড়তি 10K রেজিস্ট্যান্স এর মাধ্যমে P0.1 ও P0.2 কে +5V এর সাথে যুক্ত করা হয়েছে। এর কারণ ৮০৫১ এর P0 পোর্টটি হল ওপেন ড্রেন পোর্ট অর্থাৎ এই পোর্টের মধ্যে তড়িৎ শুধুমাত্র প্রবেশ করতে পারে। সুতরাং P0.1 ও P0.2 পিন দুটিকে আউটপুট পিন রূপে কার্যকরি করতে পিন দুটিকে দুটি 10K পুল আপ রেজিস্টরের সাহায্যে +5V বিভবের সাথে যুক্ত করতে হয়।

9.1.4.2 প্রয়োজনীয় সার্কিট ডায়াগ্রামঃ

9.1.4.3 প্রয়োজনীয় কোডঃ ডাউনলোড লিংকঃ

8051Serial

8051 mcu তে কোড আপলোড

উপরের কোডটিকে 8051 মাইক্রোকন্ট্রোলারে আপলোড করতে হবে। তারপর প্রদত্ত সার্কিট অনুযায়ী বর্তনী সম্পূর্ণ করতে হবে। এরপর 8051 মাইক্রোকন্ট্রোলারে পাওয়ার (+5 vdc) সংযোগ করলেই বর্তনীটি সক্রিয় হবে। যে সংখ্যা আমরা কিপ্যাডে টাইপ করব, সেটি সেভেন সিগমেন্ট ডিসপ্লেতে প্রদর্শিত হবে।

9.3 LCD (Liquid Crystal Display):

এল.সি.ডি. বা Liquid crystal Display হল এক প্রকার ফ্ল্যাট ডিসপ্লে ইউনিট বা ডিসপ্লে স্ক্রিন যেটি পোলারাইজেশনের মাধ্যমে আলোর পরিমার্জন (light modulation) ঘটিয়ে কোন প্রতিবিম্বকে দৃশ্যমান করে তোলে। এই ডিসপ্লে ইউনিট গুলি খুবই সরু হয় এবং পূর্বের বৃহৎ CRT ডিসপ্লে ইউনিটের তুলনায় অনেক কম জায়গা অধিকার করে থাকে। এল.সি.ডি. ডিসপ্লে ইউনিটে দুইটি পোলারাইজড স্তরের মধ্যে একধরণের তরলীভূত ক্রিস্টাল দ্রবণ ( liquid crystal solution ) রাখা থাকে, এর মধ্যে দিয়ে আলো পাঠানো হয় এবং লিকুইড ক্রিস্টালটি এই আলোর বিভিন্ন অংশ শোষণ করে নিয়ে একটি দৃশ্যমান ইমেজ তৈরি করে।

LCD দুই প্রকারের হয়ঃ

  1. Active Matrix LCD. এগুলি আবার থিন ফিল্ম ট্র্যান্সিসটর ( Thin Film Transistor) বা TFT নামেও পরিচিত
  2. Passive Matrix LCD. এতে একটি পরিবাহী গ্রিডের প্রতিটি সংযোগ স্থলে একটি করে পিক্সেল (pixel) যুক্ত থাকে।
  3. টিভি, মোবাইল, ডিসপ্লে বোর্ড এবং আরও নানা ক্ষেত্রে এর ব্যবহার আছে।
9.3.1 একটি 16×2 LCD ডিসপ্লে ইউনিটের পিন আউট ডেসক্রিপশনঃ

9.3.2 পিনগুলির বর্ণনা নীচের টেবিলে দেওয়া হলঃ

16×2 LCD ডিসপ্লে ইউনিটে ম্যাসেজ ডিসপ্লে করার জন্য এবং ডিসপ্লে ইউনিটটিকে নিয়ন্ত্রণ করার জন্য কিছু কম্যান্ড আমাদের ব্যবহার করতে হয় (অবশ্যই RS = 0 অর্থাৎ রেজিস্টার সিলেক্ট পিনকে লো রেখে।

9.3.3 কিছু LCD ডিসপ্লে কম্যান্ডঃ

দ্রষ্টব্যঃ

  • অধিকাংশ ক্ষেত্রে 16×2 LCD গুলি সুইচ অন হবার সাথে সাথে 8 বিট মোডে ইনিশিয়ালাইজড হয়।
  • LCD কে 4 বিট মোডে সক্রিয় করার জন্য LCD কে পৃথক ভাবে ইনিশিয়ালাইজড করতে হবে।
  • LCD কে 8 বিট মোডে সক্রিয় করলে LCD তার 8 টি পিনের সাহায্যে তথ্যের ইনপুট গ্রহণ করবে।
  • LCD কে 4 বিট মোডে সক্রিয় করলে LCD তার আটটি ডাটা পিনের শেষের 4 টি ডাটা পিনের (DB4 থেকে DB7) সাহায্যে তথ্য গ্রহণ করবে।

9.3.4 16×2 LCD ডিসপ্লে ইউনিটে 8 বিট মোডে ম্যাসেজ ডিসপ্লে করার জন্য প্রয়োজনীয় ধাপঃ

  • LCD প্রারম্ভ (LCD initialization): LCD কে ইনিসিয়ালাইজ করার জন্য অধিকাংশ ক্ষেত্রে নীচের ধাপগুলি পালন করা হয়ঃ
  • ডাটা লাইনে 0x38 পাঠানো হল।
  • LCD on করতে, কার্সার বা সূচক on করতে এবং কার্সার ব্লিঙ্কিং on করতে ডাটা লাইনে 0x0F পাঠানো হল।
  • কার্সারকে প্রথম লাইনের শুরুতে স্থাপন করার জন্য ডাটা লাইনে 0x80 পাঠানো হল।
  • ডিসপ্লে ইউনিটকে ক্লিয়ার করার জন্য ডাটা লাইনে 0x01 পাঠানো হল।
  • LCD ডাটা লাইনে ডাটা প্রেরণঃ

নীচের ধাপগুলিতে LCD ডাটা লাইনে ডাটা পাঠানোর পদ্ধতিগুলি লেখা হল। আমরা জানি যে LCD মডিউলকে নিয়ন্ত্রণ করার জন্য তিনটি গুরুত্বপূর্ণ পিন হল RS, RW, EN. এই তিনটি পিনের লজিক স্টেটই নির্ণয় করে যে ডাটা বা তথ্যটি ইনপুট কম্যাণ্ড হিসেবে গৃহীত হবে নাকি ডাটা রূপে LCD তে ডিসপ্লে হবে।

  1. RW = 0; করা হল।
  2. ডাটা বা তথ্য যদি ইনপুট কম্যান্ড হয় RS = 0; করতে হবে।
  3. ডাটা বা তথ্য যদি ডিসপ্লে করতে হয় RS = 1 করতে হবে।
  4. ডাটা বাইটকে ডাটা রেজিস্টারে রাখতে হবে।
  5. EN বা enable পিনকে খুব অল্প সময়ের ব্যবধানে (প্রায় 1ms)  হাই থেকে লো তে পরিবর্তন করতে হবে।

9.3.5 নমুনা প্রকল্পঃ

9.3.5.1 8051 LCD র সংযোগ (Interfacing 8051 with LCD):8 বিট মোডঃ

9.3.5.2 পার্ট লিস্টঃ

  1. AT89S51
  2. LCD(16×2)
  3. Bread Board
  4. 10K Resistor
  5. 10uF Electrolytic Capacitor
  6. 33pF Capacitor( 2 piece)
  7. 11.0592 MHz Crystal
  8. Connecting Wire
  9. 5 Volt Power Supply

অন্য হার্ডওয়ারঃ

  • 8051 Burner Device

সফটওয়ার এনভায়রনমেন্টঃ

  • Keil uVision

9.3.5.3 সার্কিটঃ

Figure 80

9.3.5.4 প্রয়োজনীয় C কোডঃ

8051 mcu তে কোড আপলোড

Figure 80a

উপরের পরীক্ষায় আমাদের LCD তে দুটি লাইনে আমাদের পাঠ্য তথ্য ভেসে উঠবে এবং অতঃপর লাইন দুটি মুছে গিয়ে নতুন দুইটি লাইন ভেসে উঠবে।

9.3.6 LCD কে 4 বিট মোডে ইনিশিয়ালাইজেসজন

  1. ডিলে 20 ms (প্রায়)
  2. ডাটা পিনে 0x30 পাঠানো হল ( 8 বিট মোডে)
  3. ডিলে 10 ms (প্রায়)
  4. ডাটা পিনে আবার 0x30 পাঠানো হল ( 8 বিট মোডে)
  5. ডিলে 1 ms (প্রায়)
  6. ডাটা পিনে তৃতীয় বারের জন্য 0x30 পাঠানো হল ( 8 বিট মোডে)
  7. ডিলে 1 ms (প্রায়)
  8. ডাটা বাস উইথ (Data Bus Width) সিলেক্ট করার জন্য 4 বিট মোডের ক্ষেত্রে 0x20 পাটানো হল (8 বিট মোডে)
  9. ডিলে 1 ms (প্রায়)

এই পর্যন্ত LCD 8 বিট মোডে কাজ করবে। প্রোগ্রাম সিকোয়েন্স এরপর থেকে আমাদের 4 বিট মোডে পাঠাতে হবে। ডিসপ্লে কম্যান্ড এবং মেসেজ ডিসপ্লে উভয়ই আমাদের 4 বিট মোডে কোডিং করতে হবে। এরপর আমরা নীচের ধাপ গুলির সাহায্য নেবঃ

9.3.6.1 16×2 LCD তে 4 বিট মোডে কম্যান্ড কোড পাঠানোর জন্য প্রয়োজনীয় ধাপঃ

  1. রেজিস্টার সিলেক্ট 0 (RS = 0) করা হল
  2. ইনপুট কম্যাণ্ড তথ্যের প্রথমের চারিটি বিটকে মাস্ক করা হল
  3. হাইয়ার নিবল বা শেষ চারিটি বিটকে LCD পোর্টে পাঠানো হল
  4. LCD তে এন্যাবেল (Enable) সিগনাল পাঠানো হল
  5. এবার উচ্চতর নিবল বা শেষ চারিটি নিবলকে ম্যাস্ক করা হল
  6. লোয়ার নিবল বা প্রথম চারিটি বিটকে LCD পোর্টে পাঠানো হল
  7. পুনরায় এন্যাবল( Enable) সিগনাল পাঠানো হল

9.3.6.2 16×2 LCD তে 4 বিট মোডে ম্যাসেজ ক্যারেক্টার পাঠানোর জন্য প্রয়োজনীয় ধাপঃ

  1. প্রথমে রেজিস্টার সিলেক্ট 1 (RS = 1) করা হল
  2. এরপর ম্যাসেজ ডিসপ্লের জন্য প্রতিটি ইনপুট ক্যারেক্টার ডাটাকে পূর্ববর্তী অনুচ্ছেদের (অনু. 9.3.6.1) 2 থেকে 7 নং ধাপগুলির পুনরাবৃত্তি ঘটানো হল
  3. প্রতিটি ক্যারেক্টার ইনপুটের জন্যই এইরূপ পুনরাবৃত্তি ঘটানো হল

9.3.7 নমুনা প্রকল্পঃ

9.3.7.1 8051 LCD র সংযোগ (Interfacing 8051 with LCD):4 বিট মোডঃ

9.3.7.2 পার্ট লিষ্টঃ

  1. AT89S52
  2. 16×2 LCD Module
  3. 10uF Capacitor
  4. 33pF Capacitor (2 piece)
  5. 11.0592MHz Crystal
  6. 10K Resistor
  7. 5V Power Source
  8. Bread Board
  9. Connecting Wire

9.3.7.3 সার্কিটঃ

Figure 81

9.3.7.4 প্রয়োজনীয় C কোডঃ

প্রোগ্রামটি এক্সিকিউট করলে আমরা পূর্বের মতোই আউটপুট পাব। তবে LCD 4 বিট মোডে সক্রিয় হলে ডিসপ্লের গতি একটু কমে যাবে।