طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
در صورتی که برق شهر از حداقل تعریف شده کمتر، یا از حداکثر بیشتر شود رله خروجی قطع خواهد شد و از طریق بازر بوق هشدار پخش می شود.یک کنترل کننده موتور با جریان خروجی 2 آمپر شامل کنترل جهت چرخش و سرعت می باشد. این مدار دارای نمایشگر LCD متنی بوده که سرعت و جهت چرخش موتور را نمایش می دهد.این پروژه قابلیت تشخیص نشتی گاز و کمی دود و افزایش دما را دارد. به این صورت که اگر نشتی رخ دهد با ارسال یک پیامک SMS برای شماره تعریف شده کاربر را مطلع می نماید. همچنین یک رله نیز فعال می شود که می تواند یه آژیر خطر را صدا درآورد.کنترل نور یک لامپ 12 الی 24 ولتی DC توسط دو عدد کلید در بازه روشنایی 1 تا 99 درصد. به همراه نمایشگر جهت نمایش درصد روشنایی.با استفاده از میکروکنترلر ATMEGA8 و کیبورد 3×4 می توان حروف و اعداد را تایپ کرد و درون یک متغییر ذخیره نمود و محتوای این متغییر بر روی نمایشگر LCD نمایش داده می شود. در صورتی که فضای LCD پر شود کاراکترها به سمت چپ شیفت داده می شوند. تمامی حروف و اعداد کوچک و بزرگ انگلیسی قابل تایپ می باشند.
پروژه محافظ لوازم برقی با avr و نمایشگر سون سگمنت

MCP-21

پروژه محافظ لوازم برقی با avr و نمایشگر سون سگمنت
کنترل سرعت و جهت موتور DC

MCP-9

کنترل سرعت و جهت موتور DC
پروژه نشت یاب گاز و کنترل با SMS

MCP-35

پروژه نشت یاب گاز و کنترل با SMS
دیمر دیجیتال با AVR به زبان سی

MCP-38

دیمر دیجیتال با AVR به زبان سی
پروژه تایپ حروف و اعداد با کیبورد 3.4 به زبان سی با avr

MCP-3

پروژه تایپ حروف و اعداد با کیبورد 3.4 به زبان سی با 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 نظر    بازدید بازدید [ 13768 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان   

پروژه دماسنج ساده با avr
کد پروژه: MCP-29
عنوان: پروژه دماسنج ساده با avr
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
این پروژه یک دماسنج ساده می باشد که توانایی اندازه گیری دما از منفی 40 تا مثبت 120 درجه سانتی گراد با دقت دو رقم اعشار را دارد.
پروژه کنترل اتوماتیک کولرهای آبی با ریموت کنترل و avr
کد پروژه: MCP-4
عنوان: پروژه کنترل اتوماتیک کولرهای آبی با ریموت کنترل و avr
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
با استفاده از میکروکنترلر Atmega8‌، سنسور دیجیتال دما DS18B20 و LCD‌ متنی شما به راحتی می توانید کولر خانه تان را توسط کنترل تلویزیون و کلید های تعبیه شده، در مد های مختلفی برنامه ریزی کنید، از ویژگی آن می توان به کاهش مصرف انرژی در کولرها آبی اشاره نمود.

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

 آموزش ميكرو كنترلر 8051 قسمت چهارم (معرفي دستورات)  [ يكشنبه، 4 بهمن ماه، 1388 ] 11347 مشاهده
 شمارنده 3رقمي به زبان اسمبلي COUNTER  [ چهارشنبه، 21 بهمن ماه، 1388 ] 8289 مشاهده
 شمارنده دو رقمی با 8051 و به زبان اسمبلی  [ چهارشنبه، 29 ارديبهشت ماه، 1389 ] 13297 مشاهده
 طرز كار LCD ماتريسي كدها و دستورالعمل ها و مثال lcd 1*16 , 2*20  [ چهارشنبه، 21 بهمن ماه، 1388 ] 8959 مشاهده
 آموزش ميكرو كنترلر 8051 قسمت اول (سخت افزار)  [ يكشنبه، 27 دي ماه، 1388 ] 11802 مشاهده
 
نام شما: [ کاربر جدید ]

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

  [ بازگشت ]