ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ...

130
١ 0 آزﻣﺎﯾﺸﮕﺎه ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ

Upload: others

Post on 29-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١

0

میکروکنترلر آزمایشگاه

Page 2: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢

AVRکنترلر هاي خانواده مروري کلی بر میکرو :بخش اول )1

BASCOMآموزش نرم افزار : بخش دوم )2

AVRپروژه هاي مبتنی بر خانواده :بخش سوم )٣

Page 3: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣

آزمایشات فهرست مطالب و

آشنایی با میکروکنترلرAVR

آموزش نرم افزارBASCOM----------------------------------

پروژه عملی--------------------------------------------------

ولت براي میکرو 5ه آشنایی با برد بورد و ساختن یک منبع تغذی -1

مدار راه انداز میکرو -2

به میکرو و کنترل تاخیر چشمک زدن آن LEDاتصال -3

اتصال کلید به مدار و تابع عملکرد کلید -4

چراغ راهنمایی رانندگی -5

و اتصال آن به میکرو LCDنحوه عملکرد -6

و نمایش اطالعات بروي آن LCDآشنایی با دستورات -7

LCDش دماي محیط بروي و نمای LM35آشنایی با -8

ساعت دیجیتال -9

ساختن فرکانس متر دیجیتال -10

11- rs232

Page 4: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

AVRمعرفي ميكروكنترلرهاي

ميكروكنترلر چيست؟1- 1

به توليد اين قطعات كنترلر بهتر است ابتدا روندي كه منجربراي درك بهتر مفهوم ميكروگسترش . كامپيوترها امروزه نقشي غير قابل انكار در زندگي بشر دارند. گرددگرديد بررسي

ه اخير به حدي زياد بوده كه امروزه تصور كاربرد كامپيوتر در علوم مختلف در چند دهكامپيوترها با تمام پيچيدگيهايشان، همگي بلوك . زندگي بدون آن بسيار سخت است

. دارند1-1دياگرام ساده اي مانند شكل

بلوك دياگرام بسيار ساده از يك كامپيوتر1-1شكل

