مقدمه
میکروکنترلر در واقع یک ریز پردازنده تک تراشه ای است که شامل حافظه داده ، حافظه برنامه ، ورودی و خروجی سریال و موازی ، تایمرها ، وقفه های بیرونی و داخلی می باشد که تمامی آنها روی یک تراشه واحد مجتمع شده اند و می توان آن را به قیمتی کمتر از 2 دلار تهیه نمود0 بر اساس تخمین های زده شده به طور متوسط تعداد 35 میکرو کنترلر در وسایل خانگی یک خانواده متوسط آمریکایی وجود دارد0 بیش از 34 درصد میکروکنترلرها در اتوماسیون اداری نظیر چاپگرهای لیزری ، دستگاه های نمابر تلفنهای هوشمند و نظایر آنها به کار برده می شوند0 بیش از یک سوم میکروکنترلرها در لوازم خانگی الکترونیکی به کار برده شده اند0 در این دسته بندی تولیداتی نظیرCD player ، تجهیزات صوتی hi-fi ، بازیهای ویدیویی ، ماشین لباسشویی ، دستگاههای پخت و پز و نظایر آنها قرار دارند0
بازار تجهیزات مخابراتی ،ادوات نظامی و تجهیزات مربوط به اتومبیل ها بخش باقیمانده از سهم کاربرد میکروکنترلرها را به خود اختصاص داده اند0
میکروکنترلرها به طور معمول با استفاده از زبان اسمبلی مربوطه ، برنامه ریزی می شده اند0 میکروکنترلرهای ساخت تولید کنندگان مختلف ، زبانهای اسمبلی متفاوتی دارند0 زبان اسمبلی شامل عبارتهای کوتاهی برای دستورالعمل ها است به خاطر سپردن این عبارتها مشکل است ونیز برنامه های تهیه شده برای یک میکروکنترلر برای سایر انواع دیگر میکروکنترلرها قابل استفاده نمی باشد0 سختی کار با زبان اسمبلی به خصوص در پیاده سازی پروژه های پیچیده ، متداولترین شکایتی است که در رابطه با برنامه ریزی میکروکنترلرها مطرح می شود0 راه حل این مسئله ، استفاده از زبانهای سطح بالا میباشد0 با این کار ، عملیات برنامه ریزی ساده تر گشته ، برنامه خواناتر و انعطاف پذیرتر شده و پشتیبانی از آن نیز ساده تر می گردد0 برای اغلب میکرو کنترلرها کامپایلرهای C و BASIC متفاوتی موجود می باشند0 کامپایلرهای BASIC معمولاً به صورت مفسر بوده و کدهای حاصل از آنها کند می باشند0
یکی دیگراز معایب زبان BASIC این است که اغلب کامپایلرهای BASIC ساختیافته نیستند در نتیجه برنامه سازی با آن کار دشواری می باشد0 در این پروژه از یک کامپایلر حرفه ای C با تمام قابلیتهای آن جهت برنامه ریزی میکرو کنترلر خود استفاده خواهیم کرد0 AT89C2051 متعلق به خانواده استاندارد میکروکنترلرهای 8051 می باشد0 AT89C2051 یک مدار مجتمع 20 پایه می باشد که از لحاظ کد، کاملاً سازگار با برادر بزرگترش 8051 است0 این مدار مجتمع دارای یک درگاه سریال، 15 بیت ورودی / خروجی موازی ، 2 عدد تایمر / شمارنده ، 6 منبع وقفه ، 128 بایت حافظه RAM برای داده ها و 2 کیلو بایت حافظه فلش قابل برنامه ریزی مجدد برای ذخیره کردن برنامه می باشد0 دلایل زیادی برای انتخاب AT89C2051 وجود دارد، از آن جمله می توان به سازگاری کامل آن با خانواده 8051 و سهولت پاک کردن و برنامه ریزی مجدد آن ، اشاره کرد0 برای این مدار مجتمع نیازی به استفاده از اشعه ماوراء بنفش جهت پاک کردن حافظه برنامه نیست0 حافظه را می توان با استفاده از یک مدار برنامه ریزی کننده ارزان قیمت پاک کرده و مجدداً آن را برنامه ریزی نمود0 از دلایل دیگر انتخاب AT89C2051 کوچکی و ارزان بودن آن است0
سیستم های میکرو کامپیوتری:
اصطلاح میکروکامپیوتر برای توصیف سیستمی به کار می رود که شامل یک ریز پردازنده، حافظه برنامه، حافظه داده و یک ورودی / خروجی ( I / O ) است0 برخی از سیستم های میکرو کامپیوتری شامل اجزاء اضافی نظیر تایمرها ، شمارنده ها و مبدل های آنالوگ به دیجیتال هستند0 با این تفاسیر می توان گفت که تمام موارد ، از یک سیستم کامپیوتر بزرگ که دارای چندین هارددیسک ، فلاپی درایو و چاپگر است ، تا یک سیستم کامپیوتری تک تراشهای ، در زمره سیستمهای میکرو کامپیوتری به حساب می آیند0
سیر تکاملی میکرو کنترلرها
اولین میکروکنترلرها در اواسط دهه 1970 ساخته شدند0 این میکروکنترلرها در ابتدا پردازنده های ماشین حساب بودند که دارای حافظه برنامه کوچکی از نوع ROM ، حافظه داده بسیار محدود از نوع RAM و تعدادی درگاه ورودی / خروجی بودند0
با توسعه فناوری سیلیکون ، میکروکنترلرهای 8 بیتی قو یتری ساخته شدند0
در این میکروکنترلرها علاوه بر بهینه شدن دستور العمل ها ، تایمر/ شمارنده روی تراشه، امکانات وقفه و کنترل بهینه شدن خطوط I / O نیز به آنها اضافه شده است0 حافظه موجود بر روی تراشه هنوز هم محدود می باشد و در بسیاری موارد کافی نیست0 یکی از پیشرفتهای قابل توجه در آن زمان، قابلیت استفاده از حافظه EPROM قابل پاک شدن با اشعه ماوراء بنفش روی تراشه بود0 این قابلیت ، زمان طراحی و پیاده سازی محصول را به طور محسوسی کاهش داد و نیز برای اولین بار امکان استفاده میکروکنترلرها را در کاربردهایی که حجم تولید پایینی دارند ، فراهم ساخت0
خانواده 8051 در اوایل دهه 1980 توسط شرکت اینتل معرفی گردید0 از آن زمان تا کنون ، 8051 یکی از محبوبترین میکروکنترلرها بوده و بسیاری از شرکتهای دیگر نیز به تولید آن اقدام کرده اند0 در حال حاضر مدل های مختلفی از 8051 وجود دارد که در بسیاری از آنها امکاناتی نظیر مبدل آنالوگ به دیجیتال ، حجم نسبتاً بزرگ از حافظه برنامه و حافظه داده ، مدولاتور عرض پالس ( PWM ) در خروجیها و حافظه فلش ( flash ) که امکان پاک کردن و برنامه ریزی مجدد آن توسط سیگنال های الکتریکی وجود دارد ، تعبیه شده است0
میکروکنترلرها اکنون به سمت 16 بیتی شدن در حرکت هستند0 میکروکنترلرهای 16 بیتی، پردازنده هایی با کارآیی بالا ( نظیر پردازش سیگنال های دیجیتال ) می باشند که در کنترل فرآیند های بلادرنگ و در مواردی که حجم زیادی از عملیات محاسباتی مورد نیاز است ، به کار برده می شوند0
بسیاری از میکروکنترلرها 16 بیتی ، امکاناتی نظیر حجم زیاد حافظه برنامه و حافظه داده ، مبدل های آنالوگ به دیجیتال چند کانالی ، تعداد زیادی درگاه I / O ، چندین درگاه سریال ، عملکردهای بسیار سریع ریاضی و منطقی و مجموعه دستورالعمل های بسیار قدرتمند با قابلیت پردازش سیگنال را دارا می باشند0
معماری داخلی میکرو کنترلرها
سادهترین معماری میکرو کنترلر، متشکل از یک ریزپردازنده، حافظه و درگاه ورودی/ خروجی است 0 ریز پردازنده نیز متشکل از واحد پردازش مرکزی ( CPU ) و واحد کنترل (CU ) است 0
CPU در واقع مغز یک پردازنده است و محلی است که در آنجا تمامی عملیات ریاضی و منطقی ، انجام می شود0 واحد کنترل ، عملیات داخلی ریز پردازنده را کنترل می کند و سیگنال های کنترلی را به سایر بخشهای ریز پردازنده ارسال می کند تا دستور العمل های مورد نظر انجام شوند0
حافظه بخش خیلی مهمی از یک سیستم میکروکامپیوتری است 0 ما می توانیم بر اساس به کار گیری حافظه آن را به دو گروه دسته بندی کنیم : حافظه برنامه و حافظه داده 0 حافظه داده ، تمام کد برنامه را ذخیره می کند0 این حافظه معمولاً از نوع حافظه فقط خواندنی (ROM ) می باشد0 انواع دیگری از حافظه ها نظیر EPROM و حافظه های فلش ( EPROM ) برای کاربردهایی که حجم تولید پایینی دارند و همچنین هنگام پیاده سازی برنامه به کار می روند0 حافظه داده از نوع حافظه خواندن / نوشتن ( RAM ) می باشد0 در کاربردهای پیچیده که به حجم بالایی از حافظه RAM نیاز داریم ، امکان اضافه کردن تراشه های حافظه بیرونی به اغلب میکروکنترلرها وجود دارد0
درگاههای ورودی / خروجی ( I / O ) به سیگنال های دیجیتال بیرونی امکان می دهند که با میکروکنترلر ارتباط پیدا کند0 درگاههای I /O معمولاً به صورت گروههای 8 بیتی دسته بندی می شوند و به هر گروه نیز نام خاصی اطلاق می شود0 به عنوان مثال ، میکروکنترلر 8051 دارای 4 درگاه ورودی / خروجی 8 بیتی می باشد که
P3 . P2 . P1 . P0 نامیده می شوند 0 در تعدادی از میکروکنترلرها ، جهت خطوط درگاه I /O قابل برنامه ریزی می باشد0 لذا بیت های مختلف یک درگاه را می توان به صورت ورودی یا خروجی برنامهریزی نمود0 در برخی دیگر از میکروکنترلرها ( ازجمله میکروکنترلرهای خانواده 8051 ) درگاههای I / O به صورت دو طرفه می باشند0 هر خط از درگاه I / O این گونه میکروکنترلرها را می توان به صورت ورودی و یا خروجی مورد استفاده قرار داد0 معمولاً ، این گونه خطوط خروجی ، به همراه مقاومتهای pull-up بیرونی به کار برده می شوند 0
خانواده 8051
خانواده 8051 یک خانواده میکرو کامپیوتر ( میکروکنترلر ) 8 بیتی تک تراشه ای استاندارد است که بسیار محبوب و عامه پسند می باشد و توسط سازندگان مختلف با قابلیت های متفاوت تولید می گردد0 آی سی استاندارد اصلی که اولین عضو این خانواده می باشد ، 8051 است که یک میکروکنترلر 40 پایه می باشد0 هم اکنون این آی سی با پیکر بندی های مختلف موجود می باشد0 80C51 نوع CMOS و کم مصرف این خانواده است0 8751 دارای حافظه برنامه از نوع EPROM است که عمدتاً در هنگام پیاده سازی به کار برده می شود0
89C51 نیز دارای حافظه فلش قابل برنامه ریزی و پاک شدن (PEROM) است لذا بدون نیاز به پاک کردن با اشعه ماوراء بنفش می توان حافظه برنامه را برنامه ریزی کرد0 8052 عضو بهینه شده این خانواده می باشد و حافظه RAM آن بیشتر بوده و تعداد تایمر / شمارنده آن نیز بیشتر است0 انواع مختلفی از خانواده 40 پایه وجود دارد که دارای مبدل های آنالوگ به دیجیتال ، مدولاتورهای عرض پالس و نظایر آن هستند0 در بخش پایین خانواده 8051 ، میکرو کنترلرهای 20 پایه قرار دارند که از لحاظ کد ، سازگاری کاملی با انواع 40 پایه دارند0 این ادوات 20 پایه برای کاربردهایی با پیچیدگی کمتر که نیاز به خطوط I /O کمتری دارند و نیز برای کاربردهایی که باید مصرف توان کمتری داشته باشند ( مثل سیستم های قابل حمل ) ساخته شده اند0
آی سی های AT89C2051 و AT89C1051 ( ساخت شرکت Atmel ) چنین میکروکنترلرهایی هستند که از لحاظ کد سازگاری کاملی با خانواده 8051 دارند و مصرف توان آنها نیز کمتر است0 جدول 1-1 فهرستی از مشخصات برخی از اعضای خانواده 8051 را ارائه می کند دلایل انتخاب AT89C2051 عبارتند از قیمت ارزان ، توان مصرفی کم ، حجم کوچک (20 پایه) و قابلیتهای زیاد اطلاعات کاملتر در مورد این میکروکنترلرها را می توانید از برگه مشخصات آنها که توسط سازندگان ارائه می شوند استخراج کنید0