چکیده

ما قصد داریم برای نمایش سیگنال های ورودی اعم از AC و DC بر روی نمایشگر مداری طراحی کنیم.در آن میکروکنترلر نقش اساسی برای تبدیل سیگنال های آنالوگ به دیجیتال را دارد.میکروکنترلر همزمان با انتقال دادن اطلاعات دیجیتال، اطلاعاتی را مبنی بر دستور به نمایشگر می فرستد که از این طریق کار نمایشگر را تحت کنترل خود می گیرد.که آیا در هر لحظه کدام بخش از دو بخش نمایشگر کار دریافت اطلاعات دیجیتال سیگنال را بر عهده گرفته و نمایش دهد و کدامیک در حالت استراحت باشد.در این طراحی سعی بر این بوده که بیشتر موازنه ها از طریق برنامه نویسی اعمال گردد نه از طریق سخت افزار.این عملکرد چندین مزیت دارد که می توان به کاهش ابعاد مدار تا حد امکان و کاهش توان مصرفی و… اشاره کرد.

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

فهرست مطالب

فصل1

معنی کلمه AVR دقیقاً برای کسی مشخص نیست بجز دو مهندس شرکت ATMEL با نام های Alf Egil Bogen و Vegard Wollan که برای اولین بار میکروکنترلر AVR را طراحی نموده‌اند. خانواده میکروکنترلرهای AVR دارای محدوده نسبتاً وسیعی هستند و همچنان این خانواده بزرگ در حال توسعه است. در این فصل قصد داریم به بررسی کامل معماری میکروکنترلرهای AVR بپردازیم.
1-2. معماری میکروکنترلرهای AVR
به طور کلی دو معماری برای ساخت میکروکنترلرها وجود دارد معماری RISC و معماری CISC . میکروکنترلر AVR یک میکروکنترلر هشت بیتی است که بر اساس معماری RISC ساخته شده است. در زیر به بررسی ویژگی‌های هر یک از معماری‌های ذکرشده می‌پردازیم.
1-2-1. معماری CISC (Complex Instruction Set Computer)
در این معماری تعداد دستورات بیشتر و پیچیده‌تر است اما برنامه‌نویسی آن به خصوص اسمبلی ساده‌تر شده‌است و از طرفی سرعت اجرای دستورات پایین است.
1-2-2. معماری RISC (Reduced Instruction Set Computer)
در این معماری تعداد دستورات کاهش پیدا کرد، سرعت اجرای دستورات نسبت به معماری CISC افزایش یافت و برنامه نویسی به زبان اسمبلی را قدری پیچیده کرد اما با وجود ساختار بهینه شده‌ی میکروکنترلرهای AVR با حافظه‌‌‌های ظرفیت بالا، امکان برنامه نویسی به زبان‌های سطح بالاتر مانند C و بیسیک فراهم گردید. توان مصرفی معماری RISC نسبت به معماری CISC کمتر است. از دیگر ویژگی‌های میکروکنترلر با معماری RISC این است که دستورالعمل‌های آن، دارای سایز ثابت 16 یا 32 بیت می‌باشد در صورتیکه CPU با معماری CISC، دارای دستورالعمل‌های با سایز متغیر است. همچنین در معماری RISC اکثر دستورات میکروکنترلر با یک پالس ساعت (وتعداد کمی با دوپالس ساعت)اجرا می‌شوند.

