آموزش AVR از صفر تا بي نهايت !

مدیر انجمن: vahid

ارسال پست
نمایه کاربر
Cyrus
مدیر سابق سایت
مدیر سابق سایت
پست: 525
تاریخ عضویت: سه‌شنبه 17 فروردین 1389, 7:30 pm
محل اقامت: مشهد
تماس:

آموزش AVR از صفر تا بي نهايت !

پست توسط Cyrus »

سلام، اين مطالب رو من از Iranled خوندم. به نظرم براي شروع كار خيلي مفيد مياد. حتما مطالعش كنيد.

قسمت اول اشنايي با ميكروكنترلر AVR

براي اونايي كه تا حالا با ميكرو كار نكردن كمي مشكله كه بعضي از مفاهيم رو ياد بگيرن براي همين من اشنايي مقدماتي با avr به زبان ساده در اوردم .راستش ديگه از اين ساده تر به ذهنم نرسيد . دوستاني كه تمايل به يادگيري avr دارن بايد بدونن كه بايد با مياني ديجيتال اشنايي داشته باشند حداقل اينكه با گيت هاي منطقي اشنايي داشته باشين براي اشنايي با ديجيتال كتاب مباني ديجيتال هنرستان يا كتاب طراحي ديجيتال نوشته موريس مانو خوبه. نوشته زير مقدمه اي بر اشنايي با ميكرو هست كه گفتگوي بين دو دوست رو نشون ميده كه دارن درباره ميكرو avr صحبت مي كنن اميدوارم كه مفيد باشه.

1-سلام خوبي
2-سلام خوبم تو خوبي
1-اره خوبم . چكار مي كني كم پيدايي
2-اره يك چند وقتيه دارم پروژه دانشگاه رو انجام مي دم
1-چي هست اين پروژت
2-هيچي ساخت يك دور سنج موتور با ميكروكنترلرAVR
1-چي ميكروكنترلرavr ؟؟؟؟ ميكرو كنترلر ديگه چيه
2-ميكروكنترلر رو اگه بخام به زبون ساده بهت بگم يك كنترل كننده هستش كه تقريبا هر چي ازش بخاي برايت انجام ميده
1-پس بگو يك رباته
2-نه منظورم هر كاري نبود ببين مثل يك كامپيوتر كه بهش فرمان ميدي اون هم انجام ميده البته از نظر ظاهري كه نگاهش كني يك ايسي 40 پايه هستش
1-چي؟؟؟؟؟ مگه ميشه يك كامپيوتر به اندازه يك ايسي چهل پايه باشه
2-نه خود كامپيوتر منظورم از كامپيوتر اينه كه بهش فرمان مي دي اونم انجام ميده
1-بازم نفهميدم بيشتر توضيح بده اصلا به چه دردي ميخوره
2-بزار بيشتر برات توضيح بدم اين يك ايسي هستش كه ما به وسيله كامپيوتر برنامه نويسي مي كنيم بعد برنامه رو مي ريزيم توي ميكرو . كاربردش هم خيلي زياده مثلا باهاش مي توني ساعت . فركانس متر. قفل رمز درست كني
1-يكم بيشتر درباه خود ميكرو توضيح بده
2-اين ميكرويي كه بهت ميگم يك خانواده هستش كه انواع مختلفي داره كه تشكيل شده از سه گروه 1-tiny 2-90s 3-mega
1-خوب فرق اين سه گروه باهم چيه مثلا tiny با 90s يا با mega چه فرقي دارن
2-فرفشون توي امكاناتي كه دارن هستش و همين فرق باعث شده كه قيمت هاشونم باهم فرق كنه
1-منظورت از امكاناتشون چيه
2-ببين بزار بيشتر برات درباره خود ميكرو توضيح بدم . از امكاناتي كه اين ميكرو ها دارن ميشه به تايمر – كانتر- توليد موج pwm – حافظه اي كه اطلاعات رو توي خودش حفظ كنه – سرعت بالاي انجام دستورات- I\O (يا همون ورودي خروجي خدمون) – مبدل انالوگ به ديجيتال adc – مقايسه كننده انالوگ و... . حالا كه با امكاناتش اشنا شدي همينو بهت بگم كه بعضي از ميكرو ها توي امكاناتشون و توي مقدار حافضه با هم فرق دارن براي همين قيمتهاشونم باهم فرق ميكنه
1-خوب حالا كدوم از همه امكاناتش بيشتره
2-نوع mega از همه امكاناتش بيشتر و از نظر مقدار حافضه هم از همه حافضه اش بيشتره بعد نوع 90s و در نهايت نوع tiny
1-اين همه امكانات همه توي يك ايسي پس حتما بايد يك صد هزار تومني قيمتش باشه
2-نه اگه بهت بگم كه بهترين نوع اين ميكرو كه نوع mega هستش رو توي خود بازار ايران با سه هزار تومن مي توني بخري باورت نمي شه
1-چي فط سه هزار تومن اون هم بهترين نوعش اخه چطور ممكنه اين همه امكانات فقط سه هزارتومن اون هم بهترين نوعش!!!!!!!!!!!!!!!!!!!!!!
2-خوب ديگه تكنولوژيه ديگه
1-راستي گفتي يكي از امكاناتش حافضه هستش بگو ببينم اصلا اين حافضه به چه دردي مي خوره؟؟
2-يادت مياد كه بهت گفته بودم كه بايد به اين ميكرو فرمان بديم
1-اره
2-خوب اين فرمان ها رو ما با يك نرم افزار مينويسيم
1-خوب چه ربطي داره به سوال من
2-يكم صبر داشته باش . اين برنامه اي كه مانوشتيم توي اين حالفضه قرار مي گيره
1-بيشتر توضيح بده
2-حافضه ميكرو avr دو تا هستش يكي حافضه بلند مدت كه بهش مي گن eeprom و دومي هستش حافضه كوتاه مدت كه بهش مي گن flash
1-خوب فرقشون باهم چيه
2-فرقشون در اينه كه در حافظه كوتاه مدت با قطع تغذيه (ولتاژ) ميكرو اطلاعات از بين مي ره ولي در حافضه بلند مدت با قطع شدن تغذيه ميكرو اطلاعات از بين نميره
1-اها فهميدم . خوب يادم مياد بهم گفتي كه هر كاري ازش بخايم برامون انجام ميده چطوري بايد بهش بگيم كه فلان كار رو انجام بده ؟
2-خوب بزار به صورت كلي بهت بگم كه گيج نشي . ما براي كارهايي كه از اين ميكرو مي خايم بايد بهش برنامه بديم اين برنامه توسط نرم افزار نوشته مي شه
1-چه نرم افزاري؟
2-نرم افزاراي مختلفي هستش كه باهاش براي ميكرو برنامه مي نويسن برنامه هايي رو كه من مي شناسم bascom –codvision و ... هستش كه من با bascom كار مي كنم. خوب حالا بزار ادامه مطلب رو بگم . برنامه اي رو كه ما مي نويسيم زبان هاي مختلفي داره
1-منظورت انگليسي يا فارسي هستش
2-نه بابا منظورم زبان هاي برنامه نويسي هستش كه عبارتند از baisic-c –اسمبلي
1-يعني بايد همه اي زبان هاي برنامه نويسي رو بلد باشيم
2-نه بابا ناراحت نباش من خودم وقتي كه مي خاستم ميكروكنترلر ياد بگيرم هيچ كدوم از اين زبان ها رو ياد نداشتم . چقدر سوال مي كني منو از موضوع پرت كردي . هر كدوم از اين زبان ها در يك نرم افزار خاص خودش نوشته مي شه مثلا اگه دوست داشتي برنامه رو با زبان بيسيك بنويسي بايد با نرم افزار baisic كار كني اگه خاستي با زبان c برنامه بنويسي بايد با نرم افزار codvision برنامه بنويسي . خوب حالا وقتي كه برنامه رو نوشتي بايد برنامه رو بريزي توي ميكرو . حتما مي خاي بپرسي چطوري برنامه رو ميريزن توي ميكرو خوب بهت مي گم با يك پروگرامر
1-چي پروگرامر ديگه چيه؟
2-نترس پروگرامر وسيله اي هستش كه ميكرو رو روي اون قرار ميدي ويك سر ديگش وصل مي شه به پرينتر كامپيوتر بعد كه به كامپيوتر نصب شد از طريق نرم افزار فرمان ارسال برنامه به داخل ميكرو رو ميدي مثلا در نرم افزار بيسكام كه بعدا مفصلا بهت توضيح ميدم با زدن كليد F4 برنامه ريخته مي شه داخل ميكرو
1-ببين من نفهميدم نقش اين پروگرامر اين وسط چيه
2-پروگرامر واسطه اي هست ميان ميكرو و كامپيوتر . خوب اخه مرد حسابي برنامه اي كه تو براي ميكرو نوشتي بايد بره توي ميكرو يا نه . پس از روي هوا هم كه نمي شه برنامه رو فرستاد پس ميان يك پروگرامر وصل مي كنند به كامپيوتر و ميكرو رو روي اين پروگرامر قرار ميدن بعد از توي كامپيوتر فرمان ارسال برنامه رو مي دن
1-ببين درست فهميدم يا نه پروگرامر تنها نقشي كه داره اينه كه برنامه اي كه ما توي كامپيوتر نوشيتم رو بريزه توي ميكروكنترلر
2-افرين
1-بازم سوال دارم
2-بگو
1-اين امكاناتي رو كه گفتي ميكرو داره چطوري مي تونيم ازش استفاده كنيم
2-اين كار رو موقع برنامه نويسي بهش مي گيم . مثلا مي خايم از كانتر ميكرو ( كانتر به معني شمارنده ) استفاده كنيم . بايد در اول برنامه بنويسيم كه از كانتر مي خا هيم استفاده كنيم . به اين كار در اصتلاح مي گويند config . البته بعدا درباره برناه نويسيش – نحوه كار با نرم افزار – اتصال سخت افزاري ميكرو براي كامل توضيح مي دم
1-يك مثال مي توني بزني كه كاربرد اين ميكرو و امكاناتش چيه؟؟؟
2-اره ولي قول بده كه نترسي كه برنامه شو بنويسم چون كه بعدا درباره كل دستورات برنامه نويسي و نحوه كار با نرم افزار برات توضيح مي دم
1-باشه
2-خوب گفتي يك مثال بزن منم يم مثال خيلي ساده ميزنم . فرض كن كه با دو تا ميكروسوييچ مي خايم يك led رو روشن خاموش كنيم . براي اين كار اول بايد برنامه توسط نرم افزار نوشته بشه كه من در اينجا از زبان بيسيك براي نوشتن برنامه استفاده ميكنم :

