طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
در صورتی که برق شهر از حداقل تعریف شده کمتر، یا از حداکثر بیشتر شود رله خروجی قطع خواهد شد و از طریق بازر بوق هشدار پخش می شود.این پروژه یک مدار واسط I/O می باشد که دارای 4 خروجی رله است. توسط نرم افزار کنترلی که قابل نصب بروی ویندوز های XP, Win7, Win8, Win10 می باشد می توان هر چهار رله را به صورت مجزا فعال و غیر فعال کرد.این پروژه در اصل یک قفل امنیتی است که می توان جلوی درب اصلی منزل (در کنار آیفون) آن را نصب کرد. از امکانات آن می توان به موارد زیر اشاره نمود: نمایش دما از 125 تا 55- درجه سانتیگراد، نمایش ساعت دقیق، نمایش تاریخ شمسی همراه با روز هفته به صورت فارسی، نمایش تعداد فرصت های باقیمانده برای وارد کردن رمز صحیح، و قفل شدن سیستم به مدت 15 دقیقه در صورتی که 4 بار رمز اشتباه وارد شود. امکان تغییر رمز و تنظیم کردن ساعت و تاریج و ...اندازه گیری ظرفیت خازن از 1nf تا 2000uf - دارای دو حالت علمی اندازه گیری - دارای کالیبره سازی خودکار - نمایش اتوماتیک رنج خازن بر روی نمایشگراین پروژه جریان برق مصرفی را اندازه گیری و توسط یک ماژول سیم کارت اطلاعات مورد نظر را به شماره همراه دلخواه ارسال میکند. ولتاژ کاری آن AC220 ولت و حداکثر جریان عبور آن 50 آمپر می باشد.
پروژه محافظ لوازم برقی با avr و نمایشگر سون سگمنت

MCP-21

پروژه محافظ لوازم برقی با avr و نمایشگر سون سگمنت
پروژه کنترل رله توسط پورت USB با AVR و C شارپ

MCP-31

پروژه کنترل رله توسط پورت USB با AVR و C شارپ
پروژه دربازکن الکترونیکی خانه قفل رمز با avr

MCP-5

پروژه دربازکن الکترونیکی خانه قفل رمز با avr
پروژه خازن سنج دو حالته از 1nf تا 2000uf

MCP-22

پروژه خازن سنج دو حالته از 1nf تا 2000uf
پروژه کنتور برق با AVR و ارسال اطلاعات توسط سیم کارت

MCP-40

پروژه کنتور برق با AVR و ارسال اطلاعات توسط سیم کارت

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

دستورات منطقي و مقايسه اي
دستور  AND)  ANL)
اين دستور دو داده 8 بيتي رل با هم AND‌ مي كند. AND به معني "و" مي باشد يعني اينكه مثلا بيت P1.1 و P1.2 هرگاه صفر شدن فلان كار را ميكرو انجام دهد.
قالب دستوري آن به اين صورت مي باشد. ANL  REG,DATA عملوند مبدا يعني REG مي تواند يك ثبات يا يك حافظه باشد و عملوند مقصد DATA هم مي تواند ثبات يا حافظه يا يك داده فوري (عدد) باشد.بعد از انجام اين عمل منطقي نتيجه در انباره قرار مي گيرد.
مثال مي خواهيم عدد 56 و25 را با هم AND كنيم:
MOV    A,#56H
ANL    A,25H     A=4H
طبق جدول صحت گيت AND هرگاه ورودي هاي A وB  يك شد خروجي هم يك مي شود.
 طبق اين جدول براي AND كردن اين  دو داده داريم:

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


OUT
B
A
0
0
0
0
1
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
56H
1
0
1
0
0
1
0
0
25H
0
0
1
0
0
0
0
0
OUT=4H

 

 

 

دستور   OR)   ORL)
اين دستور دو داده 8 بيتي رل با هم OR مي كند. OR به معني "يا" مي باشد يعني اينكه مثلا اگر بيت P1.1 يا P1.2 هرگاه صفر شدن فلان كار را ميكرو انجام دهد.
قالب دستوري آن به اين صورت مي باشد. ANL  REG,DATA عملوند مبدا يعني REG مي تواند يك ثبات يا يك حافظه باشد و عملوند مقصد DATA هم مي تواند ثبات يا حافظه يا يك داده فوري (عدد) باشد.بعد از انجام اين عمل منطقي نتيجه در انباره قرار مي گيرد.
مثال مي خواهيم عدد 56 و25 را با هم OR كنيم:


MOV    A,#56H
ORL     A,25H     A=77H


طبق جدول صحت گيت OR هرگاه يكي از ورودي هاي A وB  يك شد خروجي هم يك مي شود.
طبق اين جدول براي OR كردن اين  دو داده داريم

OUT
B
A
0
0
0
1
1
0
1
0
1
1
1
1
 
 
0
1
1
0
1
0
1
0
56H
1
0
1
0
0
1
0
0
25H
1
1
1
0
1
1
1
0
OUT=77H


 

