طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
این پروژه یک مدار واسط I/O می باشد که دارای 12 خروجی رله است. توسط نرم افزار کنترلی که قابل نصب بروی ویندوز های XP, Win7, Win8, Win10 می باشد می توان هر 12 رله را به صورت مجزا فعال و غیر فعال کرد.این پروژه یک مدار گیرنده رادیویی 433 یا 315 مگاهرتز می باشد که قابلیت تعریف و ذخیره سازی انواع ریموت کنترل هایی از قبیل (ریموت دزدگیر ماشین، پارکینگ، بالابر و ...) را دارد. با نگه داشتن یک میکروسوئیچ و فشار دادن یکی از کلید های ریموت به مدت 1 ثانیه کد شناسایی ریموت مورد نظر آشکار و سپس در حافظه ذخیره می شود و می توان با چهار کلید ریموت (کلیدهای A,B,C,D) چهار رله را روشن و خاموش کرد.خروجی سه کاناله با کنترل سرعت به صورت مجزا، دو کلید افزایشی و کاهشی برای کنترل سرعت در هر کانال، فرکانس های مختلف و ثابت برای هر کانال، جریان خروجی بیش از 10 آمپر و ولتاژ بیش از 30 ولتاین مدار یک کنترلر زمانی و دمایی می باشد، که بر اساس برنامه ریزی دلخواه توسط کاربر یک رله خروجی را کنترل می نمایید. با اتصال لامپ فلورسنت مرغوب به رله دستگاه می توانید لامپ را تحت کنترل داشته باشید.بر اساس رنج حداقل و حداکثر تعریف شده توسط کاربر و با توجه به دمای محیط، سرعت موتور بین 10 تا 99 به صورت خودکار تنظیم می شود.
پروژه کنترل رله توسط پورت USB با AVR و C شارپ 12 کاناله

MCP-39

پروژه کنترل رله توسط پورت USB با AVR و C شارپ 12 کاناله
پروژه ریموت کنترل 433-315 مگاهرتز 4 کاناله با قابلیت لرنینگ

MCP-27

پروژه ریموت کنترل 433-315 مگاهرتز 4 کاناله با قابلیت لرنینگ
پروژه کنترل دور موتور با PWM و جریان خروجی بالا با avr

MCP-19

پروژه کنترل دور موتور با PWM و جریان خروجی بالا با avr
پروژه مدار دستگاه فتوتراپی (پایین آورنده زردی خون نوزادان)

MCP-24

پروژه مدار دستگاه فتوتراپی (پایین آورنده زردی خون نوزادان)
پروژه کنترل دور موتور با PWM برحسب دما با avr

MCP-18

پروژه کنترل دور موتور با PWM برحسب دما با avr

آموزش ميكرو كنترلر 8051 قسمت سوم (معرفي دستورات)

دستورات JUMP , LOOP , CALL
دستور LOOP
LOOP به معناي حلقه مي باشد كاربرد آن در 8051 براي تكرار يك رشته دستورات مي باشد به كمك اين دسور مي توان تعداد خيلي زيادي از دستورات را تكرار كرد كه اگر بخواهيم آن دستورات را تك تك بنويسيم هم طول برنامه زياد مي شود و حجم برنامه كه باعث مي شود ROM 8051 به راحتي پر شود.قالب دستور به اين صورت مي باشد: DJNZ   REG,LABEL
از اين دستور بيشتر براي ايجاد حلقه هاي تاخيري و شمارنده بكار مي رود. براي مثال كاربرد آن را در تاخير با يك مثال روشن مي كنيم:


            MOV  R1,#09H
LOOP:   MOV  R2,#05H
MGH1:  DJNZ  R2,MGH1
            DJNZ  R1,LOOP

از بخش سفارش طراحی هم اکنون درخواست خود را ثبت کنید
حل و تشریح کلیه تمرینات درس میکروکنترلر AVR
طراحی و ساخت مدارات دلخواه شما با میکروکنترلر AVR