کد: انتخاب همه

$regfile = "8515DEF.DAT"
$crystal = 8000000  
Config Porta = Output
Config Pinb.0 = Input
Config Pinb.1 = Input
Config Debounce = 25
Do
Debounce Pinb.0 , 1 , Sett , Sub
Debounce Pinb.0 , 1 , Resett , Sub
Loop
End

Sett:
Set Porta.0
Return
Resett:
Reset Porta.0
Return
1-خوب درباره اينا توضيح بده
2-صبر داشته باش اسياب به نوبت گفتم كه بعدا درباره تك تك دستورات و نحوه كار با نرم افزار برات توضيح مي دم
1-قول مي دي
2-قول مي دم كه تك تك دستورات رو با مثال زباد برات توضيح بدم
1-خوب حالا من چكار كنم
2-فعلا برو نرم افزار بيسكام (bascom) رو نصب كن تا بعد
1-باشه پس فعلا تا بعد


پايان قسمت اول
من به جز آبی نگاهت؛ آسمانی نمی شناسم...
نمایه کاربر
Cyrus
مدیر سابق سایت
مدیر سابق سایت
پست: 525
تاریخ عضویت: سه‌شنبه 17 فروردین 1389, 7:30 pm
محل اقامت: مشهد
تماس:

قسمت دوم اموزشي

پست توسط Cyrus »

1-
سلام چطوري
2-
سلام ممنون تو چطوري
1- قربانت اقا اين avr چي بوده ما نمي دونستيما
2- اره تازه كجاشوديدي بزار يكم راه بيفتي اونوقت مي فهمي چي بوده
1- يادم مي ياد بهم قول داده بودي كه بهم ميكرو ياد بدي
2- حتما به روي چشم . خوب حالا قرار بود از كجا شروع كنيم
1- يك لحظه وايستا اول به چندتا از سوالايي كه برام پيش اومده جواب بده بعد شروع كن به ياد دادن
2- در خدمتم هر چي سوال داري بگو كه منو ياد اون اولايي كه مي خاستم ميكرو ياد بگيرم مي ندازي
1- سوال اول اينكه اصلا ما چرا از ميكروكنترلر استفاده مي كنيم اصلا چه مزيتي داره و كجاها ازش استفاده ميشه؟
2- خوب . همونطور كه از اسمش پيداست ميكرو كنترلر يعني يك كنترل كننده . اين كنترل كننده مي تونه هر پديده اي رو كنترل كنه فقط كافيه كه بهش برنامه بدي ( تكنولوژي ديگه) كنترل دقيق پديده هايي همچون دما. فشار. نور. فاصله. و... . و كاربرد ان در بيشتر زمينه هاي رباتيك . ماشين هاي هوشمند و صنعت هستش
1- مثل plc ؟؟؟
2- بله با اين تفاوت كه ميكرو كنترلر از نظر حجم و قيمت زمين تا اسمان با plc فرق مي كند مثلا قيمت يك plc حدود هفتاد هزارتومنه اون هم با امكانات حداقل و ابعاد زياد ولي ميكروكنترلر با همه امكانات با قيمت 3000 تومان كه ابعاد بسيار كمي هم داره در بازار ايران به وفور پيدا ميشه . البته اين تفاوت هيچ وقت از ارزش plc كم نخواهد كرد زيرا plc فقط در صنعت كاربرد دارد و يك المان صنعتي مي باشد نسبت به ميكروكنترلر بيشتر در صنعت استفاده مي شه.
1- خوب يك سوال ديگه اين ميكروكنترلري كه ميگي سرعت اجراي فرمان هايي كه بايد اجرا كنه چقدر هستش
2- بستگي به فركانس كاري ميكرو داره . معمولا سرعت انجام دستوراللعمل هايي كه انجام مي ده بين 8 تا 16 ميليون دستور العمل در ثانيه هستش
1- چي درست شنديم 8 تا 16 ميليون فرمان اونم فقط توي يك ثانيه ؟؟؟
2- اره درست شنيدي
1- خوب اين 8 تا 16 ميليون فرمان يا به قول خودت دستورالعمل سرعتش به چي بستگي داره
2- مستفيما به فركانش كاري ميكرو بستگي داره
1- اخرين سوال بعد برو سراغ ادامه مطالب اموزشي
2- در خدمتم بگو
1- اين امكاناتي كه گفتي بعضي از ميكرو ها دارن بعضي ها هم ندارن بايد از كجا متوجه بشيم خودت حتما همه رو حفظ كردي
2- ( با خنده) نه عزيز اين ميكرو ها هر كدومشون داراي يك ديتا شيت هستند كه اطلاعاتي درباره ميكرويي كه مي خاي باهاش كار كني بهت ميده . اطلاعاتي از قبيل . ولتاز كاري . فركانس كاري . امكانات ميكرو و...
1- ok حالا برو سر اموزش
2- خواهش مي كنم به روي چشم . بزار يك سر فصل خيلي كلي برات بگم كه چه چيزايي رو بايد بهت بگم 1- اول بايد با نرم افزار bascom اشنا بشي 2- و در اخر بايد دستورات برنامه نويسي رو ياد بگيري

