বইয়ের প্রজেক্ট’স সমূহ

প্রজেক্ট একঃ মাইক্রোকন্ট্রোলার ব্যবহার করে লিড লাইট নিয়ন্ত্রন

প্রজেক্ট দুইঃ মাইক্রোকন্ট্রোলার দিয়ে ভিন্নভাবে লিড লাইট নিয়ন্ত্রন

প্রজেক্ট তিনঃ লিড লাইট জ্বলা নেভার সময় নিয়ন্ত্রন

প্রজেক্ট চারঃ একাধিক লিড লাইট নিয়ন্ত্রন

প্রজেক্ট পাচঃ একাধিক লিড লাইট ব্যবহার করে প্যাটার্ন তৈরী

প্রজেক্ট ছয়ঃ সুইচের সাহায্য লিড লাইট নিয়ন্ত্রন

প্রজেক্ট সাতঃ সুইচের সাহায্য একাধিক লিড লাইট নিয়ন্ত্রন

প্রজেক্ট আটঃ মাইক্রোকন্ট্রোলারের সাথে সেভেন সেগমেন্ট ডিসপ্লে সংযুক্তকরন

প্রজেক্ট নয়ঃ মাইক্রোকন্ট্রোলারের সাথে একাধিক সেভেন সেগমেন্ট ডিসপ্লে সংযুক্তকরন

প্রজেক্ট দশঃ মাইক্রোকন্ট্রোলার ব্যবহার করে ডিজিটাল ভিজিটর কাউন্টার নির্মান

প্রজেক্ট এগারোঃ মাইক্রোকন্ট্রোলার ব্যবহার করে সাউন্ড তৈরী

প্রজেক্ট বারোঃ মাইক্রোকন্ট্রোলার ব্যবহার করে মোটরের দিক নিয়ন্ত্রন

প্রজেক্ট তেরোঃ মাইক্রোকন্ট্রোলার ব্যবহার করে স্কয়ার ওয়েভ তৈরী

সূচীপত্র

অধ্যায়

অধ্যায় একঃ মাইক্রোকন্ট্রোলার বেসিক                      

অধ্যায় দুইঃ মাইক্রোকন্ট্রোলার প্রোগামিং                 

অধ্যায় তিনঃ বেসিক মাইক্রোকন্ট্রোলার প্রজেক্ট                 

অধ্যায় চারঃ মাইক্রোকন্ট্রোলার প্রজেক্ট’স                     

অধ্যায় পাচঃ মাইক্রোকন্ট্রোলার প্রজেক্ট’স নির্মান

অধ্যায় এক

মাইক্রোকন্ট্রোলার বেসিক

ইলেক্ট্রনিক্সের একটি গুরুত্বপূর্ন এবং আর্কষনীয় জগতের নাম হচ্ছে মাইক্রোকন্ট্রোলার। ইলেকট্রনিক্সের এই বিশেষ জগতে স্বাগতম! মাইক্রোকন্ট্রোলার সর্ম্পকে বিস্তারিত জানার পূর্বে কিছু বেসিক আমাদের জানতে হবে। এই অধ্যায়ে আমরা মাইক্রোকন্ট্রোলার সম্পকিত কিছু বেসিক বিষয় সর্ম্পকে জানবো। চলুন শুরু করা যাক।

 

এই অধ্যায়ের শুরুতে আমরা মাইক্রোপ্রসেসর, মাইক্রোকন্ট্রোলার, মাইক্রোকন্ট্রোলারের আভ্যন্তরীন গঠন ইত্যাদি নিয়ে আলোচনা করবো। আমরা আমাদের চারপাশে যে ইলেকট্রনিক্স ডিভাইস সমূহ দেখি তাদের অধিকাংশের ভিতরে মাইক্রোকন্ট্রোলার অথবা মাইক্রোপ্রসেসর থাকে। আমাদের বাসার কাপড় পরিষ্কার করার ওয়াসিং মেশিন, ফ্রিজ, মাইক্রোওয়েভ ওভেন, কফি মেশিনের ভিতরে মাইক্রোকন্ট্রোলার আছে। শুধু তাই নয়, অত্যাধুনিক গাড়ী, উন্নত প্রযুক্তির মেডিক্যাল মেশিনারী, সামরিক সরঞ্জাম, কমিউনিকেশন ডিভাইসেও মাইক্রোকন্ট্রোলার বা মাইক্রোপ্রসেসর ব্যবহার করা হয়। সুতরাং আমরা বুঝতে পারছি মাইক্রোকন্ট্রোলার এবং মাইক্রোপ্রসেসর আধুনিক ইলেকট্রনিক্সের একটি গুরুত্বপূর্ন অংশ। এখন প্রশ্ন, কেন মাইক্রোকন্ট্রোলার এতটা গুরুত্বপূর্ন? নিচে একটি চার্টের মাধ্যমে মাইক্রোকন্ট্রোলারের বিভিন্ন ব্যবহার দেখানো হলো।

বিখ্যাত বেল ল্যাবরোটারী যখন ১৯৪৭ সালে ট্রানজিষ্টর তৈরী করলো, তখন ইলেকট্রনিক্সের জগতে এক যুগান্তকারী পরিবর্তন আসলো। ট্রানজিষ্টর আবিষ্কারের পূর্বে বিভিন্ন ডিভাইসে শুধুমাত্র হার্ডওয়ার ব্যবহার করে সার্কিট নির্মান করা হতো। কোন কারনে যদি ডিভাইসের পরিবর্তন করতে হতো, তবে পুরো সার্কিটকে নতুন করে ডিজাইন করতে হতো। যেমন আমরা একটি ডিভাইসে তৈরী করলাম যেটি ১ হার্জের 

 

