پایان نامه کاردانی
کاردانی فنی برق – مخابرات
چکیده :
فصل اول : AT89C2051 از شرکت Atmel:
این تراشه 8051 رایج دارای ROM سریع می باشد و طراحی های سریع این نوع حافظه ایده آل است زیرا حافظه سریع می تواند طی چند ثانیه در مقایسه 20 دقیقه لازم برای 8751 پاک شود به این دلیل AT89C2051 بجای 8751 بکار برده شده است تا هنگام پاک کردن تراشه وقتی تلف نشود و به این وسیله ساخت سیستم سریع گردد.
هنگام استفاده از AT89C2051 برای ساخت سیستم های مبتنی بر میکروکنترلر به سوزاننده یا برنامه ریز ROM سریع نیاز داریم با این وجود به پاک کننده ROM نیازی نیست. توجه داشته باشید که در حافظه سریع باید تمام حافظه پاک شود تا بتوان مجدداً آن را برنامه ریزی کرد پاک کردن حافظه سریع یا خود سوزاننده صورت می گیرد به این دلیل پاک کننده جداگانه ای لازم نمی باشد برای حذف سوزاننده PROM ، Atmel روی نوعی از AT89C2051 کار می کند که می تواند از طریق پورت سریال COM یک IBM PC برنامه ریزی شود.
فصل دوم : تجزیه و تحلیل مدار
در این فصل به بررسی جزئیات مدار تایمر اعم از IC و مقاومت و خازن و دیودهای به کار رفته در مدار پرداخته می شود. این مدار توسط میکرو کار می کند و میکروکنترلر آن توسط کریستال 12 مگاهرتز کلاک خورده و توسط IC رگولاتور تغذیه می شود و خروجی آن توسط ترانزیستور تقویت شده و تقویت شده آن باعث به کار افتادن رله می شود و رله وسیله برقی را کنترل می کند.
فصل سوم : پیوست ها
در این فصل سورس برنامه میکرو که به زبان اسمبلی است ارائه شده و کلیه اطلاعات منبع در مورد AT89C2051 شامل DATA SHEET و توضیحات برنامه نویسی آن ارائه شده است.
مقدمه :
گرایش سخت افزار رشته کامپیوتر گرایشی است که با الکترونیک عجین می باشد.
بطور کلی گرایش الکترونیک به دو بخش عمده تقسیم می شود :
دیجیتال
آنالوگ
این پروژه که طراحی و ساخت یک تایمر تخصصی است گرایش در الکترونیک دیجیتال دارد و بطور کلی کاربرد الکترونیک دیجیتال و بخش طراحی و استفاده از مدارات مجتمع استوار شده است و طراحی بر اساس مدارات منطقه ای و سیستم باینری می باشد.
ما در اینجا نیاز به داشتن اطلاعات سخت افزاری در زمینه مدارات مجتمع IC ها و همچنین برنامه ریزی و استفاده از آنها داریم.
در این پروژه با استفاده از قطعات سخت افزار یک تایمر طراحی کرده ایم که برنامه میکروکنترلر آن به زبان اسمبلی بوده و در نهایت خروجی اعمالی به رله باعث قطع و وصل شدن وسائل برتر می شود.
فصل اول: میکروکنترلر AT89C 2051
1_1) تاریخچه
با وجود گذشت30 سال از تولد ریز پردازنده تصور وسایل الکترونیکی بدون آنها کار مشکلی است در سال 1971 شرکت اینتل 8080 را به عنوان اولین ریزپردازنده موفق عرضه کرد. مدت کوتاهی بعد از آن موتورولا، RCA و سپس Zilog انواع مشابهی راهمچون 6800، 6502 80Z، را عرضه کردند ، گرچه این مدارها به خودی خود فایده چندانی نداشتند اما بعنوان بخشی از یک کامپیوتر تک بورد برای آموزش طراحی با ریز پردازنده تبدیل شدند.
میکروکنترلر قطعه ای شبیه ریز پردازنده است در سال 1976 اینتل 8748 را به عنوان اولین قطعه خانواده میکروکنترلر های 48_ MCS معرفی کرد. توان، ابعاد و پیچیدگی میکروکنترل ها با اعلام ساخت 8051، یعنی اولین عضو خانواده میکرو کنترلر های _ MCS 51 در 1980 توسط اینتل پیشرفت چشمگیری کرد.
(2-1) خلاصه سخت افزار این قطعه عبارت است از:
4k بایت ROM، 128 بایت RAM ، 4 درگاه ورودی خروجی، 2 تایمر شمارنده 16 بیتی ، رابط سریال ، 64k بایت فضای حافظه خارجی برکد 64x بایت فضای حافظه خارجی برای داده، پردازنده بولی، 210 مکان بیتی آدرس پذیر، انجام عملیات ضرب و تقسیم در 4 میکرو ثانیه .
(1-3-1) تغذیه _پایه های 20=GND و 40=VCC)
میکرو کنترلر با یک تغذیه V5 کار می کند که پایه 40 سر مثبت آن است .
2-2-1)پالس ساعت (پایه های 18 و 19)
این پایه ها جهت اتصال به کریستال نوسان ساز به کار می روند که با مدارات داخلی پالس ساعت سیستم را تولید می کند.
3-2-1) درگاه های موازی( پورت های صفر ف یک ، دو ، سه)
میکرو کنترلر دارای چهار درگاه 8 بیتی است که می تواندعلاوه بر منظور خاص، پایه های ورودی خروجی نیز باشند.
در میان پورت ها، پورت سه کمی با دیگر پورت ها متفاوت است زیراعلاوه بر یک درگاه عمومی هر یک از پایه های عملکرد دیگری نیز می توانند داشته باشند که به شرح زیر است :
جدول شماره 1-1 پورت ها
شماره پایه |
بیت |
نام |
وظیفه |
10 |
P3.0 |
RXD |
دریافت داده درگاه سریال |
11 |
P3.1 |
TXD |
ارسال داده درگاه سریال |
12 |
P3.2 |
INT0 |
وقفه خارجی صفر |
13 |
P3.3 |
INT1 |
وقفه خارجی یک |
14 |
P3.4 |
T0 |
ورودی تایمر یا کانتر صفر |
15 |
P3.5 |
T1 |
ورودی تایمر یا کانتر یک |
16 |
P3.6 |
WR |
سیگنال فعال ساز نوشتن |
17 |
P3.7 |
RD |
سیگنال فعال ساز خواندن |
لازم به ذکر است که پورت های صفر و دو نیز به عنوان باس آدرس دهی به حافظه خارجی کاربرد دارد و پورت های دو منظوره می باشند.
4-2-1) PSEN( پایه 29، Program Store Enable)
وقتی برنامه از حافظه خارجی اجرا می شود میکرو کنترلر در زمان هایی که لازم است عمل واکنشی انجام دهد این سیگنالها خروجی را فعال (low) می کند که میتواند این سیگنال برای فعال کردن OE حافظه برنامه به کار رود.
5-2-1) ALE( پایه 30، Address Latch Enable)
همانطور که گفته شد درگاه p0 می تواند هم باس داده باشد و هم باس آدرس . وقتی ALE فعال (High) باشد یعنی دیتای روی دیتا باس یک آدرس است و در صورت فعال بودن آن یک داده می باشد
6-2-1) Ea( پایه 31، External Access)
اگر بخواهیم از حافظه برنامه داخلی استفاده نماییم این پایه را غیر فعال (High) می کنیم با فعال کردن این پایه (low) ، شروع حافظه برنامه از آدرس صفر برنامه خارجی خواهد بود و حافظه برنامه داخلی بلا استفاده خواهد ماند
7-2-1)RST( پایه 9، Reset)
بافعال کردن این پایه (high) حداقل به مدت دو سیکل ماشین رجیستر های داخلی میکروکنترلر با مقادیر مناسبی پر شده و میکروکنترلر از آدرس (0000) شروع به اجرای برنامه می کند.
3-1) حافظه داده جزئیات:
فضای حافظه میکرو کنترلر ها عبارتند از:
1- 64 کیلو بایت حافظه داده خارجی از آدرس صفر الی FFFF H
2- 128 بایت (یا 256 بایت ) حافظه داده داخلی از آدرس صفر الی F H 7 (یا از آدرس FF H برای 8052)
3_ 128 بایت حافظه داخلی تحت نام SFR از آدرس H 80 تا FF
4-1) رجیستر های داخلی میکروکنترلر (حافظه داخلی)
رجیستر های داخلی میکروکنترلر ها به دو دسته تقسیم می شوند:
1-4-1) رجیستر های عمومی:
در واقع همان RAM داخلی است و به علت تعداد زیاد آنها به جای اسم به آنها شماره ای نسبت داده اند از H00 الی FH7
2-4-1) رجیستر های SFR یا رجیستر های خاص:
این رجیسترها علاوه بر اینکه رجیستر معمولی هستند هر کدام برای کاربرد خاص هم استفاده می شوند این رجیستر ها ف رجیسترهای مهم CPU بوده و از آدرس H80 الی FF H از RAM داخلی می باشد که فقط به صورت مستقیم قابل دسترسی می باشد
فضای حافظه RAM داخلی( یعنی 128 بایت اول) به سه گروه مجزا تفکیک شده است همه گروه ها به صورت بایتی قابل آدرس دهی هستند اما گروه های II و III خواص دیگری نیز دارند که درزیر شرح می دهیم:
5-1) گروه II( Bite Addressable):
32 بایت اول حافظه RAM داخلی( از آدرس H00 الی FH1) شامل بانک های ثبات می باشد که به چهار گروه A بایتی تقسیم می شود و در هر لحظه 8 بایت از این 32 بایت قابل دسترسی می باشد که به 0R، 1R،2R،3R،... الی 7R نشان داده می شود اینکه 0R الی 7R در هر لحظه بیان کننده کدام یک از این 32 بایت می باشد به دو بیت از رجیستر PSW به نام های 0RS و 1RS که قابل آدرس دهی بیتی می باشند بستگی دارد یعنی مثلا برای (0=0RS، 1=1RS) 0R بیان گر بایت شماره هشتم از RAM داخلی و مثلا 3R بیان گر بایت 11 از RAM داخلی می باشد . استفاده از دستورات رجیستر های بانک ثبات به روش آدرس دهی مستقیم که در ادامه توضیح داده می شود ترجیح دارد.
6-1) ثبات های کنترلی:
1-6-1) ثبات آکومولاتور(Accumulator):
اکومولاتور یا ACC که به اختصار در دستورات A هم نوشته می شد یک رجیستر 8 بیتی بوده که تقریبا بیشتر عملیات انتقال و منطق و شیفت به علت آدرس شدن بیتی روی آن انجام می شود.
2-6-1) ثبات کلمه وضعیت برنامه (program statues word)PSW:
بیت های این ثبات تحت تاثیر بعضی عملیات های میکروپروسسوری (ریاضی یامنطقی) فعال می شوند این ثبات دارای بیت های آدرس پذیر بوده و شامل بیت های زیر می باشد:
بیت پرچم نقلی: هشتمین بیت پرچم این بایت است و یک بیت دومنظوره است اگر در یک عمل جمع یک بیت نقلی از بیت 7 آکومولاتور خارج شود یا در طی عمل تفریق یک بیت فرضی به بیت هفتم وارد شود بیت پرچم نقلی یک می شود
بیت پرچم نقلی کمکی: هنگام جمع کردن اگر یک انتقال از بیت 3 به بیت چار آکومولاتور اتفاق بیفتد پرچم نقلی کمکی یک می شود
بیت پرچم صفر: یک بیت پرچم همه منظوره برای استفاده کاربران است
بیت پرچم سرریز (over flew flag) OV: اگر نتیجه جمع یا تفریق در آکولاموتور جا نشود پرچم سرریز یک می شود که بیانگر ناصحیح بودن نتیجه موجود در آکولاموتور است
بیت توازن (parity bit): این بیت به طور خودکار با توجه به محتوای اکولاموتور صفر یا یک می گردد به طوری که تعداد بیت های یک انباره به اضافه این بیت به تعداد زوج منجر شود
3-6-1) ثبات B: این ثبات یک ثبات 8 بیتی آدرس پذیر می باشد که هم به عنوان یک رجیستر عمومی و هم برای کاربرد خاص در نظر گرفته شده است که کاربرد خاص و اصلی آن انجام عملیات ضرب و تقسیم در آن می باشد.
4-6-1) SP یاحافظه اشاره گر پشته( stack pointer):
SP یک رجیستر 8 بیتی است که آدرس آن خانه H1 8 از RAM داخلی می باشد استفاده از آن زمانی است که نیاز به یک حافظه موقت جهت انجام عملی باشد و نخواهیم محتوای قبلی آن از بین برود و یا هنگامی که بخواهیم به یک برنامه فرعی برویم (مثلا با دستور CALL) اگر لازم باشد بعضی از نتایج برنامه اصلی در جایی ذخیره گردد تا در برنامه فرعی چنانچه مجددا از آنها استفاده کردیم محتوای قبلی آن از بین نرود و با برگشت به برنامه اصلی بتوانیم از آنها استفاده نماییم. شماره آدرس این فضا به وسیله اشاره گر پشته یا SP مشخص می شود (که برای همین باید SP را در ابتدای کار عدد دهی کنیم) و چنانچه این کار انجام نشود میکروکنترلر مقدار H7 0 را برای آن در نظر می گیرد دستورات PUSH و POP مربوط به این قسمت از حافظه می باشد که در مورد آنها در قسمت های بعد توضیح داده می شود
5-6-1) ثبات اشاره گر(Data Pointer Register):
این ثبات دو بایتی بوده و می تواندیک عدد چهار رقمی هگز را در خود ذخیره کند که از آن به عنوان آدرسی برای دستیابی به حافظه کد یا داده خارجی استفاده می شود و آدرس آن H82 و H83 از RAM داخلی درقسمت SFRقرار دارد
6-6-1) ثبات تایمر (کانتر):
تایمر:
8051 دارای دو قبات 16 بیتی متمایز است که می تواند هم به صورت تایمر و هم به صورت شمارنده عمل کند که در حالت تایمر این ثبات با یک عدد پر می شود و بایک فرکانس خاص شروع به زیاد شدن می کند تا به حداکثر رسیده و به صفر بر می گردد که این حالت یک بیت یافلگ را از صفر به یک تغییر می دهد
کانتر:
در این حالت چون باید اتفاقات شمرده شود بنابراین پالس از خارج میکرو کنترلر به پایه آی سی (1T ، 0T) امده و باعث افزایش محتوای ثبات می شود و به صورت شمارنده عمل می کند که توضیح کامل عملکرد این ثبات در مبحث تایمر آمده است .
7-6-1) تایمرTCON:
TCON:
ثبات کنترلر تایمر و کانتر و وقفه های خارجی می باشد که آدرس H88 قر ار دارد و به صورت بیتی آدرس کردن است
ثبات تایمر
0IT
0IE
1IT
1IE
0TR
0TF
1TR
1TF
چهار بیت کم ارزش رابرای کنترل وقفه های خارجی است که بیت 0IT و 1IT جهت حساس کردن وقفه به لبه پایین رونده به کار می رود و بیتهای 0IE و 1IE به هنگام وقوع وقفه خارجی فعال می شوند و پس از وقوع وقفه پاک می شوند
بیت های 0TR و 1TF برای پی بردن به اینکه یک دوره تایمر کامل شده است یا خیر می باشد.
8-6-1) ثبات TMOD:
با این ثبات می توان حالت تایمر صفر یا تایمر یک را تعیین کرد
9-6-1) ثبات IE:
جهت فعال یاغیر فعال کردن وقفه هامی باشد
10-6-1) ثبات IP:
جهت تعیین اولویت وقفه ها می باشد
11-6-1) ثبات SCON:
ثبات کنترل درگاه سریال است که به کمک آن می توان حالت کاری درگاه را تعیین و همچنین پرچم هایی که پر یا جالی بودن ثبات اطلاعات سریال را به عهده دارند در آن قرار دارند.
12-6-1) ثبات SBUF:
دو ثبات مستقل درگاه سریال وجود دارد که CPU اطلاعاتی را که باید بفرستد یا اطلاعاتی را که باید دریافت کند از آنها استفاده می کند
13-6-1) ثبات PCON:
از این ثبات جهت کنترل توان مصرفی و همچنین تغییر سرعت سریال استفاده می شود .
7-1) فرضیات میکرو کنترلر به هنگام رجوع به حافظه برنامه:
خانه های ابتدای حافظه برنامه از آدرس H0000 الی H0025 اختصاص به وقفه دارد و هروقفه یک مکان مشخص در حافظه برنامه دارد و پس از وقوع وقفه ، CPU به آن محل از حافظه برنامه رفته و از آنجا شروع به اجرا برنامه می کند که آدرس وقفه در شکل 3_1 آمده است
8-1) ساختار درگاه I/O:
همان طور که گفته شد میکرو کنترلر دارای چهار درگاه 8 بیتی است که بجز 1P بقیه درگاه ها چند منظوره می باشد شکل هال زیر مدارات داخلی درگاه ها را به صورت مختصر نشان می دهند.
ساختار درگاه های 2p و 3P مشابه شکل های کذکور است با این تفاوت که در آن ها قسمت خروجی شبیه 1p و قسمت میانی (انتخاب گر) تقریبا همیشه 0P است
9-1) روش های آدرس دهی:
1-9-1) مفهوم مد های آدرس دهی:
بعضی ازدستورالعمل ها یک مجموعه عمل اعمال از پیش تعریف شده که همواره یک کارمعین را شکل می دهند و هیچ تغییری در آن ها امکان پذیر نیست.
به عنوان مثال: دستور MUL AB
که مقدار حافظه B را در حافظه A ضرب کرده و حاصل آن را در آن دو قرار می دهد اما دستور ADD که بیان کننده جمع دو حافظه می باشد نه تنها برای جمع ثبات آکولاموتور با ثبات B طراحی و تعریف شده است بلکه می توان آکولاموتور را با یک عدد خاص و یا ثبات های دیگر جمع کرد مبحث مد های آدرس دهی وظیفه تفکیک حالت های مختلف دستوری را به عهده دارد .
تذکر:
علامت # (Number Sign) در برنامه نویسی نشان دهنده آدرس فوری یا بلافصل می باشد
2-9-1) انواع مدهای آدرس دهی در میکروکنترلر:
1_ روش آدرس دهی فوری یا بلافصل:
در این روش عملوند موردنظر بلافاصله بعد از دستور العمل(OPCODE) که در خود حافظه برنامه است قرار می گیرد به عنوان مثال دستور H46#A, MOV یک آدرس دهی فوری می باشد و به طور کلی این دستورات به فرم عمومی (DATAN # ,1OP دستور) نوشته می شود و دو بایتی می باشند.
ب_ روش آدرس دهی مستقیم:
در اینجا عملوند در یکی از خانه های RAM داخلی و یا SFR هاست که کافی است شماره خانه را تحت عنوان یک عدد و یا اسم حافظه را به صورت حرفی به فرم H90 A, MOV می آوریم. این دستورات به فرم عمومی (DIRECT ,1OP دستور) نوشته می شود و مشابه روش قبلی دو بایتی می باشند.
ت_ روش آدرس دهی غیر مستقیم:
در این حالت عملوند در یک خانه از حافظه قرار دارد که آدرس یا شماره آن خانه از حافظه در 0R و یا 1R یا DPTR قرار دارد و حالت های زیر برای آن امکان پذیر است .
تذکر:
علامت @ در برنامه نویسی نشان دهنده آدرس دهی غیر مستقیم است
این دستورات به فرم عمومی (RI @ ,1OP دستور) یا (2OP , RI @ دستور) نوشته می شوند و یک بایتی می باشند.
تذکر:
تنها دستوری که برای دسترسی به حافظه دیتای خارجی به کار می رود MOVX است که به MOVE EXTERNAL معروف است فرم عمومی این دستورات مشابه موارد ذکر شده است