، حافظه و )CPU(ازش سه بلوك اصلي نشان داده شده در اين شكل، واحد مركزي پرد

واحد مركزي پردازش در واقع واحد اصلي . مي باشند) I/O(خروجي -ادوات ورودي، واحد ALUپردازشگر در هر سيستم كامپيوتري مي باشد كه از واحدهاي متعددي مانند

در . كنترل، رجيستر و دكودر دستورالعمل و مدارات توليد پالس داخلي تشكيل شده است صورت ماژولهاي جداگانه طراحي بهCPUد كامپيوترها واحدهاي مختلف يآغاز روند تول

. تشكيل مي گرديدCPUشد و از كنار هم قرار گرفتن آنها و ارتباط واحدها با يكديگر ميكامپيوتري تقويت گرديد كه آيا اين فكر در طراحان سيستمهاي 1970در اوايل دهه

) IC( را در داخل يك تراشه CPUكيل يك توان تمامي واحدهاي مورد نياز براي تش مي

1

I/O

CPU حافظه

Page 5: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

با CPUداد و شركت اينتل موفق شد يك نتيجه1971داد؟ تالشهاي محققان در سال قرارتماما بر روي يك تراشه كامل بود كه CPU شامل يك ICاين . توليد كندintel4004نام

ريزپردازنده ميكروپروسسور يا اين واحد مركزي پردازش جديد را . بود شده قرار داده .گذاري كردندنام

ساختن كامپيوترها كهتحولي كه معرفي ميكروپروسسورها بوجود آوردند كمتر از تحولياستقبال فراوان به عمل آمده از ميكروپروسسورها، كارخانه هاي بسياري را . ايجاد نمود، نبود

تمان داخلي و نيز درگير طراحي و معرفي انواع آنها نمود كه هريك در نحوه ساخت، ساخاز ريزپردازنده هاييكه . خروجي با يكديگر تفاوتهايي داشتند-نحوه ارتباط با حافظه و ورودي

ساخت شركت زايلوگ Z80يد گرديد مي توان به ريزپردازنده قدرتمند ل تو1970در دهه ي بر ، سيستمهاي كامپيوتري كامال مبتنحال با توليد ميكروپروسسورها. كرد اشاره

در يك سيستم . گرديدفت سريع علوم مرتبط با آنها آغازسسورها شده و پيشرميكروپروكامپيوتري مبتني بر ميكروپروسسورها بخش هاي مختلفي وجود دارند كه هريك وظيفه

چنين سيستمي را 1-2گرام شكل بلوك ديا. خاصي را در داخل سيستم بر عهده دارند اجزا معمول تشكيل دهنده يك سيستم اجزا نشان داده شده در اين شكل،. مي دهد نشان

.ميكروپروسسوري مي باشند

توضيح مختصري درباره واحدهاي مختلف يك سيستم ميكروپروسسوري مي تواند اهميت حافظه هاي . گردد افظه اصلي از دو مجموعه تشكيل ميح. اين واحدها را نمايان سازد

cpu

حافظه اصلی

مدارهای مدار کمکی

واسطه

حافظه جانبی

سيستم های مدار واسطه ورودی

خروجی/ورودی

سيستم های

خروجی

Page 6: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

ROMفظه هاي ا و حRAMيكروپروسسوري وظيفه خاصي كه هريك در سيستم معلت . استاي تنها خواندني ه همانطوركه از نامش پيداست حافظROMحافظه . دارندبرعهده

به اين ترتيب . استفاده از اين نوع حافظه در سيستم ها، غير فرار بودن اطالعات آن استتم نيز يه سيسداده اي كه در يك چنين حافظه اي قرار گرفته باشد، حتي پس از قطع تغذ

بنابراين اينگونه حافظه ها كانديداي مناسبي براي ذخيره سازي . ماند دست نخورده باقي ميدر يك سيستم ميكروپروسسوري عملكرد سيستم . اطالعات دائمي در سيستم هستند

توسط برنامه اي كه در حافظه ذخيره شده و به ترتيب از خانه هاي متوالي حافظه توسط CPUتمامي يا بخشي از اين برنامه در هر سيستم . گردد شود، تعيين مي ي خوانده و اجرا م

در هر سيستم ميكروپروسسوري در ضمن . گيرد قرار ميROMميكروپروسسوري در داخل اجراي برنامه بنا به داليل مختلف نياز به ذخيره سازي اطالعات بصورت داده ها و يا حتي

نوشتن در سيستمه ميكروپروسسوري حافظه قابلباشد، لذا استفاده از برنامه هاي موقت ميبراي ساخت حافظه . گردد استفاده ميRAMبراي اين منظور از حافظه هاي . ضروري است

زايا و معايب خاص خود استفاده از تكنولوژي هاي مختلف با مROM و RAMهاي و ROM براي ساخت PROM ،EPROM ،EEPROMگردد كه از جمله آنها مي توان به مي

.كرد اشارهRAMتكنولوژي استاتيكي و ديناميكي براي ساخت اطالعات نرم افزار سيستم هر سيستم ميكروپروسسوري محلي براي ذخيره دائمي

اين واحد حافظه عالوه بر اينكه بايد قابليت ذخيره اطالعات را داشته باشد، بايد . دارد احتياجبراي اين منظور از . ر سيستم را نيز داشته باشدقابليت بازنويسي و تغيير اطالعات و نرم افزا

تر براي ساخت ر سيستمهاي ميكروپروسسوري قديميد. حافظه جانبي استفاده مي گردداراي شد و به جاي آنها از وسايل د حافظه هاي جانبي از ادوات نيمه هادي استفاده نمي

يين، حجم سرعت پاگرديد كه سبب بروز مشكالتي مانند قسمتهاي مكانيكي استفاده ميامروزه با پيشرفت تكنولوژي ساخت ادوات نيمه هادي از . گرديد مي... ذخيره سازي كم و در اينجا اشاره به اين نكته نيز . گردد ادي براي حافظه جانبي استفاده ميتراشه هاي نيمه ه

ين الزم است كه به علت سرعت باالي ميكروپروسسور و سرعت پايين حافظه ها، ارتباط ب يك حافظه جانبي و حافظه اصلي با ساير قسمت ها در سيستم ميكروپروسسوري از طريق

.گيرد مدار واسط انجام ميقسمت ديگري از يك سيستم ميكروپروسسوري ) I/O(خروجي -دستگاههاي ورودي

هر سيستم ميكروپروسسوري زماني مي تواند كامل باشد كه امكان ارتباط با جهان . هستند- وروديميكروپروسسورها اطالعات را توسط دستگاههاي. ش فراهم شده باشدخارج براي

Page 7: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

دريافت كرده و پس از پردازش اطالعات و حصول نتيجه مورد نظر، نتيجه پردازشها خروجيدستگاه هاي تجهيزات بسياري به عنوان . كنند بر روي دستگاههاي خروجي ارسال ميرا

. كليد، انواع سنسورها، مبدل آنالوگ به ديجيتالگرفت مانند صفحه ورودي مي توان به كار، انواع موتورها و چاپگرها از مهمترين دستگاههاي خروجي نيز مي توان به نمايشگر

نكته اول آن است . خروجي دو نكته قابل توجه است-در مورد دستگاههاي ورودي. كرد اشاره و قبل از اينكه داده هاي كه اغلب دستگاههاي ورودي داده هايي به صورت ديجيتال ندارند

. يك دستگاه ورودي وارد ميكروپروسسور شود بايد ابتدا به فرمت ديجيتال تبديل گردداغلب سنسورهايي كه در سيستمهاي ميكروپروسسوري به كار برده مي شود از اين دسته

. كنداين مورد در رابطه با دستگاههاي خروچي نيز صدق مي. دستگاههاي ورودي هستندخروجي نرخ انتقال داده نسبتا پاييني دارند -گاههاي وروديه دوم هم آن است كه دستنكت

به همين دليل . و ارتباط مستقيم اين دستگاهها با ميكروپروسسور تقريبا غير ممكن استباشد روسسور نياز به مدارهاي واسطه ميخروجي به ميكروپ-براي اتصال دستگاههاي ورودي

. آورده شده است1-2كه در بلوك دياگرام 1-2ل يك سيستم ميكروپروسسوري عالوه بر قسمتهاي مختلفي كه در بلوك دياگرام شك

گذرگاه داده جز وگاه آدرسرگذ. است، نياز به قسمتهاي ديگري نيز دارد شده آوردهقسمتهاي مهم هر سيستم ميكروپروسسوري هستند و هنگام طراحي سيستم بايد براي آنها

از آنجا كه ميكروپروسسور داراي مدارات . كرد اي توسط تراشه ها ايجاد جداگانهمداراتترتيبي هستند، براي عملكردشان احتياج به مدارات توليد پالس ساعت دارند كه اين مدارات هم به صورت جداگانه توسط قطعات آنالوگي مانند خازن و كريستال بايد ايجاد

اي نام برده شده در حقيقت كمترين تجهيزاتي بايد به اين نكته توجه كرد كه قسمته. شوداست كه هر سيستم ميكروپروسسوري بايد داشته باشد و در صورت نياز وابسته به طراحي

... سيستم مورد نظر، تجهيزات ديگري مانند شمارند ها، مبدل هاي آنالوگ به ديجيتال و .گرفتبراي سيستم ميكروپروسسوري در نظرنيز مي توان روزافزون علوم مرتبط با ميكروپروسسورها و سيستمهاي مبتني بر انها، اين با پيشرفت

هده سيستمها وارد عرصه هاي مختلف زندگي بشر گرديدند و كنترل بسياري از امور بر عوجود بخشهاي مختلف در يك سيستم . گرفتسيستمهاي ميكروپروسسوري قرار

تصال اين بخشها به يكديگر و اميكروپروسسوري و طراحي جداگانه هر يك از آنها گرديد تا حجم سيستمهاي ميكروپروسسوري زياد شده و بعضا براي كاربردهاي خاصي سبب

تمهاي ميكروپروسسوري بود، استفاده از اين سيس نياز به يك سيستم كنترلي كوچك ميكه

Page 8: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

وجود اين مشكالت سبب شد تا طراحان به فشرده سازي سيستمهاي . گرديد مشكل ساز ميكروپروسسوري بيانديشند و اين نكته كه آيا مي توان يك سيستم كامل ميكروپروسسوري مي

را داخل يك تراشه طراحي كرد؟وپروسسوري در داخل خود اولين تراشه كه حاوي يك سيستم كامل ميكر1976در سال ود ترانزيستور در يك مدار مجتمع ب17000 شامل intel8748اين تراشه با نام . شدبود توليد

8 و يك تايمر I/O پايه RAM ،27 بايت EPROM ،64 كيلوبايت CPU ،1و داراي يك چنين تراشه اي كه يك سيستم كامل ميكروپروسسوري را به همراه كليه اجزاي . بيتي بود بلوك دياگرام 1-3در شكل . ناميده مي شوداخل خود داشته باشد، ميكروكنترلر آن در د

. آورده شده استداخلي يك ميكروكنترلر سادهبه كارگيري گسترده ميكروكنترلرها در كنترل فرايندهاي ساده و صنعتي سبب شد تا

توان به ميكروكنترلرهاي د اين تراشه ها اقدام كنند كه ميشركتهاي بسياري در دنيا به تولييكي از . كرد ساخت ميكروچيپ اشارهPIC ساخت زايلوگ و EZ8 ساخت اينتل، 8051

ترن ميكروكنترلرهايي كه به بازار الكترونيك عرضه شده و امروزه در قويجديدترين و AVRكنترلي كاربرد دارند، ميكروكنترلرهاي . بسياري از كاربردهاي صنعتي، رباتيك

1996اين ميكروكنترلرها براي اولين بار در سال . باشد ميAtmelساخت شركت معتبر و قابليتهاي متفاوت هر يك از AVRنترلرهاي تنوع بسيار زياد اين ميكروك. عرضه شدند

سادگي، امكانات . است ين ميكروكنترلرها گرديدهآنها سبب عالقه مندي طراحان به اگسترده، قيمت ارزان، مصرف توان كم، زبانهاي برنامه نويسي متعدد و سطح باال، فناوري

نها را به يكي از ، آAVRحافظه پيشرفته و تواناييهاي ديگرميكروكنترلرهاي خانواده ها مي توان به AVRاز جمله كاربردهاي . پركاربردترين ميكروكنترلرها تبديل كرده است

، RFكاربردهاي خودروهاي موتوري، كنترل صنعتي، سرورهاي شبكه، حسگر، تلفنهاي . اشاره كرد... روباتيك، اسباب بازيها و

Page 9: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

AVR معرفي ميكروكنترلرهاي 2-1

.شود دسته اصلي تقسيم بندي مي5 به AVRروكنترلرهاي خانواده ميك ATiny AVRميكروكنترلرهاي • AT90s AVRميكروكنترلرهاي • CAN AVRميكروكنترلرهاي • LCD AVRميكروكنترلرهاي • ATmega AVRميكروكنترلرهاي •

ارائه ATmega32از آنجا كه در اين كتاب مطالب كامل و تكميلي در مورد ميكروكنترلر AVR دسته اصلي 5گردد، در اين قسمت تنها به توضيح مختصري درباره قابليتهاي هر مي

خانواده 5گردد و خوانندگان براي كسب اطالعات تكميلي درباره هريك از اين مي ها بسندهAVRيتهاي اين ميكروكنترلرها موجود در سايت ش ها و ديتا ها مي توانند به كاتالوگ

. مراجعه كنندAtmelركت اينترنتي ش

ATiny AVRميكروكنترلرهاي داراي تعداد پايه كم و حجم كوچك هستند و در AVRاين دسته از ميكروكنترلرهاي

باشد به كاربردهاييكه نياز به استفاده از ميكروكنترلرهاي كم حجم در فضاي كوچك ميبه صورت بسته بنديهاي اغلب ميكروكنترلرهاي اين خانواده . وفور استفاده مي گردند

فركانس كاري اين دسته ميكروكنترلرها نسبت به . پايه ارائه مي گردد8كوچك با تنها RAM و FLASH پايين تر است وهمچنين حافظه AVRهاي خانواده ساير دسته

ATiny2313توان به از پركاربردترين ميكروكنترلرهاي اين خانواده مي. كوچكتري نيز دارند . اشاره دكردATiny26و

Page 10: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

AT90s Avrميكروكنترلرهاي تري هستند و به مرور زمان هاي نسبتا قديمي تراشهAVRاين دسته از ميكروكنترلرهاي

هاي جديد ارائه شده از طرف شركت در كاتالوگ. اند دادهAtmegaجاي خود را به سري Atmel جايگزين هريك از ميكروكنترلرهاي اين خانواده با سري Atmega آورده شده است

از پركاربردترين ميكروكنترلرهاي اين . باشد روبه توقف ميAVRو توليد اين خانواده . را نام بردAT90s8535توان خانواده مي

CAN AVRميكروكنترلرهاي

. رود كار مي هاي پرنويز به اين دسته از ميكروكنترلرهاي براي كاربردهاي صنعتي در محيطپروتوكل . باشند را دارا ميCANن خانواده توانايي پشتيباني از پروتوكل ميكروكنترلرهاي اي

CANكند و نسبت به يك ارتباط صنعتي است كه فواصل نسبتا طوالني را پشتيباني ميتوان به از مهمترين ميكروكنترلرهاي اين خانواده مي. است نويز تقريبا مصون

AT90CAN128 و AT90CAN32كرد اشاره.

LCD AVRميكروكنترلرهاي اند و داراي در نظر گرفته شدهLCDاندازي براي راهAVRاين خانواده از ميكروكنترلرهاي

گرافيكي و ماتريسي LCDكارگيري كليه صفحات هستند و توانايي كنترل و بهLCDدرايور ATmega390 و ATmega329مهمترين ميكروكنترلرهاي اين خانواده . باشند را دارا مي

.باشند مي

ATmega AVRميكروكنترلرهاي هستند كه امكاات وسيعتر و AVRاين دسته از ميكروكنترلرها پركاربردترين خانواده

و فركانس كاري FLASHظرفيت حافظه . كنند هاي قويتري را پشتيباني مي دستورالعملل توجهي افزايش به طور قابATiny AVRآنها نسبت به دسته پركاربرد ديگر يعني سري

، توانايي برقراري ارتباط سريال و PWMوجود تايمرها و كانترها، قابليت كنترل . يافته استهاي متفاوت از بندي موازي، وجود ودارات تقسيم كالك داخلي و تنوع فراوان در بسته

ه از پركاربردترين ميكروكنترلرهاي اين خانواد. هستندAVRبزرگترين مزاياي اين خانواده . اشاره كردATmega32 و ATmega8 ،ATmega16توان به مي

Page 11: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

AVRگذاري و بسته بندي نام3-1AVRدليل اين امر آن است كه طراح سيستم . هاي متنوعي هستند ها داراي بسته بندي

مناسب را AVRكنترلي بتواند بسته به ميزان فضاي در دسترس براي طراحي يك سيستم، نماي 1-4شكل . نه سازي فضاي مصرفي كل سيستم گرددانتخاب كرده و سبب بهي

.دهد را نشان ميAVRهاي بندي گرافيكي انواع بسته

.شود كار برده مي ها الگويي شبيه زير بهAVRبراي نامگذاري AVR NAME [Frequency/Voltage] [Max Frequency] [Package] [Temperature]

AVR NAME : نامAVRپس از نام . كند مي ن را بياAVR يك عدد قرار دارد كه اين عدد

مثال . كند را مشخص ميAVR طراحي شده در داخل FLASHمعموال ميزان حافظه ATmega32 به معني اين است كه ميكروكنترلر متعلق به خانواده ATmega AVR بوده و

K32 حافظه FLASHدارد . Frequency/Voltage : لر يك حرف انگليسي قرار دارد كه مشخص پس از نام ميكروكنتر

مشخص كننده نحوه 1-1جدول . باشد كننده فركانس و ولتاژ كاري ميكروكنترلر مي .باشد نامگذاري مي

ها AVR فركانس و ولتاژ كاري 1-1جدول

حافظه K8 با ATmega AVR به معني يك ميكروكنترلر از خانواده ATmega8Lمثال FLASH و با فركانس كاري MHz8-0باشد كه محدوده تغذيه مناسب آن ميV 2,7 تا V

. مي باشد5,5

فركانس كاري محدوده تغذيه ميكرو كنترلر مثالATTINY2313V AVR با پسوند V 1.8 - 5.5 V 0 – 4MHZ

ATMEGA8L AVR با پسوند L 2.7 - 5.5 V 0 – 8MHZ ATMEGA32 AVR5.5 – 4.0 بدون پسوند V 0 – 16MHZ

Page 12: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

Max Frequency : مثال در . باشد بيانگر بيشينه فركانس عملكرد ميكروكنترلر ميATiny13v-10pi به آن معناست كه بيشترين فركانسي كه اين ميكروكنترلر 10 عدد

. استMHz10تواند كار كند، ميPackage : براي 1-2جدول . كند نوع بسته بندي را با يك حرف انگليسي مشخص مي

. اين موضوع آورده شده استتشريح كامل ها AVR نوع بسته بندي 1-2جدول

عالمت نوع بسته بندي

Plastic Dual Inline Package(PDIP) P Plastic Gull Wing Small Outline Package(SOIC) S

Micro Lead Frame Package(MLF) M Plastic J-leaded Chip Carrier(PLCC) J

Thin Profile Plastic Quad Flat Package(TQFP) A Plastic Shrink Small Outline Package(SSOP) Y

Temperature : حرف . باشد مشخص كننده محدوده دماي مجاز ميكروكنترلر ميC به درجه سانتيگراد عملكرد مناسب 70 تا 0بندي تجاري است كه در دماي معناي بسته

باشد و محدوده دماي مجاز در اين بندي صنعتي مي سته بيانگر بU و Iحروف .دارد .باشد درجه سانتيگراد مي85 تا -40ميكروكنترلرها، دماي

K32باشد كه ميATmega ميكروكنترلري متعلق به خانواده ATmega32l-8IPبراي مثال

حداكثر فركانس آن . كند كار ميV 5,5 تا V 2,7 دارد و با ولتاژ نامي FLASHحافظه MHz8بندي بوده و در بستهPDIP85 تا -40محدوده دماي مجاز آن از . ارائه شده است

.باشد درجه سانتيگراد مي ها AVR پركاربردترين دسته از ATmegaهمانطور كه پيشتر نيز بيان شد، خانواده

به دليل قابليتهاي فراوان به يكي از محبوبترين و ATmega32ميكروكنترلر . باشند مياربردترين ميكروكنترلرها در طراحي سيستمهاي كنترلي و كاربردهاي رباتيك تبديل پرك

به همين دليل در اين كتاب سعي شده تا با تمركز بر روي اين ميكروكنترلر، . شده استديگر ميكروكنترلر . مفاهيم ساده و اساسي طراحي سيستمهاي كنترلي آموزش داده شود

توان دارند و ميATmega32و عملكردي نزديك به ساختمان داخلي ATmegaخانواده به سادگي و با كمي مطالعه، ATmega32اينگونه ادعا كرد كه در صورت يادگيري كامل

و حتي كل ATmegaاطالعات اين ميكروكنترلر را به ساير ميكروكنترلرهاي خانواده بسط دادAVRمجموعه

Page 13: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

ATmega32 مشخصات ميكروكنترلر 1- 4

معرفي ATmega32ش خصوصيات كلي و امكانات جانبي طراحي شده در در اين بخگردد و توضيح كامل درباره امكانات اين ميكروكنترلر و نحوه استفاده از آنها در فصول مي

در توضيحات اين قسمت، براي هر يك از ماژولها و واحدهاي داخلي . آينده ارائه خواهد شدATmega32شود براي ست، لذا مصرا از خواننده درخواست مي توضيحات كاملي ارائه شده ا

، در مطالعه اين Atmega32درك بهتر مفاهيم ميكروكنترلر و نيز نحوه استفاده از امكانات .قسمت دقت كافي داشته باشد

AVR RISCمعماري بيتي با 8اين نوع معماري بر مبناي كامپيوترهاي كم دستور سبب شده تا ميكروكنترلري

بيتي 8 رجيستر عمومي 32 داراي ATmega32. باال و توان مصرفي كم توليد شودكارايي دستورالعمل براي اين ميكروكنترلر در نظر گرفته شده كه اكثر آنها در تنها 131. باشد مي

اين خصوصيات سبب شده تا در فركانس كاري بيشينه يعني . شوند در يك سيكل اجرا ميMHz16 تورالعمل را در يك ثانيه ميليون دس16، بتوان تا)MPIS16(اجرا نمود .

فضاي حافظه

از نوع FLASHحافظه . است داخلي تعبيه شدهFLASH بايت حافظه AVR ،K32در اين ATmega32هاي خواندني و نوشتني غيرفرار است به معني اينكه با قطع برق از حافظه

افزار سيستم در قراردادن نرماين حافظه بهترين مكان براي . شود پاك نميFLASHحافظه ATmega32باشد مي .FLASH بار نوشتن و پاك كردن را 10000 طراحي شده قابليت

.گردد سبب دوام مناسب اطالعات بر روي اين حافظه ميFLASHداردو وجود قفل برنامه K2 بايت حافظه RAM در داخل اين AVRشده كه از نوع قراردادهSRAMمي باشد .

براي اين ميكروكنترلر در نظر گرفته شده كه قابل EEPROM بايت حافظه K1همچنين .باشد هزار بار نوشتن وپاك كردن را دارا مي100باشد و قابليت ريزي مي برنامه

امكانات جانبي

بيتي كه 8كانتر -دو تايمر. كانتر طراحي شده است- سه عدد تايمرATmega32در داخل كالك ورودي به . باشند مجزا ميPRESCALEكنند و داراي يكامال مجزا از يكديگر كار م

اعداد اين ضريب عبارتند . باشدATmega32تواند ضريبي از كالك اصلي كانترها مي-تايمر

Page 14: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

به اين ضريب كه در حقيقت تعيين كننده نحوه . 1024/1 و 256/1، 64/1، 8/1، 1از توانند بيتي مي8دوتايمر . شود گفته ميPRESCALEباشد، اعمال پالس به تايمرها مي

PRESCALEاز تايمر. متفاوتي داشته باشند و به صورت جداگانه به وظايف خود بپردازند -و يا ) TIMER(، محاسبه زمان)COUNTER(توان براي شمارش يك اتفاق كانترها مي

بيتي 16كانتر = يك تايمرATmega32همچنين در . استفاده كرد) COMPARE(مقايسه .باشد مجزا ميPRESCALEاحي شده است كه آن نيز داراي نيز طر

A/D، مبدلهاي آنالوگ به ديجيتال ATmega32از ديگر ماژولهاي در نظر گرفته شده براي دريافت DCمبدلهاي آنالوگ به ديجيتال سيگنال ورودي به صورت صورت ولتاژ . باشد ميبراي . دارند به خروجي ارسال مي بيتي باينري 10كنند و متناظر با سيگنال يك عدد مي

8توانند به صورت همزمان در نظر گرفته شده كه ميA/D كانال 8اين ميكروكنترلر .آورند هاي ميكروكنترلر خوانده و عدد ديجيتال متناضر آن را بدست ورودي آنالوگ را از پايه

PWMس يا كانال مدوالسيون عرض پال4، وجود ATmega32يكي ديگر از خصوصيات بارز از دروس الكترونيك به ياد داريم . است شده آورده1-5 شكل PWMبراي توضيح . باشد مي

يك موج متناوب برابر با سطح زير منحني آن موج در يك دوره تناوب DCكه مقدار برابر يك است بيشتر شود، 1-5حال اگر مقدار زماني را كه موج مربعب شكل . باشد مي

و 1-6شود مانند شكل موج بيشتر ميDC آن بيشتر شده و مقدار مسلما سطح زير منحني مو نيز كمتر DC برابر يك است كمتر شود، مقدار 1-5اگر مقدار زماني كه موج شكل

به اين ترتيب بدون آنكه دامنه موج مربعي تغييري دلشته باشد با . 1-7شود مانند شكل ميبه اين روش توليد مقادير . به دست آوردDCتوان مقادير متفاوت تغيير در عرض پالس مي

DC متفاوت كه كاربرد زيادي در كنترل صنعتي و رباتيك دارد PWMشود گفته مي.

Page 15: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

ATmega3 كانال كنترل به صورت 4 داراي PWMتوانند به صورت مجزا و باشد كه مي مي .همزمان با يكديگر عمل كنند

و يا حافظه و ادوات PCارتباط با ميكروهاي ديگر و يا امكان ATmega32ماژولهاي ارتباطي و JTAG ،2wire (I@C)انواع پروتوكلهاي ارتباطاتي مانند . سازند ديگر سيستم را ممكن مي

SPI به صورت MASTER يا SLAVE اين امكان را براي طراح سيستم كنترلي فراهم ،نترلي را در فواصل دور و وساير تجهيزات سيستم كATmega32سازد تا ارتباط بين مي

.برقراركند) KHz400تاحدود (نزديك وبا فركانسهاي باال اين ماژول . باشد مقايسه كننده آنالوگ داخلي ميATmega32از ديگر امكانات داخلي

توان براي اين منظور مي. سازد فراهم ميAVRامكان مقايسه بين دو داده آنالوگ را توسط . اعمال كرد و سيگنال بزرگتر را تشخيص دادAVRو پايه خاص دو داده آنالوگ را به أ

تواند پس از انجام عمل مقايسه سيگنال كنترلي مناسب براي مقايسه كننده داخلي مي .تايمرها ارسال كند تا يك مدار قياس كامل حاصل شود

در . استWatchdogگردد ريزي كه در اين قسمت معرفي مي آخرين ماژول قابل برنامه. دچار مشكل شده و هنگ كندAVRهاي صنعتي به دليل نويز زياد ممكن است حيطم

كند طراحي شده كه توسط اسيالتور داخلي كار ميATmega32براي اين منظور مداري در شود در اين عمل سبب مي. كندresetريزي است تا پس از مدتي ميكرو را و قابل برنامه

شده و مجددا برنامه از آغاز اجرا resetز مدتي ميكرو صورت هنگ كردن ميكروكنترلر پس ا .گردد شود كه باعث افزايش قابليت اطمينان اين ميكروكنترلر مي

ATmega32خصوصيات ويژه

در داخل لين ميكروكنترلر مداري تعبيه شده كه به محض وصل شدن ولتاژ به . كند د و نرم افزار آغاز به كار ميكن ميreset فعال شده و ميكرو را resetميكروكنترلر، چايه

. گويند ميPOWER – ON RESET CIRCUITبه اين مدار اين اتفاق غالبا . باشد يكي از مشكالت سيستمهاي كنترلي، افت ولتاژ ورودي به ميكرو مي

داراي Atmega32. تخليه شده باشند دهد كه باطريهاي متصل به سيستم زماني روي ميان ميزان مجاز ولتاژ ورودي را براي آن تعين كرد و در صورت كاهش تو مداري است كه مي

Page 16: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

يشگاه ميكروكنترلرآزما

به اين قابليت اصطالحا . گردد ولتاژورودي از سطح موردنظر، ميكروكنترلر خاموش ميBROWN-OUT DETECTIONشود گفته مي.

آن اشاره كرد كه SLEEP حالت 6توان به از ديگر خصوصيات جانبي اين ميكروكنترلر مياسيالتور داخلي . گردد مصرف انرژي و استفاده بهينه از سيستم كنترلي ميسبب كاهش

RC كه داخل اين AVRتواند كالك مورد نظر سيستم را تامين كند و تعبيه شده مي .توان با استفاده از اين كالك، سيستم پالس دهي خارجي را به ميكرو متصل نكرد مي

ولتاژ و فركانس نامي و بسته بندي. شود توليد ميATmega32L و Atmega32كروكنترلر در دو مدل كلي اين مي

ATmega32L در فركانسهاي MHz0 تا MHz16 كند ولت كار مي5,5 تا 2,7 و با ولتاژ .ATmega32 در فركانسهاي MHz0 تا MHz16 اين . كند ولت كار مي5,5 تا 4,5 و با ولتاژ

پايه 40بندي بسته3ه است و در خروجي دو طرف- پايه ورودي32ميكروكنترلر داراي PDIP ،44 پايه TQFP پايه 44 و MLFگردد كه تركيب پايه هاي آن در شكل توليد مي

.است شده آورده8-1

Page 17: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

ATmega32بررسي پايه هاي

ATmega32هاي پايهوامكانات ATmega32در بخشهاي گذشته توضيحاتي درباره ساختار كلي ميكروكنترلر

حال كه اطالعات مقدماتي از اين ميكروكنترلر در دست است، در اين . داخلي آن ارائه شد .شود كنترلي پرداخته ميبخش به مسائل مربوط به ارتباطات ميكروكنترلر با سيستم

پايه هاي هر ميكروكنترلر وظيفه ارتباط بين ماژولهاي داخلي ميكروكنترلر با فضاي خارج از بندي بسته3در ATmega32همان طور كه پيشتر نيز بيان شد، . ميكرو را بر عهده دارند

كز بر روي اين بيشترين كاربرد را دارد، با تمر PDIPبندي از آنجا كه بسته. شود توليد مي پايه اين ميكروكنترلر توضيح داده 40 تماميكاربرد 8-1بندي و توجه به شكل بسته .شود مياين پايه ها و كاربرد آنها . پايه تك منظوره بوده و تنها يك كاربرد دارندATmega32 ،8در

.به شرح زير است VCCپايه •

بسته به نوع ميكروكنترلر بايد ولتاژ .باشد اين پايه تامين كننده تغذيه ميكروكنترلر ميدر قسمت سوم كتاب و . اعمال گرددATmega32مستقيم مناسب از طريق اين پايه به

. مناسب توضيح داده شده استDC نحوه ايجاد ولتاژ 1در آزمايش شماره GNDپايه •

ATmega32در . باشد و بايد به قطب منفي تغذيه متصل گردد اين پايه زمين سيستم مي .وجود دارد كه هر دو بايد به زمين سيستم متصل گردند GNDدو پايه

XTAL2و XTAL1هاي پايه •از آنجا مه ميكروكنترلر يك سيستم ترتيبي است، نياز به پالس ساعت ورودي براي ايجاد

اين دو پايه تامين . ها دارد هاي مورد نياز جهت اجراي دستورالعمل نظم و فراهم آوردن لبه

2

AVR - BOOK

Page 18: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

آزمايشگاه ميكروكنترلر

البته ميكروكنترلرها داراي يك . ده كالك خارجي براي ميكروكنترلر مي باشندكننباشند كه مي تواند بدون نياز به اتصال كالك خارجي، پالسهاي مورد نياز اسيالتورداخلي مي

توضيحات كامل درباره نحوه ايجاد پالس ساعت و 10-1در بخش . سيستم را تامين كند .گردد نگي استفاده از اسيالتور داخلي ارائه ميمدارات توليد كالك و نيز چگو

resetپايه •با فعال شدن اين پايه تمامي . رود اين پايه براي رست كردن ميكروكنترلر به كار كي

افزاري ميكروكنترلر از ابتدا آغاز به رجيسترها به مقدار اوليه تغيير حالت داده و برنامه نرماين پايه هنگام . گردد وده و با لبه پايين رونده فعال ميب Low Activeاين پايه . كار مي كند

باشد و هنگام نياز به ريست ) ولت5(عملكرد عادي ميكروكنترلر بايد در سطح باالي ولتاژ 2در قسمت سوم كتاب و آزمايش شماره. شدن ميكروكنترلر به سطح صف تغيير ولتاژ دهد

.ستمدار مناسب جهت توليد سيگنال ريست آورده شده ا AVCCپايه •

ADC، ماژول ATmega32همانطور كه پيشتر نيز بيان شد، يكي از امكانات جانبي AGNDو AVCCاين دو پايه . داراي دو منبع ولتاژ آنالوگ مجزااست ADC. باشد ميميكروكنترلر متصل شده GNDباشد و به مي31همان پايه شماره AGNDباشند كه مي

پس وظيفه . تفاوت داشته باشد VCC با مقدار 0,3شتر از نيز نبايد بي AVCCاست و AVCC مبدل 8تامين ولتاژ ADC براي كاهش نويز . باشد ميADC پايهAVCC معموال با

ADCبندي در بخش مربوط به پيكره. گردد متصل مي VCCگذر به پايه يك فيلتر پايينداخلي ADC هنگاميكه از ماژول اين پايه تنها. گردد توضيحات كامل در اين باره ارائه مي

.گردد، كاربرد دارد ميكروكنترلر استفاده مي AREFپايه •

. شود متصل AREF، ولتاژ مرجع خارجي در صورت وجود بايد به پايه ADCدر هنگام كار با توضيحات كامل ADCدرباره ولتاژمرجع خارجي نيز در بخش مربوط به پيكره بندي

.گردد مي ارائه ATmega32 خروجي - پايه ورودي32داراي)I/O (پايه هاي . باشد ميI/O واسط ارتباط

كليه ارتباطات ادوات خارجي با ميكروكنترلر از طريق . باشند ميكرو با محيط بيرون ميباشد و بيتي مي8يك ميكروكنترلر ATmega32ازآنجا كه .گردد برقرار ميI/Oهاي پايه

خروجي در كنار هم به - پايه ورودي8باشند، هر ي مي بيت8اغلب ثباتهاي داخلي آن نيز . شود اند كه به مجموع آنها پورت گفته مي اي از رجيسترهاي مرتبط متصل شده مجموعه

AVR - BOOK

Page 19: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

آزمايشگاه ميكروكنترلر

ATmega32 پورت 4داراي I/Oباشدكه ميPORTA ،PORTB، PORTC و PORTD روجيها زياد از آنجا كه در سيستمهاي كنترلي تعداد وروديها و خ. اند نامگذاري شده

براي . مناسب نيستI/O پايه ميكروكنترلر تنها به عنوان پورت 32باشد، اختصاص نميميكروكنترلر امكانات و كاربردهاي ديگري نيز در نظر گرفته هاي پورتهاي اين كليه پايه در هر زمان تنها در يك مد كاري مي توانند عمل كنند I/O پايه 32البته اين . شده است

شان بندي شوند ويا اينكه از كاربرد ديگر خروجي پيكره-ا بايد به عنوان ورودييعني ي I/O پايه 32 و ساير كاربردهاي I/O پورت 4در ادامه اين مبحث به معرفي . استفاده نمود

.شود اين ميكروكنترلر پرداخته مي

Aپورت گردند كه مي معرفيAهاي پورت به عنوان پايهATmega32 40 تا 33 پايه شماره 8

نحوه استفاده از اين پايه ها به . گرفته شوند توانند به صورت ورودي يا خروجي به كار مي .بندي پورتها آورده شده است عنوان ورودي و يا خروجي در بخش پيكره

Aكاربرد ديگر پورت كانال مبدل 8 پايه اين پورت 8برروي . شود نيز استفاده ميADC به عنوان Aپورت ADCها به عنوان بندي اين پايه توان با پيكره طراحي شده است كه ميADC از اين

ها به عنوان چنانچه اين پايه. ها براي تبديل سيگنال آنالوگ به ديجيتال استفاده كرد پايهI/Oتوان از آنها براي بندي گردند ديگر نمي پيكرهADCدر بخش . استفاده كرد و بالعكس

. ارائه شده استADCدرباره نحوه استفاده از مبدلهاي توضيحات كامل 6-5 Bپورت

. گردند مي استفاده B پورت I/Oهاي به عنوان پايه ATmega32 در 8 تا 1 پايه شماره 8توان به صورت جداگانه به عنوان ورودي ميAهاي اين پورت را نيز مانند پورت تمامي پايه

.و يا خروجي تعريف كرد Bرت كاربرد ديگر پو

• PB0(XCK,T0) كانتر شماره صفر استفاده شود، اين پايه -اگر از تايمر. دارد I/Oاين پايه دو كاربرد ديگر بجز بندي آنها و كانترها و پيكره-درباره نحوه استفاده از تايمر .باشد ورودي كالك اين ماژول مي

. توضيحات كامل ارائه شده است5-9مدهاي عملكردشان در بخش

AVR - BOOK

Page 20: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

آزمايشگاه ميكروكنترلر

USART، از اين پايه براي كالك خارجي USARTهنگام برقراري ارتباط سريال به صورت 6-5 و نحوه استفاده از آنها در بخش ATmega32درباره ارتباطات . گردد استفاده مي

.است توضيحات كامل ارائه شده• PB1(T1)

.باشد كانتر مي-، اين پايه ورودي كالك اين تايمر1كانتر شماره -هنگام استفاده از تايمر• PB2(INT2, AIN0)

اگر از مقايسه كننده آنالوگ داخلي استفاده شود، . دارد I/Oاين پايه نيز دو كاربرد ديگر بجز درباره نحوه استفاده از مقايسه كننده داخلي . باشد اين پايه ورودي مثبت مقايسه كننده مي

. توضيحات كامل ارائه شده است8-1در بخش درباره وقفه و . است2ين پايه، به عنوان ورودي منبع وقفه خارجي شماره كاربرد ديگر ا

. توضيحات كامل ارائه شده است6-5 د بخش ATmega32ها در نحوه استفاده از وقفه• PB3(OC0, AIN1)

هنگام استفاده از مقايسه كننده . باشد اين پايه آخرين پايه دو كاربردي اين پورت مي .باشد ي منفي مقايسه كننده ميداخلي، اين پايه ورود

كانتر شماره صفر در مد مقايسه استفاده شود، از اين پايه به عنوان خروجي -چنانچه از تايمر . گردد مقايسه استفاده مي

• PB4(SS) .باشد ، اين پايه ورودي ارتباط ميSLAVEو در دمد SPIدر ارتباط به صورت

• PB5(MOSI) MASTERبه عنوان ورودي داده و در حالت SLAVEالت و در ح SPIدر ارتباط به صورت

.رود به عنوان خروجي داده به كار مي• PB6(MISO)

به عنوان خروجي داده و در حالت SLAVEو در حالت SPIدر ارتباط به صورت MASTER رود به عنوان ورودي داده به كار مي.

• PB7(SCK) .است SPIتباط براي ار SLAVEو كالك ورودي MASTERكالك خروجي

Cپورت

.گردند مي استفاده C پورت I/Oهاي به عنوان پايه ATmega32 در 29 تا 21 پايه شماره 8 Cكاربرد ديگر پورت

• PC0(SCL) .گردد اين پايه به عنوان خط كالك استفاده مي WIRE -2در زمان ارتباط

AVR - BOOK

Page 21: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

آزمايشگاه ميكروكنترلر

• PC1(SDA) .گردد ه استفاده مي اين پايه به عنوان خط دادWIRE -2درزمان ارتباط

• PC2(TCK) در صورت . گردد كاربرد دارد و براي كالك ارتباط استفاده ميJTAGاين پايه در ارتباط

. قابل استفاده نيستI/O ديگر به عنوان GTAGاستفاده از اين پايه در ارتباط • PC3(TMS)

در . گردد فاده ميكاربرد دارد و براي تعريف حالت ارتباط است JTAGاين پايه در ارتباط . قابل استفاده نيستI/Oديگر به عنوان GTAGصورت استفاده از اين پايه در ارتباط

• PC4(TDO) . شود مي كار گرفته كاربرد دارد و به عنوان خروجي داده سريال به JTAGاين پايه در ارتباط

.استفاده نيست قابل I/O ديگر به عنوان GTAGدر صورت استفاده از اين پايه در ارتباط • PC5(TDI)

. شود مي كار گرفته كاربرد دارد و به عنوان ورودي داده سريال به JTAGاين پايه در ارتباط . قابل استفاده نيستI/Oديگر به عنوان GTAGدر صورت استفاده از اين پايه در ارتباط

• PC6(TOSC1) وPC7(TOSC2)

زمان كار كند، اين دو پايه وظيفه تامين در حالت غيرهم2كانتر شماره -زماني كه تايمركالك براي اين ماژول را بر عهده دارند و اين دو پايه بايد به مدار توليد كالك يا كريستال

.متصل شوند

Dپورت .گردند مي استفاده D پورت I/Oهاي به عنوان پايه ATmega32 در 21 تا 14 پايه شماره 8

Dكاربرد ديگر پورت • PD0(RXD) .رود كار مي به عنوان پايه دريافت كننده اطالعات بهUSARTين پايه در ارتباط ا• PD1(TXD)

.رود كار مي به عنوان پايه ارسال كننده اطالعات بهUSARTاين پايه در ارتباط • PD2(INT0)

ATmega32توان به اين پايه منبع وقفه خارجي صفر است و از اطريق اين پايه مي . خارج را ارسال كرددرخواست وقفه از

• PD3(INT1) ATmega32توان به اين پايه منبع وقفه خارجي يك است و از طريق اين پايه مي

. درخواست وقفه از خارج را ارسال كرد

AVR - BOOK

Page 22: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

آزمايشگاه ميكروكنترلر

• PD4(OC1B) در حالت مقايسه كننده استفاده 1كانتر شمار -چنانچه از تايمر. اين پايه دو كاربرد دارد

كاربرد ديگر اين پايه در كنترل . باشد وجي مقايسه كننده ميشود، اين پايه در نقش خرPWM اين پايه يكي از كانالهاي . باشد ميPWM باشد اين ميكروكنترلر مي.

• PD5(OC1A) .كند عمل مي PD4باشد و دقيقا مانند پايه اين پايه نيز دو كاربرده مي

• PD6(ICP) كانتر شماره -، اين پايه ورودي تايمرباشد CAPTURE در مد 1كانتر شماره -چنانچه تايمر

.شود مي1• PD7(OC2)

در مد مقايسه باشد، اين پايه به 2كانتر شماره -چنانچه تايمر. اين پايه نيز دو كاربرد داردهمچنين اين پايه يكي ديگر از كانالهاي . شود مي2كانتر شماره -عنوان خروجي تايمر

PWM باشد مي. . ليست شده استI/O پايه 32هاي ديگر تمامي كاربرد1-1در جدول شماره

Alternate functions PORT PIN

T0(Timer/counter0 external counter input) PB0 T1(Timer/conter1 external counterinput) PB1 AIN0(Analog Comparator positive input) PB2 AIN1(Analog comparator negative input) PB3

Ss(SPI Slave Select Input) PB4 MOSI(SPI Bus Master Output/Slave Input) PB5 MISO(SPI Bus Master Input/slave Output) PB6

SCK(SPI Bus Serial Clock) PB7 TOSC2(Timer Oscillator Pin 2) PC7 TOSC1(Timer Oscillator Pin 1) PC6

TDI(JTAG Test Data In) PC5 TDO(JTAG Test Data Out) PC4

TMS(JTAG Test Mode Select) PC3 TCK(JTAG Test Clock) PC2

SDA(Tow-Wire Serial Bus Data Input/Output Line) PC1 SCL(Tow-Wire Serial Bus Clock Line) PC0

OC2(T/C2 OUTPUT COMPARE MATCH OUTPUT) PD7 ICP(T/C 1 INPUT CAPTURE PIN) PD6

OC1A(T/C 1 OUTPUT COMPAREA MATCH OUTPUT PD5 OC1B(T/C1 OUTPUT COMPAREB MATCH OUTPUT PD4

INT1(EXTERNAL INTERRUPT 1 INPUT) PD3 INT0(EXTERNAL INTERRUPT 0 INPUT) PD2

AVR - BOOK

Page 23: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

آزمايشگاه ميكروكنترلر

TXD(UART OUTPUT LINE) PD1 RXD(UART INPUT LINE) PD0

اينجا روشهای پروگرام کردن بيان شود

AVR - BOOK

Page 24: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

۴

: BASCOMآموزش نرم افزار

: BASCOMمعرفی منوهاي محیط

: FILEمنوي

)FILE NEW(ایجاد فایل جدید

.با انتخاب این گزینه یک پنجره جدید که شما قادر به نوشتن برنامه در آن هستید ایجاد می شود

) OPEN FILE(ن فایل باز کرد

. با انتخاب این گزینه شما قادر به فراخوانی فایلی که در حافظه موجود است می باشید

BASCOM فایلها را بصورت استانداردASCII بنـابراین شـمکا مـی توانیـد از ویرایشـگري مثـل .ذخیره می کند

NOTEPAD ط انتقال دهیدبراي نوشتن برنامه استفاده کنید و سپس آنرا به محی.

) ( CLOSE FILEبستن فایل

آن را ذخیـره اگر در فایل تغییري ایجاد کرده اید ابتدا باید قبـل از بسـتن . این گزینه پنجره برنامه فعال را می بندد

.نمایید

( FILE SAVE) ذخیره فایل

.بود در کامپیوتر خواهید ASCIIبا این گزینه شما قادر به ذخیره فایل بصورت

( FILE SAVE AS)ذخیره کردن بعنوان

.با این گزینه قادر خواهید بود فایل موجود را با نام دیگر ذخیره کنید

( FILE PRINT PREVIEW)پرینت فایل نمایش

Page 25: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

۵

.این گزینه نشان می دهد که فایل متنی موجود برنامه در هنگام پرینت به چه صورت خواهد بود

( FILE PRINT)پرینت فا یل

.با این گزینه شما می توانید فایل موجود در برنامه را پرینت نمایید

) ( CLOSE FILEبستن فایل

خارج شوید ولی در صورتی که شما در برنامه تـان تغییـري BASCOMبا این گزینه شما قادر خواهید بود از محیط

.هدپیش از خروج هشدار مید, داده اید و آن را ذخیره نکرده اید

: EDITمنوي

EDIT UNDO

.با این گزینه شما می توانید دستکاري اخیرتان در برنامه را از بین ببرید

EDIT REDO

. با این گزینه شما می توانید دستکاري اخیرتان را که از بین برده بودید دوباره برگردانید

EDIT CUT

.ه و به محل جدیدي انتقال دهیدبا این گزینه شما می توانید متن انتخاب شده را برید

EDIT COPY

.با این گزینه شما می توانیدمتن انتخاب شده را کپی کرده و به محل جدیدي انتقال دهید

EDIT PAST

.کرده بودید در محل مورد نظر بچسبانید CUTیا COPYبا این گزینه شما می توانید متنی را که قبال

EDIT FIND

.می توانید متنی را در برنامه تان جستجو کنید با این گزینه شما

EDIT FIND NEXT

. با این گزینه شما می توانید متن مورد جستجو را دوباره جستجو نمایید

EDIT REPLACE

Page 26: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

۶

TEXT TO FINDبا این گزینه شما می توانید متنی را جایگزین متن موجود در برنامـه نماییـد یعنـی در قسـمت

متنـی را REPLACE WITHکه باید توسط متن دیگري جایگزین شود را تایپ کنید و در قسـمت متن مورد جستجو

.که باید جایگزین شود تایپ می کنیم

EDIT GOTO

.با این گزینه شما می توانیدمستقیما و به سرعت به خط دلخواهی بروید

EDIT TOGGLE BOOKMARK

نید در جاهاي خاصی از برنامه که مورد نظر شماست نشانه گذاري کنیـد و بـه با این گزینه شما می توانید شما می توا

دسترسی پیدا کنید EDIT GOTO BOOKMARKآنها توسط دستور دستور

EDIT GOTO BOOKMARK

.با این گزینه شما می توانید به نشانه هایی که قبال گذاشته اید

EDIT IDENT BLOCK

.به سمت راست منتقل کنید TABمتن انتخاب شده را به اندازه یک با این گزینه شما می توانید

EDIT UNIDENT BLOCK

.به سمت چپ منتقل کنید TABبا این گزینه شما می توانید متن انتخاب شده را به اندازه یک

: PROGRAMمنوي

PROGRAM COMPILE

برنامـه شـما بـا .خواهیـد بـود ) COMPILE(بـان ماشـین شما قادر به ترجمه برنامه بـه ز ) F7یا کلید (با این گزینه

OPTION COPILERذخیره خواهد شد و فایلهاي زیر به انتخـاب شـما در COMPILEانتخاب این گزینه پیش از

SETTING ایجاد خواهند شد:

XX.BIN فایل باینري که می تواند در میکروکنترلرPROGRAM شود.

XX.DBG فایلDEBUG اي نرم افزار شبیه ساز که برBASCOM مورد نیاز است.

XX.OBJ فایلOBJECT که براي نرم افزار AVR STUDIO مورد نیاز است.

Page 27: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٧

XX.RPT فایل گزارشی

XX.HEX فایل هگزادسیمال اینتل که براي بعضی از انواع PROGRAMMER ها مورد نیاز است.

XX.ERR ا ایجاد می شودفایل خطا که فقط در هنگام بروز خط.

XX.EPP داده هاي که باید درEPROM برنامه ریزي شود در این فایل نگهداري میگردند.

COMPILEاگر خطایی در برنامه موجود باشد شما پیغام خطا را در یک کـادر محـاوره اي دریافـت خواهیـد کـرد و

. ن رخ داده پرش خواهید کرد با کلیک بر روي هر کدام از انها به خطی که خطا در آ. متوقف میشود

PROGRAM SYNTAX CHECK

اگر خطایی وجـود داشـته باشـد هـیچ فـایلی .بوسیله این گزینه برنامه شما براي نداشتن خطاي امالیی چک می شود

.ایجاد نخواهد شد

PROGRAM SHOW RESULT

.میتوان استفاده کرد COMPILEنتیجه از این گزینه براي دیدن

. را بـراي تعیـین اینکـه کـدام فایلهـا بایـد ایجـاد شـوند را ببینیـد OPTION COMPILE OUTPUT گزینـه

.می باشند REPORT ERROR فایلهایی که محتواي آنها قابل مشاهده اند

PROGRAM SIMULATOR

بـا نوشـتن شـما در برنامـه .شبیه ساز داخلی فعال خواهد شد PROGRAMیا این گزینه از منو F2با فشردن کلید

در صورت تمایل شـما مـی توانیـد از شـبیه سـازي هـاي .قادر به شبیه سازي سریعتر برنامه میباشید SIM$کلمه کلیدي

فایـل . باید ایجاد شده باشـند OBJو DBJبراي شبیه سازي فایلهاي . نیز استفاده کنید AVR STUDIOدیگر مانند

OBJ در برنامه شبیه سازيAVR STUDIO و فایلDBJ براي شبیه ساز داخلی مورد استفاده قرار می گیرد.

SEND TO CHIP

شما می توانید توسط این گزینه میکرو مـورد .پنجره محیط برنامه ریزي ظاهر خواهد شد F4توسط این گزینه یا کلید

.کنید PROGRAMنظر خود را

: TOOLS منوي

Page 28: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٨

TERMINAL EMULATOR

می توانید از ایـن محـیط TERMINAL EMULATORبا باال آوردن CTR + T توسط این گزینه یا کلیدهاي

.بین میکرو و کامپیوتر استفاده نمایید RS-232براي نمایش داده ارسالی و دریافتی در ارتباط سریال

LCD DESIGNER

. هیدنمایش د LCDتوسط این گزینه می توانید کاراکترهاي دلخواه خود را طراحی نمایید و بر روي

GRAPHIC CONVERTOR

بـه BMP.*براي تبدیل تصویر بـا پسـوند GRAPHIC CONVERTORبا کلیک بر روي این منو پنجره محیط

.است ظاهر می شود GRAPHIC LCDکه قابل نمایش بر روي BGF.*تصویري با پسوند

آنرا در کنـار برنامـه SAVEکمه وارد کرده و سپس با د LOADتوسط دکمه BMP.*فایل دلخواه خود را با پسوند

فایـل تبـدیل شـده بصـورت سـیاه و سـفید .ذخیره کنید )BGF ) BASCOM GRAPHIC FILE.*خود با پسوند

فایل ذخیره شـده بـا فراخـوانی در . می توان از محیط خارج شد OKدوباره نمایش داده می شود و با کلیک بر روي دکمه

فونـت . انجام می گیـرد LCD TYPE توسط قسمت LCDانتخاب نوع . یکی است گراف LCDبرنامه قابل نمایش بر روي

.پیکسل باشد 8*8یا 8*6نوشتاري نیز می تواند

: OPTIONمنوي

:با این منو شما می توانید گزینه هاي مختلف کامپایلر را طبق زیر اصالح نمایید

OPTION COMPILER CHIP

در برنامـه REGFILE$در صـورتی کـه از دسـتور . ط این گزینه انجام می شود انتخاب میکرو براي برنامه ریزي توس

.استفاده کرده اید به انتخاب میکرو توسط این گزینه نیازي نیست

OPTION COMPILER OUTPUT

زینـه بـا انتخـاب گ . با این گزینه می توان فایل هایی که مایل به ایجاد آنهـا پـس از کامپایـل هسـتیم را انتخـاب کـرد

SIZE WARNING زمــانی کــه حجــمCODE از مقــدار حافظــه FLASH ROM تجــاوز کــرد کامپــایلر تولیــد

WARNING می کند.

OPTION COMPILER 12C,SPI,1WIRE

Page 29: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٩

.را تعیین کرد WIRE 1و 12C SPIتوسط این گزینه می توان پایه هاي مربوط به ارتباطات

OPTION COMPILER COMMUNICATION

ارتباط سزیال توسط این گزینه تعیین می شود که می توان یک نرخ جدیـد نیـز تایـپ ) BOUD RATE(ال نرخ انتق

.انتخاب فرکانس کریستال استفاده شده است که می تواند فرکانس اختیاري نیز باشد FREQUENCY گزینه. کرد

OPTION COMPILER LCD

:این گزینه داراي قابلیت هاي زیر می باشد

LCDمشـخص مـی کنـد BUS MODEگزینـه .را مشـخص مـی کنـیم LCDنـوع LCD TYPE در قسـمت

کـار کنـد PINبصـورت LCDتعیین می کنیم DATA MODEتوسط گزینه .بیتی کار می کند 4بیتی یا 8بصورت

.است BUS در مد LCDمشخص کننده آدرس LCD ADDRESSو گزینه BUSیا

.مکانات فوق در برنامه نیازي به تنظیم کردن آنها در این منو نیست در صورت پیکره بندي هر یک از ا

OPTION PROGRAMMER

. مورد نظر خود را انتخاب نمایید PROGRAMMERدر این منو شما می توانید

: )SIMULATOR(معرفی محیط شبیه سازي

:نوار ابزار در این محیط

RUN

.با فشردن این دکمه شبیه سازي آغاز می شود

PAUSE

.شبیه سازي ادامه پیدا می کند RUN باعث توقف موقت شبیه سازي می شود و با فشردن دکمه

STOP

.باعث توقف کامل شبیه سازي برنامه جاري می شود

STEP INTO CODE

Page 30: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١٠

تـه و مراحـل با استفاده از این دکمه می توان برنامه را خط به خط اجرا نمود و هنگام فراخوانی توابع به داخـل آنهـا رف

بعد از هر بار اجراي این دسـتور شـبیه .نیز می توانید انجام دهید F8 این کار را با فشردن کلید . اجراي آنها را بررسی کرد

.می رود PAUSEسازي به حالت

STEP OVER

نخواهیـد SUB ROUTINE این دکمه شبیه دکمه قبلی است با این تفاوت که در هنگام فراخوانی توابع به داخـل

.نیز انجام دهید SHIFT F8این کار را می توانید با فشردن کلید .رفت

RUN TO

خـط جـاري ( میـرود PAUSEشبیه سازي را تا خط انتخاب شده انجام میدهد و سپس به حالت RUN TOدکمه

) .باید شامل کدهاي قابل اجرا باشد

THE HARDWARE SIMULATOR شبیه سازي سخت افزاري

مجازي می باشـد کـه بـراي نشـان LCDکه قسمت باالیی یک . نجره اي ظاهر می شود ÷کلیک بر روي این گزینه با

هاي قرمز رنگ پایین خروجـی پورتهـا را نشـان مـی LEDنوار . استفاده می شود LCDدادن داده هاي فرستاده شده به

ورودي هستند وضعیت آن معکوس مـی شـود و روشـن هاي سبز رنگ که بعنوان LEDبا کلیک بر روي هر یک از . دهد

در ( )GETKBDیک صفحه کلید نیز تعبیه شـده اسـت کـه بـا دسـتور .بمنزله یک کردن پایه پورت است LEDشدن

در ضمن مقدار آنالوگ نیز هم براي مقایسه کننده آنـالوگ و هـم بـراي کانـال هـاي مختلـف . برنامه قابل خواندن می باشد

ADC است قابل اعمال.

REGISTERS

مقدارهاي نشان داده شده در این پنجـره هگزادسـیمال مـی . این دکمه پنجره ثباتها را با مقادیر قبلی نمایش می دهد

.باشد که براي تغییر هر کدام از آنها روي خانه مربوطه کلیک کرده و مقدار جدید را وارد کنید

I/O REGISTERS

.قابل مقدار دهی است Rکه مانند . می شود استفاده I\Oبراي نمایش ثباتهاي

VARIABLES

Page 31: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١١

در ENTERبـا فشـار دکمـه . میباشـید VARIABLESشما قادر به انتخاب متغیر با دو بار کلیک کردن در ستون

توسـط همچنین میتوانید مقدار هر متغیـر را . هنگام اجراي برنامه قادر به مشاهده مقدار جدید متغیر در برنامه خواهید بود

VALUE تغییر دهید.

براي تماشاي یک متغیر آرایه اي می توانید نام متغیر همراه با اندیس آنرا تایپ کنید و براي حذف هر سطر مـی توانیـد

.را فشار دهید CTRL+DELدکمه

WATCH

رار مـی گیـرد و این گزینه براي وارد کردن وضعیتی که قرار است در خالل شبیه سازي ارزیابی شـود مـورد اسـتفاده قـ

حالت مورد نظر را در مکـان . قرار خواهد گرفت PAUSEهنگامی که وضعیت مورد نظر صحیح شد شبیه سازي در حالت

فشـار MODIFY-BUTTONهنگامیکـه دکمـه . را فشار دهیـد ADD-BUTTONمورد نظر تایپ نموده و دکمه

براي حذف هر وضعیت شـما بایـد . میتوان ارزش آنرا تغییر داد وضعیت مورد نظر را مورد بازنگري قرار میدهد و, داده شود

.را فشار دهید REMOVEآنرا انتخاب کرده و دکمه

LOCAL

.البته نمیتوان متغیري را به آن اضافه نمود . را نشان میدهد FUNCTION یا SUBمتغیرهاي محلی موجود در

UP

هــا را میتــوان توســط کلیــک بــر روي FLAG. را نشــان میدهــد ) STATUS REG(وضــعیت ثبــات وضــعیت

CHECK BOX ها تغییر وضعیت داد.

INTERRUPTS

همـه دکمـه هـا غیـر فعـال , برنامـه نویسـی نشـده باشـد ISRهنگامیکه هیچ . این گزینه منابع وقفه را نشان میدهد

وقفـه , روي هـر کـدام از دکمـه هـا دکمه مربوط به آن فعال می شود و با کلیک بـر , نوشته شود ISRخواهند بود و اگر

.در ضمن میتوان روي یک پایه خاص پالس نیز ایجاد نمود . مربوطه اجرا می شود

Page 32: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١٢

: معرفی محیط برنامه ریزي

ISP STK PROGRAMMER

. انتخاب می شود ظاهر میگردد RUN PROGRAMMERپنجره ارسال برنامه به میکرو هنگامیکه

FILEمنوي

EXIT : محیط برنامه ریزي خروج از.

TEST : ایــن گزینــه تنهــا زمــانی مــی توانــد اســتفاده شــود کــه از . یــک کــردن پایــه هــاي پــورتSAMPLR

ELECTRONIC PROGRAMEEER استفاده شود.

BUFFERمنوي

BUFFER CLEAR :پاك کردن بافر.

LOAD FROM FILE : پر کردن بافر با فایل و برنامه ریزي آن در حافظه میکرو

SAVE TO FILE : بافر می تواند محتواي حافظه یک میکرو باشد . ذخیره بافر در فایل دلخواه.

CHIPمنوي

CHIP IDENTIFY : شناسایی میکرو متصل بهPROGRAMMER .

WRITE BUFFER TO CHIP : برنامه ریزي محتواي بافر در حافظهROM یاEEPROM .

READ CLIPCODE INTO BUFFER : داده حافظه کدي میکرو خواندن.

BLACK CHECK : خالی بودن حافظه میکرو را مشخص می کند.

ERASE : پاك کردن محتواي حافظه برنامه و دادهEEPROM .

VERIFY : این گزینه محتواي بافر و آنچه که در میکرو برنامـه ریـزي شـده اسـت را مقایسـه مـی کنـد و در صـورت

.اده می شود نمایش د VERIFY OKتساوي پیغام

AUTO PROGRAM : حافظه میکرو را پاك کرده و برنامه مـورد نظـر را در حافظـهFLASH برنامـه ریـزي مـی

.را به صورت خودکار انجام می دهد VERIFY کند و سپس عمل

RESET : میکرو متصل بهPROGRAMMER را ریست می کند .

Page 33: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١٣

: TERMINAL EMULATORمحیط معرفی

بین میکـرو و کـامپیوتر اسـتفاده RS-232می توان براي نمایش داده ارسالی و دریافتی در ارتباط سریال از این محیط

.نمود

اطالعاتی که در این محیط تایپ می شود به میکرو ارسال و اطالعاتی که از پورت کـامپیوتر دریافـت مـی شـود درایـن

پـس از , اسـتفاده مـی شـود SERIAL OUT و یا SERIAL INهنگامیکه در برنامه از . پنجره نمایش داده می شود

PROGRAM کردن برنامه درون میکرو و اتصال آن به پورت سریالPC , می توان داده هاي ارسـالی توسـطUART

همچنـین اگـر از دسـتوري ماننـد . میکرو به بیرون را دریافـت کـرده و نمـایش داد و از صـحت و سـقم آنهـا اطـالع یافـت

INKEY میتوان داده خـود را از طریـق پنجـره , مه استفاده شود در برناTERMINAL EMULATOR بـه میکـرو

.مشابه در میکرو و کامپیوتر استفاده نمایید BOUD RATEتوجه داشته باشید که از .ارسال نمود

: TERMINAL EMULATORمنوهاي محیط

FILE UPLOAD : برنامه جاري در فرمتHEX راUPLOAD میکند .

FILE ESCAPE : صرفنظر کردن ازUPLOAD کردن فایل.

FILE EXIT : خروج از برنامهEMULATOR .

TERMINAL CLEAR : پنجره ترمینال را پاك می کند.

SETTING : تنظیمات پورتCOM و دیگرOPTION ها توسط این منو صورت می گیرد

Page 34: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١۴

TERMINAL OPEN LOG : فایلLOG هنگامیکه فایـل .ته می کند را باز یا بسLOG وجـود نداشـته باشـد

پرینـت مـی شـود داخـل فایـل TERMINALتمام اطالعاتی که در پنجـره .درخواست نامی براي فایل گزارش می کند

LOG ثبت می شود.

: BASCOMدستورات و توابع محیط برنامه نویسی

BASCOMمحیط بدنه یک برنامه در

$REGFILE = VAR نـام چیـپ مـورد VAR. ابتدا بایـد میکـرو مـورد نظـر تعریـف گـردد BASCOMع یک برنامه در محیط براي شرو

.استفاده است که می تواند یکی از موارد زیر باشد

$regfile = “ At12def.dat “ ‘ATtiny12 MCU $regfile = “ At15def.dat “ ‘ATtiny15 MCU $regfile = “ At22def.dat “ ‘ATtiny22 MCU $regfile = “ At26def.dat “ ‘ATtiny26 MCU

$regfile = “ 2323def.dat “ ‘AT90s2323 MCU $regfile = “ 2333def.dat “ ‘AT90s2333 MCU $regfile = “ 2343def.dat “ ‘AT90s2343 MCU $regfile = “ 4414def.dat “ ‘AT90s4414 MCU $regfile = “ 4433def.dat “ ‘AT90s4433 MCU $regfile = “ 4434def.dat “ ‘AT90s4434 MCU $regfile = “ 8515def.dat “ ‘AT90s8515 MCU $regfile = “ 8535def.dat “ ‘AT90s8535 MCU $regfile = “ M8535.dat “ ‘MEGA 8535 MCU $regfile = “ M8515.dat “ ‘MEGA 8515 MCU

$regfile = “ M8def.dat “ ‘MEGA 8 MCU $regfile = “ M103def.dat “ ‘MEGA 103 MCU $regfile = “ M16def.dat “ ‘MEGA 16 MCU

$regfile = “ M163def.dat “ ‘MEGA 163 MCU $regfile = “ M161def.dat “ ‘MEGA 161 MCU $regfile = “ M32def.dat “ ‘MEGA 32 MCU

$regfile = “ M323def.dat “ ‘MEGA 323 MCU $regfile = “ M603def.dat “ ‘MEGA 603 MCU $regfile = “ M64def.dat “ ‘MEGA 64 MCU

$regfile = “ M128def.dat “ ‘MEGA 128 MCU $regfile = “ M128103.dat “ ‘MEGA 128 IN MEGA 103 MODE MCU

: کریستال

.ز دستور زیر استفاده می نماییم براي مشخص کردن فرکانس کریستال استفاده شده برحسب هرتز ا

Page 35: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١۵

$CRYSTAL = X

X فرکانس کریستال استفاده شده بر حسب هرتز است.

.این دستور را حتی براي زمانی که با اسیالتور داخلی میکرو کار میکنید بنویسید

مثال

$CRYSTAL = 14000000 ’14MHZ external osc

$CRYSTAL = 8000000 ’8MHZ external osc

$CRYSTAL = 1000000 ’1MHZ internal osc

: )اختیاري( اسمبلی و بیسیک

در صورت نیاز براي نوشتن برنامه اسمبلی در بین برنامه بیسیک از دستور زیر استفاده می نماییم

$ASM

ASSEMBLY PROGRAMME

$ENDASM

می توان در برنامه شروع به نوشتن برنامه موردنظر اسمبلی کرده و پـس از اتمـام برنامـه اسـمبلی بـا ASM$دستور با

.برنامه اسمبلی را به پایان رساند و به نوشتن ادامه برنامه پرداخت ENDASM$دستور

مثال

Dim c As Byte

Loadadr c,x ‘load address of variable c into register x

$Asm ‘start assembly program

Ldi r24,1 ‘load register R24 with the constant 1

St x,R24 ‘store 1 into var c

$End Asm ‘end of assembly program

Print c ‘send c to serial port

End

.گاهی نیاز است یادداشتهایی براي اطالعات بیشتر در برنامه اضافه شود

REMیا ‘

Page 36: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١۶

شتها و نوشته هاي بعد از این دستور غیر فعال بوده و در برنامه براي یادداشت به کار می رود و کامپایل نخواهد شـد ایاد

.و همچنین به رنگ سبز در می آیند

.براي اتمام متن یادداشتی استفاده نمایید (‘و از )‘وع همچنین می توان از دو عالمت براي شر

مثال

REM this sentence will not be compiled Or ‘ this sentence will not be compiled

مثال

‘( start block comment This will not be compiled ‘) end block comment

: )اختیاري( FLASHریزي حافظه آدرس شروع برنامه

.قرار دهید FLASHROMگاهی نیاز است که برنامه خود را از آدرسی دلخواه در حافظه

$ROMSTART = ADDRESS ADDRESS مکانی از حافظه است که برنامهHEX شروع بـه نوشـته شـدن , از این آدرس در حافظه میکرو کنترلر

.را در نظر می گیرد H0000&ر استفاده نشود کامپایلر به طور خودکار آدرس در صورتی که ازاین دستو. می شود

مثال

$ROMSTART = &H4000 بـه صـورت MEGA603یـا MEGA103 از جملـه MEGA AVRبا این دستور در بعضی از میکروهاي سـري

.رف تغذیه استفاده می شود تقسیم کالك بطور مثال براي کاهش مص.نرم افزاري می توان کالك سیستم را تغییر داد

CLOCKDIVISION = var Var می تواند باشد 128تا 2مقادیر معتبر بین اعداد.

ممکـن اسـت درسـت دستوراتی که مستقیما با کالك سیستم کار می کنند , اگر از این دستور استفاده نمایید

. کار نکنند

مثال

$boud = 2400 Clockdivision = 2 Print “Hello” End

END : پایان برنامه

با این دسـتور تمـام وقفـه هـا غیـر فعـال . این دستور در انتهاي برنامه قرار می گیرد و اجراي برنامه را متوقف می کند

.اتمه می یابد شده و یک حلقه بی نهایت تولید و برنامه خ

مثال

PRINT “ Hello” ‘print this END ‘ end program execution and disable all interrupt

Page 37: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١٧

: LOOKUPاعداد و متغیر ها و جداول

دیمانسیون متغیرها...LOOKUPاعداد و متغیر ها و جداول

با این دستور می توانید متغیرهایی که در برنامه به کار برده می شـوند تعریـف . میدهد این دستور بعد یک متغیر را نشان

.کنید

DIM var AS [ XRAM/SRAM/ERAM ] data type [AT location ] [OVERLAY] VAR در صورت استفاده از حافظه جانبی آنرا با . نام متغیري که در برنامه بکار برده میشودXRAM مشـخص کنیـد

متغیر مـورد نظـر را ERAMقرار دهید و SRAMرا زمانی اختیار کنید که می خواهید متغیرها را در حافظه SRAMو

STRING ,WORD نوع داده است که می توانـد طبـق جـدول زیـر Data type. داخلی جاي میدهد EEROMدر

,LONG ,INTEGER ,BYTE, BIT یا SINGLE باشد.

متغیـر OVERLYگزینـه اختیـاري .بیشترین طول آن نیز باید نوشـته شـود , STRINGمتغیر در صورت استفاده از

.در نظر میگیرد و فضایی را براي متغیر در نظر نمی گیرد POINTER تعریف شده را بصورت

AT LOCATION به شما اجازه میدهد که متغیرتان را در آدرسی که میخواهید در حافظه ذخیـره کنیـد زمـانی کـه

.اولین جاي خالی در حافظه استفاده می شود , محل آدرسدهی اشغال باشد

:جدول انتخاب نوع داده

VALUE RANGE STORE AS DATA TYPE 0 OR 1 A BIT BIT

0 TO 255 UNSIGNED 8 BITS BYTE

-32767 TO 32767 SIGNED 16 BITS INTEGER

0 TO 65535 UNSIGNED 16 BITS WORD

-214783648 TO 214783647 SIGNED 32 BITS LONG

1.5 *10^-45 TO 3.4*10^38 UNSIGNED 32 BITS SINGLE

- 0-245 BYTES STRING

مثال

DIM B AS BIT ‘BIT can be 0 or 1 DIM A AS BYTE ‘BYTE range from 0 - 255 DIM K AS INTEGER AT 120 ‘you can specify the address of the ‘variable .

The next dimensioned variable will be placed after A نشان دهید B&را با عالمت BINARYو عدد H&را با عالمت HEXعدد

مثال

A= &H01DE ‘HEX NUM

Page 38: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١٨

B= &B01011011 ‘BIN NUM

مثال

DIM B1 AS BYTE AT $60 OVERLY

:براي تعریف یک ثابت از این دستور استفاده می شود

CONST SYMBOL= NUMCONST CONST SYMBOL= STRINGCONST CONST SYMBOL= EXPRESSION

SYMBOL نام ثابت وNUMCONST اب یافتـه بـه مقدار عـددي انتسـ SYMBOL ,STRINGCONST

انتسـاب SYMBOLمیتواند عبارتی باشد کـه نتیجـه آن بـه EXPRESSION و SYMBOLرشته انتساب یافته به

.یابد

مثال

CONST S = “TEST” CONST A = 5 CONST B1 =&B1001 CONST X = (B1 * 3 ) + 2

: ALIASدستور

.غیر استفاده می شود از این دستور براي تغیر نام مت

مثال

DIRECTION ALIAS PORTB.1 .استفاده نمایید DIRECTIONاز متغیر PORTB.1حال شما می توانید بجاي

SET DIRECTION ‘is equal with SET PORTB.1

: CHRدستور

زمانی که قصد دارید یـک کـاراکتر بـر . استفاده می شود از این دستور براي تبدیل متغیر عددي یا یک ثابت به کاراکتر

.نمایش دهید از این دستور می توانید استفاده نماتید LCDروي

بـه VARکـاراکتر اسـکی PRINT CHR ( VAR )در صورتیکه از این دستور به ایـن صـورت اسـتفاده نماییـد

.پورت سریال فرستاده خواهد شد

مثال

DIM a AS Byte ‘dim variable A = 65 ‘assign variable Print a ‘print value ( 65 ) Print HEX( a ) ‘print hex value (41) Print Chr ( a ) ‘print ASKII character 65 (A ) End

: INSTR دستور

.ین دستورمحل و موقعیت یک زیر رشته را در رشته دیگر مشخص می کند ا

Page 39: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

١٩

Var =Instr (start , String ,Subset ) Var =Instr (String ,Subset )

Var عددي است که مشخص کننده محلSUBSTR در رشته اصلی STRING مـی باشـد و زمانیکـه زیـر رشـته

نیز عددي دلخواه است که مکـان شـروع جسـتجو START.می شود مشخص شده در رشته اصلی نباشد صفر برگردانده

. قید نشود تمـام رشـته از ابتـدا جسـتجو مـی شـود STARTدر صورتیکه . زیر رشته در رشته اصلی را مشخص می کند

.می تواند رشته و عدد ثابت هم باشد ( SUBSTR)رشته اصلی تنها باید از نوع رشته باشد ولی زیر رشته

مثال

DIM S AS String * 15, Z As String * 5 DIM Bp As Byte

S = “This is a test “ Z= “is”

Bp = Instr (S , Z ) : Print Bp ‘should print 3 Bp = Instr (4 , S ,Z ) : Print Bp ‘should print 6

End

: INCRستور د

.می افزاید VARمتغیر عددي دستور یک واحد به این

INCR VAR

مثال

DO ‘ start loop

Incr A ‘ increment A by 1 A=A+1 Print A ‘ print A

Loop Until A>10 ‘ repeat until A is greater than 10

: DECRدستور

.را یک واحد کم می کند VARدستور متغیر ن ای

DECR VAR

مثال

Dim A As Byte A = 5 ‘ assign value to a Decr A ‘ decrement by one A= A-1 Print A ‘ print A =4 End

: CHECKSUMدستور

Page 40: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢٠

را برمی گرداند که البته اگر مجموع کـد اسـکی VARمجموع کد دسیمال اسکی رشته دستور این

.از مجموع کم می شود 256بیشتر شود مقدار 255رشته از عدد

مثال

Dim S As String*10 ‘ Dim Variable S = “test” ‘ assign Variable Print Checksum (S) ‘ print value (192 ) S = ‘test next “ ‘ assign variable Print Cecksum(S) ‘ Print value 127 (127=383 – 256 )

: LOWدستور

.یک متغیر را برمی گرداند LSB (least significant byte )دستور این

Var = LOW ( s) LSB متغیرS درVar قرار می گیرد.

مثال

Dim I As Integer , Z As Byte I = &h1001 Z = LOW (I ) ‘ is 1 End

: HIGHدستور

.ک متغیر را برمی گرداند ی MSB (most significant byte )دستور این

Var = HIGH ( s) MSB متغیرS درVar قرار می گیرد.

مثال

Dim I As Integer , Z As Byte I = &H1001 Z = HIGH (I ) ‘ Z is 16 z = &H10 I = &H1101 Z = HIGH (I ) ‘Z is 17 z = &H11 I = 1012 Z = HIGH (I ) ‘I = &H3F4 z is 3 End

Page 41: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢١

: LCASEدستور

.دستور تمام حروف رشته مورد نظر را تبدیل به حروف کوچک می کند این

Target = Lcase (source)

.جاي داده می شود targetکوچک شده و در رشته sourceتمام حروف رشته

مثال

Dim S As String * 12 , Z As String * 12 S = “Hello World “ Z = Lcase (S ) ‘Z = hello world Print Z End

: UCASE دستور

.دستور تمام حروف رشته مورد نظر را تبدیل به حروف بزرگ می کند این

Target = Ucase (source)

.جاي داده می شود targetبزرگ شده و در رشته sourceتمام حروف رشته

مثال

Dim S As String * 12 , Z As String * 12 S = “Hello World “ Z = Ucase ( s ) ‘Z = HELLO WORLD Print Z End

: RIGHTدستور

.دستورقسمتی از یک رشته را جدا می کنیم با این

Var = RIGHT (var1 , n )

.قرار می گیرد varرشته اي جدا شده و در رشته , n به تعداد کاراکتر var1 از سمت راست رشته

مثال

Dim S As String * 15 , Z As String * 15 S = “ABCDEFG “ Z = Right( s , 2) ‘Z = FG Print Z End

Page 42: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢٢

: LEFTدستور

.دستور کاراکترهاي سمت چپ یک رشته را به تعداد تعیین شده جدا می کند با این

Var = LEFT(var1 , n ) .قرار می گیرد varرشته اي جدا شده و در رشته , n به تعداد کاراکتر var1 از سمت چپ رشته

مثال

Dim S As String * 15 , Z As String * 15 S = “abcdefg “ Z = Left( s , 5) ‘Z = abcde Print Z Z = Left( s , 1) ‘Z = a Print Z End

: LENدستور

.دستور طول یا بعبارتی تعداد کاراکترهاي یک رشته را برمیگرداند این

Var = Len(string ) بایـت طـول داشـته 255نهایتا مـی توانـد stringرشته . قرار می گیرد VARر عددي در متغی stringطول رشته

.خود یک کاراکتر به حساب می آید (SPACE BAR)توجه داشته باشید که فضاي خالی . باشد

مثال

Dim S As String * 12 Dim A As Byte S = “test “ A= Len(S ) Print A ‘Print 4 Print Len (S ) ‘Print 4 S=“test “ A = Len ( A ) Print A ‘Print 5

: LTRIMدستور

.دستور فضاي خالی یکرشته را حذف می کند این

Var = LTRIM( org ) .قرار می گیرد varاشته می شود و رشته بدون فضاي خالی در متغیر رشته اي برد orgفضاي خالی رشته

مثال

Dim S As String * 10 S = “ AB “ Print LTRIM( s ) ‘AB S = “ A B “ Print LTRIM( s ) ‘A B End

Page 43: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢٣

: SWAPدستور

SWAP var1 , var2

.قرار می گیرد var1در متغیر var2و محتواي متغیر var2 در متغیر var1دستور محتواي متغیر ا اجراي این ب

.بایستی از یک نوع باشند var2و var1دو متغیر

مثال

Dim A As Integer , B1 As Integer A = 1 :B1 = 2 ‘assign two integer SWAP A , B1 ‘swap them Print A ‘ prints 2 Print B1 ‘ prints 1 End

: MIDدستور

رشته را با قسمتی از یک رشـته دیگـر عـوض با این دستور می توان قسمتی از یک رشته را برداشت و یا قسمتی از یک

.کرد

1- Var = Mid(var1,St[,L] 2- Mid(var , St[,L] = Var

.قرار می گیرد varبرداشته شده و در متغیر Lام و طول stبا شروع از کاراکتر var1قسمتی از رشته -1

.می گیرد قرار Lام و طول Stبا شروع از کاراکتر varدر رشته var1رشته -2

.بیشترین طول در نظر گرفته می شود , Lدر صورت قید نکردن گزینه اختیاري

مثال

Dim A As XRAM String *15 , Z As XRAM String *15 S = ‘ABCDEFG” Z = Mid(S,2,3) Print Z ‘BCD End

: ROTATEدستور

ه چپ یا راست منتقل می کند ولی تمام بیتها محفوظ هسـتند و هـیچ بیتـی بیـرون فرسـتاده دستور زیر تمام بیتها را ب

.نمی شود

ROTATE var ,LEFT/RIGHT [,shifts]

Var مـی توانـد داده اي از نـوع LONG,WORD ,INTEGER , BYTE باشـد .LEFT/RIGHT جهـت

در صورت قید نشـدن مقـدار یـک در . مشخص می کند که اختیاري می باشد تعداد چرخش بیتها را shiftچرخش بیتها و

.نظر گرفته می شود

مثال

Dim A As Byte A = 128

Page 44: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢۴

Rotate A, Left ,2 Print A ‘a=2

: SPACEدستور

.براي ایجاد فضاي خالی ازاین دستور استفاده می شود

Var = SPACE (x )

X تعداد فضاي خالیست که بعنوان رشته در متغیر رشته ايvar جاي می گیرد.

مثال

Dim S As String *15 S = Space (5) Print ““ ;S ;”” ‘ 5space Print ““ ; Space(6) ; “” ‘ 6 space End

: FORMATتابع

.این دستور یک رشته عددي را شکل دهی می کند

target = Format (source , “mask”) source رشته اي است که شکل دهی شود و نتایج درtarget قرار می گیرد.mask نوع شکل دهی است.

مثال

Dim S As String *10, I As Integer S = “ 123 “ S= Format (s, “ “) ‘5 space Print S ‘s=“ 123” two space first ,then 123 S =“12345” S = Format(s , “000.000”) Print S ‘s =“012.345 S = Format(s , “ + ”) Print S ‘s =“+12345 End

: FUSINGتابع

.از این دستور براي روند کردن رشته هاي عددي استفاده می شود

target = Fusing (source , “mask”) source رشته موردنظر براي شکل دهی و نتایج درtarget قرار مـی گیـرد.mask عمـل . نـوع شـکل دهـی اسـت

mask بـا اسـتفاده از . را بعد از ممیز داشته باشد &یا #ید یکی از عالمات شروع شود و حداقل با #حتما باید با عالمت#

.روندي صورت نمی گیرد &عدد روند می شود و در صورت استفاده از

مثال

Dim S As Single,Z As String*10 S = 123.45678 Print Fusing(S , .”#.# #”) ‘Print 123.46 Print Fusing(S , .”#.& #”) ‘Print 123.45

Page 45: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢۵

End : LOOKUPجدول

.توسط این جدول می توان مقدار دلخواهی را از جدولی برگرداند

var = LOOKUP(value , label )

Label برچسب جدول وvalue داده برگشـتنی از جـدول در متغیـر . اندیس داده دلخواه استvar قـرار مـی گیـرد

.value =0 و 255تعداد اندیس ها و مقدار داده برگشتی به ترتیب نهایتا مـی توانـد . اده در جدول را برمی گرداند اولین د

.باشد 65535

.پایان یابد % داده دو بایتی داخل جدول بایستی با عالمت

مثال

Dim B1 As Byte, I As Integer B1= lookup(2 , Dta) Print B1 ‘Print 2 (zero based ) I = lookupstr( 0, Dta2 ) Print I ‘Print 1000 Dta: Data 1 , 2 , 3, 4 , 5 Dta2: Data 1000% , 2000% : LOOKUPSTRجدول

.توسط این جدول می توان رشته دلخواهی را از جدولی برگرداند

var = LOOKUPSTR(value , label ) Label برچسب جدول وvalue رشته برگشتنی از جـدول در متغیـر رشـته اي . اندیس رشته دلخواه استvar قـرار

.باشد 255تعداد اندیس ها نهایتا می تواند . اولین رشته در جدول را برمی گرداند value =0.می گیرد

مثال

Dim S As String*4 , Idx As Byte Idx = 0 : S = lookupstr( idx , Sdata ) Print S ‘ This End Sdata: Data “This” , “is” , “a test”

Page 46: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢۶

: توابع ریاضی و محاسباتی

:عملگرهاي ریاضی

اسـتفاده BASCOMمـی توانیـد در محـیط زیراز عملگرهاي ریاضی

.نماییدو عملیات ریاضی خود را انجام دهید

طقیعملگرهاي من

:به قرار زیر است BASCOMعملگر هاي منطقی

مثال

A = 63 and 19 Print A ‘’19 print

: ABSتابع

.است ) قدرمطلق( |VAR = |VAR2این دستور به معناي ریاضی

مثال

Dim A As Integer , C As Integer A = -1000 C = ABS (A) ‘c=|a| Print C ‘C= 1000 End

نماد عالمت

* عالمت ضرب

+ عالمت جمع

- عالمت تفریق

. عالمت ممیز

/ عالمت تقسیم

عالمت کوچکتر

از

<

= عالمت تساوي

گتـر عالمت بزر

از

>

^ عالمت بتوان

عالمت کوچکتر

یا مساوي

=>

عالمت بزرگتـر

یا مساوي

<=

<> عالمت مخالف

نماد معرفی

CONJUNCTION AND

DISJUNCTION OR

EXCLUSIVE OR

XOR

COMPLIMENT NOT

Page 47: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢٧

: EXPتابع

Target = Exp (source) Target برابر با e بتوان source است .Target نوع داده متغیري ازSINGLE است.

مثال

Dim X As Single X= Exp( 1.1) Print X ‘Print 3.004166124 X = 1.1 X= Exp( X) Print X ‘Print 3.004166124 End

: LOG10تابع

Target = Log10 (source) هـر دو داده نـوع sourceو Target. قـرار مـی گیـرد targetدر متغیـر sourceمتغیر یا ثابـت 10گاریتم پایه ل

single هستند.

مثال

Dim S1 As Single, S2 As Single S1 = 0.01 S2 = Log10(S1) Print S2 For S1=1 to 100 S2 = Log10(S1) Print S1 ;” “ ;S2 NEXT End

: LOGتابع

.را برمی گرداند SINGLEاین دستور لگاریتم طبیعی یک داده از نوع

Target = Log (source) قرار می گیرد targetودر متغیر .گرفته می شود singleاز نوع داده sourceلگاریتم متغیر یا ثابت

مثال

Dim X As Single X = Log(100) ‘4.605170 Print X End

: RNDتابع

.این دستور یک عدد تصادفی برمی گرداند

VAR= RND (limit)

Page 48: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢٨

با هربار استفاده از این دسـتور عـدد مثبـت . قرار می گیرد varبدست آمده و در متغیر limitو 0 عدد تصادفی بین

.یگري بدست خواهد آمد تصادفی د

limit باید یک عدد مثبت باشد.

مثال

Dim X As Integer Do I = Rnd (100) ‘get random number Print I Wait 1 Loop End

: ROUND تابع

Var =ROUND( x) .قرار می گیرد SINGLEاز نوع داده VARروند شده و در متغیر SINGLEاز نوع Xمتغیر یا داده

مثال

Round(2.3) =2 ; Round(-2.3)= -2 Round(2.8)=3 ; Round(-2.8)= -3

:تبدیل کدها و متغیرها به یکدیگر

: ASCدستور

Var = ASC (string)

.تبدیل می کند را به مقدار اسکی آن STRINGاین دستور اولین کاراکتر یک متغیر از نوع داده

مثال

Dim A As Byte , S As string S= “ABC” A = ASC(s) Print A ‘will print 65 End

: HEXدستور

Var = Hex (x) .را به مقدار هگزادسیمال تبدیل می کند BYTE,INTEGER , WORD , LONGاین دستور یک داده از نوع

.جاي می گیرد VARدر متغیر X متغیر یا ثابت HEXمقدار

مثال

Dim A As Byte , S As string*10 A= 123 S= Hex(A) Print S ‘7B will print Print Hex(A) ‘7B will print too

Page 49: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٢٩

End : HEXVALدستور

Var = HexVal (x)

.این دستور یک داده هگزدسیمال را به مقدار عددي تبدیل می کند

باشـد در متغیـر LONG , WORD , INTEGER , BYTEکـه مـی توانـد Xمقدار عـددي داده هگزدسـیمال

VAR جاي می گیرد.

مثال

Dim A As Integer , S As string*15 S= “0A” A = Hexval (S) Print A ‘10 will be print End

: MAKEBCDدستور

Var1 = MAKEBCD (Var2) جاي می دهد var1اش می کند و در متغیر BCDرا تبدیل به مقدار var2این دستور متغیر یا ثابت

مثال

Dim A As Byte A = 65 A = Makebcd (A) Lcd A ‘101 will show End

: MAKEDECدستور

Var1 = MAKEDEC (Var2) ــک داده ــدیل ی ــراي تب ــوع BCDب ــدار INTEGER , WORD , BYTEن ــه مق ــن DECIMALب از ای

.جاي می گیرد var1در متغیر var2مقدار دسیمال متغیر یا ثابت .دستوراستفاده می شود

مثال

Dim A As Byte A = 65 Lcd A Lowerline Lcd Bcd (A) A = Makedec (A) ‘ A = 101 Lcd “ “;A End

: MAKEINTدستور

Varn = MAKEINT (LSB , MSB)

بایـت کـم LSBکه می سازد INTEGERیا WORDاین دستور دو بایت را به هم متصل می کند و یک داده نوع

.را تشکیل می دهد Varnبایت پر ارزش متغیر دو بایتی MSBارزش و

Page 50: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣٠

Varn = (256*MSB )+LSB

مثال

Dim A As Integer, I As Integer A = 2 I = Makeint (A , 1) ‘(1*256)+2 =258 End

: STRدستور

Var = STR (X ) .تبدیل کرد (VAR)را به رشته (X )غیر عددي با این دستور می توان یک مت

مثال

Dim A As Byte , S As String*10 A = 123 ‘ A is a num S= Str (A ) ‘now A is a string Print S End

: VALدستور

Var = VAL (S ) .تبدیل کرد (VAR)را به متغیر عددي (S)با این دستور می توان یک رشته

مثال

Dim A As Byte , S As String*10 S= “123” ‘now S is a string A = Val(S) ‘convert string to num Print A A = A*2 ‘now you can use it as a num Print A ‘ 246 Prints End

: STRINGدستور

Var = STRING (m , n ) در صـورت قـرار . قـرار مـی دهـد varدر متغیـر تبدیل به رشته کرده و nرا با تعداد تکرار mاین دستور کد اسکی

.قابل قبول نیست n = 0قرار دادن .کاراکتر تولید می شود و 255یک رشته بطول m =0دادن

مثال

Dim S As String*15 S= String (5 , 65 ) Print S ‘AAAAA End

: BIN2GREYدستور

Var1 = BIN2GREY (Var2 )

Page 51: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣١

باشد بـه کـد گـري تبـدیل WORD , INTEGER , BYTE , LONGکه می تواند داده اي از نوع var2متغیر

.قرار می گیرد VAR1شده و در متغیر

مثال

Dim B As Byte For B = 0 To 15 Print Bin2grey (B ) ‘0 1 3 2 6 7 5 4 12 13 15 … Next End

: GREY2BINدستور

Var1 = grey2bin (Var2 ) , WORDکــه مـی توانــد داده اي از نـوع var1بــه مقــدار بـاینري تبــدیل شـده و در متغیــر var2کـد گــري

INTEGER , BYTE , LONG باشد قرار می گیرد.

مثال

Dim B As Byte For B = 0 To 15 Print Grey2bin (B ) ‘0 1 3 2 7 6 4 5 15 14 … Next End

:رجیسترها و آدرس هاي حافظه

خود هستند CPUهمه منظوره در ( R0 –R31)بیتی 8رجیستر 32داراي AVRتمام میکروهاي

R26(LSB)بــا R27(MSB) و R28(LSBبـا R30(LSB) ,R29(MSB)بــا R31(MSB)رجیسـترهاي

.را می دهند X,Y,Zبیتی با ترتیب با نامهاي 16تشکیل سه رجیستر

: SETدستور

Set Bit/Pin Set Var.x

.توسط این دستور می توان یک بیت را یک کرد

Bit ــا یــک , BYTEیــري از نــوع داده متغ Varباشــدو PORTB.1ماننــد SFRمــی توانــد یــک بیــت و ی

INTEGER , WORD , LONG باشد .X بـرايBYTE بـراي 15تـا 0, 7تـا 0مـی توانـد WORD و بـراي

LONG باشد 31تا 0می تواند.

مثال

Dim B1 As Bit , B2 As Byte , C As Word , L As Long Set Portb.1 ‘set bit 1 of port B Set B1 ‘bit variable Set B2.1 ‘set bit 1 of var b2 Set C.15 ‘set highest bit of word Set L.31 ‘set MS bit of LONG

: TOGGLEدستور

Page 52: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣٢

.این دستور مقدار منطقی یک پایه یا یک بیت را معکوس می کند

TOGGLE pin/bit PIN می تواند یکSFR مانندPORTB.1 و یا یک بیت باشد.

مثال

Dim A As Byte Config Pinb.0 = output ‘portb.0 is an output now Toggle portb.0 ‘toggle state Waitms 1000 ‘wait for 1 second Toggle Portb.0 ‘toggle state again

: RESETدستور

. توسط این دستور می توان یک بیت را صفر کرد

RESET pin/bit RESET Var.x

Bit ــا یــک , BYTEمتغیــري از نــوع داده Varباشــدو PORTB.1ماننــد SFRمــی توانــد یــک بیــت و ی

INTEGER , WORD , LONG باشد .X بـرايBYTE بـراي 15تـا 0, 7تـا 0مـی توانـد WORD و بـراي

LONG باشد 31تا 0می تواند.

مثال

Dim B1 As Bit , B2 As Byte , I As Integer reset Portb.3 ‘reset bit 3 of port B reset B1 ‘bit variableres reset B2.0 ‘reset bit 0 of var b2 reset I.15 ‘reset highest bit of I

: BITWAITدستور

BITWAIT X, SET/RESET

شـود در خـط جـاري متوقـف RESET (= 0 )یا SET( = 1) ,Xتوسط این دستور اجراي برنامه تا زمانی که بیت

داخلـی می تواند یک بیت رجیسـتر X. اجراي برنامه از خط بعد ادامه می یابد , شدن شرایط TRUEدر صورت .می ماند

.تغییر کند 7می تواند بین اعداد صفر تا Yباشد که PORTB.Y مانند

مثال

Dim A As Bit Bitwait A , Set ‘ wait until Bit A is Set Bitwait PortB.7 , reset ‘ wait until Bit 7 of Port B is 0

: CPEEKدستور

Var = CPEEK(address) بـا ایـن دسـتور .از این دستور براي برگرداندن بایتی که در ادرسی از حافظه کدي ذخیره شده است استفاده می کنـیم

. البته با این دستور نمی توان در حافظه داخلی چیزي نوشت . می توانید به رجیسترهاي داخلی نیز دسترسی پیدا کنید

مثال

Page 53: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣٣

Dim I As Integer , B1 As Byte For I = 0 To 31 B1 = Peek (I ) ‘ only 32 registers in AVR Print Hex (b1) ‘ get byte from internal memory (r0-r31) Next

: CPEEKHدستور

Var = CPEEKH(address) یـا MEGA103میکـرو ( FLASH MEM)باالي حافظه کدي با این دستور می توان بایت ذخیره شده در صفحه

.حافظه است را خواند K 128دیگر میکروها که داراي

ADDRESS آدرس حافظه و محتواي آدرس در متغیر یک بایتVAR قرار می گیرد.

Cpeek( 0) 64محتواي اولین بایت حافظه باالي K را برمی گرداند.

: LOADADRدستور

LOADADR var ,reg متغیري اسـت کـه آدرس آن در Var. با این دستور می توانید آدرس یک متغیر را در یک جفت رجیستر ذخیره کنید

. هستند X,Y, Zرجیسترهاي REGذخیره می شود و X,Y,Zمتغیرهاي دوبایتی

.این دستور جز دستورات اسمبلی است و براي کمک به برنامه نویسان اضافه شده است

مثال

Dim S As String ,A As Byte $asm Loadadr S , X ‘load address into R26 and R27 ld _temp1 , X ‘load value of location R26/R27 into ‘R24 ( _temp1) $end asm End

OUTدستور

OUT address , value .خارجی ارسال کرد /توسط این دستور می توان یک بایت به یک پورت سخت افزاري یا آدرس حافظه داخلی

Value به آدرسaddress 0که می تواند بینH – FFFF H دستور . باشد فرستاده می شودOUT مـی توانـد در

. تعریف می شود WORDیک addressکنید که براي توجه. بنویسد AVRتمام مکانهاي حافظه

مثال

Dim A As Byte Out &H8000 , 1 ‘send 1 to the databus (d0 – d7) at address 8000 End

: INPدستور

Var = INP (address)

.ند خارجی خوا/توسط این دستور می توان یک بایت از پورت سخت افزاري یا آدرس حافظه داخلی

Page 54: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣۴

قـرار مـی گیـرد varباشـد خوانـده شـده و در متغیـر 0H – FFFF H که می تواند بـین addressمحتواي آدرس

.بخواند AVRمی تواند از تمام مکانهاي حافظه INPدستور .

مثال

Dim A As Byte A = INP (&H8000 ) ‘read value is placed on databus(d0 – d7) at

‘address 8000

Print A End

: PEEKدستور

Var = PEEK (address)

. این دستور محتواي یک رجیستر را برمی گرداند

Address آدرس رجیسترهايR0 – R7 محتواي رجیستر در متغیـر .می باشد 31 - 0 است که بینvar جـاي

می تواند از تمام مکانهاي حافظـه ( )INPط می تواند محتواي رجیسترها را بخواند ولی فق ( ) PEEKدستور . می گیرد

.بخواند

مثال

Dim A As Byte A = PEEK (0) ‘return the first byte of the internal memory (R0) End

: POKEدستور

POKE address , value

.را در یکی از رجیسترها بنویسیم با این دستور می توانیم یک بایت داده

است نوشـته R0 – R7براي رجیسترهاي 31 - 0 که بین addressمقدار متغیر یا ثابت یک بایتی معث در آدرس

.می شود

مثال

Poke 1 , 5 ‘write 5 to R1 End

: VARPTR دستور

Var = VARPTR (var2 ) . ک متغیر را در مکان حافظه بر می گرداند این دستور آدرس ی

.قرار می گیرد varدر مکان حافظه بدست آمده و در متغیر var2آدرس متغیر

مثال

Dim B As Xram Byte At &H300 , I As Integer , W As Word W = Varptr (b) Print Hex(W) ‘Print &H0300 End

:ملهاي حلقه و پرش دستورالع

Page 55: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣۵

: GOTOو JMPدستورالعمل

GOTO label JMP label

پایـان یابـد و مـی (colon): باید بـا عالمـت labelبرچسب .پرش کرد labelبا این دستورات می توان به برچسب

ده شـود کامپـایلر بـه شـما هم نـام اسـتفا labelبه خاطر داشته باشید زمانیکه از دو . کارکتر طول داشته باشد 32تواند تا

warning دستور . می دهدreturn براي برگشت از برچسب وجود ندارد .

مثال

Start : ‘A label must end with a colon A = A +1 ‘Increment A If A <10 Goto start ‘Or Jmp start End If ‘Close If End

: DO-LOOPدستورالعمل

.بصورت زیر می باشد DO … LOOPفرم کلی دستورات

DO statements LOOP [ UNTIL expression ]

فر باشـد تکـرار خواهـد شـد یـا غیـر صـ TRUEداراي ارزش expressionتا زمانی کـه statementدستورالعمل

EXIT DOبتنهایی یک حلقه بینهایت است کـه بـا DO –LOOP.بنابراین این نوع حلقه حداقل یکبار تکرار می شود .

.می توان از درون حلقه خارج شد و اجراي برنامه در خط بعد از حلقه ادامه یابد

مثال

Dim A As Byte Do ‘start the loop

A = A + 1 ‘Increment A Print A ‘Print It

Loop Until A = 10 ‘repeat until A = 10 Print A

: FOR-NEXTدستورالعمل

.بصورت زیر می باشد FOR .. NEXTفرم کلی دستورات

FOR var = start TO end [STEP VALUE ] statements NEXT var

Page 56: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣۶

Var بعنوان یک کانتر عمل می کند کهstart مقداراولیه آن وend مقدار پایانی است و هر دو می تواننـد یـک ثابـت

وجـود نـام . ه می تواند مثبت یا منفی باشـد را نشان می دهد ک stepمقدار عددي Value .عددي یا متغیر عددي باشند

var بعد ازNEXT الزامی نیست.

مثال

Dim A As Byte , B1 As Byte , C As Integer For A = 1 To 10 Step 2 Print “this is a A “ ; A Next A For C = 10 To -5 Step -1 Print “this is a C “ ; C Next For B1 = 1 To 10 Print “this is a B1 “ ; B1 Next

: WHILE-WENDدستورالعمل

WHILE condition statements WEND

تشکیل یک حلقه تکرار می دهد که تکرار این حلقه تا زمانی ادامه می یابـد کـه عبـارت While-Wend دستورالعمل

بصـورت ورود بـه حلقـه بـه شـرط مـی whileدستورالعمل . بگیرد کند و یا مقدار صفر FALSEبکاربرده شده نتیجه را

.ممکن است در حالتهایی اصال اجرا نشود Whileبنابراین , باشد

.نشده است تکرار خواهد شد FALSEصفر یا conditionتا وقتی که حاصل statementبخش

مثال

Dim A As Byte A = 1 While A <10 Print A Incr A Wend

: IFدستورالعمل

.می تواند یک دستورالعمل ساده یا چند دستورالعمل مرکب باشد statementدر کلیه حالتهاي زیر عبارت

:0حالت

If Expression THEN statement .باشد TRUE داراي ارزش expressionزمانی اجرا می شود که عبارت statementدستورالعمل

:1حالت

If Expression Then statement1 Else

Page 57: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣٧

statement2 End If

در غیـر , اجرا خواهـد شـد statement1باشد دستورالعمل TRUEداراي ارزش expressionدرصورتی که عبارت

.اجرا می شود statement2این صورت دستورالعمل

... IFدستورالعمل

: 2حالت

If Expression1 Then statement1 Elseif [Expression2 Then] statement2 Else statement3 End If

در ,اجـرا خواهـد شـد statement1باشـد دسـتورالعمل TRUEداراي ارزش expression1درصورتی کـه عبـارت

باشـد TRUEداراي ارزش expressionري ولی عبارت اختیـا FALSEداراي ارزش expression1صورتی که عبارت

.اجرا خواهد شد statement3اجرا می شود و در غیر این صورت دستورالعمل statement2دستورالعمل

.می توان صفر یا یک بودن یک بیت از یک متغیر را امتحان کرد IFهمچنین با دستور

IF bit =1 THEN OR IF bit =0 THEN

مثال

Dim Var As Byte , Idx As Byte Idx = 1 If Var.Idx = 1 then Set portb.0 Else ....

Dim A As Integer A = 10 If A = 10 then Print “this part is executed “ Else Print “ this will never be executed” End if

: CASEدستورالعمل

end selectاجرا می شود و سپس اجـراي برنامـه بعـد از statement1برابر باشد test1با مقدار VARاگر متغیر

.ادامه می یابد

اجـرا مـی statement2برابـر باشـد test2برابر نباشد ولی با مقـدار test1با مقدار varدر غیر اینصورت اگر متغیر

.ادامه می یابد end selectشود و سپس اجراي برنامه بعد از

Page 58: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣٨

اجـرا مـی شـود و سـپس statement3,برابـر نباشـد test2و test1با هیچکدام از مقادیر varهایتا اگر متغیر و ن

.ادامه می یابد end selectاجراي برنامه بعد از

:شما می توانید به صورتهاي زیر نیز متغیر را امتحان کنید

Case is >2 . باشد 2اگر متغیر موردنظر بزرگتر از

:و یا می توان محدوده اي را براي امتحان کردن در نظر گرفت

Case 2 to 5. باشد 5تا 2اگر متغیر موردنظر بین

مثال

Dim X As Byte Do Input “ X?” , X Select Case X ‘test X Case 1 To 3 :Print “ 1 or 2 or 3” Case 4 :Print “4” Case Is >10 :Print “> 10” Case Else :Print “no “ End Select Loop End

: EXITدستور

.با این دستور می توانید فقط از یک ساختار یا حلقه خارج شوید و ادامه برنامه را بعد از ساختار یا حلقه ادامه دهید

EXIT FOR EXIT DO EXIT WHILE EXIT SUB EXIT FUNCTION

مثال

Do A = A +1 If A = 100 Then Exit Do End If Loop End

: ON VALUEدستورالعمل

.با این دستور با توجه به مقدار متغیر می توان به توابع یا برچسب هاي مختلفی پرش کرد

ON var [GOTO] [GOSUB] label1 [,label2] Var متغیـر مـورد نظـر بـراي امتحــان شـدن کـه مـی توانـد یــکSFR ماننـد PORTD باشـد وLABEL1 و

LABEL2 برچسب هایی هستند که با توجه به مقدار .. وVAR به آنها پرش می شود.

Page 59: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

٣٩

مثال

Dim X As Byte X = 1 ON X Gosub Lbl2,Lbl3 ‘jump to sub lbl3 X=0 ON X Goto Lbl1, Lbl4 ‘jump to label lbl1 Lbl1: Incr X Print X Lbl2: End Print X return

:ایجاد تاخیر در برنامه

: DELAYدستور

.میکرو ثانیه در اجراي برنامه تاخیر ایجاد می کند 1000این دستور براي مدت کوتاهی به مقدار

مثال

DELAY ‘Wait for hardware to be ready

: WAITus دستور

.در برنامه از این دستور می شود براي ایجاد تاخیر

WAITus microsecond پس از سپري شدن زمـان مشـخص شـده اجـراي .میکرو ثانیه متوقف می شود microsecondاجراي برنامه به مدت

باشد ( 255 – 1)می تواند عددي بین Microsecond. برنامه از خط بعد ادامه می یابد

براي بدست آوردن زمان دقیق از. ما نمی دهد دستورات تاخیري زمان دقیق را به ش

.تایمرها استفاده کنید

مثال

Waitus 10 Print “BASCOM” End

: WAITmsدستور

.براي ایجاد تاخیر در برنامه از این دستور می شود

WAITms milisecond زمان مشخص شده اجـراي برنامـه پس از سپري شدن .میلی ثانیه متوقف می شود milisecondاجراي برنامه به مدت

.باشد ( 65535– 1) می تواند عددي بین Milisecond. از خط بعد ادامه می یابد

Page 60: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

۴٠

مثال

Waitms 10 Print “BASCOM” End

: WAITدستور

.براي ایجاد تاخیر در برنامه از این دستور می شود

WAIT second

پس از سپري شدن زمان مشخص شده اجراي برنامه از خط بعـد .د ثانیه متوقف می شو secondاجراي برنامه به مدت

. ادامه می یابد

مثال

Wait 3 Print “BASCOM” End

:زیر برنامه و تابع

: DECLARE FUNCTIONمعرفی تابع

تـابعی را معرفـی کنـیم بایسـتی زمانی کـه بخـواهیم . از این دستور براي معرفی تابع در ابتداي برنامه استفاده می شود

.در صورت استفاده از تابع می بایستی یک داده برگردانده شود . تابع معرفی شده باشد

DECLARE FUNCTION TEST[( [BYREF/BYVAL]var as type1)] As type2 TEST انتقال داده بصورت . نام تابع موردنظر استBYVAL ابع فرسـتاده باعث می شود که یک کپی از متغیر بـه تـ

آدرس متغیر ارسال و تغیرات در آن اثر می گـذارد BYREFولی در حالت .شود و در محتواي آن هیچ تغیري ایجاد نشود

در صورت عـدم اسـتفاده از گزینـه . و داده برگشتی در صورت انجام عملیات بر روي آن با مقدار اولیه خود برابر نخواهد بود

[BYREF/BYVAL] داده بصورت بصورت پیش فرضBYREF فرستاده مـی شـود .Type1 نـوع داده ارسـال شـده

BYTE , INTEGER, WORD , LONG کـه هـر دو مـی تواننـد داده نـوع . نـوع داده برگشـتی اسـت type2و

,STRING باشند.

مثال

شود و هـیچ به زیر تابع فرستاده می Iفرستاده شده است بنابراین یک کپی از مقدار BYVALبصورت Iدر مثال زیر

فراخـوانی .فرستاده می شود و تغیر در آن صـورت مـی گیـرد BYREFبصورت S. تغیري در محتواي آن ایجاد نمی شود

اســت و مقــدار برگشــتی از نــوع STRINGو INTEGERاز نــوع داده Z و Kبــا MYFUNCTIONتــابع

INTEGER است که در متغیرT تابع یک متغیر محلی تعریف کنید شما می توانید در محدوده . قرار می گیرد.

مثال

Declare Function Myfunction (Byval I As Integer , S As String )As Integer Dim K As Integer , Z As String*10, T As Integer K =5 :Z = “123 “ : T = Myfunction(K , Z ) Lcd T ‘25 Lcd Z ‘Bascom

Page 61: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

۴١

Lcd K ‘5 End Function Myfunction (Byval I As Integer , S As String )As Integer local P As Integer Functions P = I * 5 I = 5 S = “Bascom “ T = P Myfunction = T End Function

: DECLARE SUBمعرفی زیر برنامه

زیر برنامه اي که قصد فراخوانی آن را داریم بایسـتی در ابتـداي . از این دستور براي معرفی زیر برنامه استفاده می شود

. برنامه یا حداقل قبل از فراخوانی آن معرفی شده باشد

DECLARE SUB TEST[( [BYREF/BYVAL] var as type)] آدرس داده بـه زیـر برنامـه BYREFدر زمـان ارسـال داده بصـورت .زیر برنامه برخالف تابع مقداري برنمـی گردانـد

یک کپی از داده فرستاده مـی شـود و بـه BYVALولی در حالت .فرستاده می شود و در محتواي آن تغیر ایجاد می شود

نـام متغیـر ارسـالی بـه زیـر برنامـه و VARنـام زیربرنامـه و TEST.هیچ وجه در محتواي آن تغیري ایجاد نمـی شـود

TYPE نوع آن است که می تواند داده نوع BYTE , INTEGER, WORD ,STRING باشند.

.براي نوشتن زیر برنامه ابتدا نام آنرا توسط دستور زیر تعریف کرده و سپس شروع به نوشتن زیربرنامه می کنیم

SUB Name [ ( var1 ) ] NAME نام زیربرنامه که باید توسط دستورDeclare معرفی شده باشد و با دستورEnd Sub پایان می یابد.

مثال

Dim A As Byte , B1 As Byte , C As Byte Declare Sub Test ( A As Byte ) A =1 : B1 = 2 : C = 3 Print A ; B1;C ,123 will print Call Test (B1) Print A ; B1;C ‘ 223 will print End Sub test (A As Byte ) Print A ; B1 ; C ‘123 will print End Sub

: CALLفراخوانی

. توسط این دستور زیر برنامه یا تابعی را فراخوانی می کنیم

CALL TEST( VAR1 , VAR2 , …)

Page 62: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

۴٢

VAR1 , VAR2 مـی تـوان زیـر برنامـه را بصـورت زیـر نیـز . هستند , متغیرهایی که به زیر برنامه انتقال می یابند

.فراخوانی کرد

TEST VAR1 , VAR2

اگر بخواهیم عـدد . فراخوانی شود Declareباید توسط دستور , الزم بتذکر است که نام زیر برنامه قبل از فراخوانی آن

.آن را انتقال دهیم BYVALرا به زیر برنامه انتقال دهیم بایستی حتما با آرگومان ثابت

مثال

Dim A As Byte , B As Byte Declare Sub Test ( B1 As Byte , Byval B2 As Byte ) A =65 Call Test ( A , 5 ) Test A , 5 Print A ‘ will print A = 10 End Sub Test ( B1 As Byte , Byval B2 As Byte ) Lcd B1 LowerLine Lcd BCD(B2) B1 = 10 B2 = 15 End Sub

. این دستور به زیربرنامه پرش می کند و اجراي برنامه را از آدرس برچسب ادامه می دهد

GOSUB label LABEL توسـط دسـتور .نام برچسبی زیر برنامه است که بـه آن پـرش مـی شـودRETURN مـی تـوان ازSUB

. ادامه می یابد GO SUBبرگشت کرد و اجراي برنامه بعد از دستور

مثال

Dim X As Byte Gosub Routine ‘Jump to routine Print “ Hello” ‘After come back from routine Print “Hello” End Routine X = X + 2 Print X Return

Page 63: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

۴٣

: BASCOMدر AVRپیکره بندي و کار با امکانات

: بندي پورت ها پیکر

.جهت یک پایه می تواند ورودي یا خروجی باشد .براي تعیین جهت پایه پورتها از این پیکره بندي استفاده می نماییم

Config Portx = State Config Pinx.y = State

X , Y پورت هاي 7- 0 به ترتیب پایه هاي بسته به میکرو می توانندA ,B ,C ,D ,E ,F باشند .State مـی توانـد

:یکی از گزینه هاي زیر باشد

INPUT در این حالت رجیستر جهت داده پایه یا پورت انتخاب شده صـفر مـی شـود و پایـه یـا پـورت بعنـوان : 0یا

.ورودي استفاده می شود

OUTPUT هت داده پایه یا پورت انتخـاب شـده یـک مشـود و پایـه یـا پـورت بعنـوان در این حالت رجیستر ج: 1یا

.خروجی استفاده می شود

پورت مربوطه استفاده کنیـد و در هنگـام نوشـتن در پـورت PINزمانیکه بخواهید از پورتی بخوانید بایستی از رجیستر

.بنویسید PORTبایستی در رجیستر

مثال

Dim A As Byte , Count As Byte Config Portd = input ‘configure PORT D for input mode A = Pind ‘Read data on Portd A = A And Portd ‘A = A & PORTD Print A Bitwait Pind.7 , reset ‘wait until bit is low Config portb = output Portb = 10 ‘set portb to 10 Portb = Portb And 2 Set Portb.0 ‘set bit 0 of portb to 1 Incr Portb

Page 64: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

2

فهرست مطالب و آزمایشات

پروژه عملی

ولت براي میکرو 5آشنایی با برد بورد و ساختن یک منبع تغذیه -1

مدار راه انداز میکرو -2

به میکرو و کنترل تاخیر چشمک زدن آن LEDاتصال -3

ی با صفحه کلیدو آشنای به همراه یک کلید طراحی و پیاده سازي چراغ چشمک زن -4

چراغ راهنمایی رانندگی -5

و نمایش اطالعات بروي آن LCDآشنایی با دستورات و و اتصال آن به میکرو LCDنحوه عملکرد -6

LCDنمایش دماي محیط بروي میکرو و ADCو LM35آشنایی با -7

ساعت دیجیتال -8

فرکانس متر دیجیتال -9

) RS232(اتصال میکرو به کامپیوتر از طریق درگاه سریال -10

Page 65: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

3

بخش دوم

ي عملی میکروها پروژه

Page 66: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

4

1آزمایش شماره

: آزمایش

ولت براي میکرو 5آشنایی با برد بورد و ساختن یک منبع تغذیه

:وسایل مورد نیاز

)bread board(برد بورد -1

ولت 12منبع تغذیه -2

سیم رابط -3

100µF عدد خازن الکترولیتی 2 -4

7805رگالتور -5

:آزمایش هدف

. و نحوه اتصال آن در مدار را برسی خواهیم کرد ها در این آزمایش نحوه عملکرد رگالتور

Page 67: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

5

:دهیم میابتدا عملکرد اجزاء مورد استفاده در این آزمایش را مورد برسی قرار

1- Regulator:

:و علت استفاده ها رگالتور -1

آن ولتـاژي بیشـتر (V-IN) 1ولتاژ است که اگر به پایه در واقع یک تنظیم کننده( REGULATOR : 7805 ) 7805رگالتور

شکل زیـر نیـز . دهد میبرو یک رگالتور را نشان وشکل ر . دهد میولت را 5به ما فقط ولتاژ (V-OUT) 3در پایه ولت اعمال کنیم 5از

.دهد مینشان ي آن را ها نام پایه

.توانید در زیر مشاهده کنید میلی رگالتور را نیز مدار داخ

.آن را مطالعه کنید (DATASHEET) توانید برگه داده میبراي کسب اطالعاتی بیشتر در مورد این مدل از رگالتور

V-o

ut =

5V

olt

GN

D

V-in

> 6

volt

LM7805

REGULATOR

Page 68: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

6

بــردبـــورد -2

بـدون نیـاز ها که براي سهولت در کار و بستن مدار) برد بورد(این برد آموزشی

.رود میپی و لحیم کاري که تا حدودي وقت گیر هستند بکار به مدار چا

:کنیم میي آن به صورت مختصر بیان ها که نحوه اتصال داخلی پین

به صورت افقـی بـه هـم متصـل ها بینید این پین میهمانطور که در شکل -1

.هستند ولی تا شیار مابین آنها و هیچ ارتباط عمودي با هم ندارند

ي هـا به صورت عمودي تا وسط برد بورد وصل هستند و با پین ها این پین -2

.کناري هیچ اتصالی ندارد

M M

BREAD BORAD

د نماي اصلی از یک بردبور 6-1شکل

هاي برد بورد نماي پین 5-1شکل

االت داخلی برد بورداتص 7-1شکل

Page 69: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

7

:خازن -3

.کند میخازن در واقع انرژي الکتریکی را به صورت بار الکتریکی ذخیره

.شود مید و یا پیکو فاراد بیان نانو فارا –مقدار خازن را مشخص کرده و برحسب میکرو فاراد : ظرفیت خازن

توان به صورت مداوم به خازن اعمال کرد ولی اگر ولتاژ اعمال شـده از ایـن میمعادل حداکثر اختالف پتانسیلی است که : ولتاژ کار

.رساند میمقدار بیشتر شود به خازن آسیب

دمهمترین نوع خازنهاي که امروزه مورد استفاده قرار می گیر

باشـد کـه در اینجـا در مـی ) ...)عدسـی، (بـدون قطـب ( و بدون پالریته ) )الکترولیت(قطب دار( ، با پالریته ها خازنصلی دو نوع ا

:دهیم میي الکترولیت و عدسی توضیح مختصري ها مورد خازن

و قطبیـت DCلتـاژ یی بـا و هـا قطبی بوده و باید در مدار ها ي نسبتا باالیی دارند این نوع خازنها ظرفیت: الکترولیت -1

چرا که با اتصال نادرست و ولتاژ بیش از حـد مجـاز باعـث خرابـی خـازن یـا نادرسـت کـار کـردن مـدار . مشخص مورد استفاده قرار گیرد

.شود می

.حجم کم و ظرفیت القایی اندك : خازن سرامیکی -2

ها واریبل وتریمر يها خازن -3

میکا يها خازن -4

پلیستر يها خازن -5

ذيکاغ يها خازن - 6

روغنی ي مومی وها خازن -7

ي تانتالیومها خازن -8

ي مایلرها خازن -9

هاي موجود انواع خازن 8-1شکل

Page 70: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

8

:شرح آزمایش

و . کنـیم مـی ولـت کـه ولتـاژ کـاري مـدار میکـرو اسـت تبـدیل 5به 12مدار که همان تبدیل ولتاژ ) کشماتی(با توجه به شکل

ي هـا باعـث از بـین رفـتن نـویز ) 5V+(تور و بـه خروجـی رگالتـور به رگال 12همچنین با قرار دادن دو خازن الکترولیت در ورودي ولتاژ

.کند میو ثبات ولتاژ خروجی را نیز بیشتر .شود میاحتمالی که در مسیر سیم کشی وجود دارد

:مراحل کار

) اتصالی نداشته باشـد به همدیگر (ابتدا رگالتور را به گونه اي که هر سه پایه آن در برید برد به صورتی که در باال توضیح داده شد

).به صورت عمودي در خطوطی که به صورت افقی بهم اتصال دارند(دهیم میرد قرار وي برد بها به داخل پین

ه منبـع ولتـاژ اصـلی واست که همانطور که در برد ب) ولت 5بیشتر از ( 12پایه اول رگالتور پایه ورودي ولتاژ رد وصل شـده بایـد ـب

).تغذیه منبع VCCهمان (متصل گردد

ه ) GND(بایست به زمین میپایه دوم رگالتور که در منبع وصل گردد و الزم به ذکر اسـت کـه ایـن پایـه در مـدار میکـرو نیـز ـب

.شود میشود و براي اتصال میکرو به زمین از این پایه استفاده میعنوان پایه زمین شناخته

.ت تا به مدار میکرو متصل گردد ولت است آماده اس 5پایه سوم رگالتور که پایه خروجی

در ایـن . رسـیم مـی که براي تثبیت بیشتر ولتاژ مدار تعبیه شده است 100µFي ها ي خازنها ل پایهدر این مرحله نوبت به اتصا

دازه پایـه صـورت (ي خازن ها مرحله با توجه به پایه . میگیـرد که روش تشخیص مثبت یا منفی بودن آن از رو نوشته روي آن یا از روي اـن

روي خازنهـاي الکترولیـت پایه اي که بزرگتر باشد پایه مثبت خازن الکترولیت است و پایه کوچکتر پایه منفی و از طـرف دیگـر معمـوال ـب

د . ) گردد میمشخص ) -( سمتی که منفی باشد با عالمت ه ورودي ) 7805پایـه وسـط ( سمت منفی آن را به گراـن و پایـه دوم آن را ـب

پایـه (کنیم و خازن دوم را نیز به همین روش بـه پایـه منفـی را بـه زمـین و پایـه مثبـت را بـه خروجـی میوصل ) 7805ایه اول پ(اصلی

توان از آن براي روشن کـردن میکـرو و میشود و میبه این ترتیب مدار منبع تغذیه الزم براي میکرو ایجاد .کنیم میوصل ) 7805سوم

. کنند استفاده کرد میولت کار 5و 0نطقی که در سطح م TTLحتی مدارات

Page 71: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

9

ي پیشنهادي ها و پروژهسواالت

ولتاژ کاري میکرو در چه سطحی است ؟ -1

عملکرد رگالتور را به طور مختصر توضیح دهید ؟ -2

مدار باال را ببندید و سطح ولتاژ خروجی و ورودي رگالتور را اندازه بگیرید و جدول زیر را کامل کنید ؟ -3

ولتاژ خروجی رگالتور لتاژ وروديو

3

5

7

9

12

15

Page 72: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

10

2آزمایش شماره

: آزمایش

) اتصال کریستال و مدار ریست(مدار راه انداز میکرو

:وسایل مورد نیاز

Ω 100 و k Ω 10 :عدد مقاومت 1 -1

)bread board(برد بورد -2

منبع تغذیه -3

سیم رابط -4

8MHZکریستال -5

22Pfعدد خازن عدسی 2و 1µFعدد خازن 1و 100µF عدد خازن الکترولیتی 2 - 6

ATMEGA32کنترلر میکرو -7

7805رگالتور -8

کلید فشاري -9

:آزمایش هدف

ا فشـردن کلیـد ریسـت و .پردازیم میدر این آزمایش به نحوه اتصال میکرو و مدار ریست آن و نحوه عملکـرد مـدار ـب

.ي بکار رفته پرداخت ها ي میکرو در عملکرد کریستالها مچنین آشنایی با فیوز بیتمنطق میکرو و ه

Page 73: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

11

:دهیم میابتدا عملکرد اجزاء مورد استفاده در این آزمایش را مورد برسی قرار

CRYSTAL (XTAL):

:عملکرد کریستال

:اسیالتور کریستالی

بـرد مـی نانس مکانیکی یک کریستال در حال لرزش پیزوالکتریکی بهـره یک اسیالتور کریستالی مداري الکترونیکی است که از رزو

ي مچـی هـا ماننـد در سـاعت (این فرکانس معموال براي داشتن حسی از زمان . وجود آورد هتا سیگنال الکتریکی با فرکانس بسیار دقیقی ب

ي رادیـویی هـا را در فرستنده ها کند و نیز فرکانس شود تا سیگنال ساعتی پایدار براي مدارت مجتمع دیجیتال فراهم میاستفاده ) کوارتز

.کند) Stable(پایدار

بـه کریسـتال اسـتفاده شـده در آن برخـی مواقـع . استفاده از تقویت کننده و فیدبک فرم دقیقی از یک اسیالتور الکترونیکی اسـت

.دهند مینمایش XTALهی کریستال را با ي شماتیکی، گاها در دیاگرام. شود میگفته ")timing crystal(کریستال زمان سنجی "

چیست؟ (CRYSTAL)کریستال

بسته بندي شـده میدر یک ترتیب منظ ها ، یا یونها ، مولکولها یک کریستال جامدي است که در آن اجزاي تشکیل دهنده، اتم

.دهند میاند و الگوي تکراري خود را در هر سه بعد فضایی گسترش

) هـا مبـدل (تواند مانند کریستال مورد استفاده قرار گیرد، با ترنسدیوسرهاي میاالستیک ساخته شده تقریبا هر چیزي که از مواد

براي مثال، فوالد الستیسیته باالیی دارد و سـرعت صـوت در آن . اجسام داراي فرکانس رزونانس طبیعی لرزش هستند میمتناسب، زیرا تما

دازه، شـکل، االستیسـیته و سـرعت صـوت . شد میکوارتز، استفاده این اغلب در فیلترهاي مکانیکی، قبل از. باالست فرکانس رزونانس به اـن

ي فرکـانس هـا کریسـتال . شوند میي فرکانس باال معموال به شکل صفحه مستطیلی ساده اي بریده ها کریستال. در آن ماده بستگی دارد

راي . شـوند مـی بریـده ) tuning fork(کل یـک دیاپـازون شـود، بـه شـ مـی ي دیجیتالی استفاده ها یی که در ساعتها پایین، مثل آن ـب

.شود میخواهند از یک رزونانس کننده سرامیکی ارزان به جاي کریستال کوارتز استفاده میکاربردهایی که زمان سنجی بسیار دقیقی ن

اعمـال ولتـاژ (میـدان الکتریکـی توانیم با قرار دادن آن در یک میوقتی که یک کریستال کوارتز به طور صحیح بریده و سوار شد،

. معـروف اسـت ) piezoelectricity(این ویژگی به نام پیزوالکتریک بودن . باعث خم شدن آن شویم) به الکترودي نزدیک یا روي کریستال

. لتاژ تولیـد کنـد تواند یک و میکند که این میاش یک میدان الکتریکی تولید وقتی میدان برداشته شود، کوارتز با بازگشت به شکل اولیه

.با فرکانس رزونانسی دقیق است) RLC Circuit(این رفتار کریستال کوارتز شبیه مداري متشکل از یک سلف، خازن و مقاومت

ه . کوارتز مزیت دیگري نیز دارد و آن کم بودن تغییرات اندازه آن با تغییرات دما است لذا فرکـانس رزونـانس صـفحه ي مـان کـه ـب

د اسـیالتور این یعنی که ساعت کوارتز، فیلتـر یـا . کند میته است، تغییر چندانی ناندازه ي آن وابس راي کاربردهـاي . دقیـق خواهـد ماـن ـب

ام اجـاق کریسـتال (حساس اسیالتور کوارتز در ظرفی که دماي آن کنترل شده است شـود، و همچنـین مـی سـوار ) crystal ovenبـه ـن

ي مکانیکی خـارجی ها یی که ناشی از لرزشها ، که براي جلوگیري از اختالل shock absorbersي ضربه ها تواند روي جذب کننده می

.است، قرار بگیرد

سـاالنه بیشـتر از دو . شوند میهرتز ساخته مگا ها هرتز تا ده کیلو ها ي از دهها ي کوارتز زمان سنجی براي فرکانسها کریستال

هـر . الکترونیکـی هسـتند مـدارت ، و هـا ي مچی، سـاعت ها براي استفاده در ساعت اه اکثر آن. شود میکریستال تولید ) 2×109(میلیارد

.شود مینیز پیدا ها ، سیگنال ژنراتورها و اسیلوسکوپها چند، کریستال کوارتز داخل ابزارهاي تست و اندازه گیري مثل شمارنده

و فرکانس ها کریستال

یک اسیالتورنماد شماتیک و مدار معادل یک کریستال کوارتز در

Page 74: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

12

مدار اسیالتور کریستالی نوسان را با گرفتن سیگنال ولتاژي از رزونانس کننده ي کوارتز، تقویت آن و فیدبک کردن آن به رزونـانس

.شود میسرعت خم و راست شدن کوارتز فرکانس رزونانس است و توسط برش اندازه کریستال تعیین . دارد میکننده، نگه

یا دیاپازونی از کریستال کوارتز که بین آنهـا سـاندویچ ) slice(زمان سنجی از دو صفحه ي رسانا با یک برش یک کریستال معمول

کسـر انـدکی شود و کامال بسته شانس میاعمال acهنگام راه اندازي به مدار حول کریستال سیگنال نویز اتفاقی . شده تشکیل شده است

اسیالتور سـیگنال . کند میبنابراین کریستال شروع به نوسان کردن همگام با آن سیگنال . وداز آن در فرکانس رزونانس کریستال خواهد ب

ب اسـیالتور را شـامل میکند و لذا فرکانس کریستال محکم تر میخروجی از کریستال را تقویت . شـود مـی شود و سرانجام خروجی غاـل

.کند میاخواسته را فیلتر ي نها فرکانس طبیعی در مدار و در کریستال کوارتز تمام فرکانس

بـه زبـانی دیگـر . دهنـد مییکی از مهمترین خصوصیات اسیالتورهاي کریستالی کوارتز این است که نویز در فاز بسیار کمی نشان

ي پایـدار هـا گنالکند، جـایی کـه سـی میرا در مخابرات پر کاربرد ها این آن. است) pure tone(یک تون خالص ها سیگنال تولیدي آن

.که مرجع دقیق زمانی مورد نیاز است میو همچنین در وسایل عل رد نیاز هستندمو

ام فرکـانس اور تـون فرکانس خروجی یک اسیالتور کوارتز یا فرکانس اصلی رزونانس آن یا یک ضریبی از فرکانس رزونانس آن به ـن

)overtone (است.

Q )کند میتغییر 610 ات 410ل براي یک اسیالتور کوارتز بین معمو) ضریب کیفیت .Q براي یک اسیالتور کوارتز بسـیار ماکسیمم

Q = 1.6 × 107/f: است MHzفرکانس رزونانس به fتواند به اینگونه تقریب زده شود که میپایدار

ي هـا تواند فرکانس رزونـانس یـک کریسـتال کـوارتز را تغییـر دهـد امـا طراحـی میتغییرات محیطی دما، رطوبت، فشار و لرزش

هستند OCXOو TCXO ،MCXOشامل ها این. دهند میمحیطی را کاهش يها اثروناگونی وجود دارند که این گ

ي فنـی، در عمـل مهندسـان مـدار هـا توانند براي هر فرکانس رزونانسی ساخته شوند، به دلیل محدودیت می ها اگر چه کریستال

اسـتفاده از . 40MHzو 10MHz ،20MHzکننـد ماننـد مـی راحـی ط مـی ي اسـتاندارد ک هـا اسیالتور کریستالی در حوالی فرکـانس

هر فرکانس دلخواه ) ساختن(براي سنتز کردن PLL(Phase Loop Locked)ي مقسم فرکانس، چند برابر کننده ي فرکانس وها مدار

.از فرکانس مرجع امکان پذیر است

ي ظریفـی از خطاهـاي هـا ت خود استفاده کنید تا از وقـوع نمونـه مراقب باشید و تنها از یک اسیالتور کریستالی در طراحی مدارا

اگر این ممکن نیست تعداد کریستال اسـیالتورهاي مجـزا . جلوگیري کنید) meta stability in electronics(خودپایداري در الکترونیک

)PLL (نصف کردن کالك یی چونها تکنیک ي بایستی به شدت کم شوند باها ي ساعتی متحد با آنها و دامنه) هاClock ( ه موجـود ـب

ت . جاي استفاده از یک منبع جدید کریستالی ي خطـاي محتمـل هـا هر منبع مجزاي کریستالی باید دقیقا توجیه شود زیرا هر کـدام حاـل

تال را در کنند چند نمونه کریسـتال و سـاختار داخلـی کریسـ میرا به علت برهم کنش چند کریستالی در وسیله، ایجاد رفع ايغیر قابل

. کنیم میاشکال زیر مالحظه

Page 75: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

13

Page 76: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

14

: ها مقاومت

:کنند ، در هر مداري باید موارد زیر را در مد نظر داشت میامکان کنترل جریان و یا ولتاژ ارائه شده را فراهم ها مقاومت

.شود میمقدار مقاومت مورد نیاز که بر حسب اهم ، کیلواهم و یا مگا اهم بیان -1

...، ضریب حرارتی ، ایجاد نویز ، پایداري ، ) میزان دقت(تولرانس -2

:از روي رنگ آنها ها ي رنگی و شناسایی مقاومتها کد

ه . شـوند میي رنگی بر روي بدنه آنها نشان داده ها ي کربنی و اکسید فلزي همواره به صورت کدها مقاومت کـه مقاومـت آنهـا ـب

:شود میصورت زیر محاسبه

گ اول رن × 10کد رنگ سوم رنگ دوم %)تولرانس(رنگ چهارم

طالیی –قهوه اي –قرمز –قرمز : مثال

در این مقاومت که چهار رنگ بوده و اول با رنگ قرمز شروع و در نهایت در رنگ چهارم به طالیی ختم شده مقـدار عـددي آن بـا

:رابر است با ب ها مربوط به کد رنگ)1-2(توجه به جدول

2 2 * 101= 220 Ω

اولرنگ دومرنگ سومرنگ رنگ چهارم

Page 77: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

15

هاي مجتمع شیار عمومی برون مدار 5-2شکل

ي آن ها و آشنایی با فیوز بیت At mega 32میکروکنترلر

پردازیم میاطالعات تکمیلی در ابتداي این کتاب آورده شده است که در این قسمت به مهمترین بخش آن.

: ها و مدارات مجتمع مثل میکرو ها ICنحوه خواندن شماره پایه

به این صورت که از روي شـیار ایجـاد شـده . کنند میي سازنده از یک قانون خاص براي شماره گذاري استفاده ها معموال شرکت

ه ها کنند و پین میرا تعیین 1و یا با گذاشتن یک نقطه پایه شماره )شکل ( بین دو پین چپ و راست ي که در راسـتاي آن قـرار دارنـد ـب

.گردد میترتیب شماره گزاري

ر دارا بـودن میلر ، میکرو پروسسوري میکروکنتر و تـایمر و شـمارنده و ROMو RAMداراي حافظـه CPUباشد کـه عـالوه ـب

A/D مزیت استفاده از میکروکنترلر ، صرفه جویی در مصرف توان و کوچک شـدن حجـم نهـایی مـدار در . باشد می... و پورت سریال و

.باشد میپروژه

: ATMega32خصوصیات 2-1

تــوان مـی کــه . باشـد مــی 16MHzداراي حـداکثر فرکــانس کـاري ATMega32میکروکنترلــر : فرکـانس کـاري 2-1-1

راي میکـرو تعیـین کننـده سـرعت انجـام دسـتورات و . ي کاري متفاوتی را براي میکرو انتخاب کرد ها فرکانس که این فرکـانس کـاري ـب

.باشد می 1MIPSعت میکروکنترلر پارامتري به نام ي نوشته شده در آن است و واحد سنجش سرها عملیات

:ولتاژ کاري به نوع میکرو بستگی دارد : ولتاژ کاري 2-1-2

خـتم Lیی کـه شـماره آنهـا بـه ها AVR ولت براي 5/5 – 7/2رنج -1

.شود می

.ي معمولی ها AVRولت براي 5/4 – 5/5رنج -2

2Datasheetبـا توجـه بـه جـدول ATMega32دو رنج باال را براي هر

.توان انتخاب نمود میداده شده

بیتـی و یـک عـدد 8کـانتر / دو عدد تـایمر : کانترها / تایمر 2-1-3

که از آنها براي شـمارش و یـا زمـان بنـدي و . بیتی وجود دارد 16کانتر / تایمر

یـا OC1A یـا OC1Bي هـا پایه.(توان استفاده نمود می 3PWMتولید موج

PB0 یاPB1 (باشد می .

ر داراي ) : ADC(مبدل آنالوگ به دیجیتـال 2-1-3 8ایـن میکروکنترـل

داخلی متصل A/Dسیگنال ورودي آنالوگ بوده که توسط یک مالتی پلکسر به

ی 33ي هـا پین( Aپورت .گیرد میو عملیات تبدیل صورت کـه شـامل ) 40اـل

تـوان یکـی یـا همـه ي مـی مه نوشته شده باشد توسط برنا می I/Oهشت پین

. تنظیم کرد ADCي این پورت را به صورت ها پین

ه نـام 8پورت 4خروجی بوده که در قالب -پایه ورودي 32این میکرو داراي : ها ورودي و خروجی 2-1-4 ي پـورت هـا بیتی ـب

A پورت ،B پورت ،C و پورتD 20تواند حداکثر تا می و هر پایه در حالت خروجی.گیرند میقرارmA جریان بدهد .

Page 78: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

16

صـورت هـا که داراي یک سري تنظیمات سخت افزاري توسط فیوزبیت. باشد میداراي دو بایت فیوز بیت : فیوز بیتها 2-1-5

ریـزي نشـدن بیـت بـه معنـاي برنامـه 1به معناي برنامه ریزي شدن و 0معموال منطق . گیرد و هر بیت نقش خاصی را بر عهده دارد می

که نقش مهمتري دارند به شرح زیـر ها تعدادي از این فیوز بیت. کند میبا پاك کردن میکروکنترلر تغییر ن ها ضمنا فیوز بیت. باشد می

:شوند میمعرفی

1- EESAVE : بوده و براي اینکه آیا در هنگام پاك کردن میکرو حافظه 1مقدار پیش فرض آنE2PROM ا د ینیز پاك شو

در هنگـام پـاك کـردن میکـرو ، E2PROMکنیم محتویـات می 0اما زمانی که مقدار این بیت را .شود میخیر از این فیوز بیت استفاده

. شود میحفظ

2- CKOPT ،CKSEL0...3 : فیوز بیتCKPOT زمـانی کـه محـیط بسـیار . حالت مختلف استفاده شود تواند براي دو می

شود چرا که فرکانس داخلـی میکـرو حـداکثر میرا شامل ها و رنج وسیعی از فرکانس )"0"(شود میبرنامه ریزي نویزي باشد این بیت

. دهد میشود را پوشش میخارجی ایجاد RCي باالتر که توسط کریستال یا مدار ها هرتز بیشتر نیست و فرکانس مگا 8

کنـد میت مختلفی را براي نحوه تعیین فرکانس کاري مشخص حاال )2-2(بر طبق جدول CKSEL3تا CKSEL0ي ها بیت

:

CKSEL3 تا CKSEL0 مقادیر نحوه تعیین فرکانس

0 کالك خارجی

1,2,3,4 داخلی RCاسیالتور

5,6,7,8 خارجی RCاسیالتور

9 اسیالتور کریستال فرکانس پایین خارجی

10,11,12,13,14,15 اسیالتور کریستال خارجی

a. الك خارجی ک)External Clock(:

بایست به موج مربعی که بـراي کـالك در نظـر می) 13پایه شماره ( XTAL1توسط کالك خارجی ، پایه AVRبراي راه اندازي

.گردد میبه جایی متصل ن) 12پایه شماره ( XTAL2گرفته ایم متصل شود و در این حالت

Page 79: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

17

b. اسیالتورRC داخلی کالیبره شده)Calibrated internal RC Oscillator (:

و به صورت پـیش فـرض (را به عنوان فرکانس کاري میکرو انتخاب نمود 8و 4و 2و 1ي ها توان یکی از فرکانس میدر این حالت

از چهـار فرکانس در یکـی .خارجی ندارد )نوسان ساز(و مزیت آن این است که دیگر نیاز به مدار)تنظیم شده است زمگا هرت 1در فرکانس

.ولت کار کند 5درجه سانتیگراد و ولتاژ دقیق 25حالت باال زمانی دقیق خواهد بود که میکروکنترلر در دماي

شود و زمانی که از اسیالتور داخلی اسـتفاده میتعیین )3-2(به شرح جدول CKSEL3..0ي ها فرکانس نوسان توسط فیوز بیت

.کرد مارا پروگر CKPOTشود نباید فیوز بیت می

c. اسیالتورRC خارجی)External RC Oscillator (

وده به شکل روبـرو RC پیکر بندي مدار . توان از این منبع استفاده کرد مییی که دقت کالك اهمیت زیادي ندارد ها در کاربرد ـب

و فرکانس تقریبی از این رابطه RC

f3

1 بر حسبHz مقدار و حداقل. آید میبدستC باشـد و در صـورتی میپیکو فاراد 22برابر

توان میبرنامه ریزي شود مقدار آن را CKPOTکه

.پیکو فاراد افزایش داد 36به

آمده است ) 4-2(در جدول ها وز بیتکاري عمل کند که نحوه انتخاب فی Modeتواند در چهار میاین منبع نوسان

Page 80: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

18

d. س پائین خارجی اسیالتور کریستالی فرکان

ه 1001و بـا دادن . هرتز باشد 32768ي فرکانس پایین مثل کریستال ساعت با فرکانس ها تواند کریستال میاین منبع کالك ـب

و بـا قـرار دادن دو خـازن مطـابق شـکل . منبع کالك را اسیالتور کریستالی فرکانس پـائین انتخـاب کـرد CKSEL3..0ي ها فیوز بیت

توان از کارکرد و فرکانس نهایی کریسـتال اطمینـان میو زمین با توجه به جدول داده شده XTAL2و XTAL1ي ها هتوان به پای می

گر نیازي به قرار دادن خازن نیسترا نیز پروگرام کنید دی CKOPTحاصل و اگر فیوز بیت

e. خارجی یا رزوناتور سرامیکی اسیالتور کریستالی:

تواننـد بـه صـورت میي ورودي و خروجی یک تقویت کننده وارونگر هستند که ها یب پایهبه ترت XTAL2و XTAL1ي ها پین

پیکو فارد حذف شـده و عملکـرد فیـوز بیـت 36ي ها در این وضعیت خازن. مطابق شکل زیر پیکر بندي شوند ON-CHIPیک اسیالتور

CKOPT انس دقیق تري را داشت و البته قابل ذکر اسـت کـه ي نویزي فرکها توان در محیط مینیز عوض شده که با پروگرام کردن آن

Page 81: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

19

یافته و در نتیجه آن شاهد باال رفتن مصرف جریان بیشتر در میکرو خـواهیم بـود افزایش دامنه خروجی وارونگر با پروگرام کردن این بیت

. ده است آم 5-2در جدول براي بدست آوردن فرکانس مناسب CKSEL3..0ي ها نحوه پروگرام کردن فیوز بیت.

: JTAGEN فیوز بیت -3

ا درگـاه مـوازي کـامپیوتر تعبیـه میاین فیوز بیت که به صورت پیش فرض در حالت برنامه ریزي شده باشد براي ارتباط میکـرو ـب

ن پـورت و اگر نیـاز باشـد تـا از ایـ قابل دسترس نباشد I/Oبراي ارتباط PCکه این پیش فرض بودن آن باعث شده تا پورت . شده است

. بایست این فیوز بیت را از حالت برنامه ریزي خارج نمود میاستفاده گردد

5- 2جدول

Page 82: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

20

:شرح آزمایش

) 1-2طبق مدار . (کنیم میرا ایجاد 5به 12مدار تبدیل ولتاژ از ) 1آزمایش (با استفاده از آزمایش مرحله قبل

ورد . پردازیم یمبعد از پیاده سازي مدار باال به پیاده سازي مدار میکرو رد ـب در این مرحله کار، میکرو را دقیقا بین شـیار دو لبـه ـب

پایـه شـماره ي میکرو آشنا شـدید ها اندن پایههمانطور که در باال با نحوه خو. ي دو طرف با هم اتصال پیدا نکنند ها دهیم تا پایه میقرار

. آمده را به آن متصل کنید ( ) در شکل باشد را پیدا کنید و مدار ریست که میکه پایه ریست میکرو 9

9کنیم و سمت دیگر مقاومت را به پایه شماره میولت وصل 5را به قطب مثبت می کیلو اه 10به این صورت که یک مقاومت

میکرو فاراد 1و همچنین همان پایه ریست را با یک خازن الکترولیت که مقدار آن . کنیم میباشد وصل میمیکرو که پایه ریست میکرو

100دهید که با انجام این کار مقاومت میکنیم و علت وجود آن براي زمانی است که شما کلید ریست را فشار میاست به زمین متصل

کند و با توجه به رابطه تقسیم مقاومتی ولتاژي در حدود میوصل 9اهم را به را که به زمین و این کلید متصل کردید را به پایه شماره

و باعث اهم تخلیه شده 100باشد که خازن پس از برقراري ارتباط با مقاومت میشود که معادل صفر منطقی میولت ایجاد 04/0

داریم تا میکرو دو باره کار خود را شروع کند زمان شارژ خازن میگردد و زمانی که دست را از روي کلید بر میریست شدن میکرو

.کند تا سایر اجزاي میکرو بتوانند به وضعیت اول برگردند میامکان را ایجاد این ) برگشت به سطح یک منطقی(

توان به منطق ریست شدن میکرو پی برد که با سطح منطقـی صـفر ایـن میکـرو ریسـت میو همانطور که از شکل مدار پیدا است

االي کلمـه کنـد مـی مشـخص Resetشویم که این پایه را به صورت میمیکرو متوجه Datasheetشود و این را از روي می و خـط ـب

Reset به معناي منطق صفر یا با صفر فعال شدن است.

Page 83: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

21

باشد که نماي کلی اتصال رگالتور و مـدار ریسـت را بـه میکـرو نمـایش میشود مدار زیر میمدار نهایی که در این آزمایش ایجاد

ه پایـه شـماره )5V+(ولت و گراند دارد که این کار را با اتصال خروجی رگالتـور 5تاژ دهد که میکرو براي اجراي کار نیاز به ول می 10ـب

.دهد میمیکرو را در وضعیت آماده به کار قرار ،31و 11به پایه شماره ) پایه وسط رگالتور(میکرو و اتصال گراند

Page 84: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

22

)STK 200/300 )ISP - PROGRAMMER رساختن پرو گرام

ه اسـم ر ایـن پـرو گرامـ ازار و STK 200/300ـب ه شـما پـورت جـود دارد در ـب انـواع را نداشـت از LPT (printer)و اگـر رایاـن

ل از STK 200/300پروگرامر . توانید استفاده کنید میهم USB ي دیگر نظیر پروگرامرها پروگرامر ICرشـته اي و یـک 7یـک کاـب

. ي میکرو ها ه پورت پرینتر کامپیوتر و سر دیگر به پایهشود ب میکه یک سر این سیم وصل ه شدتشکیل بافر

ه . از خصوصیات این نوع پروگرامر این است که براي پروگرام کردن نیازي به خارج کردن میکرو از مدار نیست ه همـین علـت ـب ـب

. گویند می ISP-In System Programming ها این نوع پروگرامر

2، 1کنیم و پایه شـماره میمدار وصل GNDرا به هم لحیم و به Printerکانکتور 25تا 18ي ها طبق شماتیک مدار باید پایه

،4،6،9،19 )IC 74HC244 (ي هـا و همـین طـور پایـه . کنـیم مـی وصـل کـانکتور پرینتـر 7،9،10،4، 6، 5ي هـا را به ترتیب به پایه

18،16،14،11 (74HC244)IC گردد میل صمیکرو به شرح زیر مت يها به پایه.

ه 10بافر و پایه 20رسد که در این مرحله پایه میبافر ICي میکرو و ها به پایهاتصال منبع تغذیه نوبت به و در نهایت میکـرو را ـب

VCC ) مقاومت (کیلو اهمی 100بافر را توسط یک مقاومت 11و پایه شماره )تول 5مثبتPull-Up( بهVCC بـافر و پایـه 10و پایـه

.حال یک پروگرامر براي برنامه ریزي میکرو داریم.کنیم میل وص) GND(میکرو را به زمین 11

74HC244 pin ATMega32 pin

18 SCK(PB7-pin 8)

16 MOSI(PB5- pin 6)

14 RESET(pin 9)

11 MISO(PB6-pin 7)

Page 85: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

23

رویم تا نوع پروگرامر را کـه در می Option Programmer به منويابتدا Bascomبراي برنامه ریزي میکرو توسط نرم افزار

( )با توجه به شکل . باشد انتخاب کنیم می STK 200/300اینجا از نوع

راي مـی CHIPنوبت پروگرام کـردن آن روي BASCOMپس از نوشتن برنامه و کامپایل کردن آن توسط نرم افزار باشـد کـه ـب

ي آن را بـا هـا تا نوع میکرو و همچنین فیـوز بیـت رویم می ) Program send to chip manual program(این کار به منوي

ه منـوي ) ؟ ( توجه به بخش . کنـیم مـی پروگـرام Auto Programو chipنیاز به تغییرات بود تغییر داده و در نهایت میکرو را با رفتن ـب

( ) شکل

Page 86: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

24

ي پیشنهادي ها سواالت و پروژه

رلر و میکروپروسسور را بیان نمایید؟تفاوت میکروکنت -1

داخلی کالیبره شده را بیان نمایید؟ RCي استفاده از اسیالتور کریستالی خارجی و اسیالتور ها مزایا و محدودیت -2

باشد؟ میاستفاده کرد چقدر Atmega32توان براي فرکانس میکرو میحداکثر کریستال خارجی که -3

ي میکرو چقدر است ؟ها پایهحداکثر جریان و ولتاژ خروجی -4

ساده براي میکـرو بنویسـید و آن اشاره شده یک برنامه ) ؟ ( که در قسمت Bascomبا توجه به آموزش برنامه نویسی -5

مگا هرتز اسیالتور داخلی و یک بار هم خارجی پروگرام کنید ؟ 4را در فرکانس

Page 87: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

25

3آزمایش شماره

: آزمایش

و کنترل تاخیر چشمک زدن آن به میکرو LEDاتصال

:وسایل مورد نیاز

k Ω ,330 Ω , 100 Ω 10 :مقاومت -1

)bread board(برد بورد -2

منبع تغذیه -3

سیم رابط -4

8MHZکریستال -5

22PFعدد خازن عدسی 2و 10µF عدد خازن الکترولیتی 1 - 6

AVR (ATMEGA32(کنترلرمیکرو -7

LEDعدد 1 -8

7805رگالتور -9

:زمایش آ هدف

.را برسی خواهیم کرد LEDخیر زمانی و استفاده از آن در کنترل یک در این آزمایش روشهاي ایجاد تا

Page 88: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

26

:دهیم میابتدا عملکرد اجزاء مورد استفاده در این آزمایش را مورد برسی قرار

LED:

:ي نورانی و نحوه عملکرد آنها ها دیود

ولـت 7/0در این حالت ، اختالف پتانسـیلی در حـدود . روشن شدن از خود نور ساطع میکنددر واقع دیودي است که با LEDیک

:بینید میساده را LEDدر زیر شکل یک . گردد میبین دو سر آند و کاتد آن مشاهده

کند؟ میچطور یک دیود نور تولید

انـرژي و لختـی دارنـد امـا جـرم ندارنـد در ها شود، فتون مینور شکلی از انرژي است، نور از اجزا بسیار ریزي به نام فتون تشکیل

ي هـا چرخنـد الکتـرون مـی یی دور هسـته هـا در اربیتال ها شوند در یک اتم الکترون میآزاد ها در نتیجه حرکت الکترون ها واقع فتون

راي .کننـد مـی ي دور تر از هسـته حرکـت ها با انرژي بیشتر در اربیتال ها ي مختلف مقدار انرژي متفاوتی دارند، کال الکترونها اربیتال ـب

ه پـایین رژي اسـت بـرعکس الکتـرون وقتـی از اربیتـال بـاال ـب یک الکترون براي پرش از یک اربیتال پایین به باال چیزي که باید بگیـرد اـن

کنـد کـه بـا فرکـانس مـی شود، یک افت انرژي بیشتر فتـون بیشـتري آزاد میکند این انرژي به شکل فتون آزاد میافتد انرژي آزاد می

Pالیـه يهـا حفـره تواننـد در مـی کنند مییی که از دیود عبور ها همان طور که در بخش قبل دیدیم الکترون.شود میبیشتر مشخص

ي یـود کننـد ایـن در هـر د میانرژي به شکل فتون آزاد ها این یک افت از باند رسانایی به اربیتال پایین تر است بنابر این الکترون.بیفتند

در یـک دیـود سـیلیکون هـا بینید که دیود از ماده خاصی ساخته شده باشد براي مثال اتم میرا ها اما فقط وقتی شما فتون دهد میرخ

به قدري کم است که با چشم انسـان دیـده ها دارد بنابر این فرکانس فتون میاستاندارد به نحوي چیده شده اند که افت الکترون فاصله ک

راي کنتـرل ها LEDین در بخش مادون قرمز طیف نور است که لزوما چیز بدي نیست البته شود ا مین ي از راه دور هـا ي مـادون قرمـز ـب

.مناسب اند

یی بـا ها کنند از ماده میي یک ساعت دیجیتال را روشن ها مانند آنهایی که شماره) VLEDs(ي منتشر کننده نور مریی ها دیود

اندازه این فاصله فرکانس فتـون را نشـان .که فاصله بین اربیتال رسانایی آنها و اربیتال پایین تر بیشتر است این خصوصیت ساخته شده اند

کنند اغلب آنها این کـار را بـه طـور مینور آزاد ها در حالی که همه دیود .کند میدهد به عبارت دیگر این فاصله رنگ نور را مشخص می

بـه نحـوي سـاخته هـا LED.کنـد میجذب زیادي انرژي نوري مولی ماده نیمه رسانا خودش مقداردهند یک دیود مع میموثري انجام ن

بینید اغلـب نـور تولیـد شـده در کنـاره دیـود از طریـق می تصویرهمانطور که در .کند میشوند که نور را در جهت خاصی متمرکز می

.آید میقسمت گرد بیرون

LED یکی از آنها این است که آنها فیالمان ندارند که بسوزد بنابر این عمر طـوالنی . لی دارند ي معموها المپ مزایاي زیادي بر ها

.گیرند میو همچنین خیلی راحت در مدارهاي الکترونیکی قرار . کند میبه عالوه حباب پالستیکی شان دوامشان را بیشتر . دارند

شـود مـی معمولی فرآیند تولید نور باعث تولید مقدار زیـادي گرمـا ن ي ها اما مزیت اصلی آنها کیفیت آنها است در مقایسه با المپ

).د براي تولید نور باید فیالمان گرم شو( فیالمانی براي گرم شدن ندارد

Page 89: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

27

:شرح آزمایش

داز میکـرو کـه همـان اتصـال کریسـتال و خـازن مـی در مرحله اول پیاده سازي هر آزمایش و هـا بایسـت مـدار راه اـن

.برسی قرار گرفت مورد باشد که در آزمایش قبل میمیکرو RESETالتور و مدار همچنین بستن رگ

را در یـک زمـان مشـخص خـاموش و )LED(بایست یک دیـود نـورانی میدر این مدار با توجه به نوع عملکرد آن که :قسمت اول

سـت خـاموش و در ثانیـه بعـد روشـن یبا مـی ن دیود باشد و در یک ثانیه ای میثانیه 1که این جا زمان مشخص شده برابر با . روشن کند

.شود و این سیکل به همین صورت باقی بماند

ه پایـه اهـم 330را همانند مدار زیـر توسـط یـک مقاومـت LEDبه این مدار هستیم که LEDنیازمند بستن یک براي شروع ـب

LEDي هـا را با توجه به یکی از روشهاي شناخت پایه LEDکنیم سر دوم میباشد وصل می Bکه پایه شماره صفر پورت 1شماره

مـدار آمـاده اسـت و زمـان ، زمـان اجـراي برنامـه و .کنـیم میپایه اي را که باید به منفی یا زمین وصل شود را پیدا کرده و به زمین وصل

.باشد میبرنامه در این میکروکنترلر پروگرام

حدود (باید مقاومتی LEDبراي جلوگیري از آسیب رسیدن به پین میکرو ، بین آن و

بطـور کلـی نبایـد جریـان . به عنوان محدود کننده جریان قرار داد) اهم 400الی 300

.تجاوز کند mA25 از LEDعبوري از

Page 90: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

28

ي هـا بخـش همانطور که در . نویسیم میي که ورودي یا خروجی شده اند برنامه را ها فتن پورتدر این بخش با در نظر گر: قسمت دوم

:پردازیم می ده شده است به توضیح بعضی از قسمت هادر مورد برنامه نویسی توضیح دا قبل

01- $regfile = "m32def.dat"

02- $crystal = 8000000

03- Config PortB.0 = Output

04- PortB.0 = 0

05- Do

06- PortB.0 = Not PortB.0

07- Waitms 256

08- Loop

09- End

.معرفی میکرو مورد استفاده در این آزمایش – 1در خط

.باشد میمگا هرتز 8کریستال استفاده شده که اینجا – 2در خط

.به عنوان خروجی B.0 پیاده سازي پورت -3در خط

).ولتاژ خروجی برابر صفر ولت خواهد شد(دهیم میقرار 0را برابر B.0پورت -4 در خط

حلقه براي اجراي برنامه -5در خط

ه یـک و اگـر میرا در هر مرحله از اجرا حلقه معکوس PB.0پورت -6در خط بـود بـه صـفر یـک کند به این معنی که اگر صفر باشد ـب

.تبدیل میکند

. مانـد مـی ، به این معنی که از اجراي دستور بعدي تا مدت زمان خاصی جلوگیري کـرده و در همـین خـط بـاقی زمان توقف -7در خط

راي بدسـت آوردن . باشـد می ms 1تقریبا برابر Waitms 1مگا هرتز استفاده شود زمان تاخیر دستور 4هنگامی که از کریستال البتـه ـب

. تفاده کرد ي میکرو اسها بایست از تایمر میزمان دقیق

ادامه حلقه تا بی نهایت -8در خط

پایان -9در خط

کنـیم و منبـع تغذیـه را وصـل کـرده و نتیجـه را مشـاهده میو بعد از نوشتن برنامه آن را کامپایل نموده و در میکرو برنامه ریزي

.کنیم می

Page 91: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

29

ي پیشنهادي و پروژه ها تسواال

ه اي کـه ، فاصـله می و متصل نمودهB را به پورت LEDهشت عدد .1 ور درسـت نمـاییم بـه گوـن خواهیم یک رقص ـن

؟)Bکم ترین تا پر ارزش ترین بیت پورت (ثانیه و از سمت چپ به راست باشد 1زمانی روشن بین آنها

برنامه تمرین قبل را بگونه اي تغییر دهید که حرکت رقص نور از سمت راست به چپ باشد ؟ .2

8و 4و 1ي هـا در فرکـانس )کریسـتال ( با اسیالتور داخلی و یک با هم با اسیالتور خـارجی باال را یک بار ي ها پروژه .3

پیکر بندي کنید و نتیجه را با هم مقایسه کنید ؟

ي مجـاز بـین هـا افتد چقدر است ؟ با توجه به این ولتـاژ محـدوده مقاومـت میولتاژي که بین دو سر آند و کاتد دیود .4

LED اشتن روشنایی مناسب و عدم آسیب رسیدن به پین میکرو را تعیین کنید؟و میکرو را براي د

Page 92: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

30

4آزمایش شماره

: هدف آزمایش

به همراه یک کلید طراحی و پیاده سازي چراغ چشمک زن

:وسایل مورد نیاز

k Ω , 100 Ω, 330 Ω(8) 10 :مقاومت -1

)bread board(برد بورد -2

منبع تغذیه -3

سیم -4

8MHZ کریستال -5

22PFعدد خازن عدسی 2و 10µF عدد خازن الکترولیتی 1 - 6

عدد کلید فشاري 2 -7

AVR (ATMEGA32(میکرو کنترلر -8

LEDعدد 8 -9

7805رگالتور - 10

:آزمایش هدف

.دهیم میآشنایی با دستور کلید و نحوه خواندن ورودي دیجیتال از میکرو را مورد برسی قرار

Page 93: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

31

:دهیم میستفاده در این آزمایش را مورد برسی قرار ابتدا عملکرد اجزاء مورد ا

ماتریسی و کلید تکیصفحه کلید

ي مکانیکی یکی از ساده ترین ها کلید. ي ورودي نیاز است ها براي ارتباط و ارسال دستورات و اطالعات به میکرو به دستگاه

. وجود دارند ) صفحه کلید(و ماتریسی ) تکی(در دو نوع ساده ها کلید. باشند میوسایل ورودي براي میکروکنترلر

توانیم به میگیرند را مییی که به عنوان ورودي قرار ها قبل از اینکه به پیکر بندي کلید بپردازیم الزم به ذکر است پورت یا پین

لتاژ در آن پین کرد تا در هنگام فشردن کلید تغییر وضعیت و Pull-Downیا Pull-Upکیلو اهم 10صورت خارجی با یک مقاومت

که یک پین را به عنوان ورودي انتخاب میبدون نویز و با اطمینان از فشرده شدن کلید عملیات مربوط به آن را انجام بدهد و هنگا

مثال.داخلی را فعال یا غیر فعال کنیم Pull-upي ها توانیم مقاومت میکنیم می

Config portb.0 = input

PortB.0 = 1

PULL-UPي ها کنیم و در خط دوم با یک کردن این پین مقاومت میرا به عنوان ورودي تعریف 0پین Bورت در خط اول پ

.توان غیر فعال کرد میرا PULL-UPي ها در این خط مقاومت 1به جاي 0و همچنین با قرار دادن . کنیم میرا فعال

که اگر بخواهیم تعداد . کند میت که اتصال بین دو پین ایجاد کلید تکی که در مدار ریست از آن استفاده شد به این صورت اس

آن ي موجودها که این یکی از محدودیت. پین از میکرو را اشغال کنیم 15بایست میکلید 15را افزایش دهیم مثال به ها کلید

در . شود میاستفاده و بهره کافی برده ها دي محدود نیازمند است از این نوع کلیها یی که به تعداد کلیدها البته براي کار. باشد می

:شویم میاین مرحله با دستورات کلید تکی آشنا

Config Debounce = X

Debounce و از فشرده ي مکانیکی جلوگیري ها ي موجود بروي کلیدها تاخیر براي فشردن کلید است که از لغزشمدت زمان

.است ms25ر صورتی که این دستور را استفاده نکنیم مقدار پیش فرض آن د .کند میشدن کلید نوعی اطمینان را ایجاد

به برچسب یا تابع تعریف و stateتوان وضعیت پین مورد نظر از یک پورت را خواند و با توجه به شرط برقراري میو با دستور زیر

. قید شود یا نشود SUBن در برنامه عبارت توا میکه عبارت نوشته شده در براکت به معنی آن است که . مشخص شده پرش کرد

DEBOUNCE Px.y , state , label [ , SUB]

Example : Debounce PinB.1 , 0 , Decrement , Sub

.رود می Decrementصفر شود به تابع Bپورت 1که پین می در مثال باال در هنگا

در حالت عادي هیچ اتصالی با هم نداشته و در صورت ها ستون این سطر و. شود میصفحه کلید از چند سطر و ستون تشکیل

. گردد میفشردن هر کلید سطر و ستون مربوط به آن کلید به هم متصل

. ي یک صفحه کلید وجود دارد ها روشهاي مختلفی براي پویش و شناسایی کلید

Page 94: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

32

.گیریم میدر نظر 4×4براي این منظور یک صفحه کلید

: ()Getkbdدستور پویش صفحه کلید با -1

ي صفحه کلید را به پورتی که به عنوان ها وصل کرده و ستون VCCبه ) Pull-up(را با یک مقاومت ها در این روش تمام سطر

در این روش میکرو در هر نوبت یک ). ي از پورت که خروجی هستندها پایه(کنیم میپورت مورد استفاده صفحه کلید است متصل

شود که میکرو با در نظر گرفتن سطر و ستون صفر شده میکند و با فشردن کلید ، سطر مربوط به آن کلید نیز صفر میستون را صفر

.دهد میکلید فشرده شده را تشخیص

توان فاصله زمانی مناسب دفعات پویش صفحه کلید را با توجه به سرعت کلید زنی و متوسط زمان نگه داري کلید فشرده می

.ود شده محاسبه نم

:پویش صفحه کلید با استفاده از یک پایه میکرو -2

شدند به میي میکرو درگیر ها روش قبل هم از دقت باالیی برخوردار است ولی براي پویش صفحه کلید تعداد زیادي از پایه

نیاز داشته باشیم I/Oي ها هشوند و البته زمانی که به پای میپایه از میکرو در گیر 8تعداد 4×4عبارتی براي اتصال یک صفحه کلید

.پردازیم میسودمند نخواهد بود و روشهاي دیگري نیز براي رفع این مشکل وجود دارد که در این قسمت به ساده ترین آن

و .توان روشی براي پویش صفحه کلید طراحی نمود میداخلی میکرو و استفاده از تقسیم ولتاژ مقاومتی ADCبا استفاده از پایه

. ي دیگر مورد استفاده قرار داد ها را به راحتی و بدون اشغال پایه 4×4توان یک صفحه کلید میین روش با استفاده از یک پایه میکرو با ا

. ایجاد کند ADCي مختلف ولتاژ مختلفی را در ها به گونه اي انتخاب شده اند تا با فشردن کلید R2تا R1در این مدار مقادیر

به ADCتوان یک بار با خواندن مقادیر از میبرنامه مربوط به پویش صفحه کلید را . ر کلید منحصر به فرد باشد تا ولتاژ خروجی ه

.صورت دقیق پیاده سازي کرد

:پردازیم میدر این قسمت به توضیح در مورد اتصال صفحه کلید به روش اول

ي آن ها ها کافی است تا صفحه کلید را به یکی از پورتتن. باشد میبسیار ساده BASCOMدر AVRاتصال صفحه کلید به

:کنیم میصفحه کلید را پیکر بندي متصل کنیم و سپس با استفاده از دستور زیر

Config Kbd = PortX , Debounce = Y , Delay = Z

مدت زمان فشردن کلید Yو با مقدار . کنیم میپورتی را که صفحه کلید به آن وصل است را مشخص Xدر این دستور به جاي

را وارد نکنیم مقدار پیش فرض ) Y,Z(کند و در صورتی که این عبارات میهم مدت زمانی را که منتظر فشردن کلید است را تعیین Zو

. گیرد میمورد استفاده قرار BASCOMEخود

:باشد میخواند دستور زیر میو دستوري که مقدار را از صفحه کلید

Page 95: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

33

X = Getkbd ()

x بایست اشاره کرد که پس از فشردن صفحه میدر اینجا . مقدار خروجی یا برگرداندن مقدار عددي کلید فشرده شده است

که Dataشود و براي اینکه نتیجه حاصل با کلید فشرده شده یکی باشد از جدول میکلید توسط این تابع یک مقدار عددي باز گردانده

. شود مییرد استفاده در انتهاي برنامه قرار میگ

:براي مثال

$regfile = "m32def.dat"

$crystal = 8000000

Config kbd = portd, Debounce = 50, Delay =255

Config Portb = Output

Dim A as byte

Do

A = Getkbd ()

A = Lookup (a, Data_key)

If A < 16 Then Portb = A

Loop

End

Data_key:

Data 7 , 8 , 9 , 15 , 4 , 5 , 6 , 14 , 1 , 2 , 3 , 13 , 12 , 0 , 11 , 10

Page 96: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

34

متصل است نمایش Bیی که به پورت ها LEDصفحه کلید که مقدار ورودي صفحه کلید را توسط هشماتیک مدار میکرو به همرا

.دهد میرا نمایش 15که مقدار نمایشی آن به صورت دیجیتال از صفر تا . دهد می

Page 97: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

35

:آزمایش شرح

داز میکـرو کـه همـان اتصـال کریسـتال و خـازن مـی در مرحله اول پیاده سازي هر آزمایش و هـا بایسـت مـدار راه اـن

.باشد که در آزمایش دوم مورد برسی قرار گرفت میمیکرو RESETهمچنین بستن رگالتور و مدار

را )LED(نورانی دیودهشت فشاري مدار شروع به کار کرده و د بایست با زدن کلی میدر این مدار با توجه به نوع عملکرد آن که

به LEDهر باشد و در یک ثانیه میثانیه 1که این جا زمان مشخص شده برابر با . خاموش و روشن کند به ترتیب در یک زمان مشخص

.ماند میشود و این سیکل به همین صورت باقی می خاموش ترتیب روشن و

ها LEDبه این مدار هستیم که )کلید تکی( و یک میکرو سوئیچ LED هشتبه توضیح باال نیازمند بستن جهبراي شروع با تو

کنیم میباشد وصل می همین پورت 7تا پایه شماره Dکه پایه شماره صفر پورت 21تا 14شماره ي ها به پایهرا همانند مدار زیر

پایه اي را که باید به منفی یا زمین وصل شود را پیدا کرده و LEDي ها ناخت پایهرا با توجه به یکی از روشهاي ش ها LEDسر دوم

ا به یک میکرو سوئیچ و باشد ر می B پورت صفره پایه شماره ک 1شماره پایه . کنیم میبه زمین وصل اهم 330مقاومت هشت توسط

مدار .کنیم میوصل VCC(+5V)به می کیلو اه 10 یک مقاومتبا همان پایه میکرو را مدار و )GND(زمین پایه دوم سوئیچ را به

.باشد میکنترلر رنامه و نصب برنامه در این میکروآماده است و زمان ، زمان اجراي ب

Page 98: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

36

:نرم افزار میکرو

$regfile = "m32def.dat"

$crystal = 8000000

Config Portd = Output

Config Portb.0 = Input

Portb.0 = 1 'Pull up resistor is Activated

Do

Debounce Pinb.0, 0, Start_lbl

Loop

Start_lbl:

Portd = 128

Do

Rotate Portd , Right 'Flashing From PB7 to PB0

Waitms 500

Loop

End

.معرفی میکرو مورد استفاده در این آزمایش – 1ط در خ

.باشد میمگا هرتز 8کریستال استفاده شده که اینجا – 2در خط

.به عنوان خروجی Dپیاده سازي پورت -3در خط

.به عنوان ورودي B.0 پیاده سازي پورت -4در خط

راي میداخلی Pull upاین کار براي قرار دادن مقاومت و. دهیم میقرار 1را برابر B پورت 0پین شماره -5در خط باشد و ـب

.شده است pull up توان این دستور را قرار نداد چرا که این پین میکرو به صورت خارجی نیز میاین مدار

یدي فشـرده نشـود و کند که کل میکه این حلقه تا زمانی ادامه پیدا . کنیم تا دستورات اجرا گردند مییک حلقه ایجاد -6در خط

.کند میکند پرش میبه برچسبی که به آن اشاره B.0پس از برقرار یا صفر شدن این پین

.نام برچسب این خط را مشخص میکند -7در خط

.دهیم میقرار 128را برابر Dپورت -8در خط

حلقه بی پایان براي اجراي دستورات داخل آن -9در خط

یعنی از بیت پـر ارزش بـه بیـت . کند میي این پورت یک بار به راست شیفت پیدا ها ي این دستور بیتبا هر بار اجرا -10در خط

. کند میکم ارزش حرکت

زمان توقف ، به این معنی که از اجراي دستور بعدي تا مدت زمـان خاصـی جلـوگیري کـرده و در همـین خـط بـاقی -11در خط

.ماند می

تادامه حلقه تا بی نهای -12در خط

پایان -13در خط

Page 99: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

37

ي پیشنهادي ها سواالت و پروژه

با هر بار فشار کلید مدت زمان تاخیر آن افزایش یابد؟برنامه باال را بگونه اي تغییر دهید که -1

مگا هرتز نیز آزمایش کنید ؟ 4مگا هرتز و 1برنامه باال را با اسیالتور داخلی -2

از چپ به راسـت ها LEDبگونه اي که با زدن آن حرکت خاموش روشن شدن .سعی کنید کلید دیگري به مدار اضافه کنید -3

؟)بیت کم ارزش به سمت بیت پر ارزش.( تغییر کند

رقص نور از بیت پـر ارزش بـه سـمت کـم ارزش 1صفحه کلیدي به مدار ببندید و برنامه اي براي آن بنویسید که با زدن کلید -4

ه اي کـه اگـر 3تغییر کند و با زدن کلید ها LEDخاموش و روشن شدن جهت حرکت 2صورت گیرد و با زدن کلید توقف کند بـه گوـن

را فشار دهد به حرکت ادامه دهد؟ 3بار بعدي کلید

Page 100: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

38

5آزمایش شماره

: آزمایش

طراحی و پیاده سازي چراغ راهنمایی و رانندگی

:وسایل مورد نیاز

k Ω ,330 Ω(6) 10 :مقاومت -1

)bread board(رد بوردب -2

منبع تغذیه -3

سیم -4

8MHZکریستال -5

10PFخازن عدسی 2و 10µF عدد خازن الکترولیتی 1 - 6

AVR (ATMEGA32(میکروکنترلر -7

عدد 2 )سبز ، زرد ، قرمز(ر رنگ و از ه LEDعدد 6 -8

7805رگالتور -9

Page 101: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

39

ي میکرو ها آشنایی با یکی از کاربرد :آزمایش هدف

: شرح آزمایش

دو چـراغ را طـوري طراحـی کنیـد کـه . اغ کنترل ترافیکی بسازید که بتواند بطور هم زمان رفت آمد دو خیابان را کنترل کنـد چر

ثانیـه المـپ زرد چـراغ اول روشـن 15وقتی المپ سبز چراغ اول روشن است المپ قرمز چراغ دوم روشن باشد سپس پس از طـی زمـان

المـپ قرمـز چـراغ دوم ثانیه المپ قرمز چراغ اول روشن شود و 5شن باشد و پس از طی زمان شود ولی همچنان المپ قرمز چراغ دوم رو

ثانیه المپ زرد چراغ دوم روشن شود ولی همچنـان المـپ قرمـز چـراغ اول روشـن 15پس از طی خاموش و المپ سبز آن روشن شود و

ه نمـودار زیـر . قرمز چراغ اول خاموش و این رونـد تکـرار شـود المپ ثانیه المپ قرمز چراغ دوم روشن شود و 5باشد و پس از طی زمان ـب

.توجه کنید

:چراغ دوم : چراغ اول

ثانیه 20قرمز ثانیه 15سبز

ثانیه 5زرد

ثانیه 20قرمز

ثانیه 15سبز

ثانیه 5زرد

:باشد میصورت زیر ه وم بنمودار زمانی و پالس چراغ اول و د

1 5 4 0

2 0

5 5 8 0

1 5

4 0

5 5 6 0 8 0

2 0

2 0

2 0

2 5

2 5 4 0

4 0

6 0

6 0

6 0

7 5

7 5

8 0

8 0

8 0

R E D

Y E L L O W

G R E E N

R E D

Y E L L O W

G R E E N

Page 102: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

40

طراحی مدار کنترل چراغ راهنمایی و رانندگی

بایسـت انجـام داد را شـروع مـی ي کـه در ایـن آزمـایش هـا همانند آزمایش قبل مدار راه انداز را به میکرو وصل کرده و مابقی کار

یـب از سـبز تبه تر ها LEDشروع به بستن Dپورت 0ه با رنگهاي سبز و زرد و قرمز که به ترتیب از پای LED 6وصل کردن . کنیم می

ه 2این پورت و قرمز به پایه 1این پورت و زرد به پایه 0به پایه ه 3و دوباره براي چراغ دوم نیز سـبز ـب ه 4و زرد ـب 6توسـط 5و قرمـز ـب

ل ذکـر اسـت کـه .نمایید میین مدار متصل زم را به ها دام از این دیودوصل کرده و پایه دوم هر ک میاه 330مقاومت در این قسمت قاـب

توانیـد بـا انشـعاب مـی که ایـن دو چـراغ را در ایـن مـدار . براي یک چهار راه به دو چراغ راهنمایی دیگر به غیر از این دو چراغ نیاز است

. نیددرست ک مقابل آن،از زوج گرفتن

Page 103: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

41

:برنامه نوشته شده براي این آزمایش

$regfile = "m32def.dat"

$crystal = 8000000

Config Portd = Output

Do

Portd = 0

Portd.0 = 1

Portd.5 = 1

Wait 15

Portd.0 = 0

Portd.1 = 1

Wait 5

Portd.1 = 0

Portd.2 = 1

Portd.3 = 1

Portd.5 = 0

Wait 15

Portd.3 = 0

Portd.4 = 1

Wait 5

Loop

End

تعیین میزان فرکانس کریستال به واحد هرتز ) -2و در خط معرفی نام میکروکنترلر ) -1

.به عنوان خروجی تعریف شده است Dتعیین پورت خروجی که در این برنامه پورت ) -3

سرآغاز حلقه) -4

.کند مییک و مابقی را صفر دنرا در هر وضعیتی که باش D5و پورت D0پورت ) -5

ي کریستال داخلی یا خـارجی کـه تعیـین شـده ها یا توقف برنامه به مدتی که در مقابل آن قرار دارد البته با توجه به فیوز بیت ارانتظ) -8

.است زمان توقف متفاوت است

.کند میرا یک D1 پورت) -10و در خط کند میصفر D0پورت ) -9

ار داردیا توقف برنامه به مدتی که در مقابل آن قر انتظار) -11

