اطلاعیه های مهم سایت
تبريک مي گوييم به
stravich

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

در این بخش به بررسی پردازنده های AVRپرداخته می شود .

مديران انجمن: Modir, مدیر سایت

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

پستتوسط rsadeghi » 28 تير ماه 1390, 01:09

سلام  . براي اونايي كه تا حالا با ميكرو كار نكردن كمي مشكله كه بعضي از مفاهيم رو ياد بگيرن براي همين من اشنايي مقدماتي با 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-   باشه پس فعلا تا بعد


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

منبع :eca.ir
امضا با خودمان می گوییم، عادت می کنیم و با صراحت زیادی، این جمله را تکرار می کنیم.
آن چیزی که هیچ کس نمی پرسد، این است که: "به چه قیمتی عادت می کنیم؟"  (ژوزه ساراماگو)




((

عضويت  / ورود

عضويت  / ورود
)) ((

عضويت  / ورود
)) ((

عضويت  / ورود
))




عضويت  / ورود
     



نماد کاربر
rsadeghi
مدیر انجمن
مدیر انجمن
 
پست ها : 553
سن: 27
حالت من: خسته
تاريخ عضويت: 11 دي ماه 1389, 01:00
محل سکونت: فولادشهر-اصفهان
تشکر کرده: 105 بار
تشکر شده: 209 بار
امتياز: 11649
اعتبار: 11
کاربر معمولی
دادن اعتبار مثبت rsadeghiدادن اعتبار منفی rsadeghi

پستتوسط rsadeghi » 29 تير ماه 1390, 11:20

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

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
براي امروزديگه بسه باشه بقيش براي يك فرصت ديگه فعلا باي

پايان قسمت دوم
امضا با خودمان می گوییم، عادت می کنیم و با صراحت زیادی، این جمله را تکرار می کنیم.
آن چیزی که هیچ کس نمی پرسد، این است که: "به چه قیمتی عادت می کنیم؟"  (ژوزه ساراماگو)




((

عضويت  / ورود

عضويت  / ورود
)) ((

عضويت  / ورود
)) ((

عضويت  / ورود
))




عضويت  / ورود
     



نماد کاربر
rsadeghi
مدیر انجمن
مدیر انجمن
 
پست ها : 553
سن: 27
حالت من: خسته
تاريخ عضويت: 11 دي ماه 1389, 01:00
محل سکونت: فولادشهر-اصفهان
تشکر کرده: 105 بار
تشکر شده: 209 بار
امتياز: 11649
اعتبار: 11
کاربر معمولی
دادن اعتبار مثبت rsadeghiدادن اعتبار منفی rsadeghi

پستتوسط rsadeghi » 29 تير ماه 1390, 01:36

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

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-   فعلا تا همين جاشو داشته باش تا بعدا ادامشو برات توضيح بدم
پايان قسمت سوم



تمرينات قسمت سوم:
بنا به درخاست يكي از دوستان از اين به بعد در پايان هر قسمت تمرينات مربوط به همان قسمت را مي زارم و در قسمت بعدي جواب انها را مي نويسم . دوستان سعي كنند خودشان تمرينات را جواب دهد و در قسمت بعدي پاسخ ان را ببينند تا اشكالات بر طرف شود.
1-   برنامه اي بنويسيد كه روي LCD  نوشته شود MICRO
2-   برنامه اي بنويسيد كه ابتدا روي LCD نوشته شود AVR . و بعد از  30 ميلي ثانيه تاخير LCD پاك شود و دوباره روي ان نوشته شود ALI
3-   برنامه اي بنويسيد كه در ان پايه  A.0 ميكرو SET شود ( منظور PORTA.0 ميباشد)
4-   برنامه اي بنويسيد كه در ان پايه A.1 يك بار SET شود و بعد از 50 ميلي ثانيه تاخير RESET شود
5-   برنامه اي بنويسيد كه در ان پايه هاي B.5  و D.7 ميكرو يك بار هم زمان باهم SET شوند و بعد از 60 ميلي ثانيه تاخير RESET شوند.
درضمن دوستان توجه داشته باشند اگر در جايي به اشكال برخورديد حتما سوال كنيد . يك نكته اينكه SET و RESET وورودي خروجي هاي ميكرو رو نميشه تويه محيط شبيه ساز تماشا كرد و براي شبيه سازي بهتره از نرم افزار PROTEUS  استفاده كنيد
امضا با خودمان می گوییم، عادت می کنیم و با صراحت زیادی، این جمله را تکرار می کنیم.
آن چیزی که هیچ کس نمی پرسد، این است که: "به چه قیمتی عادت می کنیم؟"  (ژوزه ساراماگو)




((

عضويت  / ورود

عضويت  / ورود
)) ((

عضويت  / ورود
)) ((

عضويت  / ورود
))




عضويت  / ورود
     



نماد کاربر
rsadeghi
مدیر انجمن
مدیر انجمن
 
پست ها : 553
سن: 27
حالت من: خسته
تاريخ عضويت: 11 دي ماه 1389, 01:00
محل سکونت: فولادشهر-اصفهان
تشکر کرده: 105 بار
تشکر شده: 209 بار
امتياز: 11649
اعتبار: 11
کاربر معمولی
دادن اعتبار مثبت rsadeghiدادن اعتبار منفی rsadeghi

پستتوسط rsadeghi » 31 تير ماه 1390, 14:11