دستور  XOR)   XRO)
اين دستور دو داده 8 بيتي رل با هم XOR مي كند. XOR به معني "يا  انحصاري" مي باشد يعني اينكه مثلا اگر يك از بيتهاي P1.1 يا P1.2 يك شد(اگر يكي از آنها يك بود بايد ديگر صفر باشد) ميكرو فلان كار را انجام دهد و اگر هر دو يك بودنند يا هر دو صفر بودند كاري انجام نمي دهد
قالب دستوري آن به اين صورت مي باشد. ANL  REG,DATA عملوند مبدا يعني REG مي تواند يك ثبات يا يك حافظه باشد و عملوند مقصد DATA هم مي تواند ثبات يا حافظه يا يك داده فوري (عدد) باشد.بعد از انجام اين عمل منطقي نتيجه در انباره قرار مي گيرد.
مثال مي خواهيم عدد 56 و25 را با هم XOR كنيم:


MOV    A,#56H
XRL     A,25H     A=73H


طبق جدول صحت گيت XOR زماني خروجي يك مي شود كه دو ورودي مثل هم نباشند يعني هر وقتي كه ورودي ها متفاوت بودند خروجي يك خواهد شد.
طبق اين جدول براي OR كردن اين  دو داده داريم:

OUT
B
A
0
0
0
1
1
0
1
0
1
0
1
1
 
0
1
1
0
1
0
1
0
56H
1
0
1
0
0
1
0
0
25H
1
1
0
0
1
1
1
0
OUT=73H

 

 

از اين دستور مي توان براي پاك كردن يك ثبات استفاده كرد يعني اينكه محواي يك ثبات را با خودش XOR كنيم  و يا مي توانيم به كمك اين دستور بفهميم كه دو ثبات آيا مقدار يكساني دارند يا همانطور كه گفتيم اگر دو داده مثل هم را با هم XOR كنيم مقدار آن صفر خواهد شد و ما از اين صفر مي فهميم كه اين دو ثبات با هم مساوي هستند.

دستور متمم سازي CPL A  
متم سازي يعني تبديل يك ها به صفر و تبديل صفرها به يك. اين دستور بايتي بوده تنها مي تواند محتواي ثبات انباره را متمم كند پس اگر ما بخواهيم ديتاي يك ثبات را متمم كنيم بايد حتما ابتدا آن ديتا را به انباره انتقال داده و سپس از اين دستور استفاده كنيم. كاربرد اين دستور بيشتر در مكمل سازي است يعني براي تفريق اعداد علامت دار كه در قسمت جهارم برسي شد.
مثال عدد 50 كه در ثبات R1 قرار دارد را متمم كنيد و بعد از متمم كردن آن را در R2 قرار دهيد؟


MOV  A,R1   A=01010000=50H
CPL  A         A=10101111=AFH
MOV  R2,A   R2=10101111=AFH


در خط اول محتواي R1 يعني عدد 50 در انباره قرار مي گيرد و در خط دوم محتواي انباره متمم مي شود و در خط سوم محتواي انباره كه همان متمم شده عدد 50 مي باشد در R2 كپي مي شود.


دستور مقايسه  CJNE  REG,DATA,LABEL
قالب دستور به اين صورت مي باشد كه ابتدا در REG بايد يكي از ثبات ها را قرار داد كه اين ثبات براي مقايسه مي باشد و در DATA بايد عددي را قرار تا اين عدد با محتواي REG مقايسه شود.و LABEL هم آدرس است كه اگر مقايسه نابرابر بود به آن آدرس پرش خواهد كرد. به مثال زير توجه كنيد!


START:  MOV  A,P1
            CJNE  A,#01H,START
           ACALL  OPEN


اين برنامه را مي توانيم يك قفل رمز فرض كنيم كار كرد برنامه به اين صورت مي باشد كه به صورت مداوم پورن 1 را مي خواند و در انباره قرار مي دهد. مثلا به پورت 1 چند تا كليد وصل شده(8تا) هر گاه ما يكي از اين كليد ها را فشار دهيم روي پورت 1 عددي توليد مي شود كه ميكرو آن را مي خواند و در انباره خود ذخيره مي كند. حال رمز ما چيست؟ ما بايد رمز خود را در قسمت DATA بنويسم. خوب الان رمز ما عدد 01 مي باشد يعني اگر ما كليدي كه به بيتP0.0  وصل شده را فشار دهيم عددي كه در انباره قرار مي گير با با عدد 01 مقايسه مي شود مي بينيم كه براير است پس ميكرو پرش نمي كند و خط بعدي يعني ACALL  OPEN را مي خواند و حال ما در اين زير برنامه برنامه باز كردن در را نوشته ايم. حال اگر ما كليد ديگري را فشار دهيم در نتيجه عدد ديگري توليد مي شود و ميكرئ اين عدد را با 01 مقايسه مي كند مي بيند كه برابر نيست پس به START پرش مي كند و دوباره عدد جديدي مي خواند. و اين كار را همين طور ادامه مي دهد تا زماني كه عدد 01 روي پورت 1 ايجاد شود.
البته اين برنامه جهت آموزش اين دستور مي باشد كه اگر ما بخواهيم برنامه اي به اين شكل بنويسم بايد از تاخير و چيزهاي ديگر از جمله مسايل امنيتي كه كاربر تا چند مرتبه رمز اشتباه بدهد مجاز هست كه دوباره ادامه دهد. تاخير به خاطر اينكه سرعت ميكرو چون خيلي بالا است زماني كه كليد را فشار مي دهيم ميكرو شايد 100 ها بار اين عدد را از زير دست ما بخواند و مقايسه كند. همچنين هنگام برداشتن دست؟؟!!
از كاربر هاي ديگر اين دستور مي توان به موارد زير اشاره كرد:
تشخيص و مقايسه خروجي يك سنسور مثل سنسور دما كه مثلا دما به فلان درجه كه رسيد هيتر را خاموش كند يا كولر را روشن نماييد. و كاربر هاي فراوان ديگر كه برنامه نويس بايد خلاق باشد و آنها را با هم تركيب كند.