সাইন গ্রাফ তৈরী করে। এখন কোন কারনে আমাদের প্রয়োজন হলো এমন একটি ডিভাইসের যেটি ২ হার্জ সাইন ওয়েভ তৈরী করতে পারে। এক্ষেত্রে পুরো সার্কিটটি আমাদের নতুন করে ডিজাইন করতে হবে; রেজিষ্টর, ক্যাপাসিটরের মান পরিবর্তন করে নতুন রেজিষ্টর এবং ক্যাপাসিটর বসাতে হবে। মাইক্রোকন্ট্রোলার এবং মাইক্রোপ্রসেসরের বদৌলতে আমরা ইলেকট্রনিক্সের এমন এক যুগে প্রবেশ করেছি যে, এখন ১ হার্জের বদলে ২ হার্জ সাইন ওয়েভ পেতে নতুন করে সার্কিট ডিজাইনের কোন প্রয়োজন নেই। বরং ইলেকট্রনিক্স সার্কিটে আমরা প্রোগাম সংযুক্ত করতে পারি এবং শুধুমাত্র প্রোগামের কোডিং পরিবর্তনের মাধ্যমে খুব সহজে ১ হার্জের বদলে ২ হার্জ সাইন ওয়েভ পেতে পারি। লক্ষনীয় আমরা এখানে মাইক্রোকন্ট্রোলারের পাশাপাশি মাইক্রোপ্রসেসর নামে আরকটি শব্দ ব্যবহার করছি। এই মাইক্রোপ্রসেসর কি?

সত্তর এর দশকে সর্বপ্রথম মাইক্রোপ্রসেসর পরিচিত লাভ করে। তখন এটি চার বিটের একটি ডিভাইস ছিলো। এরপরে আট বিট বাজারে আসে। এরপর ষোল বিট, বত্রিশ বিট, চৌষট্টি বিট, একশত চব্বিশ বিট ইত্যাদি আসতেই থাকে। মাইক্রোপ্রসেসর অনেকটা মাইক্রোকন্ট্রোলারের মতোই। মাইক্রোকন্ট্রোলারের সাথে মাইক্রোপ্রসেসরেরপার্থক্য হচ্ছে, মাইক্রোপ্রসেসর একা কাজ করতে পারে না। মাইক্রোপ্রসেসরকে কাজ করানোর জন্য এর সাথে আরো কিছু আইসি সংযুক্ত করতে হয়। যেমন মাইক্রোপ্রসেসরের জন্য আমরা যে প্রোগাম লিখবো তাকে রমের (ROM) এর মধ্য সংরক্ষন করতে হবে। প্রোগাম যে ডাটা ব্যবহার করবে তা রমের মধ্য সংরক্ষন করা যাবে না। এজন্য আমাদের দরকার হবে রেম (RAM)। আবার আমরা যদি সার্কিটে কোন ইনপুট বা আউটপুট দিতে না পারি তবে মাইক্রোপ্রসেসর বাইরের জগতের সাথে যোগাযোগ করতে পারবেনা। এজন্য মাইক্রোপ্রসেসরের সাথে বিভিন্ন ইনপুট আউটপুট ডিভাইস সংযুক্ত করতে হবে।  সুতরাং দেখা যাচ্ছে মাইক্রোপ্রসেসরকে ব্যবহারের জন্য এরসাথে রম, রেম, ইনপুট আউটপুট ডিভাইসসহ বিভিন্ন আইসি সংযুক্ত করতে হয়।

  • অন্যদিকে মাইক্রোকন্ট্রোলারের জন্য এই সবকিছুই একটি চিপের মধ্য সন্নিবেশিত অবস্থায় থাকে।এরফলে আমরা যে শুধু আকারে ছোট সার্কিট নির্মান করতে পারি তাই নয়, বরং আমরা এমন সার্কিট নির্মান করতে পারি যেটি অনেক কম শক্তি নিয়ে কাজ করতে পারে। 
  • মাইক্রোকন্ট্রোলারকে আমরা এক চিপের ছোট একটি কম্পিউটর বলতে পারি। মাইক্রোকন্ট্রোলারের অভ্যন্তরে রেম, রম, ইনপুট/আউটপুট ডিভাইস, টাইমার এবং সাথে সাথে আরো কিছু অতিরিক্ত অংশ যেমন এনালগ থেকে ডিজিটাল কনভার্টার ইত্যাদি থাকতে পারে। বর্তমান বাজারে বিভিন্ন ধরনের মাইক্রোকন্ট্রোলার আছে। এদের মধ্য মাইক্রোচিপ, এটমেল, স্যামসাং, ডালাস, মোটোরোলা, ফিলিপস, সিমেন্স ইত্যাদি উল্লেখযোগ্য। প্রতিটি মাইক্রোকন্ট্রোলার একে অন্যর চেয়ে ভিন্ন হয় এবং এদের আকার, পিনের সংখ্যা, মেমোরী সাইজ, কতগুলো ইনপুট ও আউটপুট পিন আছে, কতগুলো টাইমার আছে ইত্যাদি ভিন্ন ভিন্ন হতে পারে। এরসাথে ভিন্ন হতে পারে এদের ইন্সট্রাকশন সেট। এজন্য ডিজাইনে আমরা কোন মাইক্রোকন্ট্রোলার ব্যবহার করবো তা নির্ধারনের জন্য, সেই মাইক্রোকন্ট্রোলারের ডাটাশীট ভালোভাবে পর্যবেক্ষন করতে হবে।
  • জটিলতা এড়াবার জন্য এই বইতে, আমরা একটি জনপ্রিয় মাইক্রোকন্ট্রোলারের গঠন নিয়ে আলোচনা করবো। এই মাইক্রোকন্ট্রোলারের সাধারন নাম ইন্টেল এমসিএস-৫১ (MCS-51)। এই এমসিএস-৫১ পরিবারের অনেক সদস্য আছে, যেমন 8051, 89C52 ইত্যাদি। এই পরিবারের সদস্যদের মধ্য বিভিন্ন পার্থক্য থাকলেও এদের ইন্সট্রাকশন সেট একই। এই পরিবারের একটি সদস্য হচ্ছে এটমেল এর AT89C2051

AT89C2051 এর বৈশিষ্ট্য সমূহ

AT89C2051 একটি বিশ পিনের আইসি। এটি চালাতে ২.৭ থেকে ৬ ভোল্ট ডিসি ভোল্টেজের প্রয়োজন হয়। আইসিটি ১৫ থেকে ১০০ মিলি ওয়াট শক্তি ব্যবহার করে। আইসির বিশ পিনের মধ্য পনেরোটি পিন ব্যবহার করা হয় আইসিতে ইনপুট এবং আউটপুট দেবার কাজে। বাকী পাচটি পিনের মধ্য তিনটি পিনে পজেটিভ ও নেগেটিভ ভোল্টেজ সরবরাহ এবং রিসেট করার কাজে ব্যবহার করা হয়। আর শেষ দুটি পিনে ক্রিষ্টাল সংযোগ দেয়া হয়। সাধারনত পিন দুটোতে ১২ মেগা হার্জ ক্রিষ্টাল সংযোগ দেয়া হয়। যদিও কোন কোন ভার্সন আছে যেটি ২০ মেগা হার্জেও কাজ করে।

এমসিএস-৫১ পরিবারের সকল মাইক্রোকন্ট্রোলার হার্ভাড আর্কিটেকচার অনুসরন করে। এর মানে এই পরিবারের সকল মাইক্রোকন্ট্রোলার তাদের প্রোগাম এবং ডাটা মেমোরীর মধ্য পার্থক্য করতে পারে। AT89C2051 এর 2K প্রোগামে মেমোরী এবং ১২৮ বাইট ডাটা মেমোরী আছে। এছাড়াও এই ডিভাইসে দুটি ১৬ বিটের টাইমার, একটি এনালগ কমপেরাটর, দুটি ইনপুট আউটপুট পোর্ট আছে।

 

মাইক্রোকন্ট্রোলারের ক্লক

আমরা আগেই বলেছি AT89C2051, ১২ মেগাহার্জ ক্রিষ্টাল নিয়ে কাজ করে। ক্রিষ্টাল হচ্ছে একটি ইলেক্ট্রনিক্স কম্পোনেন্ট যেটি কম্পন তৈরী করে। ক্রিষ্টালের অভ্যন্তরে কোয়ার্টজ (Quartz) বা সমধর্মী কোন পর্দাথ থাকে যেটি সবসময় কম্পমান থাকে। পর্দাথের এই কম্পনের জন্য ক্রিষ্টাল থেকে আমরা একটি সিগন্যাল পাই। আমরা জানি T = 1/f তাই এখানে যদি ফিকোয়েন্সীকে দেয়া হয় তবে আমারা সমীকরনের সাহায্য খুব সহজেই টাইম পিরিয়ড বের করতে পারি। ৮০৫১ মাইক্রোকন্ট্রোলারের জন্য এরকম দুটি পিরিয়ডকে বলা হয় একটি স্টেট। আমাদের সময়ের একক যেমন সেকেন্ড তেমনি মাইক্রোকন্ট্রোলারের সময়ের একক হচ্ছে স্টেট। ৮০৫১ মাইক্রোকন্ট্রোলারে ছয়টি স্টেট মিলে হয় এক মেশিন সাইকেল। মাইক্রোকন্ট্রোলারের কোন একটি কাজ সমাপ্ত করতে হলে এক বা একাধিক মেশিন সাইকেলের প্রয়োজন হয়।  প্রতিটি ইন্সট্রাকশন সম্পন্ন হতে কত সময় লাগে তা জানার মাধ্যমে আমরা ডিলে রুটিন নির্মান করতে পারি। ডিলে রুটিন কি? আমরা যদি মাইক্রোকন্ট্রোলারকে বলি এই কাজ করার পরে এতটা সময় অপেক্ষা করে বাকী কাজ শুরু কর; তবে এই অপেক্ষার সময় হচ্ছে ডিলে রুটিন। মাইক্রোকন্ট্রোলারকে অবশ্যই জানতে হবে কত মেশিন সাইকেল সে অপেক্ষা করবে

 

মাইক্রোকন্ট্রোলারের রেম

AT89C2051 মাইক্রোকন্ট্রোলারে ১২৮ বাইট রেম আছে। এই রেম তিনটি প্রধানভাগে বিভক্ত। একটি হচ্ছে রেজিষ্টার ব্যাঙ্ক, বিট এড্রেস এরিয়া এবং স্ক্যাচ প্যাড এরিয়া। এই রেজিষ্টর সমূহের যেকোন একটিকে যেকোন সময় প্রোগামের সাহায্য ব্যবহার করা যায়। এই যেকোন একটি রেজিষ্টরকে ব্যবহার করতে হলে PSW (Processor status Word) রেজিষ্টরে কোড লিখতে হবে। উপরের তিনটি রেজিষ্টর ব্যাঙ্কের প্রতিটি ব্যাঙ্কে আটটি করে রেজিষ্টর থাকে যাদের R0 থেকে R7 দ্বারা দেখানো হয়।

 

যে রেজিষ্টর ব্যাঙ্কটি একটিভ থাকবে সেটির R0 এবং R1 পয়েন্টার হিসাবে কাজ করতে পারে। এই পয়েন্টার কোন মেমোরী লোকেশনের এড্রেস সংরক্ষন করতে পারে। মাইক্রোকন্ট্রোলারের অভ্যন্তরে যে ১২৮ বাইট রেম আছে, তার যেকোন এড্রেসকে ব্যবহার করতে হলে প্রথমে সেই এড্রেসের ঠিকানা জানতে হবে। R0 এবং R1 এর অভ্যন্তরে সংরক্ষিত এড্রেস থেকে রেমের যেকোন এড্রেস পয়েন্টকে ব্যবহার করা যেতে পারে।

 