خوب اول مي ريم سر نرم افزار bascom كه خيلي ساده هستش . منم خيلي كلي برات نرم افزارو توضيح مي دم بقيشو خودت يكم سيخ بزني ياد مي گيري
1-
باشه هر طور كه صلاح مي دوني
2-
اول بزار در باره اين نرم افزار بيسكام (bascom) برات بگم . خوب من قبلا بهت گفتم كارهايي رو كه ما از يك ميكرو مي خايم بايد به صورت برنامه بهش بديم . خوب حالا اين برنامه رو بايد با يك نرم افزاري نوشته بشه يا نه
1-
بله
2-
خوب اين نرم افزار همين بود كه بهت گفتم . ما به وسيله اين نرم افزار خواسته هايي كه از يك ميكرو AVR داريم را به صورت برنامه نويسي اجرا مي كنيم. خوب بهتره كه زياد طولش ندم و مستقيم برم سر نرم افزار. اول بزار يك مقدار از منو هاي كاري نرم bascom1.11.7.4 برات توضيح بدم
File : اول روي گزينه file كليل مي كني بعدش روي NEW كليك مي كني . يك صفحه سفيد باز ميشه . اين صفحه محيط برنامه نويسي هستش
منوي EDIT كه چيز مهمي نداره
PROGRAM : با كليك كردن روي اين منو به اولين گزينه مي رسيم كه نوشته COMPILE . حتما با خودت مي گي اين COMPILE به چه دردي مي خوره خوب الان من بهت مي گم . گفتيم كه ما در محيط برنامه نويسي برنامه مان را مي نويسيم خوب ما بالخره بايد بدانيم كه اين برنامه اي كه نوشتيم داراي خطاي نوشتاري هست يا نه خوب پس حالا فهميدي به چه دردي مي خوره .
1-
نگفتي چطوري از گزينه COMPILE‌ استفاده كنيم ؟؟
2-
شما بعد اي كه برنامه رو نوشتي بايد از منوي PROGRAM گزينه COMPILE رو انتخاب كني سپس به طور اتومات برنامه شما چك مي شه اگه خطايي بود زير نرم افزار مي نويسه اگه نبود كه هيچي در ضمن شما اين كار رو مي توني با كليد ميانبر F7 هم انجام بدي
SIMULATE : اين گزينه يك شبيه ساز هستش و برنامه اي رو كه شما نوشتي رو برات شبيه سازي مي كنه مي كنه كه من هيچ ازش خوشم نمي ياد چون داراي خطا هستش و بهتره كم ازش استفاده كني . اين كار رو مي توني با كليد ميانبر F2 انجام بدي
SEND TO CHIP : شما بعد از اين كه برنامه رو توي محيط برنامه نويسي نوشتي و بعدش هم COMPILE كردي نياز داري كه برنامه رو بريزي داخلي ميكرو اين كار رو با كليك روي گزينه SEND TO CHIP بايد انجام بدي كه خودش اتومات برنامه رو ميريزه توي ميكروكنترلر . اين كار رو بازدن كليد F4 هم مي توني انجام بدي


منو TOOLS : اين منو باشه بعدها برات توضيح ميدم چون فعلا باهاش سروكار نداري

منوي OPTIONS: با كليك روي اين منو اولين گزينه اي كه به چشم مي خوره COMPILER هستش كه مهمه بقيه هم باهاش سروكار نداشتم پس فكروتو مشغول بقيش نكن حرفه اي كه شدي شايد بقيش برات كاربرد داشته باشه . خوب حالا اين COMPILER رو كه روش كليك مي كني پنج گزينه ديگه ضاهر ميشه . اولي نوشته CHIP : به معني انتخاب ميكرو هستش شما ميكرويي رو كه مي خاي ازش استفاده كني رو توي ان قسمت انتخاب مي كني . گزينه بعدي OUTPUT هستش كه باهاش كاري نداريم .گزينه بعدي COMMUNCIATION هستش وقتي روي اين گزينه كليك مي كني يك پنجره باز مي شه شما بايد در قسمت FERQUENCY مقدار فركانس كاري ميكروAVR رو بر حسب هرتز اينجا وارد كني
1-
يك سوال از كجا بفهمم كه فركانس كاري ميكرويي كه ازش مي خام استفاده كنم چنده ؟؟
2-
با خواندن ديتا شيت يا همان كاتالوگ خود مكرو كنترلر . گزينه بعدي 12C هستش كه با اونم كاري نداريم . گزينه بعد LCD هستش
1-
حتما بايد اين گزينه رو هم بي خيال شيم
2-
برعكس گزينه LCD گزينه مهمي هستش . تو در اين قسمت بايد مشخص كني كه LCD بايد به كدوم يكي از پايه هاي ميكروكنترلر وصل بشه و اندازه LCD رو هم مي توني توي اين قسمت مشخص كني
1-
خوب بيشتر توضيح بده در باره اين گزينه
2-
اين گزينه باشه وعتي كه LCD رو بهت توضيح دادم اونوقت اين گزينه رو هم بهت ياد ميدم
1-
اين LCD خيلي مشكله ؟؟
2-
نه اتفاقا بسيار اسون و كار كردن باهاش بسيار لذت بخشه. راستي يك گزينه ديگه توي منويTOOLS هستش به نام PROGRAMMER . كه مال اتخاب نوع پروگرامر هستش
اين هم از قسمت هاي مهم نرم افزار BSCOM
اگه سوالي هست بگو
1-
ما چرا بايد از گزينه COMPILE استفاده كنيم
2-
براي اين كه ببينيم برنامه اي رو كه نوشتيم از لحاظ نوشتاري (لغت) مشكلي داره يا نه . اگه بعد از نوشتن برنامه COMPILE نكني نرم افزار اجازه ريخت برنامه روي ميكروكنترلر رو نميده
1-
اها گرفتم چي مي گي
2-
خوب حالا بريم سر اصل مطب كه اشنايي با برنامه نويسي هستش كه مهمترين بخشه پس خوب گوش كن
1-
اي به چشم
2-
پس بزار اول يك مقدمه اي بگم بعد . ببين برنامه اي رو كه شما مي خاي براي ميكروكنترلر توي محيط برنامه نويسي نرم افزار بنويسي به زبان هاي مختلف نوشته مي شه و هر زبان برنامه نويسي نرم افزار مخصوص خودشو داره مثلا براي نوشتن برنامه به زبان بيسيك از نرم افزار BASCOM . براي نوشتن با زبان C از نرم افزار CODVISION استفاده مي كنيم . كه من بيسيك رو دوست دارم وبهت ياد مي دم . چون زبان برنامه نويسي بسيار ساده اي هستش . خوب ديگه وقتشه بريم سر دستورات برنامه نويسي.
دستور $REGFILE : اولين حركتي كه بايد در محيط برنامه نويسي انجام بدي اينه كه ميكروكنترلري رو كه مي خاي ازش استفاده كني رو بايد در محيط برنامه نويسي ذكر كني مثلا تو يك ميكرو كنترلر ATMEGA16 خريدي پس بايد در محيط برنامه نويسي اينطور ميكرو رو معرفي كني

کد: انتخاب همه