قسمت چهارم :
1-   سلام خوبي
2-   سلام قربانت تو چطوري چكار مي كني با اين ميكروكنترلر
1-   منم خوبم . با اين ميكروكنترلر داريم حال مي كنيم والا قبلا براي طراحي يك مدار ساده ديجيتال مجبور بودم چند روز روش كار كنم ولي حالا ديگه نه . بعدشم يك چيزو يادت رفته بود بگي
2-   چي؟؟
1-   از TOGGLE  مثال نزدي
2-   باشه توي اين درسي رو كه امروز بهت ميدم از اين دستور هم استفاده مي كنم كه ياد بگيري . خوب شروع كنيم
1-   اره
2-   خوب قرار بود از كجا شروع كنيم
1-   قرار بود ورودي رو بهم بگي . گفته بود قبل از اينكه ورودي رو درس بدي بايد چند تا دستور شرط  و ... رو برام بگي
2-   اره اين جلسه قبل از اينكه ورودي يا همون PIN  رو بهت بگم بايد . دستور حلقه – دستور پرش رو اول بگم بعد بريم  سر ورودي . چون كه اين طوري بهتره
1-   حرفي نيست بريم
2-   خوب اول بريم سراغ حلقه . ببين به يك چيز توي برنامه هاي قبلي توجه كرده بودي
1-   نه چي ؟؟
2-   ما ميومديم يك برنامه رو مي نوشتيم اين برنامه هم يك كاري رو برامون انجام ميداد و در نهايت  برناه به END مي رسيد و برنامه كلا تمام مي شد . و براي شروع مجدد مجبور بوديم برنامه رو دوباره اجرا كنيم . خوب حالا فرض كن ما يك برنامه اي رو ميخايم كه مثلا PORTB.0 رو هر 40 ميلي ثانيه يك بار روشن و خاموش كنه و اين كار ادامه داشته باشه يعني اينكه 40 ميلي ثانيه روشن باشه و 40 ميلي ثانيه خاموش باشه . براي اين كار بايد از دستور استفاده كنيم كه برنامه هيچ وقت به پايان نرسه  كه اين دستور اسمش هست حلقه
1-   خوب حالا اين حلقه چكار ميكنه
2-   اين حلقه باعث ميشه برنامه توي اين قسمت دور بزنه و هيچ وقت به END نرسه يعني برنامه تمام نشه مگر اينكه ما يك شرط بزاريم كه از حلقه بيرون بزاريم
1-   چه شرطي
2-   اونو تو قسمت دستور شرط برات مي گم
2- حلقله DO –LOOP
براي گذاشتن حلقه DO رو  اول مي نويسيم و در خط هاي بعدي برنامه اي كه بايد در حلقه باشد رو مي نويسيم و در نهايت LOOP  رو مي نويسيم
1-   من كه چيزي نفهميدم . يك مثال بزن
همون مثالي رو كه PORTB.0 بايد SET و RESET بشه رو برات مي نويسم . از اين به بعد هم ديگه $REGFILE = "M16DEF.DAT"
$CRYSTAL = 8000000  رو نمي نويسم خودت اونا رو نوشته فرض كن
خوب حالا برنامه اي كه گفتم:
CONFIG  PORTA  =  OUTPUT
DO
TOGGLE  PORTA.0
WAITMS 40
LOOP
END
خوب حالا تحليل برنامه :
اين برنامه هيچ گاه به END نمي رسد تا برنامه تمام شود
خط اول رو كه PORTA رو به عنوان خروجي پيكره بندي كرديم
خط دوم  DO   را گذاشتيم
خط سوم  با نوشتن TOGGLE  PORTA.0  اين را رسانديم كه PORTA.0 در هر حالتي از حالت ها صفر يا يك كه بوده بايد وضعيتش معكوس شود يعني اگه صفر بوده حالا بايد يك شود . اگر يك بوده حالا بايد صفر شود
خط چهارم هم  اخر حلقه را گذاشتيم
خط پنجم هم نوشتيم END البته برنامه هيچ گاه به خاطر اين كه ما يك حلقه گذاشتيم به END نمي رسد
توجه كن كه ما برنامه اي رو كه مي خاستيم رو داخل اين حلقه گذاشتيم  و برنامه داخل اين حلقه دور ميزند . بار اول برنامه TOGGLE  PORTA.0  رو مي خونه و پايه A.0 رو SET   يا همون يك مي كنه بعد 40 ميلي ثانيه صبر مي كنه و برنامه از خط بعد شروع مي شه خط بعد LOOP هستش كه ميكرو با خوندن LOOP دوباره بر ميگرده  برنامه رو از خط پاييني DO شروع به خوندن مي كنه يعني دوباره همون TOGGLE  PORTA.0 رو مي خونه  اين بار چون پايه A.0 در حالت SET يا همون يك بوده  اين بار ياد بشه عكس همين حالت بشه يعني RESET يا صفر ميشه بعد 40 ميلي ثانيه صبر ميكنه و ميكرو برنامه رو از خط بعدي ميخونه بعني دستور LOOP رو مي خونه . با  خوانده شدن دستور LOOP  ميكرو برنامه رو از خط زيري DO شروع به خوندن مي كنه يعني دوباره TOGGLE  PORTA.0 رو مي خونه اين بار چون در حالت قبلي پايه A.0  در حالت صفر بوده اين بار يك مي شه  برنامه به همين منوال ادامه داره و ادامه پيدا مي كنه و هيچ وقت به پايان نمي رسه
1-   گرفتم چي مي گي ولي اگه ممكنه يك مثال ديگه هم بزن
2-   باشه
مثال دوم:
CONFIG  PORTB  =  OUTPUT
DO
SET  PORTB.5
WAITMS  60
RESET  PORTB.5
WAITMS  60
LOOP
END
خوب حالا بريم سر تحليل برنامه:
برنامه از خط اول شروع  ميشه و ميكرو خط اول رو مي خونه
خط دوم كه DO  هستش كه ابتداي حلقه ما هستش
خط سوم  SET  PORTB.5   يعني پايه B.5  يك بشه
خط چهارم يك تاخير در برنامه با مدت زمان  60 ميلي ثانيه گذاشتم
خط  پنجم  RESET  PORTB.5  يعني پايه B.5 صفر بشه
خط ششم  با گذاشتن دستور LOOP انتهاي حلقه رو مشخص كرديم
خط هفتم هم نوشتيم END كه برنامه به خاط داشتن حلقه هيچ گاه به END نمي رسد
برنامه به اين صورت است كه از خط اول شروع به خونده شدن توسط ميكرو ميشه و پيكره بندي رو مي خونه . بعد ميوفته توي حلقه و اولين عبارتي رو كه مي خونه SET  PORTB.5  هستش كه در اين زمان ميكرو پايه B.5 رو يك مي كنه بعد توسط دستور WAITMS  60   حدود 60 ميلي ثانيه تاخير ايچاد مي كنه بعد از سپري شدن اين مدت زمان ميكرو برنامه رو از خط بعدي شروع به خوندن مي كنه يعني RESET  PORTB.5  كه ميكرو توسط اين دستور پايه B.5 رو صفر مي كنه بعد توسط دستور WAITMS  60  ميكرو 60 ميلي ثانيه در اجراي برنامه دوباره تاخير ايجاد مي كنه بعد از سپري شدن اين مدت زمان ميكرو برنامه رو از خط بعدي يعني LOOP  شروع به خوندن مي كنه كه با خوانده شدن LOOP برنامه مي پره از خط بعدي DO يعني SET  PORTA.0  شروع ميشه و دوباره پايه B.5 يك ميشه و دوباره 60 ميلي ثانيه تاخير ايجاد ميشه دو باره پايه B.5 صفر ميشه و 60  ميلي ثانيه تاخير ايجاد ميشه بعد دوباره  به LOOP مي رسه و دوباره ميكرو ميپره و برنامه رو از خط بعدي DO شروع به خوندن ميكنه و الي بي نهايت اين برنامه تكرار مي شه
1-   عالي بود كامل گرفتم
2-   خدارو شكر. جهنم ضرر يك مثال ديگه هم ميزنم كه LCD  هم توش باشه
DO
CLS
LCD "AHMAD"
WAITMS  50
CLS
LCD "MICRO"
WAITMS 60
LOOP
END
خوب حالا نوبت مي رسه به تحليل برنامه :
برنامه از DO شروع ميشه DO يعني ابتداي حلقه . در خط بعد با دستور CLS  ال سي دي پاك مي شه و اماده نوشتن . در خط بعدي به ميكرو دستور مي ديم كه عبارت AHMAD رو روي LCD نمايش بده . در خط بعد فرمان ايجاد تاخير به مدت زمان 50 ميلي ثانيه را مي دهيم پس از سپري شدن اين مدت زمان ميكرو برنامه را از خط بعد مي خواند . خط بعدي با دستور CLS صفحه LCD را پاك كرديم تا براي نوشتن دوباره اماده شود. در خط بعد فرمان داديم كه عبارت MICRO روي صفحه LCD نمايش داده شود. در خط بعد دستور داديم كه 60 ميلي ثانيه تاخير ايجاد شود كه پس از سپري شدن اين تاخير برنامه از خط بعد اجرا مي شود. به  خط بعدي يعني LOOP  كه مي رسيم ميكرو تا اينكه اين دستور LOOP رو مي بينه بي درنگ مي پره ميره برنامه رو از خط بعدي DO شروع مي كنه به اجرا كردن . بعني از خط CLS و همينطور ادامه مي ده
3-   رو حساب رفاقت مي خام يك مثال ديگه هم بزنم كه حالشو ببري
DIM  G AS  BYTE
G  =  0
DO
INCR  G
CLS
LCD  G
WAITMS  50
LOOP
END
خط اول رو كه خودت مي دوني يعني اينكه ما يك متغيير داريم كه اسمش هست G و از نوع بايت
خط دوم به متغيير G مقدار داديم
خط سوم ابتداي حلقه را مشخص كرديم
خط چهارم  يك واحد به متغيير G اضافه كرديم
خط پنجم با دستور CLS ال سي دي را براي نوشتن پاك كرديم
خط ششم دستور داديم كه مقدار متغيير G روي LCD نمايش داده شود
خط هفتم يك تاخير 50 ميلي ثانيه اي در برنامه ايجاد كرديم
خط هشتم با دستور LOOP  انتهاي حلقه را مشخص كرديم
خوب حالا تحليل اصلي رو گوش كن :
ميكرو مياد برنامه رو از خط اول شروع مي كنه به خوندن و مي فهممه كه يك متغيير از نوع بايت ايجاد شده . بعد خط دوم رو مي خونه كه نوشته مقدار اين متغيير هست صفر . خط سوم ابتداي حلقه مشخص شده است . خط چهارم با دستور INCR  G  يك واحد به متغيير G اضافه كرديم يعني اگه بوده صفر حالا كه يك واحد بهش اضاف شده ميشه 1 . خط بعدي با دستور CLS ال سي دي را پاك كرديم تا براي نوشتن حاضر شود . خط بعدي دستور داديم كه مقدار  متغيير G  كه الان هست 1 روي LCD  نمايش داده شود . خط بعدي با دستور WAITMS 50  دستور تاخير به مدت 50 ميلي ثانيه را صادر كرديم . خط بعدي هست LOOP كه ميكرو وقتي كه به اين دستور مي رسه مي پره ميره و برنامه رو از خط زيري DO شروع مي كنه به خوندن توجه كن كه از خط بعدي DO شروع مي كنه به خوندن نه اينكه از بالا . داريم به جاي جالبش مي رسيم . خوب حالا بايد برنامه از خط بعدي DO خونده بشه خط بعد از DO نوشته چي نوشته INCR  G  خوب يعني اينكه يك واحد به متغيير G اضافه بشه خوب حالا اخرين مقدار متغيير G بوده 1 ( به دليل اينكه دفعه قبل با دستور INCR  G يك واحد به ان اضاف كرده بوديم ) و حالا كه دوباره دستور داديم كه يك واحد ديگر به متغيير G اضافه بشه اينبار ميشه 2 . خط بعدي با دستور CLS ال سي دي را براي نوشتم دوباره پاك مي كنيم . در خط بعدي با دستور LCD  G   مقدار متغيير G  را روي ال سي دي نمايش مي دهيم يعني مقدار جديد كه همان 2 است. خط بعدي دوباره يك تاخير ايجاد مي شود و پس از سپري شدن اين مدت زمان برنامه از خط بعدي اجرا مي شود . خط بعدي هست LOOP باز هم مثل دفعه قبل برنامه از خط زيري DO  شروع مي شه وروز از نو روزي از نوع همينطور به متغيير G يكسره اضافه مي شه تا جايي كه متغيير G برسه به 255 وقتي كه به اين مقدار رسيد متغيير G پر مي شود ( چون از نوع بايت است و با 255 پر مي شود و با 256 سرريز مي شود) . وقتي كه اين 255 برسه به 256   متغيير سر ريز ميشه و دوباره از صفر شروع به شمردن مي كنه . ديگه از اين ساده تر نمي شد توضيح داد.
1-   اقا يك سوال
2-   بپرس
1-   توي مثالات به يك نكته توجه كردي
2-   نه چي
1- مثال توي قسمتي كه مي خاستي توي يك حلقه مثال LCD رو بزني نوشتي LCD  "ALI"  ولي وقتي كه خاستي مقدار يك متغيير رو نشون بدي اين نوشتي LCD G كه مقدار متغيير G رو نشون بده حالا سوال اينجاست چرا ALI رو داخل "   "  گذاشتي ولي متغيير G رو داخل "  " نزاشتي
2- سوال خوبي بود . ببين هر وقت كه خاستي يك متغيير رو نشون بدي لازم نيست كه اونو داخل "  " قرار بدي يعني نبايد داخل "  "  قرار بدي ولي هر وقت كه خاستي يك عبارت رو روي ال سي دي نمايش بدي بايد اونو داخل "   " قرار بدي
1- فهميدم . اين حلقه تموم شد
2- اره
1- پس اگه خاستيم از داخل اين حلقه بيرون بيايم بايد چكار كنيم
2- اينو برات مي گم وقتي كه دستورات شرط رو گفتم
خوب حالا رسيديم به دستورات شرط
1-   چي هست اين دستور شرط
2-   گاهي لازم است كه اگر يك حالتي كه براي ما مد نظر است اتفاق بيفته دستور شرط يك كاري رو مثلا يك پايه رو برامون يك مي كنه
1-   ببين نفهميدم دوباره بگو
2-   باشه برميگرديم سر دو تامثال قبل كه يك متغيير داخل يك حلقه بود و هر دفعه كه دو ر مي زد يك واحد به متغيير اضافه مي شد . خوب اگه اين كار ادامه پيدا كنه اين متغيير هي پرو ميشه با 255 و دوباره از صفر شروع مي كنه دوباره پر مي شه با 255   و دوباره از صفر شروع مي كنه به اضافه شدن حالا ما حال كرديم كه اگر اين متغيير G به مثلا 22   رسيد يك كاري رو برامون انجام بده حالا هر كاري رو كه حال كرديم رو بره برامون انجام بده مثلا يك پورت رو بياد  برامونSET كنه يا اينكه بره رويه LCD  يك چيزي بنويسه . كه ما بايد از دستور شرط استفاده كنيم . يك مثال ساده ديگه كه مي تونم برات بزنم اينه كه مثلا باباي تو بهت مي گه كه اگر اخر سال معدل تو 20  شد برات دوچرخه مي خرم . خوب بابات براي تو يك شرط گذاشته كه اگر اين شرط كه 20 شدن معدل تو است اجرا بشه . دستور شرط كه خريدن دوچرخه توسط بابات هست اجرا ميشه . حالا فهميدي
1-   بابا ما از كوچيكي داريم 20 مي گيرم بابامون برامون هيچي نگرفته . ولي مطلبو  خوب گرفتم
2-   عاليه. خوب بريم سر دستور شرط
IF   همان دستور شرط است
THEN  يعني اگر شرط اجرا شود اين THEN  مياد براي ما يك كاري رو انجام مي ده
1-   مثال برن
2-   همون مثال دوچرخه رو مي زنم . خوب باباي فلاني بهش گفته كه اگر معدلش 20 بشه يعني شرط IF . .. براش يك دچرخه مي خره يعني يك كاري رو در قبال شرطي رو كه گذاشته براي پسرش انجام مي ده يعني THEN
1-   اها گرفتم.  از مثال هاي برنامه هم برام بگو
2-   باشه .  بريم سر اون مثالي كه متغيير G رو توي يك حلقه قرار داده بوديم حالا ما مي خايم كه اگر اين متغيير G به 6 برسه بره و  PORTA.0 رو SET كنه :
CONFIG  PORTA =  OUTPUT
DIM  G AS  BYTE
G  =  0
DO
INCR  G
CLS
LCD  G
IF  G  =  6  THEN  SET  PORTA.0
WAITMS  50
LOOP
END
برنامه بالا رو كه تا حدودي مي دوني چيه چون قبلا توضيحشو دادم فقط مي مونه خط هفتم كه نوشته  IF  G  =  6  THEN  SET  PORTA.0  ما در اينجا با گذاشتن شرط يعني   IF  G  =  6  شرط  گذاشتيم كه اگر متغيير G به عدد 6 رسيد . ادامه نوشتيم THEN  SET  PORTA.0  بروي SET كن PORTA.0  . فهميدي
1-   اره ولي مگه شرط بندي حروم نيست
2-   چرا حرومه . ولي بايد مواظب باشي كه شرط رو نبازي
خوب  رسيديم به دستورات زير برنامه ( GOTO -  GOSUB )
1-   چي هستن اين زير برنامه ها
2-   با يك مثال برات توضيح مي دم توي مثال قبل اگر دقت كرده باشي متغيير G وقتي كه به عدد 6 مي رسيد مي رفت و PORTA.0 رو SET مي كرد و همينطوري به متغيير G اضافه مي شد . حالا اگر كه ما حال كرديم بعد از اين كه متغيير G به عدد 6 رسيد بره همون كاره خودشو يعني SET كردن PORTA.0   رو انجام بده ولي برنامه ديگه تموم بشه و ديگه شمارش نكنه يا به عبارتي به END  برسه . خوب براي اين كار بايد از زير برنامه استفاده كنيم  به مثال زير توجه كن :
CONFIG  PORTA  =  OUTPUT
DIM  G AS  BYTE
G  =  0
DO
INCR  G
CLS
LCD  G
IF  G  =  6  THEN GOTO AHMAD  
WAITMS  50
LOOP
AHMAD :
SET  PORTA.0
END
خوب حالا بريم تحليل برنامه . برنامه رو كه مي دوني چجوريه منظورم معني خط ها هستش البته به غير از خط هشتم كه نوشته
IF  G  = 6 THEN GOTO  AHMAD
خوب اين خط يعني اينكه اگر متغيير G رسيد به عدد 6 دستور شرط را اجرا كن كه دستور شرط اين است GOTO  AHAD  يعني بپر برو به زيربرنامه اي كه استش هست احمد . توجه كن كه به جاي اسم   AHMAD هر اسم ديگه اي مي توني بزاري هر اسمي كه حال كردي . بعد از اينكه متغيير G بع عدد 6 رسيد دستور شرط اجرا مي شود و ميكروكنترلر برنامه را از خط بعدي زيربرنامه AHNAD  مي خواند يعني خط  SET  PORTA.0 را مي خونه و پورت A.0 رو ست مي كنه بعد از اين كه ست كرد خط بعدي رو مي خونه كه نوشته END به محض اينكه اين دستور END رو خوند برنامه متوقف مي شه و به پايان مي رسه .
پس فهميدي كه زير برنامه براي وقتي هستش كه ما مي خوايم يك دستور شرط رو اجرا كنيم
به يك مثال ديگه توجه كن :
CONFIG  PORTA  =  OUTPUT
DIM  G AS  BYTE
METAL:
G  =  0
RESET  PORTA.0
DO
INCR  G
CLS
LCD  G
IF  G  =  6  THEN GOTO AHMAD  
WAITMS  50
LOOP
AHMAD:
SET  PORTA.0
WAITMS 50
GOTO  METAL
END
امضا با خودمان می گوییم، عادت می کنیم و با صراحت زیادی، این جمله را تکرار می کنیم.
آن چیزی که هیچ کس نمی پرسد، این است که: "به چه قیمتی عادت می کنیم؟"  (ژوزه ساراماگو)