صـفر را D5پـورت 15و در خـط کنـد مـی ک یـ را D3پـورت 14و در خط D2پورت 13و در خط کند میرا صفر D1پورت ) -12

.کند می

یا توقف برنامه به مدتی که در مقابل آن قرار دارد انتظار) -16

.کند مییک را D4پورت 18و در خط صفر ار D3پورت ) -17

نامه به مدتی که در مقابل آن قرار داردیا توقف بر انتظار) -19

انتهاي حلقه و بازگشت به ابتداي حلقه و تکرار برنامه) -20

پایان برنامه ) -21

Page 104: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

42

ي پیشنهادي ها سواالت و پروژه

برنامه باال را بگونه اي تغییر دهید که با هر بار فشار کلید مدت زمان تاخیر افزایش یابد؟ -1

به معنی وجـود (طوري که هر دو کلید براي یک سمت چهار راه قرار گیرد و با فشرده شدن آنها کلید به4با قرار دادن -2

زمان روشن بودن چراغ سبز براي سمتی که تعداد کلید بیشتري فعال است بیشتر گردد؟) ترافیک پشت چراغ

Page 105: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

43

6آزمایش شماره

: آزمایش

و اتصال آن به میکرو LCDنحوه عملکرد

:مورد نیاز وسایل

1- LCD 16*2