توضيح برنامه: در خط اول به R1 مقدار  9 داده شده است و در خط سوم به R2 مقدار 5 داده شده است. در خط سوم از دستور حلقه استفاده كرديم و به اين صورت مي باشد كه يك واحد از R2 كم مي كند و اگر صفر نبود به MGH1 پرش مي كند. و دو باره يك واحد از R2 كم مي كند اگر صفر نبود به MGH1 پرش مي كند. و اين كار را همين طور ادامه مي دهد تا R2 صفر شود بعد از صفر شدن R2 ديگر به MGH1 پرش نمي كند و خط چهرم برنامه را اجرا مي كند كه در اين خط گفته شده كه يك واحد از R1 كم كن اگر صفر نشده به LOOP پرش كن كه اگر به R1 يك واحد كم كند مقدار آن 8 مي شود و  به LOOP پرش مي كند كه در آنجا دو باره مقدار 5 به R2 داده مي شود و مراحل بالا تكرار مي شود. پس خط سوم 5 بار خوش را تكرار مي كند و خط چهارم هم 9 بار خط سوم را تكرار مي كند كه در كل 5*9=45 بار اين دستورات تكرار مي شود. البته CPU با كريستال 11.0529MHZ هر دستور را در مدت زمان 1.085Us اجرا مي كند اين زمان خيلي كمي است كه اگر ما ثبات R1=FFH و R2=FFH را بارگذاري كنيم يعني حداكثر عددي كه در يك ثبات 8 بتي مي تواند قرار گيرد. برابر خواهد بود با 256*256=65636 بار اين دستوات تكرار خواهد شد كه تقريبا با محاسبه دستورات سر بار حدود 0.2 ثانيه تاخير براي ما توليد مي كند البته اگر ما تاخير هاي دقيق تري لازم داشته باشيم مثلا براي ساعت بايد از تايمر ميكرو استفاده كنيم.

عدد 2 را روي پورت 1 انتقال بدهSTART:     MOV  P1,#02H  
يك تاخير ايجاد كن                   ACALL  DELAY
عدد 4 را روي پورت 1 انتقال بده                   MOV  P1,#04H
يك تاخير ايجاد كن                   ACALL  DELAY
به اول برنامه بر گردد و مراحل را تكرار كن                   SJMP  START

DELAY:      MOV  R1,#0FFH
LOOP:       MOV   R2,#0FFH
MGH:        DJNZ  R2,MGH
                DJNZ   R1,LOOP
                RET


انواع دستورات CALL
اين دستور به دو صورت و با خصوصيات مختلف مورد استفاده قرار مي گيرد:
دستور ACALL :
اين دستور به فراخواني كوتاه معروف است  كه 2 بايتي مي باشد و مي تواند در محدود 2 كيلو بايتي از حافظه پرش كرده و زير برنامه را بخواند.
دستور LCALL :
اين دستور به فراخواني بلند معروف است  كه3 بايتي مي باشد و مي تواند در محدود 64 كيلو بايتي از حافظه پرش كرده و زير برنامه را بخواند.
بسته به طول برنامه و حجم آن بايد از اين دستورات استفاده كرد. كه البته خود كامپايلر ها هنگامي كه مثلا از دستور ACALL استفاده مي كنيم و آن برنامه اي كه بايد فراخواني شود خارج از محدوده باشد خطا مي گيرند و برنامه نويس را آگاه مي كند.


دستور JUMP
اين دستور به معناي پرش مي باشد و به چندين دستور ديگر تجزيه مي شود. از اين دستورات براي منتقل كردن CPU به مكاني ديگر از برنامه مي باشد به عبارت ديگر از اين دستورات كه به پرش هاي شرطي و غير شرطي تقسم مي شوند براي فراهم شدنيك شرط استفاده شده تا بعد از ايجاد آن شرط CPU كار ديگري انجام دهد. كه با يك مثال اين قضيه را روشن مي كنيم. ابتدا دستورات شرطي:


پرش هاي شرطي
توضيح عمكرد دستور

توضيح
عمكرد
دستور
 
اگر A=0 است به LABEL پرش كن
JZ A,LABEL
 
اگر A≠0 است به LABEL پرش كن
JNZ A,LABEL
REG=R0-R7/A/B
يك واحد از REG كم كن به LABEL پرش كن
DJNZ  ERG,LABEL
 
مقايسه و اگر A≠BYTE است به LABEL پرش كن
CJNE  A,BYTE,LABEL
مثلا مقايسه انباه با عدد 60
CJNE A,#60H,LABEL
مقايسه REG با يك عدد و اگر نابرابر بود به LABEL پرش كن
CJNE REG,#DATA,LABEL
 
اگر پرچم كري برابر با 1 است پرش كن
JC,LABEL
 
اگر پرچم كري برابر با 0 است پرش كن
JNC,LABEL
مثلا بيت 1 از پورتيك
JB P1.1 ,LABEL
اگر بيت يك است به LABEL پرش كن
JB BIT,LABEL
 
اگر بيت صفر است به LABEL پرش كن
JNB BIT,LABEL
 
اگر بيت 1 است پرش كن و آن بيت را هم صفر كن
JBC BIT,LABEL

مثال برنامه اي بنويسيد كه اگر بيت P1.5=0 صفر شد عدد 50 را روي پورت 2 بريزد و در غير اين صورت عدد 80 را روي پورت 2 بريزد؟


