طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
این پروژه یک مدار واسط I/O می باشد که دارای 4 خروجی رله است. توسط نرم افزار کنترلی که قابل نصب بروی ویندوز های XP, Win7, Win8, Win10 می باشد می توان هر چهار رله را به صورت مجزا فعال و غیر فعال کرد.این پروژه در اصل یک قفل امنیتی است که می توان جلوی درب اصلی منزل (در کنار آیفون) آن را نصب کرد. از امکانات آن می توان به موارد زیر اشاره نمود: نمایش دما از 125 تا 55- درجه سانتیگراد، نمایش ساعت دقیق، نمایش تاریخ شمسی همراه با روز هفته به صورت فارسی، نمایش تعداد فرصت های باقیمانده برای وارد کردن رمز صحیح، و قفل شدن سیستم به مدت 15 دقیقه در صورتی که 4 بار رمز اشتباه وارد شود. امکان تغییر رمز و تنظیم کردن ساعت و تاریج و ...ورودی این فرکانس متر قادر است با ولتاژهای 12 تا 500 ولت AC کار کند. ماکزیمم فرکانس اندازه گیری 20KHz می باشد. همچنین با تعیین نرخ نمونه برداری می توانید فرکانس را تا دو رقم اعشار اندازه گیری نمائید.یک سیستم امنیتی که دارای یک کاربر اصلی می باشد و توسط این کاربر می توان کاربرهای متعددی با پسورد های مجزا تعریف نمود. می توان تا 100 کاربر و 100 پسورد مختلف را تعریف، و در قسمت ورود هر یک از اعضاء که نام کاربری و رمز عبور خود را بدرستی وارد کند یک رله به همراه LED روشن خواهد شد.این پروژه یک فرستنده گیرنده رادیویی با برد 100 تا 200 می باشد، که قابلیت کنترل 20 کانال مجزا به همراه کنترل سرعت موتور DC را دارد. از ماژول HMT و HMR و 20 عدد دیپ سوئیچ و درایور L298N برای موتور استفاده شده است.
پروژه کنترل رله توسط پورت USB با AVR و C شارپ

MCP-31

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

MCP-5

پروژه دربازکن الکترونیکی خانه قفل رمز با avr
پروژه فرکانس متر صنعتی 500 ولت 20KHz با avr

MCP-1

پروژه فرکانس متر صنعتی 500 ولت 20KHz با avr
پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr

MCP-12

پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr
پروژه کنترل 20 کاناله-به همراه کنترل سرعت موتور با avr

MCP-10

پروژه کنترل 20 کاناله-به همراه کنترل سرعت موتور با avr

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

قبل از همه چيز چرا 8051 ؟
ميكرولنترلر 8051 پايه و اساسي است براي يادگيري ديگر ميكروكنترلر ها دستورات اسمبلي اين ميكرو نسبت به AVR خيلي كمتر هست و داراي امكانات كمتري نسبت به ديگر ميكرو ها است به همين دليل يادگيري و فهم آن خيلي راحت و آسان مي باشد كه براي شروع ابتدا بايد مفاهيم منطق و ديجيتال را خوب فهميده باشيد و بعد از آن بايد سخت افرار 8051 و RAM و ROM داخلي آن را درك كرده باشيد تا بتوانيد يك برنامه كاربردي بنويسيد تا يك پروسه را كنترل كند. خيلي ها براي يادگيري ميگن كه ما كه مي خواهيم برنامه نويسي ميكرو را ياد بگيرم پس بهتر بالاترين ميكرو يعني AVR يا PIC ياد بگيريم در صورتي كه به نظر من كاملا اشتاه بوده و كار غلطي است كه اگه بخواهيد تا آخر ادامه دهيد كاري طاقت فرسا خواهد بود. مثل اين خواهد بود كه سقف طبقه اول يك ساختمان را درست نكرده باشيم و بخواهيم طبقه دوم را درست كنيم. در اين وبلاگ من تا بتوانم به زبان ساده و روان مطالب را بيان خواهم كرد كه البته اگه يكم علاقه و پشتكار داشته باشد مطمئن باشيد به ميكرو مسلط خواهيد شد و مي توانيد آن را به راحتي برنامه ريزي كنيد. قيمت اين ميكرو خيلي ارزان مي باشد در حدود 1000 تومان و حافظه ROM آن قابل پاك كردن و استفاده مجدد مي باشد پس شما به راحتي مي توانيد در خانه يا محل كار براي راحتي خود و افراد خانواده چيزهايي با آن بسازيد كه آدم باورش نشه كه اينو خودش ساخته و طراحي كرده.

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


