چکيده :
در اين پروژه پيرامون طراحي نرم افزار ساخت يک قفل الکترونيکي با استفاده از ميکرو کنترلر AVR(ATMEGA8)  مطالبي چند به ميان آمده است اين قفل توانايي اين را دارد که توسط سه نفر و با سه رمز رقمي متفاوت مورد استفاده قرار گيرد .
ميکرو AVR  رمز را از يک صفحه کليد ماتريسي دريافت مي کند و پس از نمايش برروي صفحه نمايشگر LCD  پس از مقايسه با رمز موجود در حافظه در صورت صحيح بودن رله اي را براي يک ثانيه فعال مي کند و قفل باز مي گردد هر يک از اين کاربرها به راحتي
مي توانند رمز مورد نظر خود را تغيير دهند و رمز ديگري را جايگزين آن کنند .
يک رمز ۵ رقمي نيز به عنوان رمز SUPERVISER  تعريف شده است که در صورتی که يکي از کاربرها رمز خود را فراموش کرد مي تواند با وارد کردن آن سه رمز ديگر را صفر کند و کاربرها مي توانند با مراجعه  دوباره رمز مورد نظر خود را وارد کنند و پيغام هاي ميکرو نيز در هر مرحله با توجه به کليد فشار داده شده بر روي صفحه نمايشگر LCD  نمايش داده
مي شود .
در اين پروژه در معرفي به نحوه کار با ميکرو کنترلر AVR پرداخته شده است و سپس طراحي مدار و نرم افزار قفل آمده است که در آن نحوه عملکرد مدار ، نقشه شماتيک  مدار معرفي زير برنامه ها و در نهايت مجموعه متن نرم افزار بيان گرديده است .

مقدمه :
مختصري راجع به AVR
زبانهاي سطح بالا يا همان HLL (HIGH Level Language) به سرعت در حال تبديل شدن به زبان برنامه نويسي استاندارد براي ميکرو کنترلرها (MCU) حتي براي ميکروهاي ۸ بيتي کوچک هستند زبان برنامه نويسي C و BASIC  بيشترين استفاده را در برنامه نويسي ميکروها دارند ولي در اکثر کاربردها کدهاي بيشتري را نسبت به زبان برنامه نويسي اسمبلي توليد مي کنند .   
ATMEL  ايجاد تحولي در معماري جهت کاهشي کد به مقدار مينيمم را درک کرد که نتيجه اين تحول ميکروکنترلرهاي AVR هستند که علاوه بر کاهش و بهينه سازي مقدار کدها به طور واقع عمليات را تنها در يک کلاک سيکل توسط معماري RISC انجام مي دهند و از ۳۲ رجيستر همه منظوره استفاده مي کنند که باعث شده ۴ تا ۱۲ بار سريعتر از ميکروهاي مورد استفاده کنوني باشند .
تکنولوژي حافظه کم مصرف غير مدار شرکت ATMEL  براي برنامه ريزي AVR ها مورد استفاده قرار گرفته است در نتيجه حافظه هاي FLASH و EEPROM  در داخل مدار قابل برنامه ريزي (ISP) هستتد ميکرو کنترلرهاي اوليه AVR  داراي ۱ و ۲ و۳ کيلوبايت حافظه FLASH  و به صورت کلمه ۱۶ بيتي سازماندهي شده بودند .
AVR ها به عنوان ميکرو RISC  با دستورات فراوان طراحي شده اند که باعث مي شود حجم کد توليد شده کم و سرعت بالاتري بدست آيد .

خصوصيات (ATMEGA 8)  
    از معماري AVR RISC  استفاده مي کند .
    داراي ۱۶ دستورالعمل با کارآيي بالا که اکثرا ً تنها در يک کلاک سيکل اجرا مي شوند
    ۸*۳۲  رجيستر کاربردي
    سرعتي تا ۶m/ps ( در فرکانس ۶mhz)
    حافظه ، برنامه و داده غير فرار
    BK  بايت حافظه FLASH  داخلي قابل برنامه ريزي
    پايداري  حافظه FLASH  : قابليت ۱۰۰۰ بار نوشتن و پاک کردن
    ۱۰۲۴ بايت حافظه داخلي SDRAM
    ۵۱۲ بايت حافظه EEPROM  داخلي قابل برنامه ريزي
    پايداري حافظه EEPROM : قابليت ۱۰۰۰۰ بار نوشتن و پاک کردن
    قفل برنامه FLASH  و حفاظت EEPROM