((

عضويت  / ورود

عضويت  / ورود
)) ((

عضويت  / ورود
)) ((

عضويت  / ورود
))




عضويت  / ورود
     



نماد کاربر
rsadeghi
مدیر انجمن
مدیر انجمن
 
پست ها : 553
سن: 27
حالت من: خسته
تاريخ عضويت: 11 دي ماه 1389, 01:00
محل سکونت: فولادشهر-اصفهان
تشکر کرده: 105 بار
تشکر شده: 209 بار
امتياز: 11649
اعتبار: 11
کاربر معمولی
دادن اعتبار مثبت rsadeghiدادن اعتبار منفی rsadeghi

پستتوسط rsadeghi » 2 مرداد ماه 1390, 11:45

ادامه قسمت چهارم
قبل از ادامه يك كمك از مديران عزيز سايت مي خاستم و اونم اين كه نمي دونم چرا جاي حروف اشتباهي ميخوره يك نگاه به مثال هايي كه زدم بندازين  
برای مشاهده تصاویر ابتدا باید عضو شوید
عضويت  / ورود
جاهاي دونقطه و مثلا $REGFILE اشتباه مي خوره لطفا كمك كنيدممنون
برای مشاهده تصاویر ابتدا باید عضو شوید
عضويت  / ورود

