مقدمه همانطورکه می دانید محاسبه واندازه گیری مقادیرعناصرالکتریکی درطراحی وپیاده سازی مدارهای الکتریکی والکترونیکی نقش مهمی دارد .
این مسئله زمانی که تفاوت های جزئی درمقادیر محاسباتی این عناصرنتایج متفاوتی رادریک سیستم باعث میشوند اهمیت بیشتری می یابد .
دراین پروژه طراحی وپیاده سازی یک اهم متروخازن سنج دیجیتال بررسی میشود .
هدف ازانجام این پروژه محاسبه مقدارمقاومت برحسب اهم وظرفیت خازن برحسب فاراد می باشد .
شرح مراحل کارومشخصات فنی مداروقطعات به کاررفته به طورمفصل درفصل های بعد مورد بررسی قرارگرفته است که خلاصه ای ازهرفصل درزیربیان می گردد .
درفصل اول به معرفی قطعات وآی سی های مورد استفاده درمدارمی پردازیم .
ازجمله میکروکنترلر8051 وآی سی تایمر555 .
فصل دوم مربوط به مشخصات فنی وشرح کارپروژه می باشد .
دراین فصل با نحوه عملکرد مدارآشنا می شوید .
درفصل سوم نقشه کلی مداروکدبرنامه میکروکنترلرب یان شده است .
فصل اول مقدمه دراین فصل به بررسی اجزای مداروشرح پایه های آنها می پردازیم .
اجزای اصلی مداراهم سنج دیجیتال عبارتند از : میکروکنترلر8051 آی سی تایمر555 کلید 12 پایه لازم به ذکراست که مدارشامل اجزای دیگری نیزمیباشدکه درفصل بعد مورد بررسی قرارگرفته است .
دراین فصل ماتنها به بررسی قطعات اصلی می پردازیم .
میکروکنترلر8051 شکل 1-1 نمودارپایه های8051 پایه VCC : پایه 40 ولتاژ تغذیه را برای تراشه فراهم می کند ولتاژ منبع 5V + است .
پایه GND : پایه 20 زمین است .
پایه های XTAL1 و XTAL2 : شکل 2-1 اتصال XTAL به8051 8051 دارای یک اسیلاتور( نوسان ساز) درون تراشه ای است ولی برای راندن آن به یک ساعت کریستال نیاز است اغلب یک اسیلاتورکریستال کوارتز به ورودیهای XTAL1 ( پایه 19 ) و ) XTAL2پایه 18 ) وصل است اسیلاتورکریستال کوارتزمتصل به XTAL1 و XTAL2 به دوخازن 3OPF وصل می باشد یک طرف هر یک ازخازن ها مثل شکل 2-1 به زمین وصل است .
باید توجه کرد که سرعت های مختلفی درخانواده 8051 وجود دارد غرض ازسرعت حداکثر، فرکانس متصل به XTAL است .
مثلاً یک تراشه 12MHZ باید به فرکانس 12MHZ یاکمتر وصل شود .
پایه RST : پایه 9 ، پایه RESET (بازنشانی ) است .
این پایه به یک ورودی فعال بالاست بعد ازاعمال یک پالس بالا به این پایه ، میکروکنترلربازنشانده شده وچه فعالیت هارارها می کند .
اغلب به این حالت ، بازنشانی به هنگام روشن شدن می گویند .
فعال کردن یک بازنشانی به هنگام روشن شدن موجب ازدست همه مقادیردرعبادت ها می شود .
جدول 1-1 لیست غیرکاملی ازثبات های 8051 ومقادیرآنها را پس ازبازنشانی به هنگام روشن شدن نشان می دهد .
جدول 1-1 مقدارRESET بعضی ازثبات های 8051 پایه EA : هنگامی که برنامه داخل ROM داخلی میکروکنترلراست این پایه به VCC متصل می شود .
درصورتی که برنامه درROM خارجی باشد این پایه به GND وصل می شود .
درهرصورت این پایه نباید آزاد باشد .
پایه PSEN : جهت فعال سازی ROM خارجی است.
پایه ALE : هنگامی که میکروکنترلر به یک حافظه بیرونی وصل است پورت 0 هر دو مقدار آدرس و داده را تهیه می کند.
این پایه جهت تعیین آدرس و یا داده بودن مقادیر روی پورت O است.
پایه های پورت I/O و عملکرد آن ها : چهارپورت P0 ، P1 ، P2 ، P3 هر کدام 8 پایه را بکار می برند تا پورت ها را 8 بیتی سازند.
همه پورت ها پس از RESET بصورت خروجی در می آیند، و آماده استفاده به عنوان خروجی هستند برای استفاده از هریک از این پورت ها به عنوان ورودی، باید آنها را برنامه ریزی کرد.
آی سی تایمر 555 شکل 3-1 نمودار پایه های 555 تایمر 555 یک آی سی 8 پایه است که کاربرد وسیعی در مدارهای الکترونیک دارد.
موارد کاربرد آی سی 555 به شرح زیر می باشد : زمان سنجی دقیق - تولید پالس تولید تأخیر زمانی - تولید امواج مثلثی مدولاسیون محل پالس PPM - زمان سنجی ترتیبی مدولاسیون پهنای پالس PWM این آی سی از دو مقایسه کننده که یک فلیپ فلاپ را بکار می اندازند تشکیل شده است.
پایه های 555 : زمین : ولتاژ این پایه باید پایین ترین ولتاژ اعمال شده به بقیه پایه ها را داشته باشد.
تریگر : در صورتی که ولتاژ آن از حد معینی کمتر شود ، ولتاژ پایه خروجی بالا می رود.
خروجی : در حالت عادی ولتاژ آن ایین است.
غیر فعال کننده : وقتی ولتاژ این سر کمتر از v 4/0 باشد اندازه گیری زمان متوقف می شود.
ولتاژ کنترل : جهت تعیین ولتاژ مرجع است.
ولتاژ آستانه : در صورتیکه ولتاژ این سر از مقدار معینی بیشتر شود Reset می شود و ولتاژ خروجی تغییر می کند.
تخلیه : جهت تخلیه خازن زمان سنج است.
تغذیه : ولتاژ تغذیه ای بین v 5/4 تا v12 را فراهم می کند.
کلید 12 پایه : این کلید همانطور که از اسمش پیداست شامل 12 پایه مطابق شکل 4-1 (الف) است که هر سه پایه یک کلید مستقل همانند شکل 4-1 (ب) است.
همانطور که در شکل 4-1 (ب) مشاهده می شود هر کلید شامل یک سر مشترک و دو سر انتخابی است ، که در هر لحظه یکی از دو مسیر A1 به A ( یا A به A1 ) و یا A2 به A ( یا A به A2 ) برقرار است.
هنگامی که کلید زده می شود همزمان چهار کلید A ، B ، C و D زده می شوند.
برای مثال در هنگام بالا بودن کلیه 12 پایه A به A1 ، B به B1 ، C به C1 و D به D1 وصل می شود.
فصل دوم مقدمه در این فصل به بررسی نحوه عملکرد اجزای مدار و چگونگی قرار گرفتن هر قطعه در مدار می پردازیم.
البته جهت ساده تر شدن مطالب هر قطعه و مدارش جداگانه بررسی می شوند و نقشه کلی مدار در فصل سوم آورده شده است.
رگلاتور: جهت تهیه منبع تغذیه مدار است.
همانطور که در شکل 1-2 مشاهده می شود ولتاژ متغیر v 5 به پایه شماره دو اعمال می شود و از پایه شماره سه ولتاژ ثابت v 5 گرفته می شود،پایه شماره یک به زمین وصل می شود.
LCD (نمایشگر ) : جهت نمایش اطلاعات است که شامل پایه های زیر است : Vss : پایه زمین نمایشگر است.
Vcc : جهت اتصال به منبع تغذیه است.
VEE : برای کنترل میزان درخشندگی نمایش کاراکترها است.
Rs : در داخل LCD دو ثبات وجود دارد و پایه Rs برای انتخاب آنها به ترتیب زیر بکار می رود.
اگر RS=0 باشد ثبات دستورالعمل فرمان انتخاب می شود و اجازه می دهد فرمان هایی همچون پاک کردن نمایشگر، نشاندن مکان نما و غیره صادر شوند.
اگر Rs=1 باشد ثبات داده انتخاب می گردد، و به کاربر اجازه ارسال داده (یا بازیابی) روی LCD برای نمایش را می دهد.
R/W : ورودی RW به کاربر اجازه نوشتن اطلاعات در LCD و یا خواندن از آن فراهم می سازد.
R/w=1 برای خواندن و R/w=0 برای نوشتن است.
E : نمایشگر از این پایه برای لچ کردن اطلاعات ارائه شده به پایه های داده اش استفاده می کند.
D0=D7 : 8 بیت خط داده برای ارسال اطلاعات به LCD یا خواندن محتوای ثبات های داخلی LCD بکار می روند.
البته LCD ممکن است شامل پایه های دیگری باشد.
اما بدلیل استفاده نشدن در این پروژه از توضیح آنها صرف نظر می کنیم.
آی سی 555 : شکل 3-2 (الف) .
نحوه اتصال پایه های 555 جهت تولید پالس شکل 3-2 (ب) .
پالس تولیدی توسط 555 هرگاه پایه 555 مطابق شکل 3-2 (الف) بسته شود، پالس مربعی مطابق شکل 3-2 (ب) بدست می آید که عرض پالس دارای رابطه زیر است .
ما در این پروژه از رابطه استفاده می کنیم.
بدین صورت ابتدا پهنای 2t را اندازه گرفته سپس یکی از RB یا C را ثابت گرفته و دیگری را با توجه به فرمول بدست می آوریم.
البته نحوه تعیین مداری مقاومت و یا خازن مجهول در ادامه فصل در قسمت کلید 12 پایه توضیح داده می شود.
میکروکنترلر 8051 پایه های استفاده شده در این پروژه عبارتند از : پورت P1 : جهت اتصال به پایه های داده نمایشگر (LCD ) است.
پایه های P3.0 P3.1 و P3.2 به ترتیب به پایه های E ، R/W و Rs نمایشگر وصل می شوند.
پایه P3.3 : این پایه به مدار شکل 2.4 متصل است و همانطور که در شکل ملاحظه می شود این مدار یک کلید ساده است و این کلید (کلید start ) جهت شروع به کار میکروکنترلر برای اندازه گیری مقاومت و یا خازن است.
شکل 4-2 .
مدار کلید start پایه P3.4 : میکروکنترلر با چک کردن این پایه می فهمد که مقاومت مجهول در مدار است و یا خازن مجهول در مدار است.
پایه P3.4 :پالس تولید شده توسط آی سی 555 به این پایه اعمال می شود و میکروکنترلر آن را اندازه گیری می کند.
کلید 12 پایه : نحوه اتصال کلید 12 پایه به میکروکنترلر و آی سی 555 مطابق شکل زیر است (حروف مشابه نشانه اتصال آن دو نقطه است برای مثال نقطه B در مدار 555 باید به نقطه B در مدار کلید 12 پایه وصل شود) شکل 5-2 نحوه اتصال کلید 12 پایه نحوه عملکرد مدار : هنگامی که کلید 12 پایه فشرده می شود (در حالت بالا قرار گیرد) Vcc به LED Green وصل شده و آن را روشن می کند و نشان دهنده انتخاب مقاومت مجهول برای کاربر است.
همچنین پایه P3.4 میکروکنترلر به Vcc وصل می شود و این پایه برای میکروکنترلر یک می شود و میکروکنترلر با چک کردن این پایه می فهمد که مقاومت مجهول انتخاب شده است.
محل قرار گرفتن مقاومت مجهول بر روی دوپین هدر مادگی به نامهای Pin+ و Pin- ( + و – برای خازن) است.
هنگامی که کلید 12 پایه بالا است pin- به نقطه F وصل شده و نقطه C یا همان Pin+ به نقطه D وصل می شود و مدار برای مقاومت مجهول برقرار می شود و مقاومت معلوم (اهم)220 = RB از مدار خارج شده و خازن معلوم nf 10 = c در مدار قرار می گیرد.
در هنگام پایین بودن کلید 12 پایه تمام عملیات بالا برای مدار خازن مجهول اجرا می شود.
بدین صورت که خازن مجهول بر روی pin+ و pin- قرار گرفته و Red LED برای نمایش انتخاب مدار خازن مجهول برای کاربر روشن می شود.
پایه P3.4 برای میکروکنترلر صفر می شود و pin- به نقطه G و Pin+ به نقطه B وصل می شود و خازن معلوم nf 10 = c از مدار خارج و مقاومت معلوم (اهم) 220 = RB وارد مدار می شود.
فصل سوم مقدمه در این فصل برنامه میکروکنترلر توضیح داده می شود، بدین صورت که هر قسمت برنامه بصورت جداگانه مورد بررسی قرار می گیرد.
در پایان فصل برنامه کامل میکروکنترلر به همراه نقشه کامل مدار آورده شده است.
توضیح برنامه میکروکنترلر : خطوط 1 تا 9 : جهت تعریف ثابتهای برنامه است.
خطوط 14 تا 26 : در این قسمت پیغامهایی که قرار است در طول اجرای برنامه بر روی LCD نمایش داده شوند تعریف می شوند.
قطعه WAIT-LCD (خطوط 28 تا 35 ) : بدلیل اینکه سرعت نمایشگر (LCD) از میکروکنترلر کمتر است، پس از فرمان دادن میکروکنترلر به LCD جهت نمایش کاراکتری و یا اجرای دستوری مانند پاک کردن صفحه، میکروکنترلر توسط این قسمت صبر می کند تا کار LCD تمام شود تا دستور بعدی را صادر کند.
قطعه CLEAR-LCD (خطوط 36 تا 39 ) : جهت پاک کردن صفحه LCD قطعه LCD – L – NEW ( خطوط 40 تا 43 ) : برای رفتن مکان نما به خط دوم LCD قطعه LCD _ ON (خطوط 44 تا 51 ) : جهت آماده کردن LCD در ابتدای برنامه برای نمایش کاراکترها قطعه LCD – CWRITE (خطوط 52 تا 60 ) : برای دستور دادن به LCD .
دستوراتی از قبیل حرکت مکان نما، پاک کردن صفحه ، ...
قطعه DWRITE-LCD ( خطوط 61 تا 69 ) : برای درج یک کاراکتر در LCD قطعه SWRITE-LCD ( خطوط 70 تا 78 ) : برای درج رشته ای از کاراکترها بر روی نمایشگر قطعه DELAY2OMS ( خطوط 79 تا 86 ) : تأخیری به مدت 20 میکروثانیه تولید می کند.
قطعه DELAY1S ( خطوط 87 تا 98 ) : تأخیری به مدت یک ثانیه تولید می کند.
قطعه GET-KEY ( خطوط 99 تا 123 ) : در این قسمت برنامه منتظر زدن کلید شروع (START) از طرف کاربر می شود سپس با چک کردن پورت P3.4 می فهمد که مدار برای مقاومت است و یا خازن قطعه TITLE ( خطوط 124 تا 137 ) : در ابتدای شروع به کار برنامه ، برنامه با اجرای این قسمت نام سازندگان مدار را بر روی نمایشگر نمایش می دهد.
قطعه F-OUTLCD ( خطوط 138 تا 159 ) : همانطور که در این فصل بیان شد پالس تولیدی 555 توسط میکروکنترلر اندازه گیری می شود.
در این قطعه برنامه فقط مقدار اندازه گیری شده برای LCD نمایش داده می شود.
قطعه R-CALL (خطوط 160 تا 173 ) : پس از اندازه گیری پالس تولیدی 555 و انتخاب مدار برای مقاومت مجهول ، این قطعه برنامه فرمول را برای مقاومت مجهول و مقدار 2 t نمایش می دهد.
قطعه C-CALL ( خطوط 174 تا 187 ) : همانند قطعه R-CALL عمل می کند اما برای خازن مجهول .
قطعه F-CALL ( خطوط 188 تا 249 ) : این قسمت مهمترین قسمت برنامه است.
در این قطعه برنامه پالس تولیدی 555 اندازه گیری می شود.
نحوه اندازه گیری بر اساس زمان اجرای دستورات است.
حافظه های R2 ، R3 ، R4 ، R5 ، R6 و R7 به ترتیب یکان، دهگان، صدگان ، هزارگان، ده هزارگان و صدهزارگان اندازه پالس تولیدی را نگه می دارند.
خطوط 195 و 196 جهت صبر کردن میکروکنترلر است تا از ابتدای پالس تولیدی (سطح پایین پالس) را اندازه بگیرد.
خطوط 197 ، 198 و 199 به اندازه 3 میکروثانیه زمان می برند (با کریستال 20 مگاهرتز) و با سه بار تکرار این خطوط 9 میکروثانیه زمان سپری می شود.
پس رقم یکان از عدد 9 بیشتر شده و باید یک واحد به رقم دهگان اضافه شود و یکان صفر شود.
به همین ترتیب برای بقیه رقمها عمل می شود.
البته در طول اندازه گیری به صورت مداوم چک می شود که پالس، همچنان در حالت پایین باشد و یا بعبارتی پالس تمام نشده باشد.
در خطوط 226 تا 231 اگر پالس تولیدی بیشتر از یک ثانیه باشد تمام رقمها با عدد 9 پر می شود.
خطوط 233 تا 243 جهت تصحیح رقمهای شمارش شده است چون ممکن است در اواسط شمارش پالس تمام شود، برای مثال ممکن است رقم هزارگان عدد 10 باشد و به رقم ده هزارگان واحدی اضافه نشده باشد و رقم هزارگان به صفر تبدیل نشده باشد.
قطعه MAIN (خطوط 250 تا 263 ) : برنامه اصلی در این قسمت است .
در این قطعه برنامه قسمتهای قبلی با توجه به مدار انتخابی فراخوانده می شوند.
MS-DOS MACRO ASSEMBLER A51 V4.4 LOC OBJ LINE SOURCE 0090 1 DATAL EQU P1 0097 2 LCD_D7 EQU P1.7 00B0 3 EN EQU P3.0 00B1 4 RW EQU P3.1 00B2 5 RS EQU P3.2 00B3 6 S_KEY EQU P3.3 00B4 7 SEL_KEY EQU P3.4 00B5 8 IN_PORT EQU P3.5 9 ;================================ 0000 10 ORG 0 0000 0202B1 11 LJMP 12 ;================================ 0030 13 ORG 30H 0030 20557300 14 t2_OUT2: DB ' Us',0 0034 74323D20 15 t2_OUT: DB 't2= ',0 0038 00 0039 433D7432 16 C_OUT: DB 'C=t2/(220*Ln2)',0 003D 2F283232 0041 302A4C6E 0045 322900 0048 523D7432 17 R_OUT: DB 'R=t2/(10E-9*Ln2)',0 004C 2F283130 0050 452D392A 0054 4C6E3229 0058 00 0059 52207365 18 R_SELD: DB 'R selected',0 005D 6C656374 0061 656400 0064 43207365 19 C_SELD: DB 'C selected',0 0068 6C656374 006C 656400 006F 5468656E 20 START_S: DB 'Then press START',0 0073 20707265 0077 73732053 007B 54415254 007F 00 0080 53454C45 21 GK_STR: DB 'SELECT YOUR KEY',0 0084 43542059 0088 4F555220 008C 4B455900 0090 50726F67 22 STRING: DB 'Program & Design',0 0094 72616D20 0098 26204465 009C 7369676E 00A0 00 00A1 416D6D61 23 SNAME1: DB 'Ammar Ghanbari',0 00A5 72204768 00A9 616E6261 00AD 726900 00B0 48616D7A 24 SNAME2: DB 'Hamzeh Ghanbari',0 00B4 65682047 00B8 68616E62 00BC 61726900 00C0 506C6561 25 WAIT_STR: DB 'Please Wait ...',0 00C4 73652057 00C8 61697420 00CC 2E2E2E00 26 27 ;================================ 00D0 D297 28 WAIT_LCD: SETB LCD_D7 00D2 C2B2 29 CLR RS 00D4 D2B1 30 SETB RW 00D6 C2B0 31 WL1: CLR EN 00D8 D2B0 32 SETB EN 00DA 2097F9 33 JB LCD_D7,WL1 00DD 22 34 RET 35 ;================================ 00DE 7401 36 CLEAR_LCD:MOV A,#01H 00E0 1200FA 37 LCALL CWRITE_LCD 00E3 22 38 RET 39 ;================================ 00E4 74C0 40 NEW_L_LCD:MOV A,#0C0H 00E6 1200FA 41 LCALL CWRITE_LCD 00E9 22 42 RET 43 ;================================ 00EA 7438 44 ON_LCD: MOV A,#38H 00EC 1200FA 45 LCALL CWRITE_LCD 00EF 740E 46 MOV A,#0EH 00F1 1200FA 47 LCALL CWRITE_LCD 00F4 7406 48 MOV A,#06H 00F6 1200FA 49 LCALL CWRITE_LCD 00F9 22 50 RET 51 ;================================ 00FA 52 CWRITE_LCD: 00FA 1200D0 53 LCALL WAIT_LCD 00FD F590 54 MOV DATAL,A 00FF C2B2 55 CLR RS 0101 C2B1 56 CLR RW 0103 D2B0 57 SETB EN 0105 C2B0 58 CLR EN 0107 22 59 RET 60 ;================================ 0108 61 DWRITE_LCD: 0108 1200D0 62 LCALL WAIT_LCD 010B F590 63 MOV DATAL,A 010D D2B2 64 SETB RS 010F C2B1 65 CLR RW 0111 D2B0 66 SETB EN 0113 C2B0 67 CLR EN 0115 22 68 RET 69 ;================================ 0116 70 SWRITE_LCD: 0116 7400 71 S_STR: MOV A,#0 0118 93 72 MOVC A,@A+DPTR 0119 6007 73 JZ E_STR 011B 120108 74 LCALL DWRITE_LCD 011E A3 75 INC DPTR 011F 020116 76 LJMP S_STR 0122 22 77 E_STR: RET 78 ;================================ 0123 C28C 79 DELAY20MS:CLR TR0 0125 C28D 80 CLR TF0 0127 758AE0 81 MOV TL0,#0E0H 012A 758CB1 82 MOV TH0,#0B1H 012D D28C 83 SETB TR0 012F 308DFD 84 D20MS: JNB TF0,D20MS 0132 22 85 RET 86 ;================================ 0133 7814 87 DELAY1S: MOV R0,#20 0135 C28D 88 CLR TF0 0137 C28C 89 CLR TR0 0139 758AB0 90 D1S1: MOV TL0,#0B0H 013C 758C3C 91 MOV TH0,#3CH 013F D28C 92 SETB TR0 0141 308DFD 93 D1S2: JNB TF0,D1S2 0144 C28D 94 CLR TF0 0146 C28C 95 CLR TR0 0148 D8EF 96 DJNZ R0,D1S1 014A 22 97 RET 98 ;================================ 014B 1200DE 99 GET_KEY: LCALL CLEAR_LCD 014E 900080 100 MOV DPTR,#GK_STR 0151 120116 101 LCALL SWRITE_LCD 0154 1200E4 102 LCALL NEW_L_LCD 0157 90006F 103 MOV DPTR,#START_S 015A 120116 104 LCALL SWRITE_LCD 015D D2B3 105 WAIT_SKEY:SETB S_KEY 015F 120123 106 LCALL DELAY20MS 0162 120123 107 LCALL DELAY20MS 0165 20B3F5 108 JB S_KEY,WAIT_SKEY 0168 1200DE 109 LCALL CLEAR_LCD 016B 20B40B 110 JB SEL_KEY,R_SEL 016E 7900 111 MOV R1,#0 0170 900064 112 MOV DPTR,#C_SELD 0173 120116 113 LCALL SWRITE_LCD 0176 020181 114 JMP EXIT_KEY 0179 7901 115 R_SEL: MOV R1,#1 017B 900059 116 MOV DPTR,#R_SELD 017E 120116 117 LCALL SWRITE_LCD 0181 1200E4 118 EXIT_KEY: LCALL NEW_L_LCD 0184 9000C0 119 MOV DPTR,#WAIT_STR 0187 120116 120 LCALL SWRITE_LCD 018A 120133 121 LCALL DELAY1S 018D 22 122 RET 123 ;================================ 018E 1200DE 124 TITLE: LCALL CLEAR_LCD 0191 900090 125 MOV DPTR,#STRING 0194 120116 126 LCALL SWRITE_LCD 0197 120133 127 LCALL DELAY1S 019A 1200DE 128 LCALL CLEAR_LCD 019D 9000A1 129 MOV DPTR,#SNAME1 01A0 120116 130 LCALL SWRITE_LCD 01A3 1200E4 131 LCALL NEW_L_LCD 01A6 120133 132 LCALL DELAY1S 01A9 9000B0 133 MOV DPTR,#SNAME2 01AC 120116 134 LCALL SWRITE_LCD 01AF 120133 135 LCALL DELAY1S 01B2 22 136 RET 137 ;================================ 01B3 EF 138 F_OUTLCD: MOV A,R7 01B4 2430 139 ADD A,#30H 01B6 120108 140 LCALL DWRITE_LCD 01B9 EE 141 MOV A,R6 01BA 2430 142 ADD A,#30H 01BC 120108 143 LCALL DWRITE_LCD 01BF ED 144 MOV A,R5 01C0 2430 145 ADD A,#30H 01C2 120108 146 LCALL DWRITE_LCD 01C5 EC 147 MOV A,R4 01C6 2430 148 ADD A,#30H 01C8 120108 149 LCALL DWRITE_LCD 01CB EB 150 MOV A,R3 01CC 2430 151 ADD A,#30H 01CE 120108 152 LCALL DWRITE_LCD 01D1 EA 153 MOV A,R2 01D2 2430 154 ADD A,#30H 01D4 120108 155 LCALL DWRITE_LCD 01D7 900030 156 MOV DPTR,#t2_OUT2 01DA 120116 157 LCALL SWRITE_LCD 01DD 22 158 RET 159 ;================================ 01DE 1200DE 160 R_CALL: LCALL CLEAR_LCD 01E1 900048 161 MOV DPTR,#R_OUT 01E4 120116 162 LCALL SWRITE_LCD 01E7 1200E4 163 LCALL NEW_L_LCD 01EA 900034 164 MOV DPTR,#t2_OUT 01ED 120116 165 LCALL SWRITE_LCD 01F0 1201B3 166 LCALL F_OUTLCD 01F3 120133 167 LCALL DELAY1S 01F6 120133 168 LCALL DELAY1S 01F9 120133 169 LCALL DELAY1S 01FC 120133 170 LCALL DELAY1S 01FF 120133 171 LCALL DELAY1S 0202 22 172 RET 173 ;================================ 0203 1200DE 174 C_CALL: LCALL CLEAR_LCD 0206 900039 175 MOV DPTR,#C_OUT 0209 120116 176 LCALL SWRITE_LCD 020C 1200E4 177 LCALL NEW_L_LCD 020F 900034 178 MOV DPTR,#t2_OUT 0212 120116 179 LCALL SWRITE_LCD 0215 1201B3 180 LCALL F_OUTLCD 0218 120133 181 LCALL DELAY1S 021B 120133 182 LCALL DELAY1S 021E 120133 183 LCALL DELAY1S 0221 120133 184 LCALL DELAY1S 0224 120133 185 LCALL DELAY1S 0227 22 186 RET 187 ;================================ 0228 7A00 188 F_CALL: MOV R2,#0 022A 7B00 189 MOV R3,#0 022C 7C00 190 MOV R4,#0 022E 7D00 191 MOV R5,#0 0230 7E00 192 MOV R6,#0 0232 7F00 193 MOV R7,#0 0234 D2B5 194 SETB IN_PORT 0236 30B5FD 195 WAIT_H: JNB IN_PORT,WAIT_H 0239 20B5FD 196 WAIT_L: JB IN_PORT,WAIT_L 023C 0A 197 COUNTER: INC R2 023D 20B55E 198 JB IN_PORT,F_EXIT 0240 BA03F9 199 CJNE R2,#3,COUNTER 0243 7A00 200 MOV R2,#0 0245 0B 201 INC R3 0246 BB0AF3 202 CJNE R3,#10,COUNTER 0249 20B53E 203 JB IN_PORT,F_EXIT3 024C 7A01 204 MOV R2,#1 024E 7B00 205 MOV R3,#0 0250 0C 206 INC R4 0251 BC0AE8 207 CJNE R4,#10,COUNTER 0254 7C00 208 MOV R4,#0 0256 0D 209 INC R5 0257 BD0AE2 210 CJNE R5,#10,COUNTER 025A 20B532 211 JB IN_PORT,F_EXIT5 025D 7A00 212 MOV R2,#0 025F 7B01 213 MOV R3,#1 0261 7D00 214 MOV R5,#0 0263 0E 215 INC R6 0264 BE0AD5 216 CJNE R6,#10,COUNTER 0267 20B52A 217 JB IN_PORT,F_EXIT6 026A AA01 218 MOV R2,1 026C 7B01 219 MOV R3,#1 026E 7E00 220 MOV R6,#0 0270 0F 221 INC R7 0271 20B525 222 JB IN_PORT,F_EXIT7 0274 7A00 223 MOV R2,#0 0276 7B02 224 MOV R3,#2 0278 BF0AC1 225 CJNE R7,#10,COUNTER 027B 7A09 226 MOV R2,#9 027D 7B09 227 MOV R3,#9 027F 7C09 228 MOV R4,#9 0281 7D09 229 MOV R5,#9 0283 7E09 230 MOV R6,#9 0285 7F09 231 MOV R7,#9 0287 0202B0 232 JMP F_OVER 028A 7B09 233 F_EXIT3: MOV R3,#9 028C 02029E 234 JMP F_EXIT 028F 7D09 235 F_EXIT5: MOV R5,#9 0291 02029E 236 JMP F_EXIT 0294 7E09 237 F_EXIT6: MOV R6,#9 0296 02029E 238 JMP F_EXIT 0299 BF0A02 239 F_EXIT7: CJNE R7,#10,F_EXIT 029C 7F09 240 MOV R7,#9 029E BA0105 241 F_EXIT: CJNE R2,#1,F_E2 02A1 7A00 242 MOV R2,#0 02A3 0202B0 243 JMP F_OVER 02A6 BA0205 244 F_E2: CJNE R2,#2,F_E3 02A9 7A03 245 MOV R2,#3 02AB 0202B0 246 JMP F_OVER 02AE 7A06 247 F_E3: MOV R2,#6 02B0 22 248 F_OVER: RET 249 ;================================ 02B1 75D000 250 : MOV PSW,#0 02B4 7901 251 MOV R1,#1 02B6 758911 252 MOV TMOD,#00010001B 02B9 759000 253 MOV DATAL,#0 02BC 1200EA 254 LCALL ON_LCD 02BF 12018E 255 LCALL TITLE 02C2 12014B 256 : LCALL GET_KEY 02C5 120228 257 LCALL F_CALL 02C8 B90105 258 CJNE R1,#1,C_P 02CB 1201DE 259 LCALL R_CALL 02CE 80F2 260 JMP LOOP 02D0 120203 261 C_P: LCALL C_CALL 02D3 80ED 262 JMP LOOP 263 END ;================================نقشه کامل مدار منابع ومآخذ جزوه آزمایشگاه الکترونیک دیجیتال تهیه کننده : مهندس وحید رضایی میکروکنترلر 8051 نویسندگان : محمد علی مزیدی، جانیس گیلیسپی مزیدی مترجم : دکتر قدرت سپیدنام 300 مدار نویسنده : الکتروالکترونیکس مترجم : رضا خوش کیش