1-1. مقدمه……………………………………………………………………. 2
1-2. معماری میکروکنترلرهای AVR ا…………………………………………2
1-2-1. معماری CISC (Complex Instruction Set Computer) ا…………2
1-2-2. معماری RISC (Reduced Instruction Set Computer) ا…………2
1-3. تفاوت میکروپرسسورها با میکروکنترلرها ……………………………..3
1-4. معرفی بخش‌های جانبی میکروکنترلرهای AVRا…………………… 3
1-5. فرکانس داخلی میکروکنترلرAVR ا……………………………………..4
1-6. خانواده میکروکنترلرهای AVR ا…………………………………………4
1-6-1. خانواده Tiny AVR ا…………………………………………………..5
1-6-2. خانواده AT90Sا…………………………………………………….. 5
1-6-3. خانواده MEGA AVRا………………………………………………… 5
1-7. خصوصیات میکروکنترلرATmegaا………………………………….. 16 5
1-8. فیوزبیت‌ های میکروکنترلر ATmega 16 ا……………………………..7
• فیوزبیت‌های CKSEL3,CKSEL2,CKSEL1,CKSEL0 ا……………………11
1-9. پورت‌های ورودی و خروجی میکروکنترلر ATmega16ا…………….. 12
1-10. کارکردهای دیگر پورت‌های میکروکنترلر ATmega16 .ا……………12
1-10-1. پورت A ا……………………………………………………………..12
1-10-2. پورت B ا……………………………………………………………..13
1-10-3. پورت Cا…………………………………………………………….. 14
1-10-4. پورت D ا…………………………………………………………….15
1-11. ساختار CPU میکروکنترلرهای AVR ا……………………………….16
1-12. انواع حافظه در میکروکنترلرهای AVR ا…………………………….19
1-12-1. حافظه Flashا…………………………………………………….. 19
1-12-2. حافظه EEPROM ا…………………………………………………19
1-12-3. حافظه SRAM ا…………………………………………………….19
1-13. تغذیه میکروکنترلر AVR ا…………………………………………….20
1-14. منابع پالس ساعت میکروکنترلرهای AVR ا………………………21
1-14-1. نوسان‌ساز با کریستال خارج…………………………………… 21
1-14-2. نوسان‌ساز با کریستال فرکانس پایین…………………………. 23
1-14-3. نوسان‌ساز با RC خارجی………………………………………. 23
1-14-4. نوسان‌ساز با اسیلاتور RC کالیبره شده‌ داخلی…………….. 24
1-14-5. نوسان‌ساز با کلاک خارجی…………………………………… 25
1-15. مدهای مختلف Sleep در میکروکنترلر mega16ا………………. 26
1-16-1. مد Idle ا…………………………………………………………..27
1-15-2. مد ADC Noise Reduction ا……………………………………27
1-15-3. مد Power-down ا……………………………………………….28
1-15-4. مد Power-save………………………………ا………………….28
1-15-5. مد Standby ا…………………………………………………….28
1-15-6. مد Extended Standby ا……………………………………….28
1-16. منابع مختلف Reset در میکروکنترلر mega16 ا………………….29
1-16-2. External Resetا……………………………………………….. 29
1-16-3. Watchdog Reset ……………………………………………..ا.30
1-16-4. Brown-out Reset …….ا…………………………………………30
1-16-5. JTAG AVR Reset ا……………………………………………..30

فصل2