$REGFILE = "M16DEF.DAT" براي ATMEGA16
$REGFILE = "8535DEF.DAT" براي AT90S8535
$REGFILE="AT12DEF.DAT" براي ATTINY12
يك راه ديگه هم هست كه ميكرو رو از داخل تنظيمات خود نرم افزار معرفي مي كني
1-
چطوري . يعني ديگه نمي خاد دستور $REGFILE رو بنويسيم
2-
نه لازم نيست . براي اين كار به منوي OPTIONS نرم افزار مراجعه مي كني سپس گزينه COMPILR و بعد گزينه CHIP رو كليك مي كني يك پنجره باز مي شه كه اول صفحه نوشته CHIP . كه جلوش يك كادر هستش كه ميكرو رو اونجا انتخاب مي كني سپس OK مي كني
1-
پس هميشه در برنامه اولين كاري كه بايد بكنم اينه كه ميكروكنترلر رو معرفي كنم طبق روش بالا كه گفتي نه ؟
2-
اره كاملا درسته
دستور $CRYSTAL : دومين گامي كه بعد از معرفي ميكرو بايد انجام بدي اينه كه فركانس كاري ميكرو رو براي نرم افزار مشخص كني كه براي اين كار از دستور $CRYSTAL استفاده ميكني مثلا فرض كن فركانس ميكروي MEGA16 تو 8 مگاهرتز هستش يعني 8000000 هرتز كه با اين دستور فركانس كاري رو معرفي مي كني البته به هرتز :
$CRYSTAL = 8000000
فركانس كاري ميكرو رو هم مي توني از داخل نرم افزار انتخاب كني به اين صورت كه مي روي داخل منوي OPTIONS سپس گزينه COMPILER سپس گزينه COMMUNICATION رو كليك مي كني يك پنجره باز مي شه در داخل اين پنجره يك جايي نوشته FERQUENCY كه جلوش شما بايد فركانس رو انتخاب كني و بعد OK كني
END : در گام سوم پايان هر برنامه اي بايد از دستور END استفاده كني يعني اتمام برنامه
1-
خوب بگو ببينم كه گام چهارم چي هستش
2-
گام چهارمي وجود نداره خيط شدي . در واقع برنامه نويسي يعني قسمت شيرين كار از اينجا شروع ميشه. خوب حالا بهت توضيح ميدم كه براي نوشتن يك برنامه بايد چكار كرد اولين چيزي رو كه بايد بهت ياد بدم متغييرها هستند . همونطور كه از اسمش پيداست يعني قابل تغيير هستش . انواع متغيير ها عبارتند از: 1- BIT 2- BYTE 3- WORD 4- INTEGER 5- LONG 6- SINGLE 7- STRING .
BIT كه يعني 0 و 1
BYTE تشكيل شده از هشت بيت و هر BYTE 0 تا 255 مقدار دارد
WORD تشكيل شده از دو BYTE و هر WORD 0 تا 65535 مقدار دارد
با بقيه متغيير ها هم فعلا كاري نداريم
1-
خوب درست كارش چي هست و كجا كاربرد داره
2-
بزار وقتي كه يكم رفتيم جلوتر كم كم مي فهمي خوب ادامه مطلب رو گوش كن
دستور DIM : DIM به معني معرفي اسم متغيير است كه مي تونه هر اسمي باشه مثلا : A يا B يا ALI يا TEMO حتي اسم خودت فقط براي اينه كه متغيير رو يك نامي بهش بدي كه با بقيه متغييرها قاطي نشه
دستور AS : AS به معني نوع متغيير هستش كه بايد يكي از انواع متغيير هاي BIT يا BYTE يا INTEGER باشه
مثال:

کد: انتخاب همه

DIM A AS BYTE
DIM B AS BIT
DIM ALI AS BYTE
DIM N AS SINGLE
1-
يك مثال مفهومي تر بزن
2-
باشه مثلا در DIM A AS BYTE . به اين معني كه متغييري كه نامش هست A از نوع بايت (BYTE) مي باشد
DIM ALI AS BIT . يعني متغييري كه نامش هست ALI از نوع بيت BIT مي باشد .
1-
حالا فهميدم
2-
بزار بريم جلوتر مثال روز برات روشن ميشه كه اين دستورات كجا كاربرد داره
در ضمن شما گاهي لازم است كه به متغيير مقدار هم بدي كه به ترتيب زير عمل مي كني
مثلا شما يك متغيير داري از نوع بايت
DIM S AS BYTE
كه مي توني از 0 تا 255 بهش مقدار بدي به تريتيب زير
S = 1 يا S = 12 يا S = 0 يا S = 255 يا هر رقمي كه از 0 تا 255 دوست داشتي البته اگه لازم بود
دستور INCR : با نوشتن اين دستو شما مي توانيد يك متغيير را افزايش بدي به مثال زير توجه كن بهتر مي فهمي
DIM B AS BYTE
B=0
INCR B
بزار از خط اول برات توضيح بدم برنامه اي كه ما نوشتم رو ميكرو مياد از خط اول شروع مي كنه به خوندن خط اول يعني ما يك متغيري داريم به نام B و از نوع BYTE
خط دوم به متغيير B مقدار داديم
خط سوم دستور داديم كه متغير B رو يك واحد افزايش بده وقتي كه ميكرو به خط سوم رسيد و اونو خوند اگه متغيير ما بوده 0 الان ميشه 1
1-
كاربردش چيه اين دستور INCR
2-
كاربردش توي شمارنده هستش
دستور DECR : اين دستور برعكس دستور قبل هستش و يك واحد از متغيير ما كم مي كنه
مثال :

کد: انتخاب همه

DIM U AS BYTE
U = 20
DECR U
خط اول يعني ما يك متغييري داريم كه اسمش هست U و از نوع بايت
خط دوم به U مقدار داديم
خط سوم يك واحد از مقدار U كم كرديم
بزار يك مثال كاربردي تر بزنم :

کد: انتخاب همه

$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
DIM K AS BYTE
K = 100
INCR K
DECR K
END
خوب حال خوب گوش كن
خط اول ما اومديم نوع ميكرو مونو مشخص كرديم كه هست مگا16
خط دوم فركانس كاري ميكرو رو مشخص كردم
خط سوم گفتيم كه ما يك معغييري داريم به نام K و از نوع بايت
خط چهارم براي متغيير بايت يك مقدار داديم
خط پنجم دستور داديم كه يك واحد به متغيير K اضافه كن يعني اگه 100 بوده الان مي شه 101
خط ششم دستور داديم كه يك واحد از متغيير K كم كن يعني الان كه هست 101 يك واحد كه كم بشه ميشه 100
خط هفتم دستور پايان برنامه رو داديم
1-
سوال دارم اگه مثلا در مثال بالا دستور INCR و يا DECR رو دو بار زير هم بنويسيم چي مي شه
2-
براي پاسخ به سوالت به يك مثال ديگه توجه كن


$

کد: انتخاب همه

REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
DIM K AS BYTE
K = 100
INCR K
DECR K
DECR K
DECR K
INCR K
END
خوب حال خوب گوش كن
خط اول ما اومديم نوع ميكرو مونو مشخص كرديم كه هست مگا16
خط دوم فركانس كاري ميكرو رو مشخص كردم
خط سوم گفتيم كه ما يك معغييري داريم به نام K و از نوع بايت
خط چهارم براي متغيير بايت يك مقدار داديم
خط پنجم دستور داديم كه يك واحد به متغيير K اضافه كن يعني اگه 100 بوده الان مي شه 101
خط ششم دستور داديم كه يك واحد از متغيير K كم كن يعني الان كه هست 101 يك واحد كه كم بشه ميشه 100
خط هفتم دوباره دستور داديم كه يك واحد از متغيير K كم كن خوب متغيير K كه الان هستش 100 ميشه 99
خط هشتم دوباره دستور داديم كه يك واحد از متغيير K كم كن خوب متغيير K كه 99 بوده ميشه الان 98
1-
فهميدم بزار خط نهم و دهم رو خودم بگم ببينم ياد گرفتم يا نه
خط نهم يعني خط نهم دستور داديم يك واحد به متغيير K اضاف بشه يعني الان كه K هستش 98 بعد از خونده شدن دستور خط نهم ميشه 99 و خط دهم يعني اتمام برنامه
2-
احسنت افرين داري راه ميافتي ها
1-
دستور بعدي چيه
2-
دستور بعدي در مورد LCD هستش . بزار اول در مورد خود LCD برات بگم بعد دستوراتش رو با هم مرور مي كنيم
LCD ها انواع مختلفي دارند اولي گرافيكي – دومي كاركتري كه من با كاركتري كار مي كنم شبيه lcd ماشين حساب هستش كه از نظر ابعاد هم باهم فرق دارن مثلا 16 در 1 – 16 در 2 – 16 در 4 – 40 در 4 و...
1-
خوب مثلا اين شماره ها براي چيه مثلا همين 16 در 2
2-
عدد اول يعني 16 به ما ميگه كه اين lcd ما 16 رديف ( افقي ) داره عدد دوم بعني 2 به ما مي گه اين lcd دو ستون ( عممودي ) داره
1-
حالا گرفتم
2-
اين lcd ها 14 پايه دارند كه ما فقط از 9 پايه ان استفاده مي كنيم كه براي استفاده از ان و وصل ان به ميكروكنترلر به ترتيب زير عمل مي كنيم
پايه اول vss نام دارد كه به زمين وصل ميشه
پايه دوم vdd هستش كه به ولتاژ 5 ولت وصل ميشه
پايه سوم vee هستش كه به زمين وصل ميشه
پايه چهارم rs هستش كه به ميكرو وصل مي شه . بعدا بهت مي گم به كجاي ميكرو وصل ميشه
پايه پنجم rw هستش كه اونم به زمين وصل ميشه
پايه ششم E هستش كه اونم به ميكرو وصل مي شه
پايه هاي 7 8 9 10 كه هيچي به جايي وصل نميشن
پايه 11 DB4 اسمش هست اونم به ميكرو وصل ميشه
پايه 12 DB5 اسمش هست اونم به ميكرو وصل ميشه
پايه 13 DB6 اسمش هست اونم به ميكرو وصل ميشه
پايه 14 DB7 اسمش هست اونم به ميكرو وصل ميشه

1-
يك سوال بعضي از پايه هاي بالا رو كه معرفي كردي گفتي وصل ميشه به LCD ولي نگفتي به كدوم پايه LCD بايد وصل بشه
2-
بله نگفتم ولي اگر يكم صبر كني بهت ميگم . اگه يادت باشه وقتي كه داشتم نرم افزار BASCOM رو برات توضيح مي دادم گفتم كه توي منوي OPTINS بعد COMPILER يك گزينه هست به نام LCD شما اونجا مشخص مي كني كه پايه هاي ميكروكنترلر به كدوم پايه LCD وصل بشه كه بايد به ترتيب زير عمل كني بعد از اين كه وارد گزينه LCD توي نرم افزار شدي يك پنجره باز ميشه كه سمت راست اون شش كادر هستش كه شما بايد اونجا مشخص كني كه LCD به كدوم پايه هاي ميكرو وصل بشه . مي دانيم كه اكثر ميكرو ها داراي چهار PORT هستند البته به غير از خانواده TINY
1-
پورت چيه واز؟؟
2-
به هر هشت پايه ميكرو يك پورت ميگن كه هر پورت باز خودش يك اسم داره مثلا ATMEGA32 داراي چهار پورت هستش به نام هاي A –B –C –D هر كدو از اين پورت ها هشت پايه هستند
1-
از كجا بفهميم كه مثلا پورت A يا پورت C كجاست
2-
باز هم از روي ديتاشيت خود ايسي
1-
خوب ادامه بده
2-
هنگامي كه شما مي خاي LCD رو به ميكرو وصل كني بايد در گزينه LCD يك پورت رو به دلخاه انتخاب كني
1-
فرقي نميكنه كه كدوم پورت باشه
2-
نه هر كدو از پورت ها كه دوست داشته مثلا پورت A يا پورت D
1-
اها خوب ادامه بده
2-
مثلا حال كردي كه LCD رو به پورت C وصل كني براي اين كار در نرم افزار وقتي كه به قسمت LCD رفتي و يك پنجره باز شد در قسمت راست پنجره شش گزينه براي انتخاب وجود داره كه بايد به ترتيب زير عمل كني :
اولين گزينه از بالا نوشته ENABLE كه بايد PORTC.5 رو انتخاب كني
دومين گزينه نوشته RS كه بايد PORTC.4 رو انتخاب كني
سومين گزينه نوشته DB7 كه بايد PORTC.3 رو انتخاب كني
چهارمين گزينه نوشته DB6 كه بايد PORTC.2 رو انتخاب كني
پنجمي گزينه نوشته DB5 كه بايد PORTC.1 رو انتخاب كني
ششمين گزينه نوشته DB4 كه بايد PORTC.0 رو انتخاب كني
حال فهميدي كدوم پايه هاي ميكرو به LCD وصل ميشه
1-
اها پس سخت افزاري هم بايد به ترتيبي كه مثل بالا مشخص كرديم LCD رو به ميكروكنترلر وصل كنيم
2-
كاملا درسته. شما مختاري كه هر PORT كه دوست داشتي رو به ميكرو وصل كني ولي بايد هر پورتي كه توي ذهنت در نظر داري رو توي نرم افزار مثل شكل بالا انتخاب كني
يك نكته ديگه اينكه در قسمت سمت چپ همين پنجره LCD يك گزينه هست به نام LCD TYPE كه شما اونجا اندازه LCD تو مشخص مي كني مثلا يك LCD رفتي خريدي كه اندازش هست 16در 2 توي اين گزينه بايد 16*2 رو انتخاب كني بعدي OK رو بزني . خوب حال بريم سر دستورات LCD :
دستور CLS : اين دستور كل LCD رو پاك و اماده نوشتن مي كنه كه هميشه بايد قبل از دستور نوشت روي LCD اين دستور نوشته بشه
دستور LCD : خوب با اين دستور شما مي توني يك عبارت رو روي LCD نمايش بدي مثلا يك عدد يا يك اسم يا يك كلمه يا يك متغيير . البته قبل اين دستور بايد حتما CLS نوشته بشه اين مثال توجه كن

کد: انتخاب همه

$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
CLS
LCD " ALI "
END
دو خط اول رو كه مي دوني چي هستش .در خط سوم دستور پاك كردن LCD رو با دستور CLS داديم در خط چهارم يعني اينكه روي صفحه LCD بنويس ALI . البته به جاي ALI هر چيز ديگه اي هم مي شه نوشت از قبيل عدد . كلمه جمله
مثل مثال زير

کد: انتخاب همه

$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
CLS
LCD " 999 "
END
مثل مثال قبل
1-
اها فهميدم
2-
يادت مياد كه بهت گفتم نرم افزار بيسكام يك جايي داره به نام شبيه ساز
1-
اره چطور مگه
2-
خوب تو مي توني اونجا اين دستوراتي رو كه امروز يادت دادم رو اونجا شبيه سازي كني
1-
تو كه گفتي از اين شبيه سازش خوشت نمي ياد
2-
اره منظورم اين بود كه توي كار هاي بزرگ نميشه ازش استفاده كرد ولي توي كارهاي كوچيك ميشه ازش استفاده كرد
1-
حالا چي كار مي كنه اين شبيه ساز نرم افزار
2-
برنامه اي رو كه تو نوشتي برات شبيه سازي مي كنه داخلش يك LCD هم داره برو حال كن
1-
چطوري ازش استفاده كنم
2-
بعد از اين كه تو برنامه رو نوشتي بايد برنامتو از نظر نداشتن خطا چك كني
1-
چطوري
2-
با زدن كليد F7 . بعد اگه برنامت اشكالي نداشت كليد F2 رو مي زني و وارد محيط شبيه ساز يا همون SIMULATOR ميشي
1-
اينطوري گيج ميشم يك مثال هم بزن
2-
باشه به روي چشم فرض كن كه ما يكي از برنامه هاي بالا رو نوشتيم مثل برنامه زير:

کد: انتخاب همه