Ω 100 و k Ω 10 :مقاومت -2

)bread board(برد بورد -3

منبع تغذیه -4

سیم رابط -5

8MHZکریستال - 6

22Pfعدد خازن عدسی 2و 1µFعدد خازن 1و 100µF عدد خازن الکترولیتی 2 -7

ATMEGA32میکروکنترلر -8

7805رگالتور -9

Page 106: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

44

:هدف آزمایش

کنترلی نیاز به نمایش اطالعات به کاربر را داریم و اغلـب ایـن کـار را بـا روشـهاي مختلـف در بیشتر مدارهاي میکرو

ي بیشتر نمایش و ابعاد و برنامه ریـزي ها به خاطر داشتن قابلیت ها LCDاما. دهیم میانجام LCDیا 7Segmentیا ها LEDمانند

و همچنین نحـوه اتصـال LCDي کار کتري و انواع ها LCDبا نحوه عملکرد در این آزمایش. گیرند میآسان مورد توجه بیشتري قرار

. شوید میآن به میکرو و دستورات پر کاربرد مربوط به صفحه نمایش کار کتري آشنا

:دهیم میابتدا عملکرد اجزاء مورد استفاده در این آزمایش را مورد برسی قرار

: LCDصفحه نمایش

ومتر تیجیتال ، وسایل اندازه گیري دیجیي دها ي مختلفی ازجمله مولتی مترها در کار برد ها LCDامروزه از ي هـا الی ، کروـن

.شود میبه عنوان نمایشگر کم مصرف ، ساده و با وضوح مناسب استفاده ... اتوموبیل ،

کشـف شـد و المـپ ) Fredrich Reinitzer(توسط گیاه شناس استرالیایی به نام فردریش رینیـزر 1888کریستال مایع در سال

سال پـیش از 9اگر چه کریستال مایع . دانشمند آلمانی اختراع گردید ) Karl Braun(توسط کارل براون 1897اشعه کاتدي نیز در سال

ـ . مسـکوت بـاقی مانـد 1958اختراع المپ اشعه کاتدي کشف شده بودند ، ایده استفاده از آنها تـا سـال راون در ایـن زمـان دکتـر گلـن ب

)Gelen Brown ( از ایـالت متحـده ، اولـین مقالـه را دربـارهLCD جیمـز فرگاسـون 1967سـرانجام در سـال . منتشـر کـرد)James