اجزای دیگر میکروکنترلر AVR که در این پروژه مورد استفاده قرار گرفته‌اند عبارتند از: وقفه‌ها و مبدل آنالوگ به دیجیتال. لذا ضروری است که در مورد این بخش‌ها هم توضیحاتی را ارائه دهیم. در این فصل ابتدا به بررسی وقفه‌ها و رجیسترهای مربوط به آن می‌پردازیم، سپس به ارائه توضیحاتی در مورد مبدل آنالوگ به دیجیتال خواهیم پرداخت.
2-2.وقفه‌ها
وقفه به معنای قطع موقت برنامه جاری و سرویس دادن به زیرروال وقفه است. برای آنکه مفهوم وقفه را درک کنیم ابتدا لازم است تا روش‌های بررسی یک رویداد از جانب CPU را بدانیم. به‌طور کلی CPU برای تشخیص رویدادهای داخلی مانند تست پرچم سرریز تایمر یا کانتر یا رویدادهای خارجی مانند تشخیص لبه پایین رونده یک پالس بیرونی، می‌تواند از دو روش زیر استفاده کند.
2-3.روش‌های بررسی یک رویداد از جانب CPU
2-3-1.روش سرکشی(Polling)
در این روش کاربر توسط برنامه‌نویسی با فواصل زمانی مشخص و دائماً، رویداد مورد نظر را بررسی می‌کند تا به آن پاسخ دهد. به طور مثال شما در حال درس‌خواندن و منتظر یک شخص هستید. اگر شما هر دقیقه یکبار بروید و از پنجره بیرون را نگاه کنید تا ببینید که آیا شخص آمده‌است یا خیر، به این روش سرکشی یا Polling می‌گوییم. پس به طورمثال اگر بخواهیم برای بررسی فشرده‌شدن یک کلید، با برنامه‌نویسی هرچند لحظه یکبار این کار را چک کنیم آنگاه به روش Polling عمل کرده‌ایم. عیب این روش تلف‌کردن وقت CPU است اما این بدان معنی نیست که این روش کاربرد ندارد.
2-3-2.روش وقفه(Interrupt)
در مثالی که طرح کردیم، یک راه ساده‌تر آنست که شما به درس‌خواندن خود ادامه بدهید و منتظر زنگ شخص مورد نظر بمانید و هر موقع زنگ منزل شما را زدند بروید و به آن پاسخ دهید و بعد از اتمام کارتان برگردید و به درس‌خواندن خود ادامه دهید. به این روش وقفه یا Interrupt گفته می‌شود. می‌بینید که در این حالت وقت شما صرف سرکشی برای آمدن شخص مورد نظر نشده است و تا آمدن آن شخص شما توانسته‌اید کار مفید دیگری را انجام دهید. در این روش CPU بدون در نظر گرفتن رویداد، به انجام سایر اعمال مشغول می‌شود و با وقوع اتفاق مورد نظر، CPU انجام خط جاری برنامه را متوقف کرده و به بردار وقفه مربوطه پرش می‌کند و زیرروال سرویس وقفه را اجرا می‌کند و پس از اجرای این زیرروال، به خطی از برنامه که آن را قطع کرده‌بود برمی‌گردد و ادامه برنامه را اجرا می‌کند. در بسیاری از موارد ما از وقفه‌های بیرونی و درونی استفاده می‌کنیم که از جمله آن وقفه‌ها، وقفه‌ی کامل شدن تبدیلِ مبدل آنالوگ به دیجیتال است که در این پروژه مورد استفاده قرار می‌گیرد.
2-4.بردارهای وقفه و Reset در ATmega16
ابتدا بهتر است منظورمان را از بردار وقفه مشخص کنیم. شما موقعی‌که برنامه را می‌نویسید، برنامه تبدیل به یک سری کدماشین(HEX) می‌شود که از مکان صفر حافظه توسط پروگرامر نوشته می‌شود. حال اگر بیاییم یک مکان مشخص از حافظه ثابت را به وقفه خاصی اختصاص دهیم و سایر قسمت‌های برنامه را در مکان دیگری ذخیره کنیم، به طوریکه با تحریک آن وقفه، برنامه به آن مکانی که به‌طور ثابت و مشخص به وقفه اختصاص داده بودیم پرش کند، به آن مکان بردار وقفه گفته می‌شود. در جدول 2-1 آدرس و شماره‌بردار تمام منابع وقفه و Reset در میکروکنترلر ATmega16 آورده شده است.