$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
CLS
LCD " ALI "
END
درضمن تنظيمات روهم مثل بالا كه گفتم پايه هاي LCD رو توي نرم افزار انتخاب كن رو مثل بالا انتخاب مي كني
بعد دكمه F7 رو بزن تا برنامه چك بشه
بعد دكمه F2 رو بزن تا وارد محيط شبيه ساز بشي . توي محيط شبيه ساز خيلي دكمه هستش كه من فقط چند تارو كه كاربرد داره برات ميگم
دكمه اوال از بالا سمت چپ شبيه دكمه PLAY ويدو هست كه اسمش هست RUN PROGRAM كه براي اجراي برنامه شبيه ساز هستش
دكمه بعدي كه هچي دكمه بقليش شبييه دكمه استپ ويدو هست كه اسمش هست STOP PROGRAM كه براي توقف شبيه سازي هستش
چند تا دكمه اون طرفتر يك دكمه كه داخلش يك مستطيل ابي رنگي هستش و روش نوشته LCD . اين دكمه رو وقتي كه ميزني يك LCD توشه
خوب ادامه حالا كه وارد محيط شبيه ساز شدي اول براي شبيه سازي مثال بالا دكمه LCD رو انتخاب مي كني بعد دكمه RUN PROGRAM رو ميزني بايد يك ده پانزده ثانيه صبر مي كني تا روي LCD نوشته بشه ALI
پايان قسمت دوم آموزش

(نقل از Iranled)


دوستان خواهشا نظر بدن اگه خوبه بقيه آموزش رو بذارم.
من به جز آبی نگاهت؛ آسمانی نمی شناسم...
نمایه کاربر
vahid
مدير بخش مهندسی برق
مدير بخش مهندسی برق
پست: 409
تاریخ عضویت: سه‌شنبه 31 فروردین 1389, 7:30 pm
محل اقامت: شیروان
تماس:

پست توسط vahid »

سلام سیروس جان

به نظر من هم خوندن ( آموزش AVR از صفر تا بي نهايت) واسه کسایی که می خوان شروع کنن خیلی مفیده چون ساده و روان توضیح داده.

اگه لینک دانلود pdf اش رو هم بذاری بهتره ,هر کس خواست دانلود کنه.
موفق باشی
نمایه کاربر
Cyrus
مدیر سابق سایت
مدیر سابق سایت
پست: 525
تاریخ عضویت: سه‌شنبه 17 فروردین 1389, 7:30 pm
محل اقامت: مشهد
تماس:

پست توسط Cyrus »

سلام وحيد جان
چشم اگه تونستم pdf شو مي ذارم

از اين همه نظر كه بچه ها دادن واقعا شگفت زده شدم، بابا ايول :D

اينم قسمت بعدي

قسمت سوم اموزشي

1-
سلام
2-
سلام خوبي
1-
قربانت
2-
چه خبر اون چيزايي رو كه بهت گفته بودم رو كار كردي مثال حل كردي ازش
1-
اره . كار كردم اونم از همش . اقا يك سوال اگه بخايم مقدار يك متغيير رو روي LCD نمايش بديم بايد چطوري عمل كنيم
2-
اين كه خيلي اسونه با چند تا مثال جواب سوالتو ميدم
مثال 1:
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
DIM A AS BYTE
A = 3
CLS
LCD A
END
1-
خوب تحليلش كن
2-
باشه
خط اول كه معرفي ميكرو هستش
خط دوم فركانس كاري ميكرو هستش
خط سوم ما يك متغيير را كه نامش هست A و را از نوع بايت مي باشد را تعريف كرديم
خط چهارم به متغيير مقدار داديم
خط پنجم با دستور CLS ال سي دي را براي نوشتن جديد پاك كرديم
خط ششم دستور دايم كه مقداري را كه به متغيير A داده ايم روي LCD نمايش داده شود
خط هفتم با دستور END برنامه را به پايان رسانديم.
1- اها يعني به متغيير A هر مقداري كه داده باشيم مثلا 1 يا 0 يا 1001 روي LCD نمايش داده مي شود
2- كاملا درسته واما مثال دوم: اين دفعه مي خايم دو تا متغيير رو يكي پس از ديگري روي LCD نمايش بديم
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
DIM ALI AS BIT
DIM IRAN AS BYTE
ALI = 0
IRAN = 224
CLS
LCD ALI
CLS
LCD IRAN
END
خط اول كه معرفي خود ميكرو
خط دوم معرفي فركانس كاري ميكرو
خط سوم اومديم يك متغيير از نوع BIT كه نامش است ALI رو معرفي كرديم
خط چهارم هم اومديم يك متغيير از نوع بايت كه نامش هست IRAN رو معرفي كرديم
خط پنجم به متغيير BIT كه نامش بود ALI يك مقدار داديم
خط ششم هم مثل خط پنجم
خط هفتم با دستور CLS ال سي دي را براي نوشتن اماده كرديم
خط هشتم به ميكرو دستور داديم كه مقدار متغيير ALI رو روي LCD نمايش بدهد
خط نهم دوباره با دستور CLS ال سي دي رو براي نوشتن دوباره پاك كرديم
خط دهم هم به ميكرو دستور داديم كه مقدار متغيير IRAN رو روي ال سي دي نمايش بده
و در خط اخر نيز با دستور END برنامه رو به اتمام رسانديم
2- مثال اخر :
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
DIM G AS WORD
G = 12
CLS
LCD G
INCR G
CLS
LCD G
END
خط اول و دوم رو كه ديگه تكراري شده كه بخام توضيح بدم
خط سوم هم تغريبا مثل قبل اومديم يك متغيير كه نامش هست G و از نوع WORD مي باشد را براي ميكرو تعريف كرديم
خط چهارم به متغيير G يك مقدار دلخاه داديم
خط پنجم ال سي دي را با دستور CLS براي اماده شدن پاك كرديم
خط ششم با دستور LCD G مقدار فعلي متغيير G را كه هست 12 را روي LCD نمايش داديم
خط هفتم به متغيير G يك واحد اضافه كرديم يعني شد 13
خط هشتم با دستور CLS ال سي دي را براي نوشتن دوباره پاك كرديم
خط نهم به ميكرو دستور داديم مقدار متغيير G را كه الان به ان يك واحد اضافه شده است يعني شده 13 رو روي ال سي دي نمايش بده
خط دهم هم يعني پايان برنامه
1-
همه اين مثالايي رو كه گفتي توي محيط شبيه سازي قابل اجراست
2-
اره قابل اجراست و ميتوني اونجا همه اين مثال هاي رو مشاهده كني.
خوب حال بريم سر مبحث بعدي
1- دستورات LCD همينا بود
2- نه هنوز چند تا ديگه هست كه به موقش ميگم
1- خوب برو سر مبحث بعدي
2- باشه . ببين گاهي وقتا لازم هستش كه در بين برنامه هايي كه داريم مي نويسيم يك تاخير ايجاد كنيم كه اين تاخير مي تونه يك ثاينه . ده ثانيه . يك ميلي ثانيه . يك ميكرو ثانيه يا هر تايمي كه عشقت بود رو تاخير ايجاد كني
1- همين جا وايستا كه يك سوال دارم . اين تاخير به چه درد مي خوره لطفا فقط يك مثال كاربردي هم بزن
2- ببين مثالا شما مي خاي يك LED رو روشن كني و مي خاي اين LED بعد از مثلا ده ثانيه خاموش بشه خوب حالا ارزش اين دستور بايد حس كني
1- اها فهميدم حالا ادامه بده
2- تاخيراتي را كه ما ميتوانيم ايجاد كنيم بر حسب ثانيه- ميلي ثانيه- ميكرو ثانيه مي باشد
WAIT 1 تاخير براي مدت زمان يك ثانيه
WAITMS 1 تاخير براي مدت زمان يك ميلي ثانيه
WAITUS 1 تاخير براي مدت زمان يك ميكرو ثانيه
متاسفانه اين مدت زمان هاي تاخير زياد هم دقيق نيستند مثلا شما دستور ميدي كه يك ثانيه تاخير داشته باش ميكرو مياد دوازده ثانيه تاخير ايجاد ميكنه
1- خوب پس چاره چيه؟؟
2- براي حل اين مشكل شما بايد از ميلي ثانيه يا ميكرو ثانيه بيشتر استفاده كني مثال اگه مي خاي يك تاخير يك ثايه ايجاد كني بايد بنويسي WAITMS 30 البته اين يك مثال بود كه اگه يكم با اين دستورات ور بري همش دستت مياد
خوب حالا بريم سر مثال ها
مثال اول:
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
DIM A AS BYTE
A = 112
CLS
LCD A
INCR A
WAITMS 500
CLS
LCD A
END
حالا تحليل برنامه
خط اول و دوم كه خودت ميدوني
خط سوم هم كه بايد بدوني
خط چهارم هم باز بايد بدوني ولي مي گم كه دلت نشكنه در خط چهارم ما به متغيير A يك مقدار داديم
خط پنجم با دستور CLS ال سي دي را براي نوشتن و اماده شدن پاك كرديم
خط ششم با دستور LCD A مقدار متغيير A را كه هست 112 روي ال سي دي نمايش داديم
در خط هفتم با دستور INCR A يك واحد به متغيير A اضافه كرديم يعني بود 112 حالا شد 113
در خط هشتم با دستور WAITMS 500 يك تاخير پانصد ميلي ثانيه اي ايجاد كرديم يعني اينكه برنامه فعلا هيمنجا متوقف است و بعد از 500 ميلي ثانيه برنامه از خط بعدي خوانده مي شود
در خط نهم با دستور CLS ال سي دي را پاك كرديم
در خط دهم مقدار جديد متغيير A را كه الان هست 113 روي ال سي دي نمايش داديم
در خط اخر هم با دستور END برنامه رو پايان داديم

کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
DIM S AS BYTE
S = 112
CLS
LCD S
INCR S
WAITMS 500
CLS
WAITMS 100
LCD S
END

از خط اول تا خط هشتم
خط نهم ال سي رو رو پاك كرديم
خط دهم يك تاخير در برنامه با مدت زمان 100 ميلي ثانيه ايجاد كرديم و بعد از اينكه صد ميلي ثانيه گذ شت برنامه از خط بعدي ادامه پيدا مي كنه
خط يازدهم دستور داديم كه مقدار جديد S را كه 113 هستش رو روي ال سي دي نمايش بده
خط اخر هم پايان برنامه
1- اينم توي محيط شبيه ساز قابل اجراست
2- بله حتما. موافقي كه بريم سر مبحث بعدي
1- اره بريم
2- خوب حالا رسيديم به قسمت هاي جون دارتر ميكرو. اگه يادت باشه اون اوايل بهت گفته بودم كه ميكروكنترلر داراي يك سري امكانات هستش مثل تايمر – كانتر - مبدل انالوگ به ديجيتال همچنين گفتم كه يكي از امكاناتش ورودي خروجي يا همون I/O هستش كه كاربرداي فراون داره . مثلا در ساده ترين حالت شما با استفاده از اين امكان مي توني يك LED رو روشن يا خاموش يا هر دو حالت رو انجام بدي
1- I/O چي هست
2- I يعني ورودي O هم يعني خروجي البت هردو از نوع ديجيتال هستند
1- ها فهميدم . ميشه يك مثال ديگه از كاربردش بزني
2- چراكه نه حتما. فرض كن مي خاي با يك ميكرو سوييچ ( يك نوع كليد ) يك موتور رو روشن خاموش كني و حتما بايد با يك عدد ميكروسوييچ يك بار كه ميزني روشن و دفعه بعد كه ميزني خاموش شود
1- ميكرو سوييچ همون شسي هستش ؟
2- اره ميكروسوييچ همون كليد زنگ در خونتون هستش
2- در كل براي استفاده از امكانات ميكروكنترلر بايد از روش پيكره بندي استفاده شود كه بهش مي گن CONFIG يعني شما با اين كار به ميكروكنترلر اعلام مي كني كه مي خاهم از فلان امكانات استفاده كنم . بزار اول يك سري دستورات رو ليست وار معرفي كنم بعد يكي يك اونها رو توضيح بدم
PORT
PIN
SET
RESET
TOGGLE
خوب حالا درباره هر كدوم توضيح ميدم
PORT به معني خروجي هستش هر وقت كه خاستي از ميكرو يك خروجي بگيري از اين دستور بايد استفاده كني . مثلا يك LED رو مي خاي روشن كني يا هر چيز ديگه
PIN به معني ورودي هستش هر وقت كه خاستي يه ميكروكنترلر يك ورودي بدي بايداز اين دستور استفاده كني مثلا مي خاي يك كليد به ورودي وصل كني البته اين دستور PIN و PORT به تنهايي كاربرد ندارن كه در ادامه ميگم كه بايد چيكار كني
SET كه همون يك ديجيتال خودمونه
RESET كه همون صفر ديجيتال خودمونه
TOGGLE يعني عكس حالت فعلي بعني اگر قبلا يك بوده حالا صفر ميشه اگه قبلا صفر بوده حالا يك ميشه
بزار قبل از اينكه توضيحاتمو كامل كنم يك سري اطلاعات درباره پايه هاي ميكرو بدم . ببين هر ميكرو بسته به نوعش يك تعداد پايه داره كه از 8 پايش هست تا 40 پايه كه هر هشت پايه رو يك پورت مي نامند البته ربطي به اون پورتي كه توي دستورات بهت گفتم نداره هر پورت رو كه هشت پايه هستش رو با يك اسم نام گذاري مي كنن كه استاندارد هستش به نام هاي پورت A پورتB پورت C پورت D ميكرو ها حداكثر چهار پورت ورودي خروجي دارن. در ضمن هر كدام از پورت ها مي توانند ورودي يا خروجي باشند كه بستگي به انتخاب برنامه نويس داره علامت پورت ها به ترتيب زير هستش:
A,0
A.1
A.2
A.3
A.4
A.5
A.6
A.7
براي پورت هاي B C و D هم مثل بالا هستش
1-
يك سوال . اگه بخاد حداكثر چهار پورت داشته باشه و هر پورت هم كه هشتا پايه هستش پس در كل ميشه 32 پايه پس چرا بعضي از ميكرو ها 40 پايه هستند
2-
خوب 32 پايه هستش با به عبارتي چهار پورت بقيش مال VCC GND و... هستش
1-
اها فهميدم ادامه بده
2-
خوب گفتيم كه براي استفاده از امكانات ميكرو بايد انها را پيكره بندي كنيم يا به عبارتي CONFIG كنيم . حالا ما براي استفاده از ورودي خروجي ميكروكنترلرI/O هم بايد اونو پيكره بندي كنيم يعني به ميكرو اعلام كينم كه اقا ما ميخاهيم از فلان پايه تو به عنوان ورودي يا مثلا خروجي استفاده كنيم.
اگه خاستيم از يك پورت به عنوان خروجي استفاده كنيم بايد به ترتيب مثال زير عمل كنيم:
مثال : مثلا مي خاهيم از پورت A به عنوان خروجي استفاده كنيم :
CONFIG PORTA = OUTPUT
حالا تحليل اين دستور. CONFIG كه بهت گفتم يهني چي PORTA يعني مي خواهيم از پورت A به عنوان خروجي استفاده كنيم به جاي A از هر پورت دلخاه ديگه هم مي تونيم استفاده كنيم . علا مت مساوي = رو كه بايد هميشه بزاري . عبارت OUTPUT هم يعني خروجي
اگه خاستيم از يك پورت به عنوان ورودي استفاده كنيم بايد به ترتيب مثال زير عمل كنيم :
مثال : مثلا مي خاهيم از پورت B به عنوان وردي استفاده كنيم
CONFIG PINB.0 = INPUT
حالا گوش فرا بده به تحليل اين دستور. CONFIG كه گفتم قبلا. خوب PINB.0 يعني ما مي خاهيم از پايه B.0 به عنوان ورودي استفاده كنيم . = هم كه هيچي هميشه بايد بزاري. كلمه INPUT را وقتي ميزاري كه خاسته باشي از يك پايه به عنوان ورودي استفاده كني
3-
خوب بزار يك مرور بكينم . اگر خاستيم كه از يك پايه به عنوان ورودي استفاده كنيم از دستور
CONFIG PINC.0 = INPUT استفاده كنيم كه ما دراين مثال از پورت C.0 به عنوان ورودي استفاده كرديم نكته اينجاست كه هر وقت كه خاستي از يك پايه به عنوان ورودي استفاده كني بايد شماره پايه رو هم مثل همين مثال بالا كه براي زدم استفاده كني به جاي PINB.0 هم مي توني مثال بزاري PINB.1 يا PINB.3 يا بزاري PINB.7 كه بستگي داره به انتخاب تو
اگر خاستيم كه از يك پورت به عنوان خروجي استفاده كنيم از دستور زير استفاده مي كنيم بايد از دستور زير استفده كني
CONFIG PORT C = INPUT ما در اين مثال به ميكرو فهمانديم مي خاهيم از پورت C تو به عنوان خروجي استفاده كنيم
1-
شما ره پايه رو نبايد بنويسيم
2-
نه نبايد بنويسيم بعدا ما بين برنامه مشخص مي كنيم كه كدام پايه بايد خروجي بدهد
بزار ادمه درس رو با يك مثال برات بگم فرض كن ما ميخايم از پايه D.4 ميكرو كنترلر يك خروجي بگيرم و يك LED رو روشن كنيم براي اين كار از برنامه زير استفاده مي كنيم:
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
CONFIG PORTD = OUTPUT
SET PORTD.4
END
خط اول ودوم كه هيچ
خط سوم ما اومديم به ميكرو اعلام كرديم كه مي خاهيم از پورت C تو به عنوان يك خروجي استفاده كنيم
خط چهارم نوشتيم SET PORTD.4 ما بانوشتن كلمه SET اين منظور را رسانديم كه مي خاهيم پورت D.4 يك شود . و همچنين جلوي SET نام پايه اي رو كه بايد يك شود يا به عبارتي ديگر SET شود رو هم اعلام كرديم
در خط اخر هم با دستور END برنامه را به پايان رسانديم
1-
يعني اگه يك LED رو به پايه D.4 ميكروكنترلر وصل ميكرديم LED روشن مي شد
2-
اره روشن مي شد
مثال دوم: مي خاهيم همان پورت D.4 را يك بار كه روشن شد بعد از دو ثانيه خاموش شود
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
CONFIG PORTD = OUTPUT
SET PORTD.4
WAITMS 2000
RESET PORTD.4
END
خط اول دوم كه هيچ
خط سوم هم اومديم تعرف كرديم كه از پايه D.4 مي خاهيم به عنوان خروجي استفاده كنيم
خط چهارم با دستور SET PORTD.4 پايه D.4 رو يك كرديم
خط پنجم با دستور WAITMS 2000 اين را رسانديم كه مي خاهيم 2000 ميلي ثانه به عبارتي دو ثانيه در همين جا تاخير ايجاد شود در طول اين دو ثانيه PORTD.4 در همان حالت يك باقي مي ماند. بعد از دو ثانيه برنامه از خط بعد ادامه پيدا مي كند
خط ششم با دستور RESET PORTD.4 به ميكرو دستور داديم كه همان پايه D.4 را ريست كن يعني صفر كن
خط اخر هم كه يعني پايان برنامه. در اين مثال اگر كه ما يك LED به پايه D.4 وصل مي كرديم LED براي بار اول با دستور SET روشن مي شد و اين روشن بودن با دستور WAITMS 2000 دو ثانيه به طول مي انجاميد و بعد از دو ثانيه با دستور RESET PORTD.4 LED خاموش مي شد چون پايه را صفر كرديم.
مثال سوم : فرض كن مي خا هيم دو تا پايه رو هم زمان يك كنيم و بعد از دو ثانيه فقط يكي از انها را صفر كنيم .
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
CONFIG PORTC = OUTPUT
SET PORTC.2
SET PORTC.7
WAITMS 2000
RESET PORTC.7
END
خط اول و دوم كه هيچ
خط سوم هم كه بايد حتما ياد داشته باشي
خط چهارم اومديم فرمان داديم كه پايه C.2 را يك كن
خط پنجم هم اومديم فرمان داديم كه پايه C.7 رو يك كن
خط ششم دو ثانيه تاخير در برنامه ايجاد كرديم كه در طول اين مدت پايه هاي C.2 و C.7 در حالت يك است
خط هفتم با دستور RESET PORTC.7 فقط پايه C.7 رو صفر كرديم. ولي پايه C.2 در همان حالت يك باقي مانده است
خط اخر هم كه هيچ
مثال سوم : اين مثال رو ببينم كه مي توني تحليل كني
کد:
$REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000
CONFIG PORTA = OUTPUT
CONFIG PORTC = OUTPUT
SET PORTA.1
SET PORT C.0
حالا خودت تحليلش كن
1-
خط اول و دوم رو كه بلدم
خط سوم اومديم به ميكرو اعلام كرديم كه مي خاهيم از پوت A به عنوان خروجي استفاده كينم
خط چهارم هم مثل خط سوم
خط ششم دستور يك شدن پايه A.1 رو صادر كرديم
خط هفتم هم دستور يك شدن پايه C.0 رو صادر كرديم
خوب بود
2-
عالي بود
1-
حال ورودي رو برام توضيح بده
2-
ورودي باشه براي وقتي كه چندتا از دستورات شرط و چندتا دستور ديگه رو گفتم برات ميگم
1-
خوب حالا اين صفر و يك شدن پايه ها رو ميشه تو شبيه ساز نرم افزار تماشا كرد
2-
متاسفانه نه نميشه
1-
پس بايد چكار كنم
2-
دو راه داري اول اينكه بري يك ميكرو بخري و خودت امتحان كني دوم اينكه با استفاده از نرم افزار پروتوس اونو شبيه سازي كني .
1-
خوب اين پروتوس رو برام توضيح بده
2-
اينو ديگه خودت برو ياد بگير توي انجمن هاي برق و الكترونيك ايراني كه تعدادشون هم زياده به خوبي توضيح دادن
1-
باشه حالا چي رو مي خاي برام توضيح بدي
2-
فعلا تا همين جاشو داشته باش تا بعدا ادامشو برات توضيح بدم
پايان قسمت سوم
من به جز آبی نگاهت؛ آسمانی نمی شناسم...
نمایه کاربر
treegp
کاربر خیلی فعال
کاربر خیلی فعال
پست: 214
تاریخ عضویت: جمعه 16 مهر 1389, 8:30 pm
محل اقامت: teh
تماس:

پست توسط treegp »

مرسی خیلی جالب و طولانی و خواب آور بود :!: :wink:


سیروس جان نرم افزار bascom 1.11.9 full edition رو اگه جایی دیدی بذار چون همه ی این آموزش ها زمانی ممکن هست که یه bascom توی سیستمت نصب باشه

من خیلی گشتم تو اینترنت این ورژن آخریش رو نتونستم پیدا کنم

خواهشا اگه برات مقدوره یه لینک دانلودی چیزی بذار تا همه بتونیم از این تاپیک آموزندت استفاده ی عملی بکنیم
عاشق بهترین ها نباش…

بهترین باش…

تا بهترین ها عاشق تو باشند ...
ارسال پست

چه کسی حاضر است؟

کاربران حاضر در این انجمن: کاربر جدیدی وجود ندارد. و 1 مهمان