Fergason ( با کشف فناوريTNLCD اولین نمایشگر کریستال مایع واقعی را تولید کرد .

را بــا فنــاوري پخــش پویــا LCDایشــگر ، در حـدود یــک ســال بعــد ، نم RCA(Radio Corporation of America)گـروه

DSM(Dynamic Scattering Mode) اولین ساعت 1972ارائه نمود و در سالLCD پـس از آن . بر پایه نظریه فرگاسون ساخته شد

.عرضه کرد DSMLCDاولین ماشین حساب جیبی را با استفاده از فناوري ) Sharp(شرکت 1973، در سال

رنگی را بـا اسـتفاده از ترانزیسـتور LCDاولین ) Peter Lecomber(و پیتر لکومبر ) Walter Spear(یر والتر اسپ 1979در سال

. ندطراحی نمود TFT(Thin Film Transistor)فیلم نازك

LCD دهیم میاستفاده آن را شرح و نحوه شامل انواع کارکتري و گرافیکی هستند که در اینجا نوع کارکتري آن را معرفی ها.

:ي کنونی عبارتند از ها LCDویژگی اصلی

.و حتی گرافیک ها قابلیت نمایش اعداد ، انواع کارکتر -

.گردد میموجب ساده سازي مدار و نحوه ارتباط آن با دنیاي خارج LCDترکیب یک کنترلر در داخل -

.ریف کرد و نمایش داد عت LCDه ي خاصی بها توان با ارسال فرمان میرا . . . یی مانند حروف فارسی و ها کارکتر -

Page 107: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

45

: LCDمدار راه انداز

.گردد میوصل (GND)به زمین 1پایه -1

.شود میوصل VCC 5 Vبه 2پایه -2

.وصل شده باشد GNDو سر دیگر آن به VCCبه یک مقاومت متغییر که یکی از دو سر مقاومت به 3پایه -3

4- LCD براي تغذیه و ارسال اطالعـات 14تا 1ي ها بینید پایه میه در شکل باشند که همانطور ک میپایه 16اغلب داراي ها

. در این مدار همواره روشـن اسـت رود که میپس زمینه بکار )LED(دیود نوري براي روشن کردن 16و 15باشد و دو پایه می

ه نـور توانید نور آن را توسط میکرو کنترلر یا با یک مقاومـت می BJTبا استفاده از ترانزیستور آن را بـه طـور ) LDR( وابسـته ـب

. خود کار و با توجه به نور محیط کنترل کنید

: LCDي ها هشرح پای

پایه بوده که شرح مختصري در بـاره ایـن پایـه در ایـن قسـمت 16که داراي .کنید میرا مشاهده LCD 16*2در شکل باال یک

:شود میبیان

LCDمدار GND پایه منفی یا -1

.باشد میولت 5که ولتاژ تغذیه LCDمدار VCCمثبت یا پایه -2

ها نور نمایش کارکتر تنظیمپایه -3

4- 1RS : یا انتخاب کننده ثباتLCD شود میکه شامل دو فرمان زیر:

ارسال فرمان بهLCD ) کنیم مین دستور این بیت را صفر یا براي اجراي ای 0کد(

ارسال داده بهLCD ) کنیم میجراي این دستور این بیت را یک یا براي ا 1کد(

5- 2RW : از این پایه در تعیین نوع عمل در خواستی ازLCD در عمـل خوانـدن اطالعـات از .شـود میاستفادهLCD ایـن پایـه

گیـرد ایـن یمو معموال چون عمل نوشتن صورت .(گردد میاین پایه صفر ) ارسال فرمان یا داده ( LCDبرابر یک و در عمل نوشتن به

.)کنیم میوصل GNDپایه را به

6 - 3E : ، ر روي ایـن پایـه انجـام R/Wو RSعمـل درخواسـتی را بـا توجـه بـه وضـعیت LCDبا ایجاد پالس مثبت یا منفی ـب

.دهد می

1- RS: Register Select 2- RW: Read/Write 3- E: Enable

Page 108: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

46

ر عملیـات نوشـتن ، د. شـود مـی اسـتفاده LCDبراي ارتباط و تبادل داده یا فرمان با ها از این پایه: D0~D7ي داده ها پایه -7

در ایـن LCDي مختلفی از جملـه بایـت وضـعیت ها شود و در عملیات خواندن ، بایت میقرار داده ها بایت مورد نظر در محل این پایه

.شود میظاهر ها پایه

ی 8ي کارکتري داراي ها LCDبا اینکه این نوع :نحوه اتصال به میکرو 4قابلیـت ارتبـاط بـا پایه براي تبادل ارتبـاط هسـتند وـل

()با توجه به شکل . گردد میي میکرو ها پین را نیز دارند که این امر باعث صرفه جویی در استفاده از پایه

:شرح آزمایش

همـانطور کـه . نشان داده شده اسـت ATmega32توسط میکرو کنترلر LCD 16*2حداقل مدار راه اندازي این ) (در شکل

. متصل شده اند Cپورت 1و 0ي ها به پین E,RSي کنترلی ها و پایه 7تا 4ي ها به پین D4~D7س داده کنید با میمشاهده

متصل شد ه است Cبه پورت LCDهاي کنترل با توجه به اینکه باس داده و پایه

هاي مربوط به میکرو کنترلر غیر فعـال را در جدول فیوزبیت JTAGباید ارتباط .

.به صورت کامل در دسترس باشد Cکنید تا پورت نکته

Page 109: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

47

BASCOMدر LCDنحوه پیکر بندي

:کنیم میمتنی را معرفی LCDدر این بخش دستورات مربوط به پیکر بندي

. گیـرد نـوع اتصـال آن اسـت میتنی مورد توجه قرار م LCDاولین موردي که براي استفاده از یک : LCDپیکر بندي باس -1

~ DB0پایـه 8مورد نظـر باشـد از هـر ها اهمیت نداشته بلکه نمایش سریع داده AVRي استفاده شده از ها اگر در پروژه اي تعداد پایه

DB7 کس اگر هـدف کمتـر کـردن تعـداد و برعکند میپایه از میکرو را اشغال 10ي دیگر حداقل ها گردد که به همراه پایه میاستفاده

در ایـن . نمـاییم مـی بیتـی آن اسـتفاده 4اهمیت نداشته باشد از مـد ها باشد و نمایش سریع داده LCDي میکرو براي ارتباط با ها پایه

پایـه 6 در این مد حـداقل . گردد میبه جایی متصل ن DB3تا DB0ي ها شود و پایه میاستفاده DB7تا DB4ي ها حالت فقط از پایه

nکـه شـود میاز دستور زیر استفاده BASCOMبراي تعیین باس استفاده شده در سخت افزار به نرم افزار . گیرد میمورد استفاده قرار

.باشد می n=4ضمنا پیش فرض کامپایلر حالت . را به خود بگیرد 8یا 4تواند مقدار می

Config LCDbus = n

: LCDه ي متصل بها پیکر بندي پایه -2

Config LCDPIN = pin , DB4 = PN , DB5 = PN , DB6 = PN ,DB7 = PN , E=PN , RS =PN

ي میکـرو هـا یکـی از پایـه توان به میرا که بخواهیم LCDهر پایه از و پایه اي دلخواه از میکرو کنترلر بوده PNدر این دستور

ه LCDبراي اتصال به Cاگر بخواهیم از پورت به عنوان مثال. گردد متصل نمود میکه در اینجا معرفی اسـتفاده نمـاییم دسـتور فـوق ـب

:شود میصورت زیر نوشته

Config LCDPIN = PIN , DB4 = portc.4 , DB5 = portc.5 , DB6 = portc.6 , DB7 = portc.7 , E = portc.1 , RS = portc.0

: LCDتعیین نوع -3

LCD سـطر و 2بـدین معنـا کـه دارا .باشـد می 16×2باشند اما متداولترین آنها با اندازه میر موجود در انواع مختلف در بازا ها

مشـخص کننـده نـوع Lcdtypeدر دستور زیر .پیش فرض کامپایلر نیز همین است . گیرد میکارکتر قرار 16ر سطر ستون یا در ه 16

LCD باشد ... و 40×4، 20×4، 20×2، 16×2، 16×1تواند حالتهاي میبوده که.

CONFIG LCD = Lcdtype

Example: Config LCD = 16 * 2

: LCDدستورات پر کاربرد مربوط به

در اینجا به جاي .توانید مقادیر دلخواه خود را نمایش دهید میتوسط این دستور :دستور نمایش اطالعاتVAR توان یـک می

:مثال متغییر یا یک رشته ثابت را قرار داد مانند

LCD VAR

Example 1: LCD "Hello !"

Example 2: LCD "X = " ; Y

دستورCLS : شود میاین دستور باعث پاك شدن کل صفحه نمایش .

CLS

دستورDisplay : توان صفحه نمایش میتوسط این دستورLCD را خاموش یا روشن نمود .

Display On (or Off)

Page 110: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

48

دستورCursor : توان مکان نما میاین دستور توسطLCD را تنظیم نمود .

Cursor On (or Off or Blink or Noblink )

.را براي مکان نما تنظیم نمود NoBlinkو یا چشمک نزدن Blinkو یا چشمک زدن OFFیا خاموش ONحالت روشن

دستورHome :دهد میقال نوشتن این دستور مکان نما را به سطر اول و ستون اول انت.

Home

به ترتیب مکان نما را به اولین ستون سطر Home Upper (or Lower or Third or Fourth )اما با نوشتن این دستور به صورت

در ضمن حالت خالصه شده دسـتور . قرار دهد اول یا اولین ستون سطر دوم یا به اولین ستون سطر سوم یا اولین سطر ستون چهارم

.وجود دارد Home u (or l or t or f) نیز به صورت

Example: Home Lower

دستورLocate : کـه . دهـد مـی این دستور مکان نما را به محل دلخواه انتقالx تعیـین کننـده سـطر وy مشـخص کننـده

.شماره ستون است

Locate x, y

Ex: Locate 1,5

.درو میبا دستور باال مکان نما به سطر اول ستون پنجم

دستورShiftlcd : کند میاین دستور کل صفحه نمایش را یک واحد به سمت چپ یا راست منتقل.

Shiftlcd Left (or Right)

Ex : Shiftlcd Right

دستورDeflcdchar : براي تعریف کارکتر جدید درLCD شـود و بـراي تعریـف متغیـر جدیـد مـی از ایـن دسـتور اسـتفاده

سپس به محـض کلیـک ابتدا حرف یا عالمت دلخواه را طراحی نموده LCD Designer و به قسمت Toolsتوان به منوي می

.شود میاین دستور به صورت اتومات به برنامه اضافه OKکردن بر روي دکمه

Page 111: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

49

.دهد میرا در وسط سطر اول نمایش Helloاین برنامه پیغام :برنامه نوشته شده براي این آزمایش

$regfile = "m32def.dat"

$crystal = 8000000

'-------------------------------LCD CONFIG------------------------------------

Config Lcdpin = Pin, Db4 = PortC.4, Db5 = PortC.5, Db6 = PortC.6, Db7 = _

PortC.7, E = PortC.1, Rs = PortC.0

Config LCD = 16 * 2

Cls

Dim A as byte

Do

Home

For A = 0 to 4

ShiftCursor Right

Next A

LCD "Hello!"

Waitms 500

Loop

End

ه ها و پایه LCDي ها در دو خط اول و دوم به معرفی میکرو و فرکانس کاري میکرو تعیین شده و در خط چهارم به تنظیم پایه یی کـه ـب

7تـا 4 يهـا پایـه Cبه پورت LCD ي دیتا ها بینید پایه می( ) همانطور که در شکل پردازیم و در این قسمت میمیکرو متصل شده

. متصل شده است این پورت 1و 0ي ها به پایه LCDي کنترل ها و پایه

.استفاده شده است LCD 16*2کنیم که در این جا از میرا تعیین LCDبه نوع 6در خط

.کنیم میو از نوع بایت تعریف Aدر خط بعد یک متغییر به نام کل صفحه نمایش پاك شده و 7در خط

.پردازیم میبه تعریف حلقه بی پایان 16و 9در خط

با مکان نمـا را بـه جلـو 5که FORدهد و در خط بعدي به تعریف یک حلقه میمکان نما را به سطر اول و ستون اول انتقال 10در خط

:از این دستور استفاده کرد Shiftlcdو دستور FORور زیر به جاي حلقه توان از دست میالبته . برد می

Locate 1,5

.شود میدر مرکز صفحه ، نمایش داده !Helloپیغام 13در خط

.و ادامه حلقه . یک تاخیر ایجاد شده 14در خط

.باشد میاعالن پایان برنامه 16در خط

Page 112: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

50

ي پیشنهادي ها سواالت و پروژه

ثانیه تاخیر در وسط سطر اول نمایش دهد ؟ 1را با میکه اعداد زوج دو رقگونه اي تغییر دهید هباال را ببرنامه -1

5در وسط سطر اول و نام شما را در وسـط سـطر دوم نمـایش دهـد و بعـد از Helloبرنامه اي براي میکرو بنویسید که پیغام -2

و نام شما در صفحه نمایش باقی نماند ؟ Helloیام ثانیه به سمت چپ حرکت کند به گونه اي که اثري از پ

طراحی کنید به گونه اي که با هر بار زدن کلید یک بار به عدد قبلی اضافه کند ؟ مییک شمارنده سه رق -3

کانتر میکرو نیز آزمایش کنید ؟/ سعی کنید آزمایش باال را با تایمر -4

حه کلید را در میکرو مشاهده کنید؟یک صفحه کلید به میکرو ببندید و مقادیر خروجی صف -5

Page 113: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

51

7آزمایش شماره

: آزمایش

LCDمیکرو و نمایش دماي محیط بروي ADCو LM35آشنایی با

:وسایل مورد نیاز

1- LCD 16*2

LM35سنسور -2

Ω 100 و k Ω 10 :مقاومت -3

)bread board(برد بورد -4

منبع تغذیه -5

سیم رابط - 6

8MHZکریستال -7

22Pfعدد خازن عدسی 2و 1µFعدد خازن 1و 100µF کترولیتی عدد خازن ال 2 -8

ATMEGA32میکروکنترلر -9

7805رگالتور - 10

Page 114: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

52

:هدف آزمایش

ت معمـول میکـرو . باشـد مـی ، نیاز به دریافت سیگنال آنالوگ توسط میکرو و انجام پردازش بروي آن ها در بعضی کاربرد در حاـل

رم افـزاري . باشد میاطالعات دیجیتال فقط قادر به انجام پردازش بروي ایـن AVRمیکـرو ADCکه با پیکر بندي سـخت افـزاري و ـن

در این آزمـایش بـا نحـوه عملکـرد سنسـور .دهد تا بتواند اطالعات آنالوگ را دریافت و آن را به دیجیتال تبدیل کند میقابلیت را به میکرو

.شوید میي مشابه آن آشنا ها و نمونه LM35دما

:دهیم میابتدا عملکرد اجزاء مورد استفاده در این آزمایش را مورد برسی قرار

LM35سنسور دماي

.از داخل کالیبره شده اند و نیازي به کالیبراسیون خارجی ندارند ها این سنسور. خروجی این سنسور ولتاژ خطی متناسب با دما است

:زیر قابل مشاهده است در جدول LM35مشخصات تعدادي از اعضاي خانواده

مقیاس خروجی دقت محدوده دما قطعه

LM35A -55C to +150C +1.0C 10m V/C

LM35 -55C to +150C +1.5C 10m V/C

LM35CA -40C to +110C +1.0C 10m V/C

LM35C -40C to +110C +1.5C 10m V/C

LM35D 0C to +100C +2.0C 10m V/C

LM35سنسورهاي دماي خانواده مشخصات مهم( ) .جدول

Temperature Rangeسـتون . باشـد میداراي اعضاي مختلف و با دقت متفاوت LM35بینید خانواده میهمانطور که در جدول فوق

دقتـی (دقت سنسور بر حسـب درجـه سـانتیگراد Accuracy، ستون )محدوده حساسیت(محدوده دماي قابل اندازه گیري توسط سنسور

میـزان Output Scaleو ستون آخر یعنی ) دهد میسب آن نسبت به تغییر دما واکنش نشان داده و خروجی ولتاژ خود را تغییر که بر ح

1باشـد ، هـر تغییـر 10mVمعادل برابر Scaleو مقدار C°1+یعنی اگر دقت سنسور . دهد میتغییر ولتاژ متناسب با تغییر دما را نشان

.گردد میمیلی ولت 10به اندازه ) در همان جهت(وجب تغییر ولتاژ خروجی درجه اي در دماي سنسور م

:باشد میپایه به شکل زیر 3داراي LM35سنسور دماي

وجود دارد که دقت و حساسـیت LM34هاي دما به نام خانواده مشابه اي از سنسور

.آنها به دما بر حسب درجه فارنهایت می باشد نکته

1 - VCC یاVs تا 4که می تواند از

اشدولت ب 202 - Vout خروجی سنسور ولتاژ

3 - GND پایه متصل به زمین

با دید از پایین LM35هاي سنسور پایه( ) .شکل

Page 115: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

53

:را براي اندازه گیري حرارت به کار برد LM35توان سنسور میبه دو صورت

ی معادلو محدوده دمای LM35دو روش اتصال تراشه ( ) .شکل

ه ولـت 5بـین صـفر تـا ADCمرجـع ولتاژ بیتی است و 10داخل میکروکنترلر از آنجایی که مبدل آنالوگ به دیجیتال 1024، ـب

ه عبارت به .واحد است 046/2در آن معدل mV10شود ، هر میتقسیم ) 1023از صفر تا (بخش الوگ ـب دیگر اگر عدد خروجی مبدل آـن

.آورید میر را بر حسب سانتیگراد به دست کنید ، دماي پیرامون حسگ تقسیم 046/2دیجیتال را بر

میکرو ADCمبدل آنالوگ به دیجیتال

:توان به موارد زیر اشاره نمود میروشهاي مختلفی براي طراحی مبدل آنالوگ به دیجیتال وجود دارد که از جمله

مبدل آنالوگ به دیجیتال با شمارنده)Counter Analog to Digital Convertor (

مبدل آنالوگ به دیجیتال با مقایسه موازي)Parallel – Comparator A/D(

مبدل آنالوگ به دیجیتال دو شیبه)Dual Slop A/D (

ي متوالی ها مبدل آنالوگ به دیجیتال از نوع تقریب )Successive – Approximation Convertor(

ي متـوالی اسـتفاده شـده اسـت و ایـن مبـدل ، هـا نوع تقریب A/Dالوگ به دیجیتال از مبدل براي مبدل آن AVRي ها در میکرو کنترلر

.دهد میبیتی در آورده و به ما 10سیگنال آنالوگ را به صورت عدد دیجیتال،

ATmega32در ADCخصوصیات مبدل

ر روي کانال 8آنالوگ با مالتی پلکسر به یک Atmega32 ،ADCبا توجه به اینکه در میکرو ورودي متصـل شـده اسـت و ایـن کانالهـا ـب

تـوان از طریـق مـی ایـن سـیگنالها را . فراهم گردیـده اسـت ADCسیگنال آنالوگ توسط 8قرار گرفته ، امکان تبدیل همزمان Aپورت

راي داخلی متصل گردیده و عملیات تبدیل آنـالو ADCبه مبدل اعمال نموده و هر کانال به نوبت به Aي پورت ها پایه گ بـه دیجیتـال ـب

.گردد میآن انجام

: به صورت زیر است ADCبرخی از خصوصیات مبدل

ADC باشد میبیتی 10به صورت.

65زمان تبدیل بینus 125تاus است.

تا 0محدوده ولتاژ آنالوگ ورودي بینVCC باشد می.

تر وجود داردامکان تغییر ماکزیمم سطح ولتاژ آنالوگ ورودي براي رسیدن به دقت باال.

2.56ولتاژ مرجع Volt قابل انتخاب برايADC .

امکان دادن وقفه ، هنگام پایان عمل تبدیل.

Page 116: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

54

امکان دادن وقفه ،هنگام پایان عمل تبدیل.

امکان قرار گرفتنAVR در مدSleep براي نویز در هنگام عملیات تبدیل.

ل انتخاب د دارد دو کانال ورودي دیفرانسیلی با بهره قابوجوx10 وx200 براي تقویت سیگنالهاي آنالوگ ضعیف.

امکان تریگر شدن خود کار شروع تبدیلADC با منابع وقفه مختلف.

15حداکثر سرعتksps )15000 نمونه در ثانیه (

دقت مطلقLSB2 .

داراي هشت کانال ورودي دیفرانسیلی.

ADCم آنالوگ به دیجیتال بلوك دیاگرا( ) . شکل

Page 117: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

55

ADC یک پایه تغذیه آنالوگ مجزا دارد)AVcc .( ا 3/0این پایه نباید بیشتر از عـالوه بـر آن . اخـتالف داشـته باشـد Vccولت ـب

.گردد میبوده که به زمین سیگنال آنالوگ متصل AGNDداراي یک زمین جداگانه

Voltage(کمتر تعریـف نمـاییم از ولتـاژ مرجـع خـارجی VCCرا از سطح در صورتی که بخواهیم ماکزیمم ولتاژ آنالوگ ورودي

Reference ( کنیم براي این منظور پایه میاستفادهAREF داراي مقـداري شـود بایسـتی مـی وجود داشته ، ولتاژ که به این پایه متصل

.باشد AVCCتا AGNDبین

در حالـت .کنـیم میمتصل VCCرا به AREFنظر گرفته شود پایه در VCCاگر بخواهیم ماکزیمم ولتاژ آنالوگ ورودي ، همان

بیتی تبدیل نموده و کمترین مقـدار ، نشـاندهنده مقـدار آنـالوگ 10مقدار آنالوگ ورودي را به مقدار دیجیتال AREF ،ADCاستفاده از

.باشد می AREFو باالترین مقدار ، نشان دهنده ولتاژ پایه AGNDموجود در پایه

5/3نشان دهنده ولتـاژ 1023مقدار دیجیتال . در نظر گرفته شده باشد AGND = 0و AREF=3.5 Voltمثال اگر پایه به طور

.است ADCبروي پایه مبدل Volt 0نشان دهنده ولتاژ 0ولت و مقدار

ع دیگـر اسـتفاده کنـد امـا در ي مرجـ هـا تواند از ولتـاژ میاستفاده نماید ن AREFاگر کاربر از یک منبع ولتاژ ثابت متصل به پایه

.یکی را انتخاب کند Volt 2.56و VCCتواند در داخل برنامه بین ولتاژ مرجع میصورت عدم اعمال ولتاژ خارجی به این پایه ،کاربر

ADCي کاهش نویز در ها تکنیک

ه . تـاثیر بگذارنـد ADCه گیـري ي جانبی در داخل و خارج میکروکنترلر ایجاد نویز کرده و ممکن است در دقت اندازها دستگاه ـب

. توان اقدامات زیر را انجام داد میهمین جهت

دور نگه داریدمسیر سیگنالهاي آنالوگ را تا حد امکان کوتاه نموده و این مسیر را از مسیر دیجیتال.

ا زمـین دیجیتـال توسـط یـک سـیم متصـل قسمتهاي آنالوگ باید داراي زمین جداگانه باشند که در پایان ، این زمین ـب

.شود می

پایهAVCC توسط یک فیلتر پایین گذرLC به ( ) به صورت شکلVCC متصل گردد.

براي حذف نویز AVRبه LCاتصال فیلتر پایین گذر ( ). شکل

کانالهاي میاگر از تماADC ي پـورت هـا کنیم و تعدادي از پایـه میاستفاده نA خـواهیم بـه صـورت خروجـی مـی را

.کنیم ، بهتر آن است که آنها را در حین انجام تبدیل ، سوئیچ نکنیم میاي موارد دیگر استفاده یجیتال برد

براي کاهش نویز ناشی ازCPU از واحد حذف کننده نویزADC استفاده نمایید.

قرار دادنAVR در مدSleep سبب کاهش نویز گردیده و وقفه تبدیلADC ، اگر فعال شـده باشـدCPU را در پایـان

.کند میخارج Sleepتبدیل از حالت

10 uH

100 nF

AVR

VCC

AVCC

Page 118: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

56

Bascomدر محیط ADCپیکر بندي

:BASCOMدر محیط ADCدستور پیکره بندي

CONFIG ADC = SINGLE/FREE,PRESCALER = AUTO ,REFRENCE=OPTIONAL

ADC داراي دو مد تبدیلSINGLE و FREE مد . باشد میSingle ه توسط کاربر پیکر بندي ش ده و کانال دلخواه براي نموـن

.کند می Updateرا مرتبا ADCبا یک ثابت نمونه برداري ، ریجستر داده free ،ADCگردد و در مد میبرداري انتخاب

PRESCALER : کالكADC کند میرا مشخص.ADC بیتـی نیـاز بـه کالکـی بـا فرکـانس 10براي انجام تبـدیل بـا دقـت

50KHz,200KHz این کالك از تقسـیم کـالك اصـلی دارد کهAVR ا قـرار دادن . گـردد مـی حاصـل PRESCALER = AUTOـب

128، و 64، 32، 16، 8، 2،4تـوان مقـادیر مـی اما .کند میانتخاب ADCکامپایلر با توجه به فرکانس اسیالتور، بهترین کالك را براي

.دهد میرا نشان را نیز براي آن انتخاب نمود که این اعداد ضریب تقسیم کالك

.باشد میبراي مشخص نمودن نحوه تعیین ولتاژ مرجع REFRENCEگزینه انتخابی

OPTIONAL:

OFF :توسـط پایـه را از بیرون ولتاژ مرجع گردد که میاستفاده زمانیAREF بـدهیم در ایـن حالـت از مـدار زیـر

.کنیم میاستفاده

AVCC : تاژ پایه که ولشود میاستفاده زمانیAVCC کـه در ایـن حالـت .در نظر گرفته شود مرجعولتاژ به عنوان

.توان استفاده نمود میاز مدار زیر

10 uH

100 nF

AVR

VCC

AVCC

AGND

AREF

AREFدر هنگام اعمال ولتاژ مرجع خارجی توسط ADCدر ها ارتباط پایه( ). شکل

10 uH

100 nF

AVR

VCC

AVCC

AGND

AREF

براي ولتاژ مرجع AVCCهنگام در نظر گرفتن ADCدر ها ارتباط پایه( ). شکل

Page 119: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

57

INTERNAL: تـوان میولت استفاده نماییم در این حالت 2.56باشد که بخواهیم از ولتاژ مرجع داخلی آن میزمانی

.متصل کردرا مستقیم به زمین AREFیا اینکه از مدار باال

: ()GETADCدستور

. شود میبه مقدار دیجیتال تبدیل (7-0)شده به کانالهاي با این دستور سیگنال آنالوگ وارد

Var = GETADC (channel)

Var نتیجه تبدیل وchannel پورت 7تا 0ي ها بین پینتواند میکه کانال مبدل آنالوگ به دیجیتال انتخابیA باشد.

()STOPو ()STARTدستور

.کند می ADCشروع به نمونه برداري از ADC START ،ADCتوسط دستور

.دهیم میکنیم و به عملیات تبدیل پایان میقطع ADC ، تغذیه را از ADC STOPتوسط دستور

ADCنحوه کار با وقفه

ه پایـان رسـید از سیگنال ADCزمانی که کار نمونه برداري ه نـام ADC آنالوگ ـب را یـک ADCپـرچم اتمـام تبـدیل خـود ـب

فعال کرده باشیم در زمانی که وقفه سراسري نیز فعال شـده Enable ADCرا نیز توسط دستور ADCوقفه مربوط به حال اگر .کند می

ه Sleepد در م AVRباشد، در صورت پایان تبدیل ، یک وقفه به میکرو وارد شده و در صورتی که قرار داشته باشد از این مـد ، خـارج و ـب

.پردازد میاجراي زیر برنامه وقفه

.کنیم میرا مشخص ADCآدرس شروع زیر برنامه وقفه مربوط به ON ADC Labelضمنا توسط دستور

ثانیـه نمـایش دهـیم در 5/0 با فواصل زمـانی LCDرا به ترتیب بر روي ADCي ها خواهیم معادل دیجیتال تک تک کانال می: 1 مثال

. کنار هر مقدار دیجیتال ، شماره کانال را هم نمایش خواهیم داد

$regfile = "m32def.dat"

$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = _

Portc.7 , E = Portc.1 , Rs = Portc.0

Config Lcd = 16 * 2

Cls

Dim W As Word , Channel As Byte

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc

Channel = 0

Do

W = Getadc(channel)

Home

Lcd "Channel =" ; Channel ; "Value =" ; W

Incr Channel

Waitms 500

If Channel > 7 Then Channel = 0

Loop

Page 120: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

58

End

را نمایش دهیم با این فرض کـه ADCثانیه ، اطالعات دیجیتال تبدیل یافته توسط کانال صفر 5/0خواهیم با فواصل زمانی می: 2مثال

ترلـر را از قرار داده ولی به محـض پایـان تبـدیل ، وقفـه ایجـاد گردیـده و میکروکن Sleepبراي کاهش نویز و دقت باالتر ، میکرو را در مد

.کند میخارج و زیر برنامه مربوط به وقفه را اجرا sleepحالت

.دهد میقرار ADCبراي کاهش نویز در هنگام عملیات تبدیل Sleepمیکروکنترلر را در مد Idleدستور

$regfile = "m32def.dat"

$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = _

Portc.7 , E = Portc.1 , Rs = Portc.0

Config Lcd = 16 * 2

Cls

Dim W As Word , Channel As Byte

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Enable Interrupts

Enable Adc

On Adc Adc_lable

Channel = 0

Start Adc

Do

W = Getadc(channel)

Idle

Loop

End

Adc_lable:

Home

Lcd "Channel =" ; Channel ; "Value =" ; W

Waitms 500

Return

توضیح در مورد سخت افزار مدار

شـروع بایسـت انجـام داد را مـی ي کـه در ایـن آزمـایش هـا همانند آزمایش قبل مدار راه انداز را به میکرو وصل کرده و مابقی کار

ي کنترلـی ها و پایه 7تا 4ي ها به پین D4~D7کنید باس داده میمیکرو به صورتی که مشاهده Cبه پورت LCDبا اتصال .کنیم می

E,RS پورت 1و 0ي ها به پینC و مدار. متصل شده اندLCD ه به صورتی کـه در آزمـایش قبـل توضـیح داده شـده را ( ) شکل ـب

رسد که بـا توجـه بـه شـماره می LM35حال نوبت به سنسور دما . کنیم میوصل LCDمتغییر جهت تنظیم نور منبع تغذیه و مقاومت

ه 2و پایـه شـماره VCC(+5V)را بـه 1توضیح داده شـد پایـه ( ) ي این تراشه که در باال در شکل ها پایه خروجـی ایـن سنسـور را ـب

ADC 0 میکروکنترلر 40میکرو که پایه شمارهATMega32 پس از اطمینان از اتصـال . کنیم میرا به زمین مدار وصل 3و پایه شماره

.کنیم میو مدار میکرو را پروگرام کرده و با جا گذاري میکرو در مدار نتیجه را برسی ها درست همه پایه

Page 121: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

59

:LCDنمایش دماي محیط بروي شماتیک مدار

LM35دیجیتال با سنسور جمدار دما سن( ). شکل

Page 122: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

60

:LCDنمایش دماي محیط بروي برنامه مربوط به

$regfile = "m32def.dat"

$crystal = 8000000

'------------------------------LCD CONFIG------------------------------------

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 _

Portc.7, E = Portc.1, Rs = Portc.0

Config Lcd = 16 * 2

Cls

Config Adc= Single, Prescaler = Auto

Start Adc

Dim T As Word

Do

T = Getadc(0)

T = T / 2 'real temp calculate

Locate 1 , 1

Lcd "Temp = " ; T ; " "

Waitms 200

Loop

End

Page 123: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

61

ادي سواالت و پروژه هاي پیشنه

قرمز روشن شـود و اگـر LEDدرجه باالتر رفت 27اي تغییر دهید که اگر دماي محیط از برنامه و شماتیک آزمایش را به گونه -1

سبز روشن شود؟ LEDبود 27تا 25زرد و اگر دما بین LEDبود 25دما کمتر از

را از کـاربر دریافـت کـرده و نسـبت بـه آنهـا واکـنش هاي سـوال اضافه کنید تا بتوان مقدار شرط KeyPadبه آزمایش قبل یک -2

؟ )دهد به هر عددي که کاربر با کی بورد به میکرو می 27مثل تغییر عدد (مناسب دهد

با استفاده ار یک مقاومت متغییر آزمایش را یک بار دیگر امتحان کنید ؟ LM35سعی کنید به جاي سنسور -3

Page 124: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

62

8آزمایش شماره

RTC ساعت دیجیتال

:وسایل مورد نیاز

1- LCD 16*2

k Ω , 100 Ω(1) 10 :مقاومت -2

k Ω 10عدد مقاومت متغیر 1 -3

)bread board(برد بورد -4

منبع تغذیه -5

سیم - 6

32.768KHzکریستال -7

10PFخازن عدسی 2و 10µF عدد خازن الکترولیتی 1 -8

عدد 3کلید فشاري -9

AVR (ATMEGA32(میکروکنترلر - 10

LEDعدد 1 - 11

7805ر رگالتو - 12

: هدف آزمایش

و سـاختن میکرو به همـراه کریسـتال داخلـی 2به تایمر کانتر KHz 32.768ساخت یک مدار عملی با میکرو و اتصال کریستال

.یک ساعت دقیق

Page 125: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

63

د » در عصر امپراطوري دوم«حدود شش قرن قبل از میالد، بابلی ها :تاریخچه کـه چنـد مـورد ابـداعی از خـود بجـاي گذاشـته اـن

براي ساعت، از یادگارهاي بابلی هـا بشـمار 60مرسوم داشتن هفت روز هفته و تعیین عدد پایه . امروزه نیز مورد استفاده کلیه کشورهاست

لـذا، ایـن عـدد را پایـه در . قابل تقسیم است 30، 20، 15، 10، 6، 5، 3، 2، 1به اعداد 60بابلی ها عقیده داشتند چون عدد . میرود

از کارهـاي بـابلی هـا » 60مضـربی از «درجـه 360بـه همچنین تقسیم بنـدي دایـره . نظر گرفته و مبناي تقسیم بندي ساعت قرار دادند

.میباشد

طراحی مدار ساعت دیجیتال

آزمـایش کـه در LCD مدار راه انداز میکرو و بعد مدار راه انـداز ،به این گونه که ابتدا ببندید مدار را همانند شکل ،ر این بخشد

1را به پایـه RSو ) B4~B7(میکرو 7~5 هايپایه را به ) D4~D7(صفحه نمایش Dataو پایه هاي .دکنیصل توضیح داده شده و قبل

.متصل کنید) B1(میکرو 2را به پایه Eو )B0(میکرو

کـه یـک سـر . مـی باشـد یا خروج از منو را دارا Setو کلید افزاینده اعداد ،که عملیات منو عدد کلید فشاري سهاین ساعت داراي

راي اینکـه ایـن کنیدوصل زمینو سر دیگر آن را به )Dپورت 2و1و 0پین (میکرو 16و 15 ،14ي ها کلید را به پایه سهاین و از طرفی ـب

ه 100KΩ می توانید توسط سـه مقاومـت براي این عمل کهباشند Pull-Upبایست میدر حالت عادي ي میکروها پایه VCCآنهـا را ـب

.داخلی میکرو فعال است نیازي به گذاشتن این مقاومت ها نیست Pull-Upمقاومت هاي ولی چون در این آزمایش . متصل کنید

ثانیه بر عهده دارد که آن را می بایست به پایـه 1است که این کریستال نقش ایجاد KHz 32.678حال نوبت به اتصال کریستال

.متصل کنید ) TOSC1,TOSC2(میکرو 29 و 28هاي

KHz 32.768مدار ساعت دیجیتال با کریستال). ( شکل

Page 126: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

64

:ساعت دیجیتال برنامه نوشته شده براي

کـالك سـاعت کـه بندي پرداخته شده و در قسمت بعد به پیکر LCDبندي همانند آزمایش قبل در این آزمایش در ابتدا به پیکر

در خـط بعـدي . و به مرحله قبل از فراخوانی تابع بـاز مـی گـردد رفته و برنامه هاي داخل آن را اجرا کرده Secticدر هر یک ثانیه به تابع

عنوان ورودي و با یـک کـردن تمـام به Dمعرفی کردن پورت .تمامی وقفه ها غیر فعال شده تا هیچ وقفه اي در روند پردازش تاثیر نگذارد

بـراي انتخـاب Slcمتغییـر .پـردازیم آن مـی داخلی را نیز فعال کرده و بـه معرفـی متغییـر هـاي Pull-Upبیت هاي این پورت مقاومت

و بـا قـرار دادن . متصل گردیده تعریف می کنـیم ) PD0( 14تنظیمات ساعت ،دقیقه ،روز ،ماه و سال که توسط کلیدي که به پایه شماره

فتن مقـادیر اولیـه توسـط کـاربر بـراي گـر Scanمقادیر اولیه به متغییر هاي روز و ماه و سال و ساعت و دقیقه برنامه کار خود را در تابع

تغییر کرده و به تنظیمات دیگر سـاعت مـی رود Slcمقدار ) میکرو 14کلید متصل به پایه ( MENUو با هر بار زدن کلید کند شروع می

.صفر گردد ) 16کلید متصل به پایه ( Setو این کار را تا زمانی انجام می دهد که کلید

و در رود مـی Secticعال کردن وقفه هاي میکرو بعد از هر یک ثانیه از این تابع خارج شده و به تـابع رفته و با ف Wait1sو به تابع

ثانیه یک واحد به مقـدار قبلـی دقیقـه شـماره و مقـدار سـاعت 60این تابع نیز یک واحد به ثانیه اضافه کرده و سایر شرط ها را که در هر

. کند میاضافه به روز و همچنین به ماه و سال ساعت 24و بعد از دقیقه 60شمار بعد از هر

$regfile = "m32def.dat"

$crystal = 8000000

'***************************** LCD CONFIG ********************************

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = _

Portb.7 , E = Portb.1 , Rs = Portb.0

Cls : Home : Cursor Off

'****************************** Clock Config ********************************

Config Clock = Soft , Gosub = Sectic

Disable Interrupts

'--------------------------------------------------------------------------

Config Portd = Input

Portd = 255

Dim Flag As Bit

Dim S As Byte ' Second

Dim M As Byte ' Minute

Dim H As Byte ' Hour

Dim Y As Word ' Year

Dim Mo As Byte ' Month

Dim D As Byte ' Day

Dim Slc As Byte ' select

Slc = 0

Y = 1388

Mo = 1

D = 1

Page 127: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

65

H = 12

Flag = 0

'************************

Scan:

If Pind.0 = 0 Then Slc = Slc + 1

If Slc = 5 Then Slc = 0

If Pind.2 = 0 Then 'start

Flag = 0

Goto Wait1s

End If

On Slc Goto Hour , Minute , Year , Month , Day

Goto Scan

'************************

Wait1s:

Enable Interrupts

Do

If Pind.0 = 0 Then

Flag = 1

Goto Scan

End If

Loop

'************************

Sectic:

If Flag = 0 Then Gosub Show

Incr S

If S > 59 Then

S = 0

Incr M

If M > 59 Then

Incr H

M = 0

If H > 23 Then

H = 1

Incr D

End If

End If

End If

'******************* 30 Day or 31 Day Selected For Month ******************

If Mo < 7 Then Goto First

If Mo => 7 Then Goto Second

Page 128: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

66

First:

If D > 31 Then

D = 1

Incr Mo

End If

Return

Second:

If D > 30 Then

D = 1

Incr Mo

If Mo > 12 Then

Mo = 1

Incr Y

End if

End If

Return

'******************* Display Date & Time in LCD ***************************

Show:

Cursor Off

Cls : Home

Locate 1 , 1

Lcd Y ; "/" ; Mo ; "/" ; D

Locate 2 , 1

Lcd H ; ":" ; M ; ":" ; S

Return

End

'************************** Time & Date Setting **************************

Hour:

If Pind.1 = 0 Then H = H + 1

If H => 24 Then H = 0

Lcd "Hour :" ; H

Waitms 400

Cls : Home

Goto Scan

Minute:

If Pind.1 = 0 Then M = M + 1

If M => 60 Then M = 0

Lcd "Minute=" ; M

Waitms 400

Page 129: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

67

Cls : Home

Goto Scan

Year:

If Pind.1 = 0 Then Y = Y + 1

If Y = 1400 Then Y = 1389

Lcd "Year=" ; Y

Waitms 400

Cls : Home

Goto Scan

Month:

If Pind.1 = 0 Then Mo = Mo + 1

If Mo = 13 Then Mo = 1

Lcd "Month=" ; Mo

Waitms 400

Cls : Home

Goto Scan

Day:

If Pind.1 = 0 Then D = D + 1

If D = 32 Then D = 1

Lcd "Day=" ; D

Waitms 400

Cls : Home

Goto Scan

Page 130: ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ هﺎﮕﺸﯾﺎﻣزآ · ٢ avr هداﻮﻧﺎﺧ يﺎﻫ ﺮﻟﺮﺘﻨﮐوﺮﮑﯿﻣ ﺮﺑ ﯽﻠﮐ يروﺮﻣ : لوا ﺶﺨﺑ (1

68

هاي پیشنهادي سواالت و پروژه

؟سال هاي کبیسه را محاسبه کرده و در تعداد روز هاي سال تاثیر گذاري داشته باشددهید که گونه اي تغییر برنامه باال را به -1

را بـا اضـافه روز هـاي هفتـه یک متغییـر جدیـد کـه به فارسی باشد و "شنبه " کارکتر جدید که در بر گیرنده 3به برنامه باال -2

برنامـه LCD Designerکـه توسـط مانند کد هاي زیـر (ش دهدرا نیز نمای " شنبه1 "مانند عبارت شنبه در کنار کردن آن

Bascom ؟)ساخته شده است

Deflcdchar 0 , 4 , 10 , 32 , 21 , 31 , 32 , 32 , 32 ' ش

Deflcdchar 1 , 32 , 4 , 32 , 10 , 31 , 32 , 16 , 32 ' نب

Deflcdchar 2 , 32 , 32 , 6 , 6 , 3 , 32 , 32 , 32 ' ه

:نگام نمایش نیز به این صورت می توانید نمایش دهید ه

Lcd Y ; ":" ; Mo ; ":" ; D ; " " ; Chr(2) ; Chr(1) ; Chr(0) ;DayCounter

Output: 89:2:29 4شنبه

متصـل کنیـد و همچنـین بـا اضـافه کـردن تنضـیمات زنـگ Alarmمیکرو که بیانگر 22پایه PC0به LEDبه مدار باال یک -3

Alarm به برنامه ، یک ساعت کامل بسازید.

بسازید و نتیجه را مقایسه کنید؟ Waitmsساعت باال را یک بار بدون استفاده از کریستال و با استفاده از دستورات -4