2-1.مقدمه……………………………………………………………….. 32
2-2.وقفه‌ها……………………………………………………………….. 32
2-3.روش‌های بررسی یک رویداد از جانب CPU ا……………………..32
2-3-1.روش سرکشی(Polling) ا……………………………………….32
2-3-2.روش وقفه(Interrupt) ا………………………………………….33
2-4.بردارهای وقفه و Reset در ATmega16 ا………………………….33
2-5.مراحل اجرای یک وقفه ………………………………………………34
2-6.نحوه‌ی تعریف تابع وقفه در نرم‌افزار CodeVision AVR ا…………35
2-7.وقفه‌های خارجی(External Interrupts) ا……………………….35
2-8.معرفی رجیسترهای مربوط به وقفه‌ها………………………….. 36
2-8-1.رجیستر GICR ( General Interrupt Request 2 Enable )ا.. 36
2-8-2.رجیستر GIFR ( General Interrupt Flag Register ) ا………36
2-8-3.رجیستر MCUCR ( MCU Control Register ) ا……………….37
2-8-4.رجیستر MCUCSR (MCU Control and Status Register) ا…38
2-9.مبدل آنالوگ به دیجیتال…………………………………………… 39
2-10.تغذیه ADCا………………………………………………………… 39
2-11.ولتاژ مرجع ADCا…………………………………………………… 40
2-12.رجیسترهای مبدل آنالوگ به دیجیتال…………………………… 41
2-12-1.رجیستر (ADC Multiplexer Selection Register ) ADMUX ا..42
2-12-2.رجیسترهای داده (ADCH,ADCL) ا………………………………43
2-12-3.رجیستر ADCSRA ا……………………………………………….44
2-12-4.رجیستر ( Special Function I/O Register ) SFIOR ا………..46
2-13.مراحل تنظیم مبدل آنالوگ به دیجیتال……………………………. 46
2-14.نتیجه عملیات تبدیل ADC ا…………………………………………47

فصل3

در بین کامپایلرهای زبان C که برای میکروکنترلرهای AVR توسط شرکت‌های سازنده‌ی نرم‌افزار ارائه‌شده است، می‌توان CodeVisionAVR را یکی از بهترین و قویترین کامپایلرها دانست.در این فصل ابتدا برانیم تا با نحوه برنامه‌نویسی این نرم‌افزار آشنا شویم و سپس سخت‌افزار مورد نیاز برای پروگرام‌کردن AVR را معرفی نماییم.
3-2.ایجاد پروژه جدید
پس از اجرای نرم‌افزار، از منوی File گزینه New را کلیک کنید تا پنجره شکل 3-1 نمایان شود.

گزینه Project را انتخاب کنید و OK رابزنید تا پنجره شکل 3-2 نمایان شود. این پنجره سوال می‌کند که آیا شما برای ایجاد پروژه می‌خواهید از کدویزارد استفاده کنید؟ شما گزینه Yes را انتخاب کنید.

شکل3-2.پنجره Confirm
3-2.استفاده از CodeWizardAVR
پس از انتخاب گزینه Yes، پنجره‌ای مطابق شکل 3-3 با زبانه‌های متعددی باز می‌شود.کدویزارد به کاربر اجازه می‌دهد تا رجیسترهای مربوطه را بدون سروکار مستقیم با خود رجیسترها و از طریق منوهای مربوطه تنظیم کند. شما می‌توانید از کدویزارد استفاده نکنید و رجیسترها را در داخل خود برنامه، مستقیماً تنظیم کنید.

شکل3-3.CodeWizardAVR
در زبانه Chip شما باید نوع میکروکنترلر AVR و کلاک فرکانسی که میکرو با آن کار می‌کند را انتخاب کنید. در زبانه Ports وضعیت ورودی یا خروجی بودن پورت‌ها را انتخاب کنید. در زبانه External IRQ وقفه‌های خارجی را می‌توان فعال کرد که در این پروژه نیاز به فعال کردن نداریم.

با تیک زدن ADC Enable، ADC را فعال کنید. با تیک‌زدن یا نزدن ADC interrupt می‌توان وقفه کامل‌شدن تبدیل ADC را فعال یا غیرفعال کرد. با تیک زدن Use 8bits، رجیسترهای داده در حالت 8 بیتی انتخاب می‌شوند. با تیک‌زدن ADC Noise Canceler، می‌توانید واحد از بین‌برنده نویز ADC را فعال کنید. در Volt.Ref می‌توانید ولتاژ مرجع ADC را انتخاب کنید که ما ولتاژ 56/2 داخلی را انتخاب کرده‌ایم. در ADC Clock، کلاک ADC را تنظیم‌کنید. منبع تحریک ADC را هم می‌توانید از Auto Trigger Source تعیین کنید.در زبانه ADC تعیین کنید که LCD را به کدام پورت می‌زنید و تعداد خطوط LCD را تعیین کنید. CodeWizardAVR به شما می‌گوید که LCD را چگونه به پورت موردنظر متصل کنید.همانطور که در شکل بالا دیده می‌شود با انتخاب پورت B و تعداد پایه‌های LCD، CodeWizardAVR نحوه اتصال پورتB به LCD را نشان داده‌ست. در این پروژه نیازی به تنظیم سایر زبانه‌ها نیست پس از منوی File گزینه‌ی Generate,save and exit را بزنید.