خصوصيات جانبي
    دو تايمر – کانتر ۸ بيتي با PRESCALER  مجزا و داراي مد COMPARE
    يک تايمر – کانتر ۱۶ بيتي با PRESCALER  مجزا و داراي COMPARE و CAPTURE
    ۳ کانال PWM
    ۳ کانال مبدل ، آنالوگ به ديجتال در بسته بندي هاي TQFP و MLF
    ۶ کانال با دقت ۱۰ بيتي
    ۲ کانال با دقت ۸ بيتي
    ۶ کانال مبدل آنالوگ به ديجيتال در بسته بندي هاي PDIP
    ۴ کانال با دقت ۱۰ بيتي
    ۲ کانال با دقت ۸ بيتي
    داراي RTC  با اسيلاتور مجزا
    يک مقايسه کننده آنالوگ داخلي
    USART سريال قابل برنامه ريزي
    WATCHDOG  قابل برنامه ريزي با اسيلاتور داخلي
    ارتباط سريال SPT  براي برنامه ريزي داخل مدار
    قابليت ارتباط با پروتکل سريال دو سيمه
    قابليت ارتباط سريال SPI به صورت MASTER يا SLAVE

خصوصيات ويژه ميکروکنترلر
    POWER – ON RESET CIRCUIT
    داراي ۵ حالت Sleep (ADC Noise و IDEL و STANDBY  و POWER DOWN  و POWER – SAVE  و REDUCTION )
    منابع وقفه ( INTERRUPT) داخلي و خارجي
    داراي اسيلاتور RC  داخلي کاليبره شده
    عملکرد کاملا ً ثابت
    توان مصرفي پايين و سرعت بالا توسط تکنولوژي CMOS
    توان مصرفي در ۲۵a,3V,4MHZ
    حالت فعال ۳٫۶ MA
    در حالت غير فعال ۱٫۰MA
    ولتاژهاي عملياتي ( کاري )
۲٫۷V  تا ۵٫۵  براي (ATMEGA 8L)
4.5V  تا ۵٫۵  براي (ATMEGA8)
    فرکانس کاري
۰MHZ تا ۸MHZ براي (ATMEGA 8L)
0MHZ تا ۱۶MHZ براي (ATMEGA8)
    خطوط I/O و انوع بسته بندي
۲۳ خط ورودي / خروجي قابل برنامه ريزي
۲۸ پايه PDIP و ۳۲ پايه TQFP و MLF

بخش دوم / عملکرد قفل :
اين قفل بوسيله سه رمز پنج رقمي که از صفحه کليد دريافت مي کند عمل مي کند چناچه رمز صحيح باشد يعني با رمز موجود در حافظه EEPROM  برابر باشد کاربر مي تواند با انتخاب گزينه مورد نظر رمز خود را تغيير دهد يا قفل را باز کند کليه مراحل کار با دستگاه ، متناسب با کليد فشار داده شده بر روي صفحه نمايشگر LCD  نمايش داده مي شود .
اگر در هنگام روشن شدن دستگاه کليد Ok گرفته شود دستگاه از کاربر يک رمز که مربوط به SUPERVISER است درخواست مي کند که با وارد کردن آن و در صورت درست بودن ، ميکرو کليه رمزها را صفر مي کند اين براي اين است که اگر يکي از کاربرها رمز خود را فراموش کرد با استفاده از اين روش بتواند دوباره رمز خود را وارد کند .
در حالت عادي با روشن شدن دستگاه بر روي صفحه نمايش عبارت ENTER USER NUMBER  نقش مي بندد و از کاربر مي خواهد USER خود را وارد کند وقتي  USER وارد شد از او مي خواهد PASSWORD  را وارد کند با وارد کردن هر عدد بر روي صفحه نمايش يک * ظاهر مي شود و در پايان با فشار دادن کليد OK اگر رمز درست بود بر روي صفحه نمايشگر عبارت WELCOM USER  نقش مي بندد و سه گزينه EXIT/CHANGE/OPEN  براي کاربر نشان داده مي شود که با انتخاب OK مي تواند در را باز کند و با انتخاب CHANGE مي تواند رمز را تغيير دهد و با انتخاب ESC  از صفحه MENU خارج مي شود .

تشريح سخت افزار مدار :
نحوه اتصال پورتها :
PB.1 : متصل به بوبين رله
PD.0 : و PD.1 :  و PD.2 : و PD.3 : (متصل به چهار ستون صفحه کليد )
PD.4 : و PD.5 : و PD.6 : و  PD.7: ( متصل به چهار سطر صفحه کليد )

