طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
خروجی سه کاناله با کنترل سرعت به صورت مجزا، دو کلید افزایشی و کاهشی برای کنترل سرعت در هر کانال، فرکانس های مختلف و ثابت برای هر کانال، جریان خروجی بیش از 10 آمپر و ولتاژ بیش از 30 ولتاین پروژه یک ماشین حساب ساده با چهار عمل اصلی بروی نمایشگر گرافیگی می باشد.این پروژه در اصل یک شمارنده می باشد که می توان عبور مرور افراد از یک گیت را شمارش کرد، شمارنده هم می تواند به صورت بالا شمار و هم پایین شمار کار کند. همچنین توسط شدت نور یک عدد LED می‌توان سنسور فرستنده و گیرنده را در یک راستای مستقیم تنظیم کرد. سنسورها ار نوع مادون قرمز با برد تقریبی 120cm می باشد.این مدار یک کنترلر زمانی و دمایی می باشد، که بر اساس برنامه ریزی دلخواه توسط کاربر یک رله خروجی را کنترل می نمایید. با اتصال لامپ فلورسنت مرغوب به رله دستگاه می توانید لامپ را تحت کنترل داشته باشید.اندازه گیری ظرفیت خازن از 1nf تا 2000uf - دارای دو حالت علمی اندازه گیری - دارای کالیبره سازی خودکار - نمایش اتوماتیک رنج خازن بر روی نمایشگر
پروژه کنترل دور موتور با PWM و جریان خروجی بالا با avr

MCP-19

پروژه کنترل دور موتور با PWM و جریان خروجی بالا با avr
پروژه ماشین حساب ساده با السیدی گرافیکی و avr

MCP-34

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

MCP-6

پروژه شمارش افراد با سنسور مادون قرمز و avr
پروژه مدار دستگاه فتوتراپی (پایین آورنده زردی خون نوزادان)

MCP-24

پروژه مدار دستگاه فتوتراپی (پایین آورنده زردی خون نوزادان)
پروژه خازن سنج دو حالته از 1nf تا 2000uf

MCP-22

پروژه خازن سنج دو حالته از 1nf تا 2000uf

آموزش ميكرو كنترلر AVR به زبان بيسيك (قسمت اول)

براي آموزش اين ميكرو از كامپايلر BASCOM و پروتيوس 7.2 استفاده مي كنيم.
زبان بيسك يك زبان راحت و سريع مي باشد يعني اينكه آنچه شما بر زبان مي آوريد رو اگر درقالب دستورات بيسكام بنويسيد اون كاري كه شما از ميكرو مي خواهيد رو براي شما انجام مي دهد. اكثر دستورات بيسكام يك واژه معني دار انگليسي مي باشد كه اگر معني اونا رو بدونيد ديگه دستورات براي همشه تو ذهن شما مي ماند.
ابتدا دستوراتي كه براي شروع يك برنامه لازم است بدانيم را توضيح مي دهيم:
معرفي ميكرو:

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


اولين دستور مهم و هميشگي كه توي همه برنامه ها بايد بنويسيم دستور $regfile هست كه ما به كمك اين دستور ميكرو خودمون رو به كامپايلر معرفي مي كنم و كامپايلر هم بر اساس اين مدل ميكرو دستورات را به زبان ماشين ترجمه مي كند. (فايل هاي هگز و باينري)
مثلا شما مي خواهيد از ميكروي ATMEGA8  استفاده كنيد كه به اين صورت اونو معرفي مي كنيد:
$regfile= "m8def.dat"
كه m8 معادل atmega8 و def.dat  كه اكثرا ثابت هست.
معرفي كريستال:
براي معرفي كريستالي كه به ميكرو وصل مي كنيم از دستور $crystal استفاده مي كنيم به عنوان مثال اگر شما مي خواهيد به ميكرو كريستال 12 مگاهرتزي وصل كنيد اين طوري مي نويسيم:
فركانس را بر حسب هرتز مي نويسيم $crystal= 12000000
متغييرها:
براي تعريف كردن يك متغيير از دستور Dim استفاده مي كنيم.Dim= Dimension يعني (بعد،اندازه) قالب دستوري آن به شكل زير هست:
Dim Var as type
كه Var نام متغيير مان هست كه شما هر اسمي كه دوست داريد مي تونيد به جاي اون بزاريد. و type هم اندازه يا مقدار اون متغيير هست.
 
محدوده رنج
اندازه بر حسب بيت
نوع متغيير
0 يا 1
يك بتي
Bit
0 تا 255
8 بيت
Byte
32767 تا 32767-
16 بيتي
Integer
0 تا 65536
16 بيتي
Word
214783647 تا 2147483648-
32 بيتي
Long
1.5*10^-45 تا 3.4*10^38
32 بيتي
Single
-
0تا 254 بايت
String
 
 مثلا ما مي خواهيم يك متغيير تعريف كنيم كه اين متغيير 16 بيتي هست. همانطور كه در جدول بالا مشاهد مي كنيد 2 تا 16 بيتي داريم يه word كه شامل اعداد منفي نميشه و يه Integer كه نصف اون مال اعداد مثبت و نصف ديگه مال اعداد منفي.