ادامه مطلب

خوب حالا تحليل برنامه قبل . ميكرو مياد برنامه رو از خط اول شروميكنه به خوندن كه خط اول مربوط به پيكره بندي PORTA به عنوان خروجي هستش . بعد مياد خط دوم رو مي خونه كه در اين خط ما يك متغيير كه اسمش هست G و از نوع بايت مي باشد رو تعريف كرده ايم. خط سوم يك زير برنامه هستش به نام METAL كه فعلا بهش كار ندارم تا بعد در ضمن اين نكته رو بايد يادت باشه كه هر وقت يك زير برنامه رو مي نويسي بايد جلوش دو نقطه رو بزاري اينطوري METAL: . خط بعدي به متغيير يك مقدار داديم كه صفر است . خط بعدي نوشتيم  RESET  PORTA.0  كه به اين هم فعلا كار نداريم . خط بعدي DO هستش كه ابتداي حلقه را مشخص مي كنه . خط بعدي نوشته INCR  G يعني به مقدار متغيير G يك واحد اضاف كن يعني صفر كه بوده حالا كه يك واحد اضاف بشه مي شه يك . خط بعدي با دستور CLS ال سي دي را پاك كرديم تا براي نوشتن دوباره اماده شود . خط بعدي با فرمان LCD  G اين را رسانديم كه مقدار متغيير G رو روي ال سي دي نمايش بده كه الان بايد عدد يك رو روي ال سي دي نمايش بده . در خط بعدي  نوشتيم IF  G  =  6  THEN GOTO AHMAD    يعني اگر متغيير G ما به عدد 6 رسيد برو دستور شرط رو كه هست  THEN GOTO AHMAD   اجرا كن بعني بپر برو توي زير برنامه AHMAD  البته  وقتي دستور شرط اجرا ميشه كه  متغيير G به عدد 6 برسه . خط بعدي يك تاخير در برنامه با مدت زمان 50 ميلي ثانيه را گذاشتيم كه بعد از سپري شدن اين مدت زمان برنامه از خط بعدي شروع مي شه خوب تا اين جا كه متغيير ما عدد 1 هستش . بعد كه ميكرو ميرسه به دستور LOOP دوباره  دور مي زنه و خط زيري DO رو مي خونه كه نوشته INCR  G يعني يك واحد به متغيير G  اضافه كن خوب متغيير G الان هستش 1 بعد كه به اين دستور رسيد اين دفعه يك واحد بهش اضافه مي شه و مي شه دو . اين عمل انقدر ادامه مي يابد تا متغيير G برسه به عدد 6 . همين كه به عدد 6 رسيد از اونجايي كه ما يك شرط با دستور  
IF  G  =  6  THEN GOTO AHMAD   گذاشتيم يعني اينكه وقتي متغيير G به عدد شش رسيد يعني IF G  = 6  برو دستور  شرط رو كه هستش    THEN GOTO AHMAD  اجرا كن يعني اينكه بپر برو توي زير برنامه AHMAD خوب حالا ميكرو ميپره ميره برنامه رو از خط زيري زير برنامه AHMAD مي خونه كه نوشته SET  PORTA.0 يعني پايه A.0 رو يك كن . بعدش نوشته WAITMS  50 يعني اينكه به مدت زمان 50 ميلي ثانيه در برنامه تاخير ايجاد كن كه در طول اين مدت PORTA.0 در وضعيت SET قرار دارد بعد از اين كه اين مدت زمان سپري شد برنامه از خط بعدي اجرا مي شه خط بعدي يعني   GOTO  METAL   يعني اينكه بپر برو توي زير برنامه METAL و ميكرو هم همين كار رو مي كنه و مي پره مي ره توي زير برنامه METAL  و برنامه از خط بعدي اين زير برنامه كه هستش G  =  0 ادامه پيدا مي كنه اين خط به اين معني هستش كه متغيير G  رو كه بوده 6 حالا بيا صفرش كن . در خط بعدي يعني RESET  PORTA.0 يعني اينكه پايه A.0 رو كه ست كرده بودي حالا بيا ريستش كن يعني صفر كن. خوب حالا هم متغيير G ما صفر هستش هم اينكه PORTA.0 ما صفر يا همون ريست هستش . بعد ميكرو مي ياد  برنامه رو از خط بعدي شروع ميكنه به خوندن كه نوشته DO بعني اول زيربرنامه . خط بعدي نوشته INCR  G يعني يك واحد به متغيير G ما كه الان دوباره صفرش كرديم اضافه كن كه بشه يك . دوباره روز از نو روزي از نو  يعني اينكه دوباره شروع مي كنه به اضافه كردن متغيير تا دوباره برسه به 6 بعد كه رسيد به 6 دوباره بپره بره به زير برنامه  AHMAD اونجا باز  PORTA.0 رو يك مي كنه بعدش تاخير ايجاد مي كنه بعد با دستور GOTO  METAL مي پره ميره به زير برنامه METAL كه در بالاي برنامه هستش بعد دوباره متغيير رو كه 6 هستش رو صفر مي كنه به دنبالش PORTA.0 رو هم كه يك بوده صفر مي كنه  باز دوباره...................................
حالا رسيديم به دستور  GOSUB  
اين دستور همان دستور GOTO هستش  با اين تفاوت كه يك دستور ديگه همراهش هست به نام اقاي RETURN  كه اين RETURN رو هر جاي برنامه كه بنويسيم  ميكرو مياد برنامه رو از خط بعدي GOSUB شروع مي كنه به خوندن . كه دربارش وقتي كه خواستم ورودي رو بهت درس بدم مي گم .
ورودي  PIN  :
ورودي در ميكرو كاربرداي فراووني داره مثلا در ساده ترين حالت  مي خاي يك ميكروسوييچ به ميكروكنترلر وصل كني كه با هر بار زدن اين ميكروسوييچ يك LED روشن و خاموش بشه در مراحل پيشرفته هم مثلا در ساخت يك ربات كاربرد داره به اين صورت كه يك سنسور مادون قرمز بهش وصل بشه و مثلا به يك خط سياه حساس باشه و از اين طور كارا
خوب بريم سر دستور ورودي .  باز هم مي خوام با يك مثال برات توضيح بدم
فرض كن كه مي خايم با يك ميكرو سوييچ كه به ميكرو وصل كرديم يك LED رو يك بار روشن و يك بار خاموش كنيم كه برنامه به صورت زير است و خيلي خيلي ساده :
CONFIG  PINB.0  =  INPUT
DIM  A AS  BYTE
Ali:
DO
DEBOUNCE   PINB.0  ,  1  ,  SONY
LOOP
END
SONY:
INCR  A
CLS
LCD A
GOTO  ALI
خوب حالا وقت تحليل برنامه هستش: درخط اول ما اومديم با نوشتن دستور CONFIG  PINB.0  =  INPUT  پايه B.0 رو به  عنوان ورودي تعريف كرديم . در خط بعد يك متغيير از نوع بايت كه اسمش رو گذاشتيم A تعريف كرديم . در خط بعدي يك زير برنامه به نام ALI گذاشتيم كه فعلا بهش كار نداريم و در ادامه توضيحش مي دم. در خط بعدي با نوشتن DO ابتداي حلقه را مشخص كرديم . در خط بعدي نوشتيم كه   DEBOUNCE   PINB.0  ,  1  ,  SONY   كه هر وقت خاستي كه يك ورودي رو تعريف كني بهتره از اين دستور استفاده كني يا به عبارتي حتما استفاده كني خوب حالا لابد از خودت مي پرسي كه اين دستورات چي هست اين دستور كه همش بايد توي يك خط نوشته بشن رو يكي يكي برات بازش مي كنم DRBOUNCE  رو هميشه وقتي كه مي خاي يك ورودي رو تعريف كني اولش بايد بزاري و كاربردشم اينه كه يك تاخير خيلي خيلي كوچيك كه به چشم هم نمياد ايجاد مي كنه و باعث مي شه كه پايه ورودي نويز نگيره  يك بار ديگه دوباره مي گم ما نوشتيم كه DEBOUNCE   PINB.0   يعني پايه  B.0 رو از نظر نويز محافضتش  كن خوب اين تا بعدش علامت  ,  رو گذاشتيم تا جملات از هم تفكيك شوند كه بايد حتما علامت  ,  رو بزاري در ادامه ما نوشتيم كه 1  خوب حالا اين 1 يعني چي . اين 1 يعني اگر پايه B.0 يا يك 1 شد يا به عبارتي SET شد با ميتونيم بگيم كه يك نوع شرط است كه در مقابل يك شدن پايه B.0 گذاشته ايم و جلوي اين 1 دوباره علامت  ,  گذاشتيم تا از جمله بعديش تفكيك بشه . در جمله بعديش نوشتيم SONY  كه اين يعني اينكه اقا اگر اين پايه B.0 ما 1  شد بپر برو توي زيربرناه SONY كه به جاي اينSONY هر اسم دخواه ديگه اي هم مي توني بزاري . يك بار ديگه برات اين جمله رو به صورت كلي توضيح مي دم معني اين جمله دستوري اين هستش كه اگر PINB.0 ما 1 شد بپر برو توي زيربرنامه  SONY و اگر صفر بود كه هيچي . در خط بعدي نوشتيم LOOP كه انتهاي حلقه را با اين كلمه مشخص كرديم . در خط بعدي نوشتيم END كه برنامه هيچگاه به END نمي رسد . در خط بعدي نوشتيم SONY   كه SONY يك زيربرنامه است كه مي تونست هر اسم ديگه اي باشه . در خط بعدي نوشتيم  INCR  A  كه به معني اضافه كردن يك واحد به متغيير A مي باشد . در خط بعدي نوشتيم كه CLS يعني پاك كن كل صفحه ال سي دي رو تا براي نوشتن اماده بشه. در خط بعدي نوشتيم GOTO  ALI يعني بپر به زيربرنامه ALI  .
خوب حالا بريم سر طرز كار مدار : اين مدار در واقع يك شمارنده هستش . طرز كارش هم اينطوريه كه ميكرو مياد سه خط اول رو مي خونه بعد ميره مي يوفته توي حلقه DO -  LOOP  و اونجا داخل اين حلقه هي دور ميزنه تا كي تا وقتي كه PINB.0 ما يك بشه يعني شرطي كه گذاشته ايم اجرا بشه كه شرط ما اين هستش كه پايه B.0 يك بشه بعد از اينكه اين شرط اجرا شد ميكرو مياد دستور شرط رو اجرا مي كنه دستور شرط كدومه هموني كه بهت گفتم  يعني پرش به زير برنامه SONY . وميكرو كه گوش به فرمان برنامه هست مي پره مي ره داخل زير برنامه SONY و از خط  بعدي زير برنامه SONY كه نوشته  
INCR  A  رو مي خونه و طبق اين دستور يك واحد به اين متغيير  A  اضافه مي كنه يعني ميكنش 1 .  بعدش مي ياد خط بعدي رو مي خونه كه نوشته CLS يعني اينكه كل ال سي دي پاك بشه تا براي نوشتن حاضر بشه . در خط بعدي نوشتيم كه
LCD  A  به اين معني كه مقدار متغيير A  رو كه هستش يك روي LCD نمايش بده . در خط بعدي نوشته  GOTO  ALI  يعني اينكه بپر برو توي زير برنامه ALI  و ميكرو هم همين كار رو مي كنه و مي پره مي ره  اولين خط بعد از زير برنامه ALI رو كه نوشته DO رو مي خونه و دوباره ميوفته توي اين حلقه و باز هم دوباره انقدر توي اين حلقه هستش و توي اين حلقه دور مي زنه تا وقتي كه دوياره PINB.0  يك بشه يا به عبارتي SET بشه اونوقت دوباره روز از نو روزي از نو و ميپره دوباره توي زيربرنامه SONY و دستورات داخل اين زير برنامه رو دباره اجرا مي كنه كه در خط اول اين زير برنامه نوشته  
INCR  A  يعني دوباره يك واحد به متغيير A   اضافه كن و ميكرو هم اين كار رو ميكنه و متغيير A كه يك  بوده الان ميشه 2  بعد مياد دستور CLS رو مي خونه كه لازم به توضيح نيست . بعد مي يا دستور LCD  A  رو مي خونه كه مقدار جديد اين متغيير A رو كه الان هستش 2 رو روي LCD نمايش مي ده بعد مياد دستور GOTO  ALI  رو مي خونه و مي پره مي ره توي زير برنامه ALI دوباره ميوفته توي حلقه و الي اخر . با استفاده از اين برنامه مي توني يك شما رنده درست كني كه مي تونه از عدد 0 تا 255 رو بشماره و اگر خاستي رنج شمارشش از 255 بيشتر باشه مي توني به جاي BYTE توي برنامه بنويسي WORD . اين برنامه در كارخونه هم كاربرد داره البته باكمي تغييرات كوچيك در برنامه و مثلا بايك سنسور مي شه قطعات عبوري از روي خط توليد رو شمارش كرد.
1-   از نظر اتصالات سخت افزاريش هم توضيح بده برام
2-   اين كه خيلي ساده هستش كافيه تغذيه ميكرو رو وصل كني و با يك ميكروسوييچ كه يك سرش رفته باشه به VCC  5 ولت و سر ديگه ميكروسوييچ هم رفته باشه به پايه B.0 و اتصالات  ال سي دي اين مدار رو كاملش كني.
1-   جالب بود
2-   تو به اين مي گي جالب بزار يكم راه بيوفتي  اونوقت اين طور مدارا برات پيش پا افتاده هستش . وقتي كه ميتوني ميكروكنترلر رو از طريق تلفن .SMS و اينترنت كنترلر كني ديگه اين مدارات در نظرت بچه بازي هستش
1-   چطوري از طريق اينايي كه گفتي كنترل مي كنن
2-   ديگه بايد يكم اطلاعاتت در مورد پورتهاي كامپيوتر و PC  INTERFACES  كامل باشه كه بتوني از طريق مثلا اينترنت يك موتور رو كنترل كني وگرنه برنامه نويسي ميكرو كه چيز نيست
1-   با اين PC  INTERFACES  چه كار ميتوني بكني و اصلا چي هستش
2-   اندازه گيري و كنترل با استفاده از پورتهاي استاندار تحت ويندوز رو  مي گن  PC  INTERFACES  مثلا شما توي محيط نرم افزار ويرژال بيسيك يك برنامه اي مي نويسي كه اگر مثلا فلان دكمه كيبرد فشرده شد خروجي فلان پورت كامپيوتر رو يك كن كه اين خروجي ها از نظر استاندارد با استاندارد ميكروكنترلر فرق دارند و بايد از اي سي MAX232 استفاده كني كه از نظر استاندارد با هم مطابق شوند .
1-   علم چقدر پيشرفت كرده ها
2-   بله . بزار يك مثال ديگه هم بزنم ولي توضيحش رو خيلي خلاصه برات مي گم
CONFIG  PORTA  =  OUTPUT
CONFIG  PINB.0  =  INPUT
DIM  A AS  BYTE
Ali:
DO
DEBOUNCE   PINB.0  ,  1  ,  SONY
LOOP
END
SONY:
INCR  A
CLS
LCD A
TOGGLE  PORTA
GOTO  ALI
در برنامه بالا فقط يك چيز اضافه شده اونم  دستور TOGGLE  PORTA  كه با وجود اين دستور هر وقت كه ميكرو به زير برنامه SONY  پرش  مي كنه علاوه براين كه يك واحد به متغيير A اضافه مي كنه و روي ال سي دي هم نمايش مي ده موقعييت PORTA رو هم عوض مي كنه يعني اگر صفر باشه يك مي شه و اگه يك باشه صفر مي كنه و دفعه بعد كه به اين زير برنامه رفت دوباره اگر صفر باشه يكش مي كنه و اگه يك باشه صفرش مي كنه بزار منظورمو ساده بگم اگر شما يك LED  به پايه هاي A.0 تا A.7 وصل كني به ازاي هر بار زدن ميكروسوييچ اين LED ها يك بار روشن و بارديگه خاموش مي شن.
امضا با خودمان می گوییم، عادت می کنیم و با صراحت زیادی، این جمله را تکرار می کنیم.
آن چیزی که هیچ کس نمی پرسد، این است که: "به چه قیمتی عادت می کنیم؟"  (ژوزه ساراماگو)