دستورات چرخشي ROTATE
دستورات چرخشي دو نوع هستند يكي چرخش فقط محتواي انباره و ديگر چرخش محتواي انباره همراه با رقم نقلي. نكته تماي دستورات چرخشي فقط روي انباره عمل مي كنند.!!!
دستور RR  A   ‌ 
اين دستور محتواي انباره را به سمت راست شيفت مي دهد.
مثال محتواي انباره را به سمت راست بچرخانيد؟


MOV   A,#36H   ;A=00110110
RR   A              ;A=00011011 
RR   A              ;A=10001101 
RR   A              ;A=11000110 


با هر بار اجراي دستور چرخش محتواي انباره به سمت راست شيفت داده مي شود.
دستور RL  A   ‌ 
عملكرد اين دستور شبيه به دستور بالايي است با اين تفاوت كه محتواي انباره را به سمت چپ شيفت مي دهد.


MOV   A,#36H   ;A=00110110
RL   A               ;A=01101100  
RL   A               ;A=11011000  
RL   A               ;A=10110001  


دستور RRC  A   ‌ 
اين دستور چرخش همرا با رقم نقلي مي باشد يعني رقم نقلي هر مقدار كه داشته باشد يا صفر يا يك اين عدد را بعد از بيت هاي انباره قرار مي دهد و آن را به سمت راست مي چرخاند در اصل اين دستور ثبات انباره را به يك ثبات 9 بيتي تبديل كرده. به مثال زير توجه كنيد!!


مقدار كري را مثلا در اينجا صفر مي كنيم    CLR   C
MOV   A,#36H   ;A=00110110
RRC   A              ;A=00011011   CY=0
RRC   A              ;A=00001101   CY=0
RRC   A              ;A=11000110   CY=1
RRC   A              ;A=10000110   CY=1
RRC   A              ;A=11000011   CY=0
RRC   A              ;A=01100001   CY=1
RRC   A              ;A=10110000   CY=1


دوستان عزيز اين دستور يكم پيچيده مي باشد ولي اگر خوب توجه كنيد مي بينيد كه خيلي هم راحت هستش. فقط بايد به اين نكته توجه كنيد كه RRC A يه جورايي ثبات 8 بيتي انباره را به ثبات 9 بيتي تبديل مي كند نكته اين دستور در همين 9 بيتي بودن ان است. به جودل زير توجه كنيد روند شيفت دادن عدد 36 همراه با پرچم كري كه صفر است را نشان مي دهد به رنگ ها توجه كنيد رنگ قرمز نشانه بيت كري مي باشد. و رنگ سبز بيت هاي مي باشد كه با چرخش وارد كري مي شوند.

توضيح
CY
D0
D1
D2
D3
D4
D5
D6
D7
A=36H , CY=0
0-->
0-->
1
1
0
1
1
0
0
 
0-->
1-->
1
0
1
1
0
0
0
با چرخش، بيت D0 انباره وارد كري مي شود يعني CY=1
1-->
1-->
0
1
1
0
0
0
0
در مرحله قبل CY=1 بود و با چرش وارد بيتD7  انباره مي شود
1-->
0-->
1
1
0
0
0
0
1
 
0-->
1-->
1
0
0
0
0
1
1
 
1-->
1-->
0
0
0
0
1
1
0
 
1-->
0-->
0
0
0
1
1
0
1

دستور RLC  A   ‌ 
اين دستور هم همانند دستور RRC  A مي باشد فقط با اين تفاوت كه كري بعد از بيت 7 قرار مي گيرد و به سمت چپ شيفت داده مي شود.

 
D0-->
D1
D2
D3
D4
D5
D6
D7
<--CY

 

  منبع: www.picpars.com

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

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

برچسب ها:
تاریخ ارسال يكشنبه، 4 بهمن ماه، 1388    نویسندهنویسنده: مدیریت    نظرات 1 نظر    بازدید بازدید [ 11639 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان