ویوسافت

ویوسافت

شما در ویوسافت میتوانید از پروژه ها ، کد سورس ها و آموزش های رایگان استفاده کنید



پروژه و کد اسمبلی کنترل موتور الکتریکی با استفاده از پورت موازی


نویسنده : علی خازنی
دسته بندی : پروژه
1395/11/08

پروژه اسمبلی کنترل موتور

 

 

 

 

 

 

 

موتور پله ای یکی از انواع موتورهای الکتریکی است که حرکت آن کاملا دقیق و از پیش تعریف شده می باشد و با ارسال بیتهای۰ یا ۱ (با زبانبرنامه نویسی اسمبلی ) به سیم پیچهای آن می توان آنرا حرکت داد. برای تنظیم این سرعت نوع موتور میتواننسبت روشنی به خاموشی افزایش و یا کاهش داد تا تغییرات به وجود آمده مشاهده گردد.

 ما در این پروژه از زبان اسمبلی سیگنال های لازم را از طریق پورت موازی و با استفاده از راه انداز داس این کار را انجام میدهیم.علت استفاده از راه انداز داس این است که در سیستم عامل ویندوز تمامی پورت بسته میباشد ، که یا باید از  DLLها استفاده کرد (اسمبلی ۳۲ بیتی) یا از راه انداز داس استفاده کرد. که ما روش دوم را انتخاب کرده ایم.

قطعات مورد نیاز

  1. برد بورد (Bread Board)
  2. ای سی ۹۷۸A یک جهته
  3. خازن ۱۰ میکرو فارادی و ۱ میکروفارادی
  4. سه عدد مقاومت ۵۰۰ اهمی
  5. رگلاتور
  6. آرمیچیر
  7. پورت موازی
  8. راه انداز داس(Hiren’s Boot CD)

   طرز کار برنامه

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

 تکه کد مقابل قسمتی ار سگمنت داده ما است. متغییر dandeh همان مقداری است جهت تاخیر، که هر چه مقدار آن زیاد باشد نسبت خاموشی به روشنی بیشتر میشود و برعکس. منظور از  dandeh = 18 این است که موتور ما دارای ۶ دنده میباشد. یعنی در هر بار افزایش دنده به تعداد ۳ از آن کاسته میشود و در نتیجه سرعت به مقدار کمی افزایش میابد . اگر dandeh = 0 باشد یعنی موتور با حداکثر سرعت خود حرکت میکند.

 متغییر dandeh1 را فقط برای نمایش مقدار دنده تعریف کرده ایم، و فقط جنبه نمایشی دارد. مقدار ۴۸ هم همان صفر است.

متغییرهای c و t1 هم در تولید تاخییر کاربرد دارد که در بدنه برنامه به کار برده ایم.

 ·        شرح تکه کدهای مقابل که قسمت اصلی برنامه را تشکیل میدهندبه صورت زیر است:

 تابع BufT بافر صفحه کلید را میخواند (منتظر کلید نمیماند.) و بافر را پاک میکند.

سطرهای ۳ تا ۹ وظیفه تشخیص کلید زده شده را دارند که اگر کلید ۲۷ یا Esc زده شده باشد از برنامه خارج یشود. اگر ۱۱۹ یا w را زده باشد سرعت را افزایش دهد. اگر ۱۱۵ یا s زده شده باشد سرعت کاهش یابد. در غیر این سه حالت با وضعیت قبلی حرکت کند.

سطر های ۱۳ تا ۱۵ مقدار ۸۸۸  یا ۳۷۸ در مبنای ۱۶ تایی که همان شماره های پورت موازی هستند با حداکثر مقدار که ۲۵۵ است را با دستور Out به خروجی میفرستند.

سطر های ۱۶ تا ۲۱ مقدار dandeh را در متغییر c ضرب میکند و نتیجه را به تابع Delay ارسال میکنند، که نسبت به متغییر Dandeh زمان تاخیر تنظیم میشود. (روشنی موتور را تنظیم میکنند.)

سطر۲۱ به بعد هم مانند قسمت قبلی عمل میکنند اما این بار خاموشی موتور را تنظیم میکنند.

 ·        دستور های تابع Delay هم به صورت زیر است:

 



Delay proc

W1:

In al,61h

And al, 10H

cmp al,ah

je W1

mov ah, al

Loop W1

Ret

Endp Delay

 روال هایی که مورد استفاده قرار گرفته اند:

 secPage : شامل تمامی برچسب ها برای ترسیم صفحه دوم و  کنترل سرعت آرمیچر

 Delay : در قسمت بعدی به طور مختصر شرح داده خواهد شد

Buft : این روال صفحه کلید را میخواند و بافر را پاک میکند. منتظر کلید نمیماند

C_status : مکان فعلی مکان نما را مشخص میکند

Dec_dandeh : با انجام محاسباتی بر اساس ورودی باعث کاهش سرعت آرمیچر میشود

Inc_ dandeh: با انجام محاسباتی بر اساس ورودی باعث افزاش  سرعت آرمیچر میشود

msgStop : متن Stop را چاپ میکند

MsgRun : متن Run را چاپ میکند

Fpage : صفحه اول را رسم و نمایش میدهد

Chmode : تغییر حالت و مد مانیتور میشود

Border  :  حاشیه ها را رسم میکند

 ·        چگونگی کارکرد دستورات تابع Delay

در این تابع برای اینکه به طور دقیق تاخییر ایجاد کرد تا در تمامی سیستمها با طور یکسان عمل کنند، از پورت ۶۱ در مبنای ۱۶ استفاده میکنیم. این پورت در هر ۱۵٫۰۸۵ میلی ثانیه یک بار پالس تولید میکند که میتوان با شمارش این پالس ها تاخیرات دقیقی ایجاد کرد.

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

دانلود کامل پروژه : دانلود


علی خازنی

مهندس تکلونوژی نرم افزارهستم 25 سال دارم و مدیر ارشد گروه نرم افزاری ویوسافت رو برعهده دارم این سایت رو برای برنامه نویسان و دانشجویان رشته نرم افزار و کامپیوتر و کلیه علاقه مندان این رشته طراحی کردم بتوانم کمک کوچکی برای این عزیزان کرده باشم .

ارسال دیدگاه






کد امنیتی را وارد کنید