((

عضويت  / ورود

عضويت  / ورود
)) ((

عضويت  / ورود
)) ((

عضويت  / ورود
))




عضويت  / ورود
     



نماد کاربر
rsadeghi
مدیر انجمن
مدیر انجمن
 
پست ها : 553
سن: 27
حالت من: خسته
تاريخ عضويت: 11 دي ماه 1389, 01:00
محل سکونت: فولادشهر-اصفهان
تشکر کرده: 105 بار
تشکر شده: 209 بار
امتياز: 11649
اعتبار: 11
کاربر معمولی
دادن اعتبار مثبت rsadeghiدادن اعتبار منفی rsadeghi

پستتوسط rsadeghi » 5 مرداد ماه 1390, 11:30

قسمت پنجم اموزشي

1-   سلام خوبي
2-   سلام من خوبم تو چطوري چكار مي كني
1-   خوبم ولي يكم ناراحتم
2-   چرا
1-    بابا تمام اين مثال هايي رو كه گفته بودي توي نرم افزار  BASCOM  تست كردم همشون هم درست بود ولي چه فايده وقتي كه نمي تونم توي محيط BASCOM شبيه سازيشون كنم
2-   خوب من كه بهت گفته بودم كه برو توي نرم افزار پروتوس تستش كن
1-   اره گفته بودي ولي من كه ياد ندارم باهاش كار كنم
2-   خوب بهت يك لينك داده بودم كه بري اونجا دربارش مطلب زياده
1-   خوب درست ولي اگه توضيح بدي اونايي رو هم كه از توي لينك گرفتم باهاش اطلاعاتم كامل مي شه
2-   خيلي خوب چاره چيه ما كه اين همه گفتيم اموزش پروتوس هم مي گيم ديگه چي ؟؟
1-   دمت گرم بابا خيلي حال دادي
2-   فقط يك چيزي رو از همين الان بگم من اين نرم افزار پروتوس رو بهت مي گم و از اونجايي كه اين نرم افزار بعضي وقتا EROR  هاي بدي ميده بايد مشكلتو خودت حل كني يا توي توي انجمن مشكلت رو بگي چون من فقط در حد كاركردن با اين نرم افزار سرم ميشه .
1-   باشه هر چي كه تو بگي
2-   خوب پس اين جلسه نحوه نصب و كاركردن با نرم افزار پروتوس ورژن 6 رو برات توضيح مي دم
قبل از اينكه نحوه نصب رو برات توضيح بدم بزار يك مقدار درباره كاربرد نرم افزار برات بگم . اين نرم افزار پروتوس يك نوع شبيه ساز هستش كه علاوه بر شبيه سازي قادره يك مدار رو اناليز كنه و همچنين امكان كشيدن پشت فيبر مدار چاپي رو هم ميشه از امكاناتش شمرد . ما در اينجا فقط مي خوايم از امكان شبيه سازيش استفاده كنيم پروتوس يك شبيه ساز بسيار قدرت مند هستش كه شما مي توني هر مداري رو كه مي خاي توش شبيه سازي كني و نتيجه كارت رو ببيني . خود من هر وقت كه مي خام يك مداري رو درست كنم اول با پروتوس شبيه سازيش مي كنم بعد از اينكه نتيجه گرفتم مي روم و اونو روي برد پياده مي كنم . يكي از امكاناتي كه نرم افزار پروتوس در اختيار ما قرار داده شبيه سازي مدارات ميكروكنترل هستش و شما قبل از اين كه خاسته باشي مدارتو روي برد سوار كني مي توني توي پروتوس شبيه سازيش كني و بعد از اينكه نتيجه دلخواهت رو گرفتي اونو روي برد پياده كني . شما داخل اين پروتوس هر قطعه اي رو كه حتي تا حالا نديديش پيدا مي كني و باهاش كار كني .
خوب حالا بريم سر نصب نرم افزار پروتوس ورژن6 :
براي نصب نرم افزار PROTEUS  ابتدا با اجرا كردن SETUP يا INSTALL  ان انرا نصب مي كنيم  بعد از اينكه نصب شد مي ريم داخل پوشه CRACK كه در داخل CD نرم افزارش هست . سه تا CRACK داخلش هست كه هر سه تاشون شبيه ادمك هستند و هر سه تا رو بايد كپي كني و در داخل پوشه BIN  بريزي يعني PASTE كني حالا اين فايل BIN رو حتما از خود مي پرسي كه كجاست پوشه BIN همون جايي هستش كه نرم افزار رو ريختي بعد از اينكه اين كارا رو كردي نوبت مي رسه به اجرا كردن خود CRACK هايي كه ريختي  كه بايد يكي يكي اونا رو اجرا كني بعد از اينكه هر كدوم رو اجرا كردي يك كادر كوچيك باز مي شه كه سه گزينه داره اولي NEXT دومي RESTORE  و سومي PATCH مي باشد كه بعد از باز شدن پنجره بايد روي گزينه  RESTORE  يا PATCH  كه دقيقا يادم نيست كدومشون هست كليك كني كه يك پنجره باز مي شه داخل اين پنجره جديد يك فايل هستش كه بايد اونو انتخاب كني  و هي NEXT رو بزني تا وقتي كه پغام بده    CRACK  SUCCESSFUL  بعد از اين كه هرسه تا رو اجرا كردي نرم افزار اماده اجرا هستش .
1-   خوب تا اينجاش كه راحت بود حالا برو سر توضيح خود نرم افزار
2-   باشه . خوب قصد من از اموزش اين نرم افزار PROTUES  فقط شبيه سازي خود ميكروكنترلرAVR هستش .براي اين كه بتوني اين كار رو بكني پس از اينكه پروتوس رو باز كردي بايد روي يك شكل كه در بالاي نرم افزار است كليك كني كه اين شكل شبيه يك OPAMP است و از سمت چپ اولين شكل هستش كه اگر روي اين شكل موس رو نگه داري نوشته COMPONENT . پس از اين كه روي اين شكل كليك كردي يكم پايين تر از اين شكل دو تا گزينه پيدا ميشه كه اوليش هست P و دوميش هست L  كه تو بايد روي P كليك كني تا كتابخانه قطعت ضاهر بشه كه بالاي پنجره اين كتابخانه نوشته    PICK DEVICES  . خوب تو بايد از داخل اين پنجره قطعاتي رو كه مي خاي انتخاب كني مثلا اگر يك ميكرو كنترلر AT90S8535 مي خاي بايد ابتدا روي گزينه MICRO  كليك كني تا ليست كل ميكروكنترلر ها اعم از 8051-AVR-PIC رو برات نمايش بده كه ما براي انتخاب ميكروكنترلر  AT90S8535 بايد روي ان دوبار كليك كنيم تا در كادر كناري سمت چپ نرم افزار ذخيره شود . اگر ميكروسوييچ مي خاستي در كادر بالايي همين پنجره گزينه ACTIVE رو انتخاب كني كه توش قصعاتي هستش كه كاربرد زيادي دارند مثل باطري – موتورDC-LED-  و همچنين ميكروسوييچ . خوب براي اين كه ميكروسوييچ خاستي بياري بايد روي BUTTON دو بار كليك كني تا اون هم در كادر سمت چپ نرم افزار ذخيره بشه منظورم از كادر سمت چپ نرم افزار كادي هستش كه بالاش نوشته DEVICES  و دقيقا زير همون LوP كه بهت گفتم قرار داره. در ضمن براي بزرگ نمايي صفحه نرم افزار بايد از F6  و  F7  استفاده كني . يك نكته ديگه اون هم اينكه براي اين كه از VCC  و GND نرم افزار استفاده كني بايد بري روي يك شكل ديگه كه علامت دوتا پيكان هستش كه مخالف جهت يكديگردن و اين شكل 7 تا شكل بعد از اون شكلي رو كه گفتم شكل OPAMP هستش به سمت راست قرار داره كه اگه روي اين شكل با موس وايستي نوشته  INTER-SHEET TERMINAL   كه بعد از كليك روي اين گزينه يك كادر در سمت چپ نرم افزار باز ميشه كه هم GND داره و هم VCC براي اينكه بتوني اين دوتارو روي صفحه بياري كافيه روش يك بار كليك چپ كني بعد بياي روي صفحه نرم افزار دو باره كليك چپ كني تا روي صفحه نرم افزار ضاهر يشه. براي ديگر قطعات هم بايد همين كار رو بكني يعني قطعاتي رو كه ذخيره كردي رو يك بار روش كليك چپ كني تا انتخاب بشه بعد بياي روي صفحه نرم افزار دوباره كليك چپ كني تا ضاهر بشه . براي پاك كردن قطعه از روي صفحه برنامه بايد روي اون دوبار كليك  راست كني . براي تنضيمات يك قطعه مثلا عوض كردن مقدار يك مقاومت يا يك باطري بايد ابتدا يك بار روي اون كليك راست كني تا قطعه قرمز بشه بعد دوباره روش كليك چپ كني تا يك پنجره باز بشه و بتوني مقدار يا هر چيز ديگه شو عوض كني ولي مواظب باش كه يك وقت دوبار روي اون كليك راست نكي چون قطعه پاك بشه و اگر يك مومقع اين اشتباه رو كردي مي توني ctrl + z رو از روي صفحه كليد بزني تا قطعه برگرده . براي اين كه جاي يك قطعه رو روي صفحه عوض كني بايد ابتدا روي قطعه يك بار كليك راست كني تا انتخاب بشه بعد با كليك چپ هر طرف كه خاستي ببريش .
بزار يك كار عملي انجام بديم تا طرز راه اندازي يا شبيه سازي ميكروكنترلر رو توي محيط برنامه ياد بگيري
فرض كن كه مي خايم يك مدار ساده مثلا يك چشمك زن رو با  AVR  درست كني كه از اين ساده تر ديگه وجود نداره اين چشمك زن رو مي خايم با هشت LED درست كني كه همه هم زمان با هم روشن خاموش مي شن. براي اين كار اول مي يايم توي محيط پروتوس تا قطعات رو به هم وصل كنيم . خوب طبق همون روشي كه گفته بودم قطعات رو مي ياري ميكروكنترلر رو  از نوع  AT90S8535  انتخاب مي كنيم و همچنين اول ميكرو كنترلر رو مياريم  در ضمن  اند  اين هشتا LED رو به ترتيب به پايه هاي A.0 تا A.7  وصل مي كنيم و سر ديگر اين LED ها رو به GND وصل كن GND رو هم همون طور كه بهت ياد دادم بيار بعد برو روي توي منوي FILE و روي گزينه  SAVE DESING AS كليك كن و مسيري رو كه براي SAVE كردن مدار ازت مي خاد رو بده  همون جايي كه نرم افزار رو نصب كردي يعني توي پوشه SAMPLE  البته بهتره توي اين پوشه قبلش يك پوشه جديد ايجاد كني و مدارتو توي اين پوشه جيد SAVE كني .
1-   من يك چيز رو نفهميدم برنامه اي نمي خاي براش بنويسي و برنامه رو چطوري مي خاي توش بريزي
2-   اگه يكم صبر كني به اونجاشم مي رسيم . خوب تا اينجا كه قسمت سخت افزاري مدار رو انجام داديم  حالا بايد براي اين مدار يك برنامه هم بنويسيم كه اونم خيلي راحته خوب BASCOM رو باز كن و يك صفحه جديد ايجاد كن  و برنامه زير رو بنويس :
CONFIG  PORTA  =  OUTPUT
DO
TOGGLE  PORTA
WAITMS  100
LOOP
براي انتخاب نوع ميكروكنترلر همونطور كه بهت ياد دادم برو از داخل خود BASCOM انتخابش كن و حتما AT90S8535  رو انتخاب كن و براي انتخاب فركانس كاري هم بازم همونطوري كه بهت ياد دادم از داخل خود نرم افزار انتخابش كن و بزارش روي  8000000  هرتز بعد كه اين تنظيمات رو انجام دادي و OK كردي بيا اول دكمه F7 رو بزن تا برنامه چك بشه تا خطا نداشته باشه وقتي كه اين دكمه F7 رو ميزني قبل از اينكه برنامه رو چك كنه ازت يك مسير ميخاد كه برنامه رو كجا ذخيره كنه كه شما بايد دقيقا ادرس رو همون جايي بدي كه مدارتو اونجا SAVE كردي خوب كار ما با BASCOM تمام شد و اگه حال كردي مي توني ببنديش و بري سر نرم افزار پروتوس . اول پروتوس رو باز كن بعد برو توي منوي FILE و گزينه
LOAD DESING رو انتخاب كن تا يك پنجره باز بشه بعد از طريق اين پنجره برو اون جايي كه مدارتو SAVE كردي و مدارتو انتخاب كن تا روي صفحه بياد . خوب گفتي كه چطوري برنامه اي رو كه نوشتيم مي ريزيم توي ميكروكنترلر خوب الان بهت مي گم براي اين كار بايد روي ميكروكنترلر يك بار كليك راست كني تا انتخاب بشه و به رنگ قرمز در بياد بعد يك بار كليك چپ مي كني تا يك پنجره باز بشه داخل اين پنجره يك جايي نوشته  PROGRAM FILE كه جلوش يك كادر هستش و جلوي اين كادر يك شكل زرد رنگ هستش كه بايد روي اين شكل كليك كني تا دوباره يك كادر ديگه باز بشه . به وسيله اين كادري كه الان باز شد بايد بري برنامه اي كه نوشتي رو از اونجايي كه SAVE قبلا كردي انتخاب كني منظور فايلي هستش كه با پسوند HEX  هستش بعد كه انتخاب كردي و OK رو زدي برنامه خودكار توي ميكرو قرار مي گيره  بعد بايد براي انتخاب فركانس كاري ميكرو بايد در كادري كه نوشته CLOCK  FREQUENCY مقدار فركانس ميكرو رو بنويسي البته به مگا هرتز 8MHZ . خوب كار ديگه تموم شد OK رو مي زني تا پنجره بسته بشه بعد براي اجراي اين مدار بايد بري پايين صفحه و روي علامتي كه شبيه  PLAY ضبط هستش كليك كني كه شبيه مثلث هستش و مي بيني كه هر هشتا LED دارن باهم ديگه هم زمان چشمك مي زنن
امضا با خودمان می گوییم، عادت می کنیم و با صراحت زیادی، این جمله را تکرار می کنیم.
آن چیزی که هیچ کس نمی پرسد، این است که: "به چه قیمتی عادت می کنیم؟"  (ژوزه ساراماگو)




((

عضويت  / ورود

عضويت  / ورود
)) ((

عضويت  / ورود
)) ((

عضويت  / ورود
))




عضويت  / ورود
     



نماد کاربر
rsadeghi
مدیر انجمن
مدیر انجمن
 
پست ها : 553
سن: 27
حالت من: خسته
تاريخ عضويت: 11 دي ماه 1389, 01:00
محل سکونت: فولادشهر-اصفهان
تشکر کرده: 105 بار
تشکر شده: 209 بار
امتياز: 11649
اعتبار: 11
کاربر معمولی
دادن اعتبار مثبت rsadeghiدادن اعتبار منفی rsadeghi


بازگشت به AVR

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

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 2 مهمان