১২৮ বাইট রেমের অভ্যন্তরে সাধারন রেজিষ্টর ছাড়াও কিছু বিশেষ রেজিষ্টর থাকে। এগুলোকে বলা হয় স্পেশাল ফাংশন রেজিষ্টর বা SFR । এই স্পেশাল রেজিষ্টর সমূহকে সরাসরি এড্রেসের সাহায্য ব্যবহার করা যেতে পারে। স্পেশাল রেজিষ্টর ছাড়াও আরো দুটি রেজিষ্টর হচ্ছে এক্যুমুলেটর রেজিষ্টর এবং রেজিষ্টর বি (Registor B)। রেজিষ্টর বি’তে গুন, ভাগ করার সময় কিছু তথ্য সংরক্ষন করা হয়। এমসিএস-৫১ ইন্সট্রাকশন সেটে গুন এবং ভাগ করার ইন্সট্রাকশন আছে।

পোর্ট ১ এবং পোর্ট ২ ইনপুট আউটপুট নির্ধারন, টাইমার, ইন্টারাপ্ট নিয়ন্ত্রন ইত্যাদি কাজে ব্যবহার করা হয়। এছাড়া যদি কখনো বাইরের কোন মেমোরীর সাথে সংযোগ ঘটাতে হয় তবে ডি.পি.টি.আর(DPTR) রেজিষ্টর ব্যবহার করা হয়। AT98C2051 এ রেজিষ্টরের সংখ্যা ১৯ এবং AT89C51 এ রেজিষ্টরের মান ২১। অন্যদিকে AT98C205২ তে রেজিষ্টরের মান আরো বেশী। স্পেশাল রেজিষ্টরের সংখ্যা যাই হোক না কেন, এটি ডাটা মেমোরী সাইজে কোন প্রভাব বিস্তার করেনা।    

 

রিসেটের পর রেজিষ্টরের মান

মাইক্রোকন্ট্রোলার যখন রিসেট হয় তখন, রিসেটের পর প্রতিটি রেজিষ্টরের মান কত হয় তা প্রোগামারের জন্য জানা গুরুত্বপূর্ন। এই জন্য ৮০৫১ পরিবারের সব সদস্যদের জন্য রিসেটের পর স্টাক পয়েন্টারের মান 07H হয়, রেজিষ্টার ব্যাঙ্ক অটোমেটিক সেলেক্ট হয়ে যায় এবং এক্যুমুলেটরের সব ডাটা মুছে যায়। সকল পোর্ট P1, P3 এর সকল পিনের আউটপুট ১ হয়, সব ইন্টারাপ্ট নিষ্ক্রিয় হয়ে যায়, প্রোগাম কাউন্টারও নতুন করে শুরু হয় এবং সিষ্টেমের প্রোগাম মেমোরী 0000লোকেশন থেকে চালু হয়। রিসেটের ফলে ১২৮ বাইট রেমের কোন পরিবর্তন হয়না

 

ইনপুট / আউটপুট পোর্ট

মাইক্রোকন্ট্রোলারের সবকিছু মোটামুটি চিপের অভ্যন্তরে এমবেডেড থাকে। অবশ্যই মাইক্রোকন্ট্রোলারে বিদ্যুৎ সরবরাহ করতে হয়, রিসেট সার্কিট সংযুক্ত করতে হয় এবং ক্লক সার্কিট সংযুক্ত করতে হয়। কদাচিত মাইক্রোকন্ট্রোলারের সাথে আলাদা মেমোরী সংযুক্ত করা হয়।

মাইক্রোকন্ট্রোলারের ইনপুট আউটপুট পোর্ট নিয়ে কাজ করতে হলে আমাদের নিন্মোক্তো বিষয় সর্ম্পকে জানতে হবে।

·         ৮০৫১ এর পিন সমূহ বিট প্রোগামেবল

·         কোন ডাটাকে আউটপুট দিতে হলে তা অবশ্যই সেই পোর্টের এস.এফ.আর এ লিখতে হবে।

·         ইনপুট ডাটা লিখতে হলে একই এস.এফ.আর এড্রেস উল্লেখ করতে হবে।

·         সিষ্টেম রিসেটের পর সব আউটপুট পিনের মান হবে ১।

ইন্টারাপ্ট

AT89C2051 মাইক্রোকন্ট্রোলারে পাচটি ইন্টারাপ্ট আছে। এই ইন্টারাপ্ট সমূহ নিচে টেবিল আকারে দেখানো হলো। এক্সটারনাল ইন্টারাপ্ট সমূহ হয় এডজ ট্রিগার বা লেভেল ট্রিগার। এক্সটারনাল ইন্টারাপ্টের ট্রিগারিং কিভাবে হবে তা প্রোগামের মাধ্যমে নিয়ন্ত্রন করা যায়। যদি দুটি ইন্টারাপ্ট একসাথে চালু হয় তবে কোন ইন্টারাপ্ট আগে কাজ করবে তার একটি ছক আছে। যে ইন্টারাপ্টের প্রায়োরিটি (Priority) বেশি সেটি আগে কাজ সম্পন্ন করবে। যদিও এই ইন্টারাপ্টের প্রায়োরিটি পরিবর্তন করা সম্ভব।

 

Address

Naming

Name of the Interrupt

Priority

0003H

INT0

External INT 0

High 5

000BH

Timer 0

Timer 0

4

0013H

INT1

External Int 1

3

001BH

Timer 1

Timer 1

2

0023H

Serial

Serial Communication INT

Low 1

AT89C2051 প্রোগামিং

আমরা যখন প্রথম মাইক্রোকন্ট্রোলার শিখি তখন আমাদের প্রধান সমস্যা থাকে, কাগজে লেখা প্রোগামকে কিভাবে আইসিতে ট্রান্সফার করা হবে। একাজের জন্য আমাদের প্রয়োজন হবে, একটি পিসি এবং প্রোগামার। আমরা ইউনিভার্সাল প্রোগামার ব্যবহার করতে পারি, যেটি যেকোন কোম্পানীর আইসি প্রোগাম করতে পারে। অথবা কোন নির্দিষ্ট কোম্পানীর আইসি ব্যবহার করতে পারি, যেটি শুধুমাত্র সেই নির্দিষ্ট পরিবারের আইসি প্রোগাম করতে পারে। আমরা যদি AT89C2051 আইসি প্রোগাম করতে চাই তবে এটমেলের প্রোগামার