تشريح پايه هاي 8051 و RAM و ROM داخلي آن
8051 داراي 4 پورت ورودي يا خروجي مي باشد يعني اينكه هر كدام از اين پورت ها را مي توان در يك لحظه به عنوان ورودي استفاده كرد و همان پورت را دوباره در يك لحظه ديگر به عنوان خروجي از آن استفاده كرد. منظور از پورت چيست؟ پورت در ميكرو يعني 8 عدد پين يا 8 خط ديتا يا ذر اصطلاح 8بيتي، كه 8051 داراي 4 پورت 8 بتي يعني 32 پايه مي باشد.
ميكرو كنترلر AT89C51 داراي 128 بايت RAM و 4KB حافظه برنامه ROM مي باشد. و AT89C52 داراي 256 بايت RAM و 8KB حافظه برنامه ROM مي باشد. و AT89C55 داراي 256 بايت RAM و 20KB حافظه برنامه ROM مي باشد. كه بستگي به حجم برنامه ما دارد كه از كدام ميكرو استفاده كنيم.
كاربرد RAM چست؟ اصلا به چه دردي مي خوره؟
RAM يعني random access memory حافظه با دستيابي تصادفي. از اين حافظه براي ذخيره اطلاعات موقت استفاده مي شود يعني اينكه تا زماني كه تغذيه ميكرو وصل باشد اين اطلاعات از بين نمي روند و با قطع كردن تغذيه اين اطلاعات از بين مي روند. ما در ميكرو 8 ثبات 8 بتي براي ذخيره كردن داده  ها داريم در بعضي از مواقع پيش مي آيد كه اين 8 ثبات در كل برنامه استفاده شوند و ما به يك ثبات 8 بيتي براي ذخيره سازي داده ها داريم مثلا يك شمارنده طراحي كرديم و همه ثبات ها هم استفاده شده و ما مثلا به دو ثبات احتياج داريم كه مي توانيم از هر كدام از خانه هاي RAM استفاده كنيم. منظور از اطلاعات همان داده هاي 8 بيتي مي باشند يعني همون 0 يا 1 ها كه به 8 تا از آنها يك بايت يا يك داده 8 بيتي مي گويند.
حال به تقسيم بندي RAM توجه كنيد. براي برنامه نويسي خيلي مهم است كه ما از چه خانه هاي RAM مجاز هستيم استفاده كنيم آيا مي توانيم در فلان خانه RAM داده را به صورت بيتي دستكاري كنيم  يا داده را 8 بيتي دستكاري كنيم. اصلا در چه محدوده اي از RAM قادر هستيم داده ذخيره كنيم  يا بانك هاي ثباتي در كجاي RAM واقع شده اند و ديگر ثبات ها... به جدول زير كه مربوط به RAM خوب توجه كنيد:

عملكرد
ثبات
خانه هاي 8 بتي RAM
آدرس
 
 
 
 
 
 
 
 
 
 
FF
ثبات B
B
F0
F1
F2
F3
F4
F5
F6
F7
F0
ثبات A يا انباره
ACC
E0
E1
E2
E3
E4
E5
E6
E7
E0
كلمه وضعيت
PSW
D0
D1
D2
D3
D4
D5
D6
D7
D0
 