START:      JB   P1.5,OUT_80
                JNB  P1.5,OUT_50
               SJMP  START
OUT_80:    MOV  P2,#80H
                 SJMP  START
OUT_50:    MOV  P2,#50H
                 SJMP  START


در خط اول اگر بيت يك باشد عدد 80 را روي پورت 2 مي ريزد و در خط دوم اگر بيت صفر باشد عدد 50 را روي پورت 2 مي ريزد.
پرش هاي غير شرطي
دستورات غير شرطي عبارت اند از:
SJMP پرش كوتاه
اين دستور دو بايتي بوده و قادر است در محدوه +128 تا -128 بايت پرش كند. يعني از 00-FF .
LJMP پرش بلند
اين دستور سه بايتي بوده و قادر است در محدوه 0000-FFFF هگز پرش كند.

 


دستور  CALL
CALL به معناي فراخواني يا صدا زدن يعني اينكه يك زير برنامه (برنامه فرعي) را فراخواني كنيم به عنوان مثال در يك برنامه ما يك تاخير لازم داريم و در چند مورد هم لازم داريم براي كاهش طول برنامه اين برنامه تاخيري را در محلي نوشته و به كمك دستور CALL در هر جايي كه لازم باشد آن را فراخواني مي كنيم. نكته اي مهم در مورد فراخواني اين است كه در پايان هر زير برنامه بايد دستور RET را نوشت تا CPU به برنامه اصلي برگرد و ادامه كار را نجام دهد.
برنامه يك چشمك زدن كه قبلا در قسمت دوم بحث شده حال به صورت كامل آن را مي نويسيم:
مثال : برنامه يك چشمك زن بنويسيد با دو تا LED كه روي بيت هاي P1.1  , P1.2 وصل شده اند؟
ابتدا بيتهاي پورت يك را به صورت زير مي نويسيم و كد هگز آن را بدست مي آوريم توجه شود كه بايد حتما بعد از كد H بنويسيم.

P1
D0
D1
D2
D3
D4
D5
D6
D7
02
0
1
0
0
0
0
0
0
04
0
0
1
0
0
0
0
0

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل ارتباطی ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.

به این مطلب امتیاز دهید

برچسب ها:
تاریخ ارسال پنجشنبه، 1 بهمن ماه، 1388    نویسندهنویسنده: مدیریت    نظرات 0 نظر    بازدید بازدید [ 13948 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان   

پروژه کنترلر پنل خورشیدی با استفاده از ساعت نجومی
کد پروژه: MCP-25
عنوان: پروژه کنترلر پنل خورشیدی با استفاده از ساعت نجومی
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
در این پروژه با استفاده از یک ساعت نجومی و محاسبات ریاضی، دو عدد سروو موتور یکی در جهت XY و دیگری در جهت Z پنل خورشیدی را به صورت اتوماتیک در موقیعتی قرار می دهید که بیشترین تابش خورشید را دریافت کند.
پروژه کنتور برق با AVR و ارسال اطلاعات توسط سیم کارت
کد پروژه: MCP-40
عنوان: پروژه کنتور برق با AVR و ارسال اطلاعات توسط سیم کارت
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
این پروژه جریان برق مصرفی را اندازه گیری و توسط یک ماژول سیم کارت اطلاعات مورد نظر را به شماره همراه دلخواه ارسال میکند. ولتاژ کاری آن AC220 ولت و حداکثر جریان عبور آن 50 آمپر می باشد.

مرتبط باموضوع :          مطالب بیشتر در این موضوع

 آموزش ميكرو كنترلر 8051 قسمت دوم (معرفي دستورات)  [ يكشنبه، 27 دي ماه، 1388 ] 10345 مشاهده
 راه اندازي استپ موتور با 8051 (STEPER MOTOR)  [ چهارشنبه، 21 بهمن ماه، 1388 ] 19982 مشاهده
 شمارنده 3رقمي به زبان اسمبلي COUNTER  [ سه شنبه، 20 بهمن ماه، 1388 ] 8843 مشاهده
 پروژه ولت متر دیجیتال با 8051 به زبان اسمبلی  [ چهارشنبه، 21 بهمن ماه، 1388 ] 25205 مشاهده
 آموزش ميكرو كنترلر 8051 قسمت پنجم (معرفي دستورات)  [ يكشنبه، 4 بهمن ماه، 1388 ] 10894 مشاهده
 
نام شما: [ کاربر جدید ]

نام شما (ضروری): 
ایمیل شما : 
نظر:
کد امنیتی
کد امنیتی

  [ بازگشت ]