ব্যবহার করতে হবে। সাধারনত সিরিয়াল পোর্ট বা ইউ.এস.বি ক্যাবলের সাহায্য পিসির সাথে প্রোগামারকে সংযুক্ত করা হয়। এরপর কোন টেক্সট এডিটর প্রোগাম যেমন নোটপ্যাড ব্যবহার করে প্রোগাম লিখতে হবে। অনেক হাই লেভেল প্রোগামিং ল্যাঙ্গুয়েজের সাথে এডিটর সংযুক্ত থাকে।

যখন প্রোগাম লেখা হয়ে গেলো তখন ৮০৫১ এসেম্বলার, আমাদের লেখা কোডকে হেক্স কোডে পরিনত করবে এবং পিসিতে একটি হেক্স ফাইল তৈরী করবে। এই এসেম্বলার প্রোগামিং বোর্ডের সাথে সিডি আকারে আসবে বা ইন্টারনেট থেকে ডাউনলোড করতে হবে।

এরপর প্রোগামিং বোর্ডের সকেটে মাইক্রোকন্ট্রোলার চিপ প্রবেশ করাতে হবে

 

প্রোগামিং বোর্ডের সাথে একটি আপলোডার প্রোগাম থাকবে। সেই প্রোগাম রান করে হেক্স ফাইলকে মাইক্রোকন্ট্রোলার চিপে আপলোড করতে হবে। আপলোড করা হয়ে গেলে, আমরা সকেট থেকে চিপ খুলে নিতে পারি এবং আমাদের সার্কিটে ব্যবহার করতে পারি। ধাপগুলো আর একবার আলোচনা করা যাক।

 

1.   কম্পিউটরে নোটপ্যাড বা কোন টেক্সট এডিটর ব্যবহার করে প্রোগাম লিখি

2.  কম্পাইলার ব্যবহার করে প্রোগাম কম্পাইল করি এবং চেক করি কোন এরর বা ভূল আছে কিনা।

3.  এরপর কম্পাইল করা প্রোগাম থেকে হেক্স ফাইল তৈরী করি।

4.  প্রোগামিং বোর্ডকে প্যারালাল পোর্ট বা ইউ.এস.বি কেবলের সাহায্য কম্পিউটরের সাথে সংযুক্ত করি।

5.  প্রোগামিং বোর্ডের সকেটে চিপ প্রবেশ করাই।

6.  আপলোডার প্রোগাম ব্যবহার করে চিপে প্রোগাম আপলোড করি।

7.   এরপর সকেট থেকে চিপ খুলে সার্কিটে ব্যবহার করি।

হাই লেভেল ল্যাঙ্গুয়েজ এবং এসেম্বলী ল্যাঙ্গুয়েজ

আমাদের মধ্য যারা প্রোগামিং ল্যাঙ্গুয়েজের সাথে পরিচিত, অবশ্যই জানি যে প্রোগামিং ল্যাঙ্গুয়েজকে দুইভাগে ভাগ করা যেতে পারে। হাই লেভেল এবং লো লেভেল প্রোগামিং ল্যাঙ্গুয়েজ। সি, সি++ ইত্যাদি হাই লেভেল প্রোগামিং ল্যাঙ্গুয়েজ। হাই লেভেল ল্যাঙ্গুয়েজে আমরা প্রোগাম লেখার সময় আমাদের ভাষা ব্যবহার করি। যেমন আমরা প্রোগাম লিখতে পারি, যদি এই শর্ত পূরন হয় তবে এই কাজ কর; যদি শর্ত পূরন না হয় তাহলে অন্য কাজ কর। এটি আমাদের প্রতিদিনের ব্যবহার করা ভাষার মতো। যদি কোন প্রোগামিং ল্যাঙ্গুয়েজ আমাদের এই ভাষা বুঝতে পারে এবং কাজ করতে পারে তবে এটি হাই লেভেল প্রোগামিং ল্যাঙ্গুয়েজ। অন্যদিকে লো লেভেল প্রোগামিং ল্যাঙ্গুয়েজ হচ্ছে সেই প্রোগামিং ল্যাঙ্গুয়েজ যেটি কম্পিউটরের ভাষা বুঝতে পারে। আমরা জানি কম্পিউটর ০ এবং ১ ব্যবহার করে কাজ করে। সুতরাং যে প্রোগামিং ল্যাঙ্গুয়েজে ০ এবং ১ ব্যবহার করে প্রোগাম করা হয় সেটি লো লেভেল প্রোগামিং ল্যাঙ্গুয়েজ। এরকম একটি প্রোগামিং ল্যাঙ্গুয়েজ এসেম্বলী ল্যাঙ্গুয়েজ। এটি পুরোপুরী লো লেভেল ল্যাঙ্গুয়েজ না হলেও কাছাকাছি। কারন এসেম্বলী ল্যাঙ্গুয়েজে ০ ও ১ ব্যবহার করে প্রোগাম করা না হলেও, আমরা এমন কমান্ড ব্যবহার করি যেগুলো আমাদের ভাষা নয়। এসেম্বলী ল্যাঙ্গুয়েজে প্রোগাম করা কিছুটা কষ্টসাধ্য। কিন্তু সুবিধা, এটি দ্রুত কাজ করে। কারন হাই লেভেল ল্যাঙ্গুয়েজে আমরা আমাদের ভাষায় প্রোগাম লিখি এবং এই প্রোগামকে ইন্টারপ্রেটোর নামক একটি ডিকশনারী প্রোগাম আমাদের ভাষা থেকে কম্পিউটরের ভাষায় পরিনত করে। এটি করতে কিছু সময় প্রয়োজন হয়। কিন্তু আমরা যদি সরাসরি কম্পিউটরের ভাষায় প্রোগাম লিখি তবে এই ডিকশনারী প্রোগামের প্রয়োজন হয়না এবং আমাদের প্রোগাম দ্রুত কাজ করতে পারে।

কম্পিউটর প্রোগামিং এর মতো, মাইক্রোকন্ট্রোলার প্রোগামিং এ আমরা হাই লেভেল এবং লো লেভেল দুই ধরনের প্রোগামিং ল্যাগুয়েজ ব্যবহার করতে পারি। মাইক্রোকন্ট্রোলার প্রোগামিং এর জন্য এসেম্বলী ল্যাঙ্গুয়েজ ব্যবহার করতে পারি এবং সাথে সাথে আমরা সি বা বেসিকের মতো হাই লেভেল প্রোগামিং ল্যাঙ্গুয়েজ ব্যবহার করতে পারি। ‘মাইক্রোকন্ট্রোলার প্রজেক্ট’স’ বইতে আমরা হাই লেভেল এবং এসেম্বলী ল্যাঙ্গুয়েজ; এই দুই ধরনের মেথড সর্ম্পকেই আলোচনা করা হয়েছে।  যাই হোক, পরবর্তী অধ্যায়ে যাবার পূর্বে আমরা ৮০৫১ পরিবার নিয়ে আরো কিছু আলোচনা করি।

এক নজরে ৮০৫১ পরিবার

৮০৫১ পরিবারের সদস্যরা ৮ বিটের, অল্প শক্তিতে কাজ করতে পারে এমন শক্তিশালী মাইক্রোকন্ট্রোলার। ৮০৫১ পরিবারের অনেকগুলো ডিভাইস আছে যাদের আভ্যন্তরীন আর্কিটেকচার প্রায় একই রকম এবং পরিবারের প্রতিটি সদস্য তাদের নিচের সদস্যকে রিপ্লেস করতে পারে এমনভাবে ডিজাইন করা। বেসিক ৮০৫১ মাইক্রোকন্ট্রোলারে নিচের বৈশিষ্ট্য সমূহ  বিদ্যমানঃ

·         ৪ কিলো বাইট প্রোগাম মেমোরী

·         ২৫৬ ৮ রেম ডাটা মেমোরী

·         ৩২ টি প্রোগাম করা যায় এমন ইনপুট/আউটপুট লাইন

·         দুটি ১৬ বিটের টাইমার/কাউন্টার

·         ৬ টি ইন্টারাপ্ট সোর্স

·         প্রোগাম করা যায় এমন সিরিয়াল UART পোর্ট

·         অতিরিক্ত মেমোরী ইন্টারফেস করার স্থান

·         সাধারনত ৪০ পিনের প্যাকেজ, যদিও ২০ পিনের ভার্সন ও আছে

AT89C2051 মাইক্রোকন্ট্রোলার, ৮০৫১ পরিবারের নিচের দিকের এক সদস্য, যেটি নির্মান করা হয়েছে জটিল নয় এমন কোন এপ্লিকেশন নির্মানের জন্য। এই ডিভাইসে ২ কিলোবাইট মেমোরী আছে যেটি পুনঃ পুনঃ প্রোগাম করা সম্ভব। AT89C2051 মাইক্রোকন্ট্রোলারে ১২৮ বাইট রেম এবং ১৫ টি প্রোগাম করা যায় এমন ইনপুট এবং আউটপুট লাইন আছে। আমরা এই বইতে যে কোড ব্যবহার করবো তা যেকোন স্টান্ডার্ড AT89C2051 মাইক্রোকন্ট্রোলারে কোন ধরনের পরিবর্তন ছাড়াই ব্যবহার করা যাবে। AT89C2051 মাইক্রোকন্ট্রোলারে ২০ টি পিন আছে।

নিচে AT89C2051 মাইক্রোকন্ট্রোলারের ৪০ পিন ভার্সনের, পিন ডায়াগ্রাম দেয়া হলো।

 

AT89C2051 মাইক্রোকন্ট্রোলারের বিভিন্ন পিনের কাজ

এখন আমরা AT89C2051 মাইক্রোকন্ট্রোলারের কিছু পিনের কার্যক্রম সর্ম্পকে জানবো।

 

রিসেট পিনঃ

আমরা কম্পিউটরের সি.পি.ইউ তে একটি বাটন দেখি যেটাকে রিসেট বাটন বলা হয়। এই বাটনে ক্লিক করলে পুরো কম্পিউটর রিসেট হয়ে যায়। AT89C2051 মাইক্রোকন্ট্রোলারেও এরকম একটি পিন আছে যে পিনে ইনপুট দিলে মাইক্রোকন্ট্রোলারের অভ্যন্তরের প্রোগাম রিসেট হয়ে যায়। সাধারনত এই পিনের লজিক ০ থাকে। মাইক্রোকন্ট্রোলারকে রিসেট করার জন্য এই রিসেট পিনে অন্তত দুই মেশিন সাইকেলের জন্য ইনপুট লজিক হাই রাখতে হয়। রিসেট করার জন্য সাধারনত রিসেট পিনের সাথে একটি ক্যাপাসিটর এবং রেজিষ্টর সংযুক্ত করা হয়। নিচে রিসেট পিনের সার্কিট দেয়া হলো।

 

P 3.0

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন, যে পিনের সাথে আভ্যন্তরীন একটি রেজিষ্টর সংযুক্ত আছে। সাথে সাথে এই পিনটি বাইরের থেকে ডাটা ইনপুটের কাজেও ব্যবহার করা হয়, যখন মাইক্রোকন্ট্রোলার UART ব্যবহার করে সিরিয়াল ডাটা ইনপুট করে।

P 3.1

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন, যে পিনের সাথে আভ্যন্তরীন একটি রেজিষ্টর সংযুক্ত আছে। সাথে সাথে এই পিন ডাটা আউটপুটের কাজে ব্যবহার করা হয় যখন মাইক্রোকন্ট্রোলার UART ব্যবহার করে সিরিয়াল ডাটা আউটপুট দেয়।

 

XTAL 1 & XTAL 2

এই দুই পিনে ক্রিষ্টাল সংযুক্ত করা হয়। সাধারনত সাধারনত দুটি ৩৩ পিকো ফ্যারাডের ক্যাপাসিটর ক্রিষ্টালের সাথে সংযুক্ত অবস্থায় থাকে। মেশিন সাইকেল পাবার জন্য ক্রিষ্টাল ফিকোয়েন্সীকে ১২ দিয়ে ভাগ করতে হবে। তাই ১২ মেগাহার্জ ক্রিষ্টাল ব্যবহার করলে আমাদের মেশিন সাইকেল হবে ১ মিলি সেকেন্ড। অধিকাংশ ইন্সট্রাকশন সম্পন্ন হতে ১ মেশিন সাইকেল সময় নেয়। নিচে ক্রিষ্টাল সংযোগের ডায়াগ্রাম দেয়া হলো।

মূল বইয়ে ছবি সংযুক্ত আছে

P 3.2

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন, যে পিনের সাথে আভ্যন্তরীন একটি রেজিষ্টর সংযুক্ত আছে। এই পিনের সাথে একটি ইন্টারাপ্ট সংযুক্ত থাকে, যেটিকে ইন্টারাপ্ট ০ বলা হয়।

 

 

P 3.3

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন, যে পিনের সাথে আভ্যন্তরীন একটি রেজিষ্টর সংযুক্ত আছে। এই পিনের সাথে একটি ইন্টারাপ্ট সংযুক্ত থাকে, যেটিকে ইন্টারাপ্ট ১ বলা হয়।

 

P 3.4

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন, যে পিনের সাথে আভ্যন্তরীন একটি রেজিষ্টর সংযুক্ত আছে। এই পিনের সাথে একটি কাউন্টার সংযুক্ত থাকে, যেটিকে কাউন্টার ০ বলা হয়।

 

P 3.5

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন, যে পিনের সাথে আভ্যন্তরীন একটি রেজিষ্টর সংযুক্ত আছে। এই পিনের সাথে একটি কাউন্টার সংযুক্ত থাকে, যেটিকে কাউন্টার ১ বলা হয়।

 

GND

এই পিনে ব্যাটারীর নেগেটিভ ইনপুট দেয়া হয়।

 

 

 

P 3.6

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন। AT89C2051 মাইক্রোকন্ট্রোলারে এই পিন নেই। মাইক্রোকন্ট্রোলারের সাথে যদি কোন মেমোরী সংযুক্ত করা হয় তবে এই পিন মেমোরীতে লেখার কাজে ব্যবহার করা হয়।

 

P 3.7

এই পিনটি উভয়মুখী ইনপুট/আউটপুট পিন। AT89C2051 মাইক্রোকন্ট্রোলারে সাথে যদি কোন মেমোরী সংযুক্ত করা হয় তবে এই পিন মেমোরী থেকে ডাটা পড়ার কাজে ব্যবহার করা হয়।

 

P 1.0

এই পিনটি পোর্ট ১ এর উভয়মুখী ইনপুট/আউটপুট পিন। এই পিনের ভিতরে কোন ইন্টারনাল রেজিষ্টর নেই। ২০ পিনের ভার্সনের এই পিনে এনালগ কমপেরাটরের ইনপুটের কাজে ব্যবহার করা হয়।

 

P 1.1

এই পিনটি পোর্ট ১ এর উভয়মুখী ইনপুট/আউটপুট পিন। এই পিনের ভিতরে কোন ইন্টারনাল রেজিষ্টর নেই। ২০ পিনের ভার্সনের এই পিনে এনালগ কমপেরাটরের ইনপুটের কাজে ব্যবহার করা হয়।

 

P 1.2 – P 1.7

এই পিনগুলো পোর্ট ১ এর উভয়মুখী ইনপুট/আউটপুট পিন। এই পিন সমূহে ইন্টারনাল রেজিষ্টর আছে।

 

 

 

VCC

ভোল্টেজ সাপ্লাই।

 

P 0.0 – P 0.7

এই পিনগুলো পোর্ট ০ এর উভয়মুখী ইনপুট/আউটপুট পিন। এই পিন সমূহে ইন্টারনাল রেজিষ্টর নেই।

P 2.0 – P 2.7

এই পিনগুলো পোর্ট ২ এর উভয়মুখী ইনপুট/আউটপুট পিন। এই পিন সমূহে ইন্টারনাল রেজিষ্টর আছে।

 

EA/VPP

এই পিনের কাজ হচ্ছে বাইরে থেকে কোন ডিভাইস চিপে এক্সেস হলে তা এনাবেল করা। এই পিনটি চিপে প্রোগাম করার কাজেও ব্যবহার করা হয়। চিপ প্রোগাম করার সময় এই পিনে ইনপুট ভোল্টেজ যায়।

 

PSEN

এই পিন কাজ করে যখন ডিভাইসটি বাইরের মেমোরী থেকে কোড রান করে।

 

ALE/PROG

এটি ৮০৫১ মাইক্রোকন্ট্রোলারের এড্রেস ল্যাচের এনাবেল পিন হিসাবে কাজ করে।

 

টাইমার এবং কাউন্টার

AT89C2051 মাইক্রোকন্ট্রোলারে দুটি টাইমার/কাউন্টার আছে, যাদের টাইমার/কাউন্টার ০ এবং টাইমার/কাউন্টার ১ নামে অভিহিত করা হয়। এই টাইমার/কাউন্টার সমূহ বিভিন্ন মোডে কাজ করতে পারে। এটা নির্ভর করে দুটি রেজিষ্টর TCON এবং TMOD কে আমরা কিভাবে প্রোগাম করবো। নিচের টেবিলে বিভিন্ন প্রোগামিং মোড দেখানো হলো। মাইক্রোকন্ট্রোলারের টাইমার এবং কাউন্টার সমূহকে ব্যবহারের পূর্বে এই রেজিষ্টর গুলোকে প্রোগাম করতে হবে। যেমন

 

বিটের নাম

বিটের অবস্থান

বিবরন

TF1

7

টাইমার ১ যদি ওভার ফ্লো হয় সেজন্য ফ্লাগ। ডাটা সেট এবং ক্লিয়ার হার্ডওয়ারের মাধ্যমে করা হয়।

TR1

6

টাইমার ১ এর কন্ট্রোল বিট চালনা করে। টাইমার ১ অন হবে যখন TR1 = 1 এবং বন্ধ হবে যখন TR1=0

TF0

5

টাইমার 0 যদি ওভার ফ্লো হয় সেজন্য ফ্লাগ। ডাটা সেট এবং ক্লিয়ার হার্ডওয়ারের মাধ্যমে করা হয়।

TR0

4

টাইমার ০ এর কন্ট্রোল বিট চালনা করে। টাইমার ০ অন হবে যখন TR0 = 1 এবং বন্ধ হবে যখন TR0=0

IE1

3

ইন্টারাপ্ট নং ১ এর এডজ নির্ধারনের ফ্লাগ। ডাটা সেট এবং ক্লিয়ার হার্ডওয়ারের মাধ্যমে করা হয়।

IT1

2

ইন্টারাপ্ট নং ১ এর জন্য IT1 = 1 প্রর্দশন করে ইন্টারাপ্টটি নিচের এডজ এ আছে এবং IT1 = 0 প্রর্দশন করে ইন্টারাপ্টটি লো লেভেলে আছে।

IE0

1

ইন্টারাপ্ট নং ০ এর এডজ নির্ধারনের ফ্লাগ। ডাটা সেট এবং ক্লিয়ার হার্ডওয়ারের মাধ্যমে করা হয়।

IT0

0

ইন্টারাপ্ট নং ০ এর জন্য IT0 = 1 প্রর্দশন করে ইন্টারাপ্টটি নিচের এডজ এ আছে এবং IT0 = 0 প্রর্দশন করে ইন্টারাপ্টটি লো লেভেলে আছে।

 

ইন্টারাপ্ট নিয়ন্ত্রন

ইন্টারাপ্ট হচ্ছে কোন কিছুকে বাধা দেয়া। মাইক্রোকন্ট্রোলারে মাঝে মাঝে এমন কিছু অবস্থা তৈরী হয় যখন প্রোগামকে বাধা দিতে হয়। যেমন প্রোগাম চলমান অবস্থায় মাইক্রোকন্ট্রোলারে কোন ইনপুট দেয়া হলো। তখন চলমান প্রোগামকে বন্ধ করে ইনপুট নিয়ে কাজ করতে হবে। এটিই একটি ইন্টারাপ্ট। AT89C2051 এর ছয়টি ইন্টারাপ্ট সোর্স আছে। এদের মধ্য আছে,

 

·         দুটি এক্সটারনাল ইন্টারাপ্ট (INT0 এবং INT1)

·         দুটি টাইমার ইন্টারাপ্ট (টাইমার ০ এবং টাইমার ১)

·         একটি সিরিয়াল পোর্ট রিসিভের ইন্টারাপ্ট

·         একটি সিরিয়াল পোর্ট ট্রান্সমিট ইন্টারাপ্ট

 

প্রতিটি ইন্টারাপ্টের জন্য মেমোরীতে একটি স্থায়ী অবস্থান আছে এবং যখনই কোন ইন্টারাপ্ট চালু হয় তখনই প্রসেসিং ইউনিট সেই নির্দিষ্ট মেমোরী অবস্থানে জাম্প করে। সেই মেমোরী অবস্থানে যে প্রোগাম থাকে সেটি রান করে শেষ করার পরেই সি.পি.ইউ মুল প্রোগামে ফেরত আসে। উল্লেখ্য সিরিয়াল পোর্ট একই পয়েন্টে ইন্টারাপ্ট রিসিভ করে এবং ট্রান্সমিট করে।

মাইক্রোকন্ট্রোলার চালাতে কমপক্ষে কি প্রয়োজন হবে

AT89C2051 মাইক্রোকন্ট্রোলার চালনা করতে আমাদের নিচের কম্পোনেন্ট সমূহ প্রয়োজন হবে।

 

১২ মেগাহার্জের ক্রিষ্টাল

দুটি ৩৩ পিকো ফ্যারাডের ক্যাপাসিটর

১০ মাইক্রো ফ্যারাড, ১০ ভোল্টের ইলেকট্রলাইট ক্যাপাসিটর

রেজিষ্টর ৮.২ কিলো

 

আমরা এই বইতে ৪০ পিনের মাইক্রোকন্ট্রোলার ব্যবহার করবো। AT89C2051 মাইক্রোকন্ট্রোলার চালনা করতে আমাদের অন্তত ১৫ মিলি এম্প মানের সোর্সের প্রয়োজন হবে। মাইক্রোকন্ট্রোলার ব্যবহার করে আমরা যেকোন সার্কিট নির্মান করিনা কেন, মাইক্রোকন্ট্রোলারের সাথে রিসেট সার্কিট এবং ক্রিষ্টাল সংযুক্ত করতে হবে। এরমানে মাইক্রোকন্ট্রোলার ব্যবহার করে যেকোন সার্কিট নির্মান করতে হলে, মাইক্রোকন্ট্রোলারের সাথে নিচের কম্পোনেন্ট সমূহের সংযোগ প্রদান করতে হবে।

মূল বইয়ে ছবি সংযুক্ত আছে

তবে আমরা যখন সিম্যুলেশন ব্যবহার করে মাইক্রোকন্ট্রোলার সিম্যুলেট করবো তখন রিসেট সার্কিট এবং ক্রিষ্টাল সংযুক্ত না করলেও চলবে। কারন সিম্যুলেশন সফটওয়ার স্বয়ংক্রিয়ভাবে এগুলো সেটআপ নিয়ে নেয়।

মাইক্রোকন্ট্রোলার প্রোগাম লিখতে আমরা সি কম্পাইলর ব্যবহার করবো এবং সাথে সাথে আমরা জানবো কিভাবে এসেম্বলী ল্যাঙ্গুয়েজ ব্যবহার করেও প্রোগাম করা সম্ভব।

 

পরবর্তী অধ্যায়ে আমরা সি এবং এসেম্বলী ল্যাঙ্গুয়েজ ব্যবহার করে মাইক্রোকন্ট্রোলার প্রোগামিং সর্ম্পকে বিস্তারিত আলোচনা করবো।