IP
B8
B9
BA
BB
BC
--
--
--
B8
پورت 3
P3
B0
B1
B2
B3
B4
B5
B6
B7
B0
كنترل وقفه ها
IE
A8
A9
AA
AB
AC
--
--
AF
A8
پورت 2
P2
A0
A1
A2
A3
A4
A5
A6
A7
A0
ارتباط سريال
SBUF
قابل آدرس دهي نيست
99
 
SCON
98
99
9A
9B
9C
9D
9E
9F
98
پورت 1
P1
90
91
92
93
94
95
96
97
90
بايت سنگين تايمر 1
TH1
قابل آدرس دهي نيست
8D
بايت سنگين تايمر 0
TH0
قابل آدرس دهي نيست
8C
بايت سبك تايمر 1
TL1
قابل آدرس دهي نيست
8B
بايت سبك تايمر 0
TL0
قابل آدرس دهي نيست
8A
مد تايمر
TMOD
قابل آدرس دهي نيست
89
مد شمارنده
TCON
88
89
8A
8B
8C
8D
8E
8F
88
 
PCON
قابل آدرس دهي نيست
87
بايت سنگين ثبات DPTR
DPH
قابل آدرس دهي نيست
83
بايت سبك ثبات DPTR
DPL
قابل آدرس دهي نيست
82
اشاره گر پشته
SP
قابل آدرس دهي نيست
81
پورت 0
P0
80
81
82
83
84
85
86
87
80
فقط بايتي
 
80 بايت براي خواندن و نوشتن موقت
30تا7F
بيتي و بايتي
 
16 بايت براي خواندن و نوشتن موقت
20تا2F
 
بانك هاي ثباتي شامل R0-R7
R0-R7
بانك 3
18تا1F
R0-R7
بانك 2
10تا17
R0-R7
بانك 1
08تا0F
R0-R7
بانك 0
00تا07
SMGH
SMGH
SMGH
SMGH

 


1) 32 بايت از مكان هاي 00 تا 1F براي بانك هاي ثباتي و پشته كنار گذاشته شده.
2) 16 بايت از 20 تا2F براي خواندن و نوشتن آدرس پذير بيتي كنار گذاشته شده.
3) 80 بايت از مكان هاي 30 تا7F براي خواندن و نوشتن بايتي  و يا آنچه كه عموما داده موقت گفته مي شو به كار مي رود.
نكته: جلوي خانه هايي كه نوشته شده قابل آدرس دهي نيست يعني اينكه نمي توان با آدرس هگز آن از اين ثبات استفاده كرده به عنوان مثال براي SBUF در برنامه نويسي حتما بايد خود SBUF را نوشت يعني از آدرس هگز آن نمي توان استفاده كرد. ولي در بقه موارد مجاز هستيم. با يك مثال اين قضيه را روشن مي كنيم:
MOV  A,#60H يعني عدد 60 در مبناي هگز را در انباره كپي كن. حال اين دستور را اين طوري هم مي توان نوشت يعني از آدرس A استفاده كرد.   MOV  E0,#60H
در RAM /8051 ما چهار بانك ثباتي داريم كه هر بانك داري 8 بايت(R0تاR7) 8بيتي مي باشد  يعني:

 
بانك صفر
R7
D0
D1
D2
D3
D4
D5
D6
D7
R6
D0
D1
D2
D3
D4
D5
D6
D7
R5
D0
D1
D2
D3
D4
D5
D6
D7
R4
D0
D1
D2
D3
D4
D5
D6
D7
R3
D0
D1
D2
D3
D4
D5
D6
D7
R2
D0
D1
D2
D3
D4
D5
D6
D7
R1
D0
D1
D2
D3
D4
D5
D6
D7
R0
D0
D1
D2
D3
D4
D5
D6
D7

