میکروکنترلر چیست :
قطعه ای که این روزها دارد جای خود را در خیلی از وسایل الکترونیکی باز میکند .از تلفن گرفته تا موبایل از ماوس لیزری که الان دستتان روی آن است و دارین باهاش کامپیوتر رو کنترل میکنید تا هر وسیله ای که بتوان پیچیدگی رو در اون دید میتونید یک میکروکنترلر رو ببینید .
کلمه میکروکنترلر:
این کلمه از دو کلمه 1- میکرو 2-کنترلر تشکیل شده
1-میکرو : میدونین که این یک واحد یونانی است و برابر با 10 به توان منفی 6 متر است. یعنی یک ملیونیوم متر واحده خیلی کوچیکیه نه....ولی واحدهای خیلی کوچیکتر از این هم داریم که در الکترونیک مورد استفاده قرار میگیرند در قسمتهای بعدی توضیحیهاتی راجع به این واحد ها و موارد استفاده آنها داده میشه.
2-کنترلر : که همه معنی و مفهومشو میدونین . یعنی کنترل کننده به تعبیری یعنی "مغز " البته بدون تفکر فقط دستوراتی که به اون داده میشه به نحو احسن انجام میده.
حالا چرا این کلمات ؟
به نظر من کلمه میکرو به دو منظور استفاده شده منظور اول و مهم سرعت عمل میکروکنترلر است که میتواند تا یک ملیونیوم ثانیه باشد و دستوارتی که به اون میدیم با این سرعت انجام بده به همین خاطر واژه میکرو رو به اون اختصاص دادن البته معنی دوم آن شاید کوچیکی این قطعه باشد که تا یک ملیونیوم متر کوچیک شده شاید باور کردنی نباشه ولی در یک تراشه ممکنه بیش از یک ملیون تراتزیستور به کار رفته باشه. این کلمه وقتی اهمیتش کامل میشه که با واژه کنترلر عجین بشه تا معنیش کامل بشود .
(البته من این تعاریف رو بر مبنای نظر خودم از میکرو گفتم و خودم اونو تو هیچ جایی ندیدم شاید اصلا این کلمه به خاطر چیز دیگست اگر دوستان میدونن لطف کنن خوشحال میشم)
حالا نحوه انجام دادن کار میکروکنترلر را به صورت کلی بررسی میکنیم :
تا حالا همه شما با ماشین حساب کار کردین تا حالا به نحوه کار کردنش فکر کردین شما اطلاعاتتون را که همون عملیات ریاضی هست به وسیله صفحه کلید به اون میدید بعد ماشین حساب این اطلاعات رو بر مبنای دستوراتی که قبلا به اون داده شده پردازش میکند و جواب را رویlcd نمایش میدهد. در واقع یک میکروکنترلر برنامه ریزی شده به عنوان مغز ماشین حساب این اطلاعات یا داده رو از صفحه کلید میگیره روشون پردازش انجام میده و بعد بر روی lcd نمایش میده.
کار میکروکنترلر دقیقا مشابه این است میکرو کنترلر بر مبنای یک سری ورودی که به اون داده میشه مثلا این ورودی از یک سنسور دما باشه که درجه حرارت رو میگه یا از هر چیز دیگه مثل صفحه کلید بر مبنای این ورودی ها و برنامه ای که قبلا ما به اون دادیم خروجیشو تنظیم میکنه که ممکنه خروجیش یک موتور باشه یا یک lcd یا هر چیز دیگری که با الکتریسیته کار بکند. حالت دیگری هم میتونه باشه که فقط میکروکنترلر بر مبنای برنامه ای که به اون دادیم عمل کند و خروجیش رو فقط بر اساس برنامه بگیرد.
ساختمان دخلی میکروکنترلر:
کامپیوتری که الان بر روی اون دارین کار انجام میدین دارای یک پردازنده مرکزیه به نام cpu که از کنار هم قرار گرفتن چندین ملیون ترانزیستور تشکیل شده و بر روی اطلاعات پرداژش انجام میده . میکرو کنترلر هم عینا دارای یک پردازنده مرکزی به نام cpu است که دقیقا کار cpu کامپیوتر رو انجام میده با این تفاوت که قدرت و سرعت پردازشش از cpu کمتره که به اون میکروپرسسور میگن در بخش بعدی فرق میکرو پرسسور و میکروکنترلر را بررسی میکنیم. میکروکنترلر علاوه بر cpu دارای حافظه است که ما برنامه ای که بهش میدیم در اون قرار بگیره در کنار حافظه در میکروکنترلرهای امروزی تایمرها برای تنظیم زمان کانتر ها برای شمردن کانال های آنالوگ به دیجیتال پورت های برای گرفتن و دادن اطلاعات و امکاناتی دیگر که بعدا مفصل راجع به هر کدام توضیح داده میشه تشکیل شده و همه اینها در یک چیپ قرار گرفته که تنکنولوژی جدید اونو تو یک تراشه به اندازه یک سکه قرار داده.
تفاوت میکروپروسسور و میکروکنترلر:
میکروپرسسور همانطور که گفته شد یک پردازنده است و برای کار باید به آن چیپ های حافظه و چیز های دیگری را به اون اضافه کرد این امکان به درد این میخورد که بر حسب کارمان حافظه مناسب و دیگر قطعات را مانند تایمرها و غیره به صورت بیشتری استفاده کنیم ولی مدار خیلی پیچیده میشود و از لحاظ هزینه هم هزینه بیشتر میشود به همین دلیل امروزه از میکروپرسسورها کمتر استفاده میشود اما این روزها میکرو کنترلر های جدید با حافظه های زیاد تعداد تایمر زیاد پورت های زیاد و تنوع بسیار زیاد انها بر حسب این امکانات دست ما را باز گذاشته است تا دیگر میکروپرسسورها را فراموش کنیم.
آیا میکروکنترلر چیز جدیدی را با خود آورده است ؟
جواب منفی است تمام کارهایی که ما با میکروکنترلر میتوانیم انجام بدهیم با قطعات دیگر هم میتوانیم انجام بدهیم چون ما قبلا هم تایمر داشتیم هم کانتر هم حافظه هم پردازنده و... . در واقع میکروکنترلر قطعه ای است با تمام این امکانات که به صورت یک آی سی آماده شده است و هزینه پیچیدگی و حجم را به نحوه قابل ملاحضه ای کاهش میدهد.
عیب میکروکنترلر:
میکروکنترلر با این همه مزایا که گفتیم دارای یک عیب کوچیک است .و آن سرعت پایین ! است آیا سرعتی معادل یک ملیونیوم ثانیه سرعت کمی است ؟ سرعت کمی نیست ولی یک مثال شاید بحثو بهتر باز کند
یک گیت منطقی رو در نظر بگیرین که با توجه به ورودی خروجیشو تنظیم مکنه سرعت عمل این گیت منطقی 10 به توان منفی 9 ثانیه است یعنی نانو ثانیه ولی اگر ما بخواهیم این گیت رو با میکروکنترلر کار کنیم سرعتی معادل میکرو ثانیه داریم پس از لحاظ سرعت برای کاربردهای خیلی محدودی میکروکنترلر مناسب نیست.
اگر کسی از دوستان عیب دیگری از میکروکنترلر میدونه لطف کنه ممنون میشم.
خب حالا این میکروکنترلر را با این همه کاربرد کی ساخته؟
حدود 4 دهه پیش در سال 1971 میلادی شرکت اینتل اولین میکروکنترلر را ساخت و اولین میکروکنترلر را با نام 8080 در اوایل سال 1980 روانه بازار کرد .همین شرکت اینتلی که الان در ساخت cpu یکه تاز دنیاست .اما بعدا این امتیاز رو به شرکت های دیگری واگذار کرد و شرکت های زیادی در حال حاضر میکروکنترلر های مختلف تولید میکنند
معرفی انواع میکروکنترلر
تمام میکروکنترلرها جزء این 5 قسمت هستنند:
1) 8051
2) Pic
3) Avr
4) 6811
5) Z8
البته مدل های 6811 ساخت شرکت موتورلا و z8 ساخت شرکت زایلوگ حداقل در ایران خیلی کم استفاده می شوند و رقابت اصلی بین سه نوع دیگر است.
تا به امروز هر میکروکنترلری که ساخته شده زیر مجموعه یکی از این5 نوع است. البته کارخانه های خیلی زیادی با مارک های مختلف میکرو کنترلر تولید میکنند ولی همه اونها زیر مجموعه یکی از این 5 قسمت هستنند .شما برای هر کدام از این5 نوع میکروکنترلر میتوانید میکروکنترلر های مختلفی از شرکت های مختلفی را پیدا کنید.(البته در بازار ایرن کمی با مشکل).
اما خوشبختانه همه میکروکنترلر هایی که جزء هر کدام از 5 نوع بالا باشند از یک برنامه پیروی میکنند. بدین معنا که اگر شما کار با یکی از مدل های آن میکرو را یاد گرفته باشید مثل اینکه کار با تمام میکروکنترلرهای آن نوع را یاد گرفته اید.مثلا شما اگر با یکی از مدل های میکروکنترلر avr مثلا atmega8 را یاد گرفته باشید دیگر با صد ها مدل دیگر میکروکنترلر avr مشکلی ندارید وتقریبا بدون هیچ مشکلی میتوانید با دیگر مدل های این میکرو کار کنید.
اما یه مشکل که در میکروکنترلر ها وجود دارد این است که این5 نوع از لحاظ برنامه نویسی به هیچ وجه با هم دیگر سازگاری ندارند . به طور مثال اگر شما میکروکنترلر های avr و 8051 را کامل یاد گرفته باشید حتی ساده ترین برنامه رو روی یک میکروکنترلر pic نمیتوانید اجرا کنید. واین یکی از بزرگترین عیب و مشکل برای یاد گیری میکرو است .بنابراین از همون اول باید یک انتخاب درست داشته باشید و میکروکنترلر مناسب را برگزینید تا با یادگیری آن میکروکنترلر بتوانید بعدا به سادگی پروژه های خود را اجرا کنید . البته بسیاری از دوستان هستنند که کار با چند میکروکنترلر را میدونند و حتما این هم از هوش بالای ایرانی هاست. ولی اگر به صورت خیلی حرفه ای نخواهید وارد این بحث بشوید باید یکی از این میکروکنترلرها را انتخاب کنید و کار با آن را آغاز کنید. در قسمت بعدی شما را برای این انتخاب کمک خواهم کرد.
معایب و مزایای میکروکنترلر های مختلف نسبت به هم
از آن جای که 6811 و z8 خیلی کمتر استفاده میشوند به معرفی سه نوع دیگر میپردازم.
1) : اول از 8051 که اولین میکروکنترلری بود که به دست بشر ساخته شد شروع میکنیم . همانطور که در مقاله قبلی گفته شد ابتدا این میکروکنترلر توسط شرکت بزرگ intel ساخته شد .اما بعدا intel این امکان را به دیگر شرکت ها داد که این میکروکنترلر را تولید کنند و شرکت هایی مانند ATMEL , PHILIPS , SIEMENS , DALLAS و... به تولید این میکروکنترلر پرداختنند یکی از شرکت هایی که به صورت گسترده به تولید این تراشه پرداخت ATMEL بود که مدل های مختلف میکروکنترلر ساخت این شرکت در سرار جهان و در ایران به خوبی یافت می شود. اما اگربخواهیم به صورت کلی سیر پیشرفت این نوع میکروکنترلر رو در نظر بگیریم اولین میکروکنترلر هایی که ساخته شد با جدیدترین میکروکنترلرهای 8051 که الان تولید میشود با توجه به این پیشرفت شگفت در تمام زمینه ها که صنایع دیگر در دنیا دارند پیشرفت زیادی ندارد به طور مثال AT89S5X که میکروکنترلر 8051 جدید ساخت ATMEL است نسبت به مدل های اولیه 8051 پیشرفت آنچنانی ندارد . امکانات این میکرو نسبت به AVR و PIC قابل مقایسه نیست . به صورتی که که همین مدل جدید 8051 تقریبا حافظه ای برابر یک صدم (0.001 ) میکروکنترلر های AVR را دارد و سرعتش 4 برابر کمتر از میکروکنترلر های PIC و 12 بار کمتر از میکروکنترلر های AVR است . از لحاظ امکانات دیگر هم چنین ضعفی احساس میشود. اما برای کارهای ساده تر که پیچیدگی زیادی در آن نباشد به خاطر قیمت بسیار پایینی که این میکروکنترلر دارد بسیار مناسب است . قیمت همین مدل جدید AT89S5X حول و حوش 1000 تومان است که قیمت بسیار مناسبی است.
این میکرو کنترلر از زبان اسمبلی و C پشتیبانی میکند که زبان برنامه نویسی اصلی آن اسمبلی است که واقعا نوشتن با این زبان برنامه نویسی نسبت به زبان های برنامه نویسی دیگر هم مشکل تر و هم طولانی تر است. در کل این میکروکنترلر امروزه دیگر توانای رقابت با AVR و PIC رو ندارد و امروزه رقابت اصلی بین این دو میکروکنترلر است.
2) میکروکنترلر PIC
واقعا میکروکنترلر خیلی قوی است که بر اساس بعضی آمار ها بیشترین کاربر را به خود اختصاص داده است البته متذکر شوم که در ایران این آمار به نفع AVR است. این میکروکنترلر ساخت شرکت میکرو چیپ است که PIC رو در مدل های خیلی زیادی با امکانات مختلف برای کارهای مختلف میسازد . این میکروکنترلر با مدل های مختلفPIC16XXX و PIC12XXXX که به جای X دوم از چپ به راست حروف C ,X,E,F قرار میگره که هر کدام مفهوم خاصی داره که چون بحث ما آموزش AVR است از روی اون سریع میگزریم X های بعدی هم اعدادی هستنند که نشان دهنده مدل های مختلف هستنند.
3)میکروکنترلر AVR
به میکروکنترلر AVR میرسیم که به نظر من و خیلی از دیگر بهترین میکروکنترلر موجود در بازار است البته خود من با 8051 و AVR بخصوص AVR خیلی کار کردم ولی تجربه ای با PIC ندارم و قضاوت من ممکنه یه طرفه باشه ولی این نظر بسیاری از کسانی است که با AVR کار کرده اند .به دلایلی.....
اول از همه سرعت این میکروکنترلر بسیار بالاست و به قولی دستوراتی که بهش داده میشه در یک سیکل کلاک انجام میده در صورتی که این سیکل کلاک برای 8051 باید تقسیم بر12شودو برای PIC باید تقسیم بر 4 بنابراین AVR سریعترین میکروکنترلر موجود در بازار است . AVR از زبان های برنامه نویسی سطح بالا یا به اصطلاح (HIGH LEVEL LANGUAGE) HLL پشتیبانی میکند که باعث تولید کدهای بیشتری میشود که در کل برنامه نوشته شده نسبت به برنامه هایی که برای 8051 و PIC نوشته میشود کوتاهتر است. امکانات جانبی این میکروکنترلر بسیار مناسب است و شما را از خرید بعضی لوازم جانبی مانند چیپ های آنالوگ به دیجیتال (ADC) , مقایسه گر آنالوگ و... راحت میکند .در ضمن AVR از بسیاری از استاندارد های ارتباطی مانند SPI,UART,12C,JTAG پشتیبانی میکند که به راحتی میتوان این میکروکنترلر را با میکروکنترلر دیگر یا و سایل دیگر وصل کرد و با وسایل دیگر به راحتی ارتباط برقرار کند. قیمت این میکروکنترلر هم به نسبت امکانات فراوانی که داره بسیار پایین است به طوری که یک میکروکنترلر AVR تقریبا پیشرفته رو با قیمت حول و حوش 3 تا 4 هزار تومان خرید .
خلاصه من که خیلی با این میکرو ور رفتم و پروژه های خیلی زیاد و پیچیده ای رو باهاش اجرا کردم بسیار راضی هستم و هیچ مشکلی باهاش نداشتم.اگر هم مشکلی بوده از جانب من بوده نه میکروکنترلر . خلاصه اگر برنامه نویسی و کار با این میکروکنترلر رو خوب یاد بگیرید هر کاری رو میتونید باهاش انجام بدید.
پروگرام میکروکنترلر
شاید تا حالا به نظرتون رسیده باشه که این میکروکنترلر رو چگونه میشه برنامه ریزی کرد تا کار مورد نظرمان را انجام بده در صورتی که یک میکروکنترلر برنامه ریزی نشده هیچ کاری رو نمیتونه انجام بده و هیچ کاربردی نداره در واقع برنامه هر میکرو روح وجانی است که در اون دمیده میشه و اون رو زنده میکنه.
برای برنامه ریزی میکروکنترلر نیاز به دستگاه یا بردی هست به نام پروگرامر که یه پل ارتباطیه بین کامپیوتر و میکروکنترلر . پروگرامر را هم میشه از بازار تهیه کرد و هم میشه اون رو ساخت.
البته پروگرامرهای مختلفی در بازار هستنند که متانسب با کاربردشان قیمت های مختلفی دارند بعضی ها فقط چند مدل رو پروگرام میکنند بعضی از پروگرامر ها همه فن حریفند و تمام میکروکنترلر های 8051,
AVBR , PIC , رو برنامه ریزی میکنند به طبع قیمت زیادتری دارند.
-------------------------------------------------------------------------------------------
اولین ریز پردازنده ای که با موفقیت عملی به بازار عرضه شد محصول شرکت اینتل در سال 1971 با نام 8080 بود بعد از آن بازار رقابت میکرو پروسسوری گرم شد و شرکت های دیگری همچون RCA ,ZILOG,MOS technology ریز پردازنده های خود را به بازار عرضه کردند.
کم کم با ورود کامپیوتر به صنعت ،وجود تکنولوژی دیگری نیز احساس شد . تکنولوژیی که از میکرو پروسسور جمع و جور تر و کند تر بود اما هزینه را خیلی پایین می آورد .این تکنولوزی میکرو کنترلر نام گرفت و کار آن نظارت و کنترل یک سری اعمال بود که توسط برنامه نویسی انجام می شد.
امروزه میکرو کنترلر حوزه های وسیعی از زندگی مارا اشغال کرده است بی آنکه بدانیم که سیستم به کار رفته در آنها میکرو کنترلری است و به اشتباه همه ی آنها را کامپیوترمی نامیم.برای مثال ماشین لباسشویی که اتمام کار خود را با نواختن آهنگی اعلام میکند یا اجاق گازی که خاموش شدن شعله را با آهنگ گوشزد می کند و یا خودروی سمندی که باز بودن در خودرو را با جمله ی" در ب خودرو باز است."یاد آوری می کند( البته با فرکانس بالاتر از فرکانس صدای من!!!)همگی نمونه های ملموسی از سیستم های میکرو کنترلری هستند که روزانه بار ها با آنها سر و کار داریم.
ملزومات یک سیستم کامپیوتری:
اما واحد های استاندارد یک سیستم کامپیوتری :
1-واحد پردازش مرکزیcup :
همان مغز سیستم است و فعالیت های سیستم را کنترل می کند و عملیات هایی را بر روی داده ها انجام می دهد . Cup مجموعه ای از مدارات منطقی است که به طور متناوب دستورات را واکشی و اجرا می کنند.
Cup خود دارای چند قسمت می باشد:
الف- ALU یا واحد محاسبه و منطق که مسئول انجام اعمال محاسباتی نظیر جمع و تفریق و ... و اعمال منطقی مانند مقایسه And و OR و ... می باشد
ب – واحد کنترل که مسئول رمز گشایی و تعیین نوع عملیاتی است که ALU باید انجام دهد.
ج- ثبات ها جهت ذخیره موقت داده ها قبل از رفتن به ALU و همچنین نگه داری نتایج پردازش به کار میروند.
د – PC یا شمارنده برنامه که آدرس دستورالعمل بعدی که CPU باید از حافظه بخواند را در خود نگه می دارد.
ه- IR یا ثبات دستور العمل که مسئول ذخیره قسمت عملیاتی دستورالعمل فعلی می باشد
بعد از معرفی دیگر واحد ها به تفصیل در مورد واکشی دستور بحث می کنیم.
2. حافظه :
حافظه محل ذخیره اطلاعات است . حافظه ها را بر اساس مشخصه های مختلفی می توان طبقه بندی کرد . معمولترین طبقه بندی ، طبقه بندی بر اساس حافظه های اولیه و ثانویه است .
حافظه های اولیه حافظه هایی هستند که در اختیار سیستم هستند و سیستم برای انجام اعمال پردازشی به آنها احتیاج دارد ROM و RAM از حافظه های اولیه هستند .
ROM (رام) یا حافظه فقط خواندنی توسط کارخانه برنامه نویسی شده و محتویات آن توسط کاربر یا برنامه نویس تغییر نمی یابد. در حقیقت ROM یک بار برنامه نویسی شده و بارها و بارها می توان آن را خواند .محتویات ROM ثابت است و با قطع برق از بین نمی رود.
RAM (رم) حافظه با دستیابی تصادفی است که CPU اطلاعات را در آن ذخیره می کند و محتویات آن توسط برنامه نویس هم می تواند تغییر داده شود محتویات آن با قطع جریان برق هم از بین می رود.
حافظه های ثانویه ، حافظه هایی هستند که ما اطلاعات را بر روی آنها ذخیره می کنیم تا بعدا دوباره آن اطلاعات را مورد استفاده قرار دهیم و با قطع برق هم محتویات آنها از بین نمی رود .در حقیقت حافظه های ثانویه ترکیبی از خصوصیات Rom و Ram هستند . پایداری خود در مقابل قطع برق را از ROM و توانایی تغییر محتویات توسط کاربر را از RAM به ارث برده اند .برای حافظه های ثانویه می توان از HARD DISK و FLOPPY نام برد
3- گذرگاه یا باس:
مجموعه ای از سیم ها که اطلاعات را با یک هدف مشترک حمل می کنند.در معماری کامپیوتر از سه باس می توان نام برد:
الف – باس آدرس :برای هر عمل خواندن یا نوشتن CPU آدرس (موقعیت) داده را با قرار دادن یک آدرس روی باس آدرس به حافظه ارسال می کند.
ب - باس کنترل :با قرار دادن آدرس بر روی باس آدرس یک سیگنال کنترلی بر روی گذرگاه کنترل قرار می گیرد که مشخص می کند که عملیات مورد نظر خواندن است یا نوشتن در حافظه.
ج- گذرگاه داده : برای عملیات خواندن یک بایت داده بر روی گذرگاه داده توسط حافظه قرار داده می شود و برای عمل نوشتن یک بایت داده توسط CPU بر روی گذرگاه داده قرار می گیرد .
علاوه بر سیگنالهای کنترلی READ و WRITE سیگنال کنترلی دیگری هم با نام CLOCK وجود دارد که برای هم زمان کردن واحدها به کار می رود.
4 – واحد های ورودی و خروجی :
این واحد مسئول ارتباط با دنیای خارج است و توانایی اتصال سیستم ها را به کامپیوتر می دهد .
از کامپیوتر با نام ماشین برنامه پذیر نام بردیم . حال ببینیم برنامه چه تعریفی دارد.
برنامه:
به مجموعه ای از دستور العمل ها که ترتیب اجرای مشخصی دارند و دارای نقطه شروع و پایان مشخصی هستند که به منظور انجام عمل خاصی نوشته شده اند یک برنامه می گویند.
از تعریف بالا نتیجه گرفته می شود که واحد ساختمانی برنامه دستور العمل است درست مانند یک ساختمان که به وسیله آجر ساخته می شود برنامه هم با قرار دادن دستور العمل ها پهلوی هم ساخته می شود.
عمل خواندن دستور العمل ها از حافظه توسط CPU را واکشی گویند.دستور العملها پشت سر هم واکشی شده و توسط CPU اجرا می شوند تا زمانی که برنامه اتمام برسد و آن هدفی را که برنامه نویس مد نظرش بوده است انجام شود.
CPU تنها با داده های باینری کار می کند بنابراین هر دستور العمل نوشته شده توسط برنامه نویس باید به مقدار معادل باینری (همان زبان ماشین) آن تبدیل شود و سپس اجرا شود.
یک سیکل واکشی دستور به صورت زیر می باشد:
1- مقدار PC یا شمارنده برنامه بر روی گذرگاه آدرس قرار می گیرد .
2- سیگنال کنترلی READ بر روی گذرگاه کنترل قرار می گیرد
3- داده ( کد عملیاتی دستورالعمل) از حافظه خوانده می شود و روی گذرگاه داده قرار می گیرد
4- کد عملیاتی در ثبات IR قرار می گیرد
5- شمارنده برنامه به ابتدای دستور بعدی اشاره میکند( اغلب گفته می شود که شمارنده برنامه یک واحد افزایش می یابد اما گاهی اوقات 2 واحد و گاهی 3 واحد افزایش پیدا می کند در حقیقت شمارنده برنامه به اندازه طول دستور فعلی افزایش پیدا می کند.)
مرحله ی اجرا شامل کد گشایی و ایجاد سیگنالهای کنترلی لازم برای باز کردن ثات های CPU و قرار دادن محتویات آنها در ALU و مجددا قرار دادن نتیجه عملیات در ثبات ها است.
مقایسه ریز پردازنده و میکرو کنترلر :
ریز پردازنده یک IC است که فقط شامل CPU است اما میکرو کنترلر مدارات اضافی دیگری در داخل همان IC قرار داده شده است که میکرو کنترلر را تبدیل به یک میکرو کامپیوتر کرده است ( البته در مقیاس کمتر) مدارات دیگری همانند ROM,RAM, timer, و رابط سریال و پردازش وقفه و...
اما برای اینکه یک میکروپروسسور به عنوان یک میکرو کامپیوتر عمل کند به مدارات ذکر شده بالا در خارج IC نیازمندیم که این مدارات هم حجم و هم هزینه را به طور نمایی افزایش می دهند .
اما ریز پردازنده و میکرو کنترلر از نظر معماری داخلی به هیچ وجه قابل مقایسه نیستند ریز پردازنده برای انجام اعمال پردازشی بسیار پیچیده در سرعت بالا طراحی شده است و نتیجتا معماری آن بسیار پیچیده تر از معماری میکرو کنترلر خواهد بود .
تفاوت دیگر میکرو کنترلر و میکرو پروسسور در مصرف توان آنهاست .میکرو کنترلر توان بسیار کمتر از توان مصرفی میکرو پوسسور لازم دارد چون مدارات آن نسبت به میکروپروسسور بسیار کمتر است و این یک مزیت برای طراحی مدارات می باشد.
سير تكاملي ميكرو كنترلرها
اولين ميكرو كنترلرها در اواسط دهه 1970 ساخته شدند. اين ميكرو كنترلرها در ابتدا پردازنده هاي ماشين حساب بودند كه داراي حافظه برنامه كوچكي از نوع ROM ، حافظه داده از نوع RAM و تعدادي درگاه ورودي/خروجي بودند.
با توسعه فناوري سيليكون ، ميكرو كنترلرهاي 8 بيتي قويتري ساخته شدند. در اين ميكرو كنترلرها علاوه بر بهينه شدن دستورالعمل ها، تايمر/شمارنده روي تراشه، امكانات وقفه و كنترل بهينه شده خطوط I/O نيز به آنها اضافه شده است. حافظه موجود بر روي تراشه هنوز هم محدود مي باشد و دربسياري موارد كافي نيست.يكي از پيشرفتهاي قابل توجه در آن زمان، قابليت استفاده از حافظة EPROM قابل پاك شدن با اشعه ماورا بنفش، روي تراشه بود. اين قابليت، زمان طراحي و پياده سازي محصول را بطور محسوسي كاهش داد و نيز براي اولين بار امكان استفاده از ميكرو كنترلر ها را در كاربردهايي كه حجم توليد پاييني دارند، فراهم ساخت.
خانواده8051 در اوايل دهه 1980 توسط شركت اينتل معرفي گرديد. از آن زمان تاكنون8051 يكي از
محبوبترين ميكرو كنترلرها بوده و بسياري از شركتها ديگر نيز به توليد آن اقدام كرده اند. در حال حاضر
مدل هاي مختلفي از 8051 وجود دارد كه در بسياري از آنها امكاناتي نظير مبدل آنالوگ به ديجيتال حجم
نسبتاً بزرگ از حافظه برنامه و حافظه داده، مدولاتور عرض پالس (PWM) در خروجيها و حافظه فلش
Flash)) كه امكان پاك كردن و برنامه ريزي مجدد آن توسط سيگنالهاي الكتريكي وجود دارد، تعبيه شده است.
ميكرو كنترلرها اكنون به سمت 16 بيتي شدن در حركت هستند. ميكرو كنترلر هاي 16 بيتي، پردازنده هايي با كارايي بالا (نظير پردازش سيگنالهاي ديجيتال ) مي باشند كه در كنترل فرايندهاي بلادرنگ و در مواردي كه حجم زيادي از عمليات محاسباتي مورد نياز است، به كار برده مي شوند.
بسياري از ميكرو كنترلرهاي 16 بيتي، امكاناتي نظير حجم زياد حافظه برنامه و حافظه داده، مبدل هاي آنالوگ به ديجيتال چند كانالي، تعداد زيادي درگاه I/O، چندين درگاه سريال، عملكردهاي بسيار سريع رياضي و منطقي و مجموعه دستورالعمل هاي بسيار قدرتمند با قابليت پردازش سيگنال را دارا مي باشند.
معماري داخلي ميكرو كنترلرها
ساده ترين معماري ميكرو كنترلر، متشكل از يك ريز پردازنده، حافظه و درگاه ورودي/خروجي است. ريز پردازنده نيز متشكل از واحد پردازش مركزي (CPU) و واحد كنترل (CU) است.
CPU درواقع مغز يك ريز پردازنده است و محلي است كه در آنجا تمام عمليات رياضي و منطقي ،انجام مي شود. واحد كنترل ، عمليات داخلي ريز پردازنده را كنترل مي كند و سيگنال هاي كنترلي را به ساير بخشهاي ريز پردازنده ارسال مي كند تا دستورالعمل ها ي مورد نظر انجام شوند.
حافظه بخش خيلي مهم از يك سيستم ميكرو كامپيوتري است. ما مي توانيم بر اساس به كارگيري حافظه، آن را به دو گروه دسته بندي كنيم: حافظه برنامه و حافظه داده . حافظه برنامه ، تمام كد برنامه را ذخيره مي كند. اين حافظه معمولاً از نوع حافظه فقط خواندني (ROM) مي باشد. انواع ديگري از حافظه ها نظير EPROM و حافظه هاي فلش EEPROM براي كاربردهايي كه حجم توليد پاييني دارند و همچنين هنگام پياده سازي برنامه به كار مي روند . حافظه داده از نوع حافظه خواندن / نوشتن (RAM) مي باشد . در كاربردهاي پيچيده كه به حجم بالايي از حافظه RAM نياز داريم ، امكان اضافه كردن تراشه هاي حافظه بيروني به اغلب ميكرو كنترلر ها وجود دارد.
درگاهها ورودي / خروجي (I/O )به سيگنال هاي ديجيتال بيروني امكان مي دهند كه با ميكرو كنترلر ارتباط پيدا كند. درگاههاي I/O معمولاً به صورت گروههاي 8 بيتي دسته بندي مي شوند و به هر گروه نيز نام خاصي اطلاق مي شود. به عنوان مثال ، ميكروكنترلر 8051 داراي 4 درگاه ورودي / خروجي 8 بيت مي باشد كه P3, P2, P1, P0 ناميده مي شوند. در تعدادي از ميكرو كنترلر ها ، جهت خطوط درگاه I/O قابل برنامه ريزي مي باشد. لذا بيت هاي مختلف يك درگاه را مي توان به صورت ورودي يا خروجي برنامه ريزي نمود. در برخي ديگر از ميكروكنترلرها (از جمله ميكروكنترلرهاي 8051) درگاههاي I/O به صورت دو طرفه مي باشند. هر خط از درگاه I/O اين گونه ميكرو كنترلرها را مي توان به صورت ورودي و يا خروجي مورد استفاده قرار داد . معمولاً ، اين گونه خطوط خروجي ، به همراه مقاومتهاي بالا كش بيروني به كار برده مي شوند.
خانواده 8051
خانواده 8051 يك خانواده ميكرو كامپيوتر (ميكرو كنترلر ) 8 بيتي تك تراشه اي استاندارد است كه بسيار محبوب و عامه پسند مي باشد و توسط سازندگان مختلف با قابليت هاي متفاوت توليد مي گردد. اين آي سي استاندارد اصلي كه اولين عضو اين خانواده مي باشد، 8051 است كه يك ميكرو كنترلر 40 پايه مي باشد.
هم اكنون اين آي سي با پيكربندي هاي مختلف موجود مي باشد. 80C51 نوع cmos و كم مصرف اين خانواده است. 8751 داراي حافظه برنامه از نوع EPROM است كه عمدتاً در هنگام پياده سازي به كار برده مي شود.
89c51 نيز داراي حافظه فلش قابل برنامه ريزي و پاك شدن (PEROM) است لذا بدون نياز به پاك كردن با اشعه ماورابنفش ، مي توان حافظه برنامه را برنامه ريزي كرد.8052 عضو بهينه شده اين خانواده مي باشد و حافظه RAM آن بيشتر بوده و تعداد تايمر/شمارنده آن نيز بيشتر است. انواع مختلفي از خانواده 40 پايه وجود دارد كه داراي مبدل هاي آنالوگ به ديجيتال ، مدولاتورهاي عرض پالس و نظاير آن هستند. در بخش پايين خانواده 8051 ، ميكرو كنترلر هاي 20 پايه قرار دارند كه از لحاظ كد ، سازگاري كاملي با انواع 40 پايه دارند و اين ادوات 20 پايه براي كاربردهايي با پيچيدگي كمتر كه نياز به خطوط I/O كمتري دارند و نيز براي كاربردهايي كه بايد مصرف توان كمتري داشته باشند (مثل سيستم هاي قابل حمل)،ساخته شده اند.
آي سي هاي AT89C2051 و AT89C1051 (ساخت شركت Atmel)چنين ميكرو كنترلرهايي هستند كه از لحاظ كد سازگاري كاملي با خانواده 8051 دارند و مصرف توان آنها نيز كمتر است.
خانواده 8051
8051 يك ميكرو كنترلر 8 بيتي با مصرف كم و قابليت زياد است. تعداد زيادي از اعضاي خانواده 8051 داراي معماري مشابهي هستند و هر يك از اعضا با اعضاي ديگر سازگار مي باشند . قابليت هاي ميكرو كنترلر 8051 استاندارد به شرح زير مي باشد:
· 4 كيلو بايت حافظه برنامه
· 8*256 حافظه داده RAM
· 32 خط I/O قابل برنامه ريزي
· دو عدد تايمر / شمارنده 16 بيتي
· 6 منبع وقفه
· درگاه UART سريال قابل برنامه ريزي
· قابليت اتصال به حافظه بيروني
· بسته بندي 40 پايه استاندارد