PC.5 : متصل به پايه RS صفحه نمايشگر LCD
PC.4 : متصل به پايه E  صفحه نمايشگر LCD
PC.3 : متصل به پايه DB7 صفحه نمايشگر LCD
PC.2  : متصل به پايه DB6  صفحه نمايشگر LCD
PC.1 : متصل به پايه DB5 صفحه نمايشگر LCD
PC.0 : متصل به پايه DB4 صفحه نمايشگر LCD

 
قرار گرفتن ARMEGA 8  در مدار :
پايه ۷ به ولتاژ مستيم پنج ولت وصل شده است وپايه هاي ۲۲ و  ۸  به زمين متصل مي  گردند وساير پايه ها نيز مطابق آنچه در اتصال پورتها گفته شد به صفحه نمايشگر و صفحه کليد و بوبين رله متصل مي شوند .
ميکرو کنترلر AVR  برخلاف ساير ميکرو کنترلرهاي موجود داراي يک اسيلاتور RC داخلي مي باشد در اين مدار نيز از اسيلاتور داخلي ميکروکنترلر استفاده شده است و به پايه هاي ۱۰ و ۹ که براي استفاده از اسيلاتور کريستال خارجي و اسيلاتور RC خارجي و … است هيچ الماني متصل نگرديده است .

مدار تغذيه ورودي :
از آنجايي که ولتاژ بالاتر از پنج ولت باعث سوختن ميکرو و احيانا ً ديگر قطعات مي شود مدار تثبيت کننده فوق براي سيستم ضروري است .
در اين مدار از يک  رگلاتور ۷۸۰۵ استفاده شده است که اين رگلاتور ، ولتاژهاي بالاتر از پنج ولت را به گرما تبديل مي کند و به اين ترتيب ولتاژ را تثبيت مي نمايد .
وجود خازنها هم براي آنست که از ورود نويزهاي فرکانس بالاي برق شهر و تأثيرگذاري بر روي ولتاژ ورودي مدار جلوگيري به عمل آيد و همچنين براي تثبيت هر چه بيشتر ولتاژ به کار برده شده است .

اتصال صفحه کليد :
صفحه کليد ، يک صفحه کليد ماتريسي ۴*۴  است که ستونهاي آن به پايه هاي PD.0 ، PD.1 ،PD.2 ، PD.3  متصل شده اند و چهارسطر آن به پايه هاي PD.6 ، PD.5 ، PD.4 ، PD.7  وصل گرديده اند .
ميکروکنترلر به علت اينکه هم قابليت جريان کشي و هم قابليت جريان دهي خوبي دارد ديگر نيازي به وجود آي سي بافر براي خروجي و همچنين براي ورودي ندارد .

اتصال رله :
رله استفاده شده در مدار يک رله ۱۲ ولت است که جريان آن توسط يک مدار تقويت کننده جريان اميتر مشترک  ، تامين مي گردد ولتاژ حدود ۱۲ ولت مستقيما ً از خروجي به يک سر بوبين رله وصل مي گردد و سر ديگر بوبين ، با يک شدن پايه ميکرو ودر نتيجه روشن شدن ترانزيستور مذکور ، زمين مي گردد و اين به معناي روشن شدن رله است .
در بيس تقويت کننده جريان اميتر مشترک يک ديود قرار دارد چون بوبين رله ذخيره کننده جريان است پس از قطع جريان از رله جريان ذخيره شده در رله باعث مي شود که به ميکرو ترانزيستور آسيب وارد شود و اين ديود از آن جلوگيري مي نمايد .
نوع اين ديود از نوع ژرمانيوم مي باشد تا ولتاژي که دو سر آن افت مي کند ناچيز باشد و ترانزيستور روشن شود.
پس از شروع برنامه و معرفي IC  ميکروکنترلر مورد استفاده در مدار و همچنين فرکانس کريستال داخلي ميکرو کنترلر ، صفحه کليد و صفحه نمايشگر LCD  براي ميکرو کنترلر تعريف مي شود .
ميکرو AVR  برخلاف ميکروهاي ديگر به خاطر استفاده از زبان سطح بالا ديگر نياز به زير برنامه اي مخصوص براي تعريف صفحه کليد و همچنين صفحه نمايشگر LCD  ندارد و به راحتي با تعيين پورت متصل به صفحه کليد  و تعيين پايه هاي مورد استفاده براي صفحه نمايشگر LCD  و همچنين نوع آن قادر به شناختن آن است وبا چند برنامه مختصر به راحتي مي توان از آنها استفاده کرد .

برچسب SUPERVISER :
اين برچسب براي SUPERVISER  تعريف شده است بدين صورت که اگر استفاده کنندگان رمز مورد نظر خود را فراموش کردند مي توانند در هنگام روشن شدن قفل کليد OK  را فشار داده تا بدين صورت وارد برچسب SUPERVISER  شوند .
رمز تعريف شده براي SUPERVISER  يعني P=12345  وقتي که رمز مورد نظر وارد شد هر سه رمز سه استفاده کنندگان برابر صفر مي گردد که آنها مي توانند با تغيير رمز خود ، رمز مورد دلخواه خود را وارد کنند .