بقيه بانك ها نيز مانند جدول بانك صفر مي باشد از اين ثبات ها در برنامه نويسي خيلي زياد استفاده مي شودند.نحوي انتخاب بانك يا تغيير دادن آن به صورت زير مي باشد:
8051 هنگامي روشن مي شود بانك صفر به صورت پيش فرض براي بانك ثباتي خود انتخاب مي كند كه براي تغيير دادن آن مي توانيم به صورت زير عمل كنيم.

RS0(PSW.3)
RS1(PSW.4)
 
0
0
بانك صفر
1
0
بانك يك
0
1
بانك دو
1
1
بانك سه


به كمك دستورات بيتي مي توان اين بانك را تغيير داد به مثال زير توجه كنيد مي خواهيم بانك 3 را به عنوان بانك ثباتي ميكرو تغيير دهيم؟


SETB   PSW.4
SETB  PSW.3
مي خواهيم بانك دو را انتخاب كنيم؟
SETB  PSW.4
CLR  PSW.3


پشته:
هنگامي كه 8051 روشن مي شود اشارگر پشته به صورت پيش فرض عدد 07 را در خود دارد كه نهايت با عث انتخاب بانك 1 براي پشته خود مي شود. SP=07H
براي تغيير پشته به مكان ديگري ازRAM يا بانك ديگري مي توان به كمك دستور زير پشته را تغيير داد:   MOV  SP,#XX كه XX آدرس آن مكان از RAM مي باشد.
حال كاربرد پشته چيست؟ پشته كاربرد زيادي دارد شايد ما زياد با آن سرو كار نداشته باشيم ولي CPU با آن خيلي كار دارد به عنوان مثال براي اجراي يك زير برنامه(برنامه فرعي) مثلا CALL  LABEL پردازنده آدرس اين مكاني را كه در آن به اين دستور برخورد كرده، را در پشته خود ذخيره مي كند و بعد از اجراي پشته به كمك اين آدرس بر مي گردد تا ادامه برنامه اصلي را انجام دهد.
براي درج داده رد پشته از دستور PUSH استفاده مي كنيم و براي بازيافت داده از پشته از دستور POP استفاده مي كنيم. با هر بار درج در پشته اشارگز پشته يك واحد به آن اضافه مي شود. و با هر بار بازيافت از پشته اشارگر پشته يك واحد از آن كم مي شود.
ROM  چيست؟
اين حافظه از دست ما خارج است يعني اينكه فقط توسط كامپيوتر مي توان برنامه اصلي را توي اين حافظه كپي كرد و ما بعدا توسط خود ميكرو نمي توانيم محتواي آن را تغيير دهيم بلكه فقط مي توانيم اطلاعات را اين حافظه به حافظه RAM انتقال داده و بعد از پردازش مي توان آنها را به خروجي فرستاد.
پايه RST(9) ريست
با فعال شدن اين پايه يعني يك شدن به مدت حداقل 2 سيكل ماشين ميكرو ريست شده و به خانه 0000H پرش كرده و ار آنجا شروع به خواندن برنامه مي كند.
پايه EA
اگر اين پايه را يك كنيم ميكرو برنامه را از ROM داخلي خودش شروع به خواندن مي كند و اگر اين پايه را صفر كنيم ميكرو از ROM داخلي خودش هيچ اطلاعاتي نمي خواند و با برنامه ريزي كه شده از ROM بيروني شروع به خواندن اطلاعات مي كند.
پايه PSE
اين پايه براي زماني است كه بخواهيم از RAM يا ROM بيروني استفاده كنيم كه بسته به شرايط يا صف مي شود يا يك.
پايه ALE
اگر از RAM يا ROM بيروني استفاده كنيم اين پايه پورت صفر را به عنوان خطوط آدرس معرفي مي كند.
در قسمت دوم به معرفي دستورات مي پردازيم

8051 در كل 128 بايت RAM دارد كه به صورت جدول بالا تقسيم بندي مي شود:

  منبع: www.picpars.com

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




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

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