پنجره‌ای باز می‌شود که از شما می‌خواهد تا پروژه را با پسوند .c ذخیره کنید. مجدداً از شما می‌خواهد تا پروژه را با پسوند .prj ذخیره کنید و سپس از شما می‌خواهد تنظیمات کدویزارد را با پسوند .cwp ذخیره کنید. نهایتاً پنجره زیر باز می‌شود که شما می‌توانید برنامه خود را در آن بنویسید. لازم به توضیح است که تمام رجیسترهای موردنظر تنظیم شده اند و شما فقط لازم است برنامه را بنویسید. شما همچنین می‌توانید تنظیمات رجیسترها را دوباره تغییر دهید.

3-3.برنامه‌ریزی میکروکنترلرهای AVR
پس از آنکه برنامه را نوشتیم، نوبت به برنامه‌ریزی میکروکنترلر است.نخست باید سخت‌افزار موردنیاز برای برنامه‌ریزی میکرو را تعیین کنیم. پروگرامرهای مختلفی هستند از جمله پروگرامر STK200+/300(ISP).

3-1.مقدمه …………………………………………………………………49
3-2.ایجاد پروژه جدید…………………………………………………….. 49
3-2.استفاده از CodeWizardAVRا………………………………………. 50
3-3.برنامه‌ریزی میکروکنترلرهای AVRا………………………………….. 54
3-3-1.پروگرامرSTK200+/300(ISP) ا…………………………………….55
3-3-2.تنظیمات پروگرامرSTK200+/300 در CodeVisionAVR ا…………55
3-3-3. برنامه‌ریزی میکروکنترلرAVR ا………………………………………56

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

فصل4

–11-مبدل آنالوگ به دیجیتال(ADC) : برای اینکه بتوانیم سیگنال های ورودی آنالوگ را بر روی نمایشگر نشان دهیم باید برای نمایشگر قابل شناسایی و قابل دریافت باشد از آنجا که نمایشگر فقط می تواند سیگنال های دیجیتال را نمایش دهد لذا سیگنال های آنالوگ را باید به دیجیتال تبدیل می کنیم این فرآیند توسط آنالوگ به دیجیتال میکروکنترلر صورت می گیرد.که در این فرآیند ابتدا نرخ نمونه برداری مطرح است که فاصله زمانی نمونه برداری هر پیکسل را با پیکسل بعدی تعیین می کند.که برای AVR حدود 2میکرو ثانیه می باشد.کمترین مقداری که خروجی ارایه می دهد برابر با GND و بیشترین مقداری که خروجی ارایه می دهد برابر با Vcc می باشد.برای اینکه کار مبدل از امنیت کافی در برابر نویز برخوردار باشد ما از خازن نویز گیر بین پایه AREF و GND استفاده می کنیم.که در داخل میکرو VCC و AREF با یک سلف و خازن به همدیگر وصل اند تا هم از نویز در امان باشد هم تثبیت ولتاژ با VCC برآورده شود.که این ولتاژ در پروژه 5 ولت می باشد. برای کمک گرفتن از ADC میکرو سیگنال ورودی به پین PA0 اعمال می شود و تبدیل بصورت دیجیتال 10 بیتی می باشد از پورت C گرفته می شود.به عنوان مثال اگر ورودی ما a ولت باشد عدد دیجیتال ما از 1024 اینگونه محاسبه می شود.که در خروجی مجموعا از 8 بیت پورتC برای انتقال اطلاعات سیگنال روی نمایشگر استفاده می کنیم.
-2-1-4کنترل و فرمان حالت نمایشگر توسط میکرو : همانگونه که در قسمت تبدیل سیگنال توضیح داده شد ما از پورت C برای انتقال اطلاعات سیگنال استفاده کردیم.حال ما باید برای نمایش این سیگنال ها بر روی نمایشگر همراه با انتقال سیگنال وظیفه کنترل عملکرد نمایشگر را به خوبی از طریق میکروکنترلر اعمال کنیم.لذا برای این کار ما از پین هایPA2-PA7 جهت کنترل و فرمان به نمایشگر استفاده می کنیم که به شرح زیر می باشد.

پایه RS: به منظور ریست کردن کل نمایشگر به کار می رود،این کار در صورتی انجام می گردد که پایه RS مقدار پایین یا همان صفر باشد.
پایهRW: به منظور خواندن نمایشگر یا نوشتن بر روی آن استفاده می شود.در صورتی که این مقدار بالا باشد کار خواندن نمایشگر صورت می گیرد و در صورتیکه مقدار پایین باشد کار نوشتن بر روی نمایشگر انجام می شود .
پایه E: قبل از هرگونه خواندن از نمایشگر و نوشتن بر روی آن باید این پایه فعال شده با شد تا اجازه فعال شدن سیگنال به منظور ورود و خروج داده شود.فعال شدن این پایه نیز با مقدار دهی بالا صورت می گیرد .
پایهCS1:از آنجا که نمایشگر ما از دو بخش تشکیل شده است و در هر لحظه فقط یکی از آنها می توانند اطلاعات را دریافت و ارسال کنند لذا جهت این کار باید یکی از CS ها فعال و دیگری غیر فعال شود.به عنوان نمونه برای فعال کردن بخش راست نمایشگر مقدارCS1 را بالا قرار داده و مقدار CS2 را پایین قرار می دهیم .پایهCS2:از آنجا که نمایشگر ما از دو بخش تشکیل شده است و در هر لحظه فقط یکی از آنها می توانند اطلاعات را دریافت و ارسال کنند لذا جهت این کار باید یکی از CS ها فعال و دیگری غیر فعال شود.به عنوان نمونه برای فعال کردن بخش چپ نمایشگر مقدارCS2 را بالا قرار داده و مقدار CS1 را پایین قرار می دهیم .پایهD/I: در واقع مشخص می کند که اطلاعات قرار گرفته در هر لحظه مربوط به ورودی هستند یا خروجی.در صورتی که این پایه مقدار بالا را داشته باشد اطلاعات قرار گرفته بر روی پایه های ورودی-خروجی ،خروجی می باشند ودر صورتیکه مقدار پایین را داشته باشد،اطلاعات مربوطه ورودی هستند .

4-1. مبدل آنالوگ به دیجیتال……………………………………………… 58
4-2. کنترل و فرمان حالت نمایشگر توسط میکرو……………………….. 59
4-3. راه اندازی سخت افزاری مدار……………………………………….. 61
4-4. نمایشگر LCD ا………………………………………………………..62
4-5. برنامه نویسی میکرو کنترلر ………………………………………….63

مراجع………………………………………………………………………….73

Abstract
We want to design a circuit to display input signals of AC and DC on the LCD .In that microcontroller plays basic rule to convert analog signal to digital one . Microcontroller simultaneously by transmitting data ,sends data base on the command to the LCD .In this way Microcontroller controls LCD performance whether in every moicro second which of the two parts of LCD take the rule of receiving digital data of signal and displays it,and which one is in the state of rest .in this design it tried to perform most of the equalizations would be based on the programming , not based on the hardware . This performance has several advantages that we can refer to miniature dimension of circuit as much as possible and reduction of power consumption and so on.


  مقطع کارشناسی

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


فایل pdf غیر قابل ویرایش

قیمت25000تومان

خرید فایل word

قیمت35000تومان