Dim mc8051 as word     يا Dim  mc8051   as Integer
براي قرار دادن اعداد در متغيير ها اگر فقط عدد خالي بنويسيم كامپايلر اين عدد را در مبناي دسيمال حساب مي كند. كه اگر بخواهيم در مباناي هگز بنويسم به اين صورت عمل مي كنيم: &H و براي اعداد باينري هم به اين صورت : &B
Dim   a as byte
Dim    b as byte
Dim    c as byte
A= 230
B= &hE6
C= &B11100110
در مثال بالا مي توانيم به صورت زير هم بنويسم:
Dim a as byte , b as byte , c as byte
A= 230 : B= &hE6 : C= &B11100110
براي اينكه تعداد خطهاي برنامه زياد نشه مي تونيم به اين صورت عمل كنيم كه براي تعريف متغيير ها از علامت , استفاده مي كنيم و براي اينكه چند دستور رو در يك خط بنويسم هم بين دستورات : مي گذاريم.
دستور Const
از اين دستور براي تعريف كردن يك ثابت استفاده مي كني يعني اينكه ما مي توانيم يك عدد يا تعدادي كاراكتر را به يك ثابت نسبت دهيم. و رد طول برنامه هرجا كه لازم داشتم از اون استفاده كنيم.
هر جا كه ما عدد 1378 رو لازم داشتيم كافي فقط اسم اون يعني a رو بنويسيم Const a= 1378
 Const a="MC8051"
هر جا كه خواستيم عبارت MC8051 رو بنويسيم فقط كافي كه اسم ثبات اون يعني A رو بنويسيم
براي نوشتن يك كلمه يا چند كاراكتر بايد حتما كاراكتر ها را درون " " قرار دهيم.
دستورات افزايشي و كاهشي
براي افزايش يك واحدي يك متغيير مي توانيم از Incr استفاده كنيم و براي كاهش يك واحدي يك متغيير از Decr استفاده كنيم.
Dim mgh as byte
Mgh=56
Incr mgh   "mgh=57
Incr mgh    "mgh=58
Decr mgh   "mgh=57
Decr mgh   "mgh=56
Decr mgh   "mgh=55
براي نوشتن يك توضيح يا راهنمايي در خط هاي برنامه مي توانيد از " استفاده كنيد.
دستورات تاخير
براي ايجاد تاخير مي توانيم از سه نوع تاخير استفاده كنيم:
1)      دستور wait
از اين دستور مي توانيد براي ايجاد تاخير در رنج هاي ثانيه اي استفاده كنيد:   wait   5 يعني 5 ثانيه توقف كن.
2)      دستور waitms
از اين دستور مي توانيد براي ايجاد تاخير در رنج هاي ميلي ثانيه اي استفاده كنيد:   waitms   5 يعني 5 ميلي ثانيه توقف كن. كه مي تونيد از 1 ميلي ثانيه تا 65535 ميلي ثانيه بهش بديد.
1)      دستور waitus
از اين دستور مي توانيد براي ايجاد تاخير در رنج هاي ميكرو ثانيه اي استفاده كنيد:   waitus   5 يعني 5 ميكرو ثانيه توقف كن. كه مي تونيد از 1 ميلي ثانيه تا 255 ميكرو ثانيه بهش بديد.
دستورات I/O
براي استفاده از پورت هاي AVR حتي يك بيت اون بايد اول برنامه اون پورت يا پين رو پيكره بندي كنيم كه به كمك دستور config اين كا رو انجام ميديم.
Config porta=output   يا config   porta=Input كه بسته به نوع ميكرو و تعداد پورتها اوها رو پيكره بندي كنيد مثلا من در اينجا پورت A را به عنوان ورودي و يه بار ديگه به عنوان خروجي معرفي كردم.
همچنين اگه شما بخواهيد يكي از پين هاي پورت مثلا A رو ورودي و يه پين ديگه رو خروجي تعريف كنيد به صورت زير عملي مي كنيم:
Config porta.2=Output
Config porta.3=Input
كه بسته به نوع ميكرو ما از پورت A تا پورت F داريم.
مثلا atmga16 ,atmga32  چهار پورت دارند با اسم هاي A,B,C,D
خوب ديگه فعلا تا اينجا كافي به كمك اين دستورات كه تا اينجا خونديم چند تا مثال مي زنيم:
$regfile= "m16def.dat"
$crystal= 8000000
Config portb= output
Dim mgh as byte
Mgh=20
Portb=mgh "port b = 20
Waitms 500
Incr mgh
Portd= mgh   "port b = 21
Waitms 1000
End
در خط اول مدل ميكرو رو معرفي كرديم و خط دوم هم فركانس كريستال ميكرو رو مشخص كرديم. خط سوم پورت B رو به عنوان خروجي تعريف كرديم. و خط چهارم هم يك متغيير به نام mgh  كه از نوع بايت مي باشد تعريف كرديم. خط پنجم امديم و به mgh مقدار 20 رو داديم. خط ششم هم محتواي mgh رو روي پورت B ريختيم. خط بعدي هم به مدت 500 ميلي ثانيه ميكرو رو در همين حالت متوقف كرديم و در خط بعدي يك واحد به Mgh اضافه كرديم كه مي شود 21 و در خط بعدي هم محتواي Mgh كه عدد 21 است رو روي پورت B ريختيم و در خط آخر هم به مدت 1000 ميلي ثانيه ميكرو رو متوقف كرديم و در پايان هم به END رسيد كه ديگه ميكرو كاملا متوقف ميشه. ديگه اين برنامه رو اجرا نميكنه. تا زماني كه ريست بشه!
خوب فعلا چون تعداد دستورات كمي رو آموزش داديم ديگه از اين بيشتر نميشه مثال هاي خوبي بزنم انشاء الله در قسمت بعدي اين كار رو انجام ميدم.

  منبع: www.picpars.com

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

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

برچسب ها:
تاریخ ارسال چهارشنبه، 21 بهمن ماه، 1388    نویسندهنویسنده: مدیریت    نظرات 6 نظر    بازدید بازدید [ 22566 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان