ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 20 1234567891011 ... آخرین
نمایش نتایج: از 1 به 10 از 191
  1. #1
    2008/10/29
    2,098
    203

    آموزش ميکروکنترولر PIC با MPLAB C

    جلسه اول:آشنايي با کامپايلر و ايجاد پروژه
    سلام
    ان شالله از امروز به بعد مي خوايم با هم ميکرو PIC رو توسط کامپايلر MPLAB و زبان برنامه نويسي C شروع کنيم. اين شرکت (ميکروچيپ) در کمتر از چندين سال از تمامي رقيب ها پيشي گرفت و الان اولين و بهترين ميکروکنترولر دنيا محسوب مي شه (در ميکروکنترولر هاي 8 بيتي و 16 بيتي).من هم چون قدرت خانواده 18f رو نسبت به بقيه مناسب ديدم و رفرنسهاي مناسبي هم پيدا کردم فوکس خودم رو روي اين نسل بيشتر مي کنم و اميدوارم بتونيم بيشتر از دانش هم استفاده کنيم.
    مراحل کار:
    1-خريد يک ميکروکنترولر نسل 18f ، مثلا من با 18f452 کار مي کنم
    2-دانلود اديتور MPLABX ، لطفا خساست براي حجم تقريبي 350 مگابايتش نکنين :eek:و بخواين از زير دانلود کردنش شونه خالي کنين اين اديتور نسبت به قبلي ها کلي پيشرفت و امکانات داره و تا دانلودش نکنين متوجه مزاياش نمي شن
    از اين آدرس مي تونين دانلود کنين

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    حالا نوبت کامپايلر داده هاتون مي رسه ، چون از نسل 18f استفاده مي کنين بايد mplabc18 رو دانلود کنين که لينک دانلود در زير قرار گرفته هست

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت





    با اجازه استادbaby_1، دارم ويرايش ميکنم.(شاهرخ مستقيمي)
    لينک دانلود MPLABX IDE 2.05 در هفت بخش 49مگابايتي و يک قسمت 18مگابايت:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت





    حالا بعد از نصب دو فايل بالا برنامه رو اجرا مي کنيم
    نماي ابتدايي برنامه در هنگام لود کردن

    اجرا شدن کلي برنامه

    براي ايجاد يک پروژه جديد اقدام مي کنيم
    مسير زير رو دنبال کنين
    File->New Project

    در صفحه باز شده مشخصات رو به همين نحو نگه مي داريم و بر روي دکمه Next کليک مي کنيم

    در اين قسمت هم در بخش Family گزينه Advanced 8-bit MCUs (PIC18) رو انتخاب مي کنيم و از قسمت Device اسم تراشمون رو انتخاب مي کنيم که من PIC18f452 رو انتخاب کردم بازم دکمه Next

    در اين قسمت هم مي تونين پروگرمر و شبيه سازتون رو مشخص کنين که چون پروگرمر من PICkit هست اون رو انتخاب کردم البته اين قسمت هم اگر پروگرمري يا شبيه سازي ندارين مهم نيست شما هم همون PICkit يا ICD3 رو انتخاب کنين و NEXT

    در اين قسمت هم بايد نوع کامپايلرتون رو مشخص کنين که چون با C18 کار مي کنيم پس همين رو انتخاب کرده و سپس NEXT

    در پنجره آخري هم بايد اسم پروژه و مکان ذخيره سازي فايلتون رو مشخص کنين و تيک گزينه Set as main project هم فعال کنين تا اگر چندين پروژه داشته باشين اين پروژه رو براتون کامپايلر کامپايل کنه.
    پروژه خودتون رو در قسمت سمت چپ اديتور MPLAB انتخاب و بر روي گزينه Source Files کليک کرده و سپس مانند عکس گزينه C Source file رو انتخاب کنين.

    در پنجره باز شده اسمي دلخواه براي فايلتون تايپ کرده و سپس دکمه Finish رو کليک کنين تا يک محيط به اسم انتخابي براي تايپ کردن کدهاتون پديد بياد.
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  2. #2
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    جلسه دوم:نوشتن فرم کلی برنامه
    سلام
    تا اینجا نحوه ایجاد پروژه رو یاد گرفتیم حالا نوبت نوشتن یه برنامه ساده و همچنین آشنایی با برخی از قسمت های کامپایلر هست.
    در ابتدای کار باید مشخص کنیم که میکرومون چی هست و تمایل داریم از کدام کتابخانه ها و توابعشون استفاده کنیم.در روال کاریمون هست که یه چشمک زن رو در ابتدا طراحی کنیم.پس شروع می کنیم به کار
    ابتدا نوع تراشه رو مشخص می کنیم
    #include <p18f452.h>
    اگر فایل p18f452.h رو در پروژه ضمیمه کرده باشین می نویسیم
    #include “p18f452.h”
    اما چون روش کار دومی رو نگفتم پس از همون تعریف ابتدایی استفاده می کنیم.البته در نظر هم داشته باشین بدون اضافه کردن این خط کامپایلر خطایی به ما نمی ده چون در ابتدا در ساخت پروژه تراشه رو تعیین کردیم و کامپایلر الان گاه هست که از چه میکرویی می خواین استفاده کنین .پس دلیل ما از اضافه کردن این خط چی هست؟
    اگر برنامتون رو بخواین خطا یابی کنین ، به شخصی بدین یا در اینترنت گسترشش بدین بدون اینکه نوع تراشه و مشخصات رو بیان کنین شخص برنامه نویس با دیدن این خط می تونه به راحتی تشخیص موارد مذکور رو بده و همچنین اگر با ورژنهای پایین تر از MPLAB کار می کنین و کامپایلر C18 رو نصب کردین باعث می شه با نسخه پایین هم برنامتون بدون مشکلی با اضافه کردن این سورس فایل کار کنه
    برای تاخیر در چشمک زدن ما باید یه تاخیر در برناممون اضافه کنیم که بهترین کار استفاده از کتابخانه آماده delays.h هست پس اون هم اضافه می کنیم(استفاده از توابع این کتابخانه در جلسات آینده بررسی می شه)
    پس تا اینجا داریم

    #include <p18f452.h>
    #include <delays.h>
    حالا باید مشخص کنیم که فرکانس تراشه در چه حدی هست ؟ در اینجا چون این تراشه نوسان ساز داخلی نداره ما از یه کرستال خارجی که متصل به پایه 13 و 14 یا OSC1 و OSC2 هست استفاده می کنیم و مقدارش رو 4 مگاهرتز انتخاب می کنیم.
    روش کار به این صورت هست
    اگر فرکانس کاری بین 32 کیلو هرتز تا 200 کیلو هرتز هست مد LP
    اگر فرکانس کاری 200 کیلو هرتز هست مد LP یا XT
    اگر فرکانس کاری بین 200 کیلو هرتز تا 4مگاهرتز هست مد XT
    اگر فرکانس کاری 4 مگاهرتز هست مد XT یا HS
    و اگر فرکانس بیشتر از 4 مگاهرتز باشه باید دیگه مد HS رو انتخاب کنین.
    پس در این حالت ما می تونیم یا XT یا HS رو انتخاب کنیم که من HS رو انتخاب می کنم که اگر بعدا فرکانس رو بیشتر کردم نیاز نباشه مجددا این قسمت روتنظیم کنم.
    پس معلوم شد در کدوم مد نوسان ساز هستیم پس می نویسیم

    #include <p18f452.h>
    #include <delays.h>
    #pragma config OSC=HS
    این سه خط هم اضافه کنین
    #pragma config PWRT=ON
    این دستور باعث فعال سازی تایمر power-up می شه که یه تاخیر در ابتدای اعمال منبع تغذیه ایجاد می کنه تا CPU قبل از تثبت ولتاژ در حالت ریست باقی بمونه
    #pragma config BOR=OFF
    میکروها با توجه به اینکه برای اطمینان از عملکرد باید در سطح خاصی از ولتاژ قرار بگیرن این روشن و فعال کردن این بیت می تونین سطح ولتاژ رو تغییر بدین مثلا در این حالت که این بیت خاموش هست میکرو در صورتی که ولتاژش کمتر از 4.5 نیموده باشه کار می کنه و در صورت پایین امدن ریست می مونه تا ولتاژ از این مقدار بیشتر بشه(با روشن و تنظیم این بیت می شه سطح ولتاژ رو تا 1.8 ولت مقدار دهی کرد)
    #pragma config WDT=OFF
    میکرو هم مثل بقیه تراشه های برنامه پذیر در صورتی که در یک حلقه گیر کنه یا به علت نوسانات ولتاژی فرکانسی و .... هنگ کنه می تونه در مواقعی خطر آفرین باشه و دقت دستگاه و عملکردش رو زیر سوال ببره.برای این منظور در داخل تراشه یک تایمر به نام "سگ نگهبان" در نظر گرفتن که باید بعد از گذشت زمانی هر بار مقدار این تایمر رو صفر یا با اصطلاح ریست کنین و در صورت عدم چنین کاری میکرو در نظر می گیره که تراشه هنگ کرده و باعث می شه میکرو رو ریست کنه.این رو حالا فعلا خاموش می کنیم تا دردسر صفر کردن و تایمر رو در مراحل ابتدایی برنامه نویسی نداشته باشیم
    همونطوری هم که می دونیم در زبان برنامه نویسی C مهمترین تابع main هست که کامپایلر همیشه میکرو رو به این تابع برای اجرا فرامین اصلی هدایت می کنه پس تابع هم می نویسیم

    #include <p18f452.h>
    #include <delays.h>
    #pragma config OSC=HS
    #pragma config PWRT=ON
    #pragma config BOR=OFF
    #pragma config WDT=OFF

    Void main(void)
    {
    //Code
    }
    پس شکل کلی برنامه تا اینجا به این صورت شده است که باید در قسمت //code کدهای برناممون رو جایگزین کنیم



    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  3. #3
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    جلسه سوم:پیکربندی سخت افزار و روش پروگرم کردن تراشه
    وضعیت پایه های PIC18f452 به صورت زیر است

    برای راه اندازی اولیه تراشه باید چند تا نیاز تراشه رو برآورده کنین
    1-ولتاژ تغذیه آی سی
    2-نوسان ساز
    3-قرار دادن پایه MCLR در وضعیت منطقی مناسب
    برای شروع پس ابتدا پایه های 11 و 32 رو به مثبت منبع تغذیه مدار وصل می کنیم(5 ولت dc)
    پایه های 12 و 31 رو به GND مدار متصل می کنیم که اختلاف پتانسیل بین پایه های 11و12 و همچنین 32 و31 برابر 5 ولت بشه
    بر خلاف بعضی از تراشه های میکروکنترولر که با آزاد گذاشتن پایه Reset و با توجه به ساختار داخلی تراشه می تونه روشن بشه و فعالیت خودش رو آغار کنه(نمونه بارز AVR) حتما باید در میکروهای شرکت میکروچیپ پایه 1 میکرو یا همون MCLR رو توسط یه مقاومت به سطح 5 ولت PULLUP کنین و برای ریست کردن تراشه می بایست این پایه رو به زمین مدار متصل کرد.
    برای نوسان ساز هم از کریستال استفاده می کنیم که برای پایداری بیشتر نوسان از دو خازن که برای Bypass کردن استفاده می شه به دو پایه کریستال متصل می کنیم.این خازن ها هر چی بیشتر باشن پایداری کریستالتون بیشتر می شه اما به چه قیمت ؟ افزایش زمان بالا آمدن میکرو. به شخصه چک کردم با افزایش مقدار خازن تا حد نانو فاراد یا میکروفاراد تراشه یه جور اینقدر زمانش طولانی می شه که اصلا دیگه بالا نمی یاد.خازن ها مقدارشون برای بهترین وضعیت باید در بازه 15 تا 33 پیکوفاراد قرار داشته باشه.
    پس تا اینجا پیکربندی مدار به صورت زیر در می یاد

    یادتون باشه با برنامه proteus نمی تونم پایه های تغذیه مدار رو نشون بدم که به خوبی خودتون ببخشید

    حالا نوبت پروگرم کردن تراشه هست
    تراشه رو می شه به چندین روش پروگرم کردن
    1-از طریق پروتکل JTAG
    2-از طریق پروتکل خود میکروچیپ به صورت سریال
    3-از طریق بوت لودر که بعضی از تراشه های دارای USB , Ethernet , … می تونن برنامه ریزی بشن
    ما در اینجا چون وضعیت مالی دانشجویی کاربران رو نگاه می کنیم گزینه دوم مقرون به صرفه تر هست.پس تا اینجا همه کارهای که میکروچیپی بوده بیان از پروگرمر پیشنهادی خود میکروچیپ هم استفاده کنین یعنی PICKIT که یه نمونه در سایت توسط مدیر انجمن Sa3ID قرار داده شده
    http://www.eca.ir/forum2/index.php?topic=38944.0
    یا اینکه بیام برای سایت تبلیغ جمع کنم و بگم پروگرمر خود سایت ECA رو که آماده هست رو تهیه کنین(لینک این تبلیغ رو فعلا قرار نمی دم تا آقای بلورچیان بیان بگن هر چی از این تبلیغ من به فروش می رسه نصف نصف :rolleyes: )
    نمای برنامه پروگرمر به این صورت هست

    اگر تراشه روی پروگرمر وجود داشته باشه با اجرا کردن برنامه خودکار تراشه تشخیص داده می شه و جزئیات براتون نمایش داده می شه


    روش کار:
    برای پاک کردن محتویات تراشه بعد از شناسایی توسط برنامه می تونین دکمه Erase رو کلیک کنین
    برای پروگرم کردن تراشه بعد از شناسایی توسط برنامه و انتخاب فایل HEX توسط منوی
    File->import
    می تونین دکمه write رو کلیک کنین
    برای تشخیص اینکه برنامه تراشه دقیقا چیزی هست که روی کامپیوتر قرار داشته(همون فایل HEX) دکمه Verify رو کلیک کنین
    برای پروگرم کردن تراشه به صورت ICSP باید پایه PGD و PGC و MCLR و زمین مدار و میکرو رو به پایانه های پروگرمر به این نام متصل کنین و با اعمال ولتاژ راه اندازی میکرو نسبت به پروگرم کردن تراشه اقدام کنین.
    Baby.X\dist\default\production

    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  4. #4
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    جلسه چهارم:اولین پروژه ساخت چشمک زن و آشنایی با کتابخانه Delays
    در این جلسه قصد داریم آموزش ساخت یک چشمک زن رو توسط میکرو دنبال کنیم.همانطوری که می دونیم تراشه سرعتی بیش از 1 مگاهرتز داره(فرکانس ورودی تقسیم بر 4 فرکانس تراشه رو مشخص می کنه) یعنی می تونین یه LED متصل به میکرو رو با فرکانس 500 کیلوهرتز در سطح صفر و یک قرار بدین(در عمل با اسکوپ که چک کردم با توجه به سربار فایل هگز خروجی و تاخیر حلقه ها نهایت چشمک زدن به 250 کیلوهرتز می رسه) اما چون این فرکانس برای چشم ما قابل رویت نیست باید به نحوی یه تاخیر در برنامه ایجاد کنیم که دقیقا کاری هست که دستورات کتابخانه delays.h انجام می دن
    توابع این کتابخانه:
    Delay1TCY
    Delay10TCYx
    Delay100TCYx
    Delay1KTCYx
    Delay10KTCYx
    آرگومان ورودی این توابع به جز Delay1TCY از نوع unsigned char unit هست(تابع مذکور اصلا ارگومان ورودی نداره) یعنی نهایت عددی که می تونین بفرستین به این تابع 255 هست خوب بیان یکم محاسبه کنیم
    فرکانس ورودی میکرو 4 مگاهرتز هست و از مد HS استفاده کردیم بنابراین میکرو فرکانس ورودی رو تقسیم بر 4 می کنه و فرکانس قسمت های مختلف رو ضریبی از این فرکانس یا همین مقدار قرار می ده یعنی 1 مگاهرتز . و از جهتی که هر دستور با در نظر گرفتن مسیر داده ای بین CPU و ROM که 16 بیتی هست هر دستور در یک سیکل ماشین انجام می شه یعنی 1 تقسیم بر 1 مگاهرتز به عبارت دیگه 1 میکرو ثانیه.
    تابع Delay1TCY یه تاخیر یک سیکل ماشینی به وجود می یاره یعنی 1 میکرو ثانیه
    تابع Delay10TCY یه تاخیر ده سیکل ماشینی به وجود می یاره یعنی 10 میکرو ثانیه و با مقدار دهی آرگومان تابع می تونه آرگومان * 10 میکرو ثانیه تاخیر ایجاد کنه
    تابع Delay100TCY یه تاخیر صد سیکل ماشینی به وجود می یاره یعنی 100 میکرو ثانیه و با مقدار دهی آرگومان تابع می تونه آرگومان * 100 میکرو ثانیه تاخیر ایجاد کنه
    تابع Delay1KTCYx یه تاخیر هزار سیکل ماشینی به وجود می یاره یعنی 1000 میکرو ثانیه و با مقدار دهی آرگومان تابع می تونه آرگومان * 1000 میکرو ثانیه تاخیر ایجاد کنه
    تابع Delay10KTCYx یه تاخیر ده هزار سیکل ماشینی به وجود می یاره یعنی 10000 میکرو ثانیه و با مقدار دهی آرگومان تابع می تونه آرگومان * 10000 میکرو ثانیه تاخیر ایجاد کنه
    تابع آخر می تونه به ازای هر عدد تابع 10 میلی ثانیه تاخیر ایجاد کنه و با مقدار دهی آرگومان تابع با مقدار 10 این تاخیر رو می تونیم به 100 میلی ثانیه برسونیم
    Delay10KTCYx(10);
    تا اینجا با تاخیرها و نحوه استفادشون رو یاد گرفتیم حالا می مونه تعریف ورودی و خروجی پورتها
    در جلسه قبل نما و اسم هر پایه رو توسط دیتاشیت فهمیدیم حالا برای اینکه به صورت ورودی و خروجی تعریفشون کنیم باید چی کار کنیم.
    هر پورت سه ریجستر داره(البته پورت ها می تونن با توجه به قابلیت هاشون ریجستر های بیشتری داشته باشن اما این سه رجیستر عمومیت داره)
    1-PORTx
    2-LATx
    3-TRISx
    که به جای X می تونین اسم پورت رو قرار بدین مثلا با توجه به اینکه پین شماره 21 مربوط به پورت D هست بنویسیم
    PORTD
    LATD
    TRISD
    در این جلسه ما با دو تا از این رجیسترها کار می کنیم و سومی رو در جلسات بعد مورد بررسی قرار می دیم
    با صفر کردن هر یک از بیت های رجیستر TRIS می تونیم اون پین رو به صورت خروجی تعریف کنیم و با یک کردن اون بیت اون پین رو به صورت ورودی معرفی کنیم
    برای انتقال داده از میکرو به بیرون و از بیرون به داخل میکرو از رجیستر PORT استفاده می کنیم.
    در زبان برنامه نویسی C میکروچیپ برای دسترسی به یک پین باید به صورت زیر عمل کنیم
    PORTXbits.bitnames
    که به عنوان مثال برای دسترسی به بین RD2 از ریجستر PORTD می نویسیم
    PORTDbits.RD2
    شکل کلی برنامه رو باز فراخوانی می کنیم و تغییرات لازم رو اعمال می کنیم

    کد:
    #include <p18f452.h>
    #include <delays.h>
    #pragma config OSC=HS
    #pragma config PWRT=ON
    #pragma config BOR=OFF
    #pragma config WDT=OFF
    Void main(void)
    {
    TRISDbits.RD2=0;
    While(1){
    PORTDbits.RD2=0;
    Delay10KTCYx(10);
    PORTDbits.RD2=1;
    Delay10KTCYx(10);
    
    }
    }
    تحلیل برنامه:
    قسمت های اولیه یا بدنه برنامه در جلسات قبلی توضیح داده شده حالا بخش های جدید
    TRISDbits.RD2=0;
    از پورت D رجیستر پین RD2 رو به صورت خروجی تعریف کردیم
    While(1){
    یک حلقه با شرط 1 ایجاد کردیم که از اول تا ابد مقدار داخل while همیشه با توجه به شرط یک بودن اجرا بشه
    PORTDbits.RD2=0;
    مقدار پین RD2 از پورت D رو صفر می کنیم یعنی خروجی میکرو از RD2 صفر می شه
    Delay10KTCYx(10);
    100 میلی ثانیه تاخیر ایجاد می کنیم
    PORTDbits.RD2=1;
    مقدار پین RD2 از پورت D رو یک می کنیم یعنی خروجی میکرو از RD2 یک می شه
    Delay10KTCYx(10);
    100 میلی ثانیه تاخیر ایجاد می کنیم

    }
    شماتیک برنامه هم به این صورت هست

    lکامپایل کردن برنامه:
    مطابق شکل زیر از گزینه
    Run->Build Main Project

    رو اجرا می کنیم و در صورت عدم هیچ گونه خطایی پیغام زیر رو در پایین پنجره کد نویسی مشاهده می کنیم

    فایل هگز رو روی تراشه بریزین و تست کنین ، اولین برنامه با موفقیت ساخته شد تبریک

    مشق شب:
    برنامه ای مطابق برنامه این جلسه بنویسین اما حالا پورت RB5 رو چشمک زن کنین(نکته داره حتما انجام بدین)

    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  5. #5
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    سلام
    امیدوارم که استفاده کنین
    مشق شب رو روی تمامی پین ها انجام بدین و نتایج رو همین جا قرار بدین تا به کمک هم مشکلات رو بررسی و حلشون کنیم و همچنین ادامه بحث رو دنبال کنیم.لطفا همه پین ها رو چک کنین و برنامه هاتون هم قرار بدین.چون اینجوری گفتن بدون در نظر نگرفتن نکات ریز باعث دل زدگی از برنامه نویسی میکرو و این تراشه های قدرتمند PIC در حین کار می شه پس حتما با انجام این تمرین ها هم خودتون رو تست کنین هم نکات جدید تر رو یاد بگرین و ان شالله تا آخر ماه رمضان بهترین و کاملترین آموزش PIC و میکروکنترولر رو در سایت شاهد باشیم
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  6. #6
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    سلام
    خواهش می کنم
    حتما چنین کاری رو انجام می دم ، از بابت عکس ها نگرانی نداشته باشین روی قوی ترین سرور و همچنین بدون تاریخ انقضا ریخته شده ان.
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  7. #7
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    جلسه پنجم:آموزش مختصر زبان C

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

    بعضی از پرکاربرد ترین متغییرهای که در زبان C میکرو چیپ می تونید تعریف کنین در جدول بالا آورده شدن همونطوری که می دونین با توجه به میکرو کنترولر 8 بیتی بهتر هست تا حد امکان از تعریف متغییر های با تعداد بیش از 8 بیت تا حد امکان پرهیز کنین و در صورتی که واقعا نیاز دارین از آنها استفاده کنین .نحوه تعریف یک متغییر هم به صورت زیر هست
    Datatype Variablename;
    مثال
    Int baby;
    Baby=0;
    در تعریف بالا متغییر baby از نوع int تعریف شده است و نهایتا می تونه اعداد در بازه -32768 تا 32767 رو در خود جا بده که در خط بعدی همون جوری که می بینین مقدار اولیه 0 به اون تخصیص داده شده است
    نکته:حتما سعی کنید بعد از تعریف هر متغییر در اولین فرصت متغییر رو با مقدار اولیه پر کنین چون در غیر اینصورت خود کامپایلر MPLAB اعدادی رو بهش اختصاص می ده که مشکلاتی رو می تونه پدید بیاره(به شخصه اذیت شدم شما خودتون رو اذیت نکنین)
    عملگرهای بیتی:
    در درس مدارهای منطقی با عملگرهای منطقی آشنا شدیم حالا سعی می کنیم از اینها در زبان برنامه نویسی C بهره بجوییم
    عملگر نماد در زبان C

    مثال:
    کد:
    Int z;
    Z=8 & 1;
    در دستور بالا دو عدد 8 و 1 با هم and بیتی می شن و مقدار نهایی Z برابر با 0

    کد:
    Int z;
    Z=8 | 1;
    در دستور بالا دو عدد 8 و 1 با هم or بیتی می شن و مقدار نهایی Z برابر با 9


    کد:
    Unsigned char z;
    Z=254;
    Z=~z;
    در دستور بالا ابتدا مقدار Z با 254 مقدار دهی می شه و نهایتا با معکوس کردن صفرها به یک و یکها به صفر مقدار نهاییت Z برابر با 1 خواهد بود

    عملگرهای شرطی:
    == مساوی بودن
    =< بزرگتر مساوی بودن
    => کوچکتری مساوی بودن
    > بزرگتر بودن
    > کوچکتر بودن
    != نامساوی

    از این عملگرها در دستورات if ، حلقه های تکرار و شرطهای برقراری یک تابع مورد استفاده قرار می گیرن که در ادامه با معرفی هر بخش نحوه استفاده از آنها هم یاد خواهیم گرفت

    دستور if:
    با این دستور می توان اگرهایی رو در برنامه ایجاد کرد که با برقرار بودن شرط کدها در محدوده بلاک ها(بین }{ رو بلاک می گویند) رو به اجرا در آورد.
    Void main(void){
    TRISB=0xff;
    در این دستور PORTB به عنوان ورودی تعیین شده است
    While(1){
    If(PORTB==100){
    در صورتی که مقدار PORTB برابر با 100 باشه
    PORTC=0x0;
    مقدار PORTC برابر با 0 بشه
    }
    Else
    در غیر اینصورت
    {
    PORTC=0xff;
    پورت PORTC=0xff بشه
    }
    }
    }
    حالا اگر بخواین بگین شرط رو به عبارت "اگر PORTB بزرگتر از 150 شد " تغییر بدیم باید چی کار کنیم؟
    بله باید
    If(PORTB==100){
    به
    If(PORTB>100){
    تغییر پیدا کنه

    یادتون هم باشه هر دستور if حتما نباید else داشته باشه یعنی می تونین قسمت
    else
    {
    //code
    }

    اگر احتیاج ندارین رو ننویسین و تنها با همون بلاک اول کار خودتون رو انجام بدین
    دستور for:
    فکر کنین بخواین اعداد یک تا صد رو روی ال سی دی پروژه اتون بشمارین و نشون بدین یه روش اینه که خودتون بنویسین
    کد:
    Writelcd(“1”);
    Delay1KTCYx(100);
    Writelcd(“2”);
    Delay1KTCYx(100);
    
    Writelcd(“3”);
    Delay1KTCYx(100);
    ..
    …
    …
    Writelcd(“100”);
    Delay1KTCYx(100);

    حالا اگر خواستین فقط اعداد زوج رو نشون بدین اونم در بازه 0 تا 1000 دیگه چی کار می کنین؟
    اینجوری که مشاهده می کنین به مراتب برنامه نویسی سخت تر و فهم و خطایابیش مشکل می شه و حتی پیدا کردن کوچکترین خطایی می تونه به ساعتها بیانجامد.برای این منظور ما از حلقه ها استفاده می کنیم که یکی از آنها for هست.عبارت کلی for به صورت زیر هست
    کد:
    For(variable=first value;condition;command)
    {
    //code
    }
    در قسمت variable=first value یک متغییر رو با مقدار اولیه پر می کنین و در قسمت condition شرطی رو می نویسن تا برقرا بودن آن شرط اجرا بشه و در قسمت Command یک دستور دلخواه که اکثرا افزایش و کاهش مقدار متغییر اولیه هست رو قرار می دن .در دستور for ابتدا متغییری با مقداری پر می شه و سپس در صورت برقرار بودن شرط یکبار بلاک اجرا می شود و سپس متغییر یا کاهش یا افزایش پیدا می کنه و سپس با برقرار بودن شرط بلاک اجرا می شه تا نهایت شرط مقتضی بشه و از این دستور و به طور کل بلاک خارج بشیم.برنامه قبلی رو به این صورت می توان بازنویسی کرد
    کد:
    Int x;
    For(x=1;x<=100;x++){
    Writelcd(“100”);
    Delay1KTCYx(100);
    }
    دستورات و قوانین زیاد دیگه ای در زبان برنامه نویسی C هست که پیشنهاد می کنم به تهیه کتاب مناسبی در زمینه C قدرت خودتون رو افزایش و دید بهتری نسبت به برنامه ریزی میکرو و دیگر مقدمات اولیه میکرو داشته باشین
    بازم شرمنده که این بحث رو نمی تونم بیشتر از این تشریح کنم چون خودش می تونه یه کلاس جدید باشه برای آموزش.

    سوالی بود در خدمتم
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  8. #8
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    جلسه ششم:ارتباط سریال RS232
    در این جلسه نحوه برقراری میکرو با دیگر ادوات به صورت سریال RS232 رو از پیش چشم می گذرانیم
    در خانوده 18f ریجیستری تحت عنوان TXSTA داریم که در هنگام ارسال وظیفه تعیین و پیکربندی مقادیر اولیه ارتباط سریال رو بر عهده دارد
    مطابق دیتاشیت هر یک از بیت ها وظیفه خاصی رو دارن که در جدول زیر درج شدن

    ارتباط ما سه سیمه(زمین ، سیم ارسال ، سیم دریافت) GND و TXو RX و به صورت آسنکرون (ناهماهنگ خواهد بود)، 8 بیتی بدون بیت پریتی ، ، یک بیت پایان و بادریت 4800 خواهد بود که در این جلسه هم پیکربندی پر سرعت و کم سرعت این پورت رو مرور می کنیم.بنابراین با توجه به توضیحات پایین عکس ریجیستر رو در مد کم سرعت به صورت زیر مقدار دهی می کنیم


    بنابراین به مقدار هگز خواهیم داشت 20 ، پس همین حالا رجیستر TXSTA رو با مقدار 20 هگزادسیمال پر می کنیم یعنی
    TXSTA=0x20;
    مرحله بعدی تعیین بادریت ارسال و دریافت ارتباط هست.برای این منظور ریجستری که باید مقدار دهی شود ریجستر SPBRG هست.نحوه عدد گذاری این متغییر هم با فرمول زیر قابل محاسبه هست.

    که FOSC برابر فرکانس ورودی میکرو (که در اینجا 4 مگاهرتز هست)
    Desired Baud Rate بادریت دلخواه
    به عنوان مثال
    برای بادریت 4800 خواهیم داشت x=12
    برای بادریت 2400 خواهیم داشت x=25
    بنابراین x مقدار ریجستر SPBRG خواهد بود
    تا اینجا همه کارهای لازم برای تبادل صحیح داده ها رو انجام دادیم و تنها کاری که برای فعال سازی ارسال و دریافت باید انجام بدهیم یک کردن بیت SPEN در ریجیستر RCSTA هست. که با دستور زیر آن هم انجام می دهیم
    RCSTAbits.SPEN=1;
    تا ایجا پس تمامی تنظیمات و کارهای ابتدایی رو انجام دادیم و تنها مونده ارسال داده به سمت خارج، برای این منظور ریجستر دیگری به نام TXREG که با بایت مورد نظر پر می شود و بعد از آن ارسال می گردد که برای اطمینان از خروج کامل بایت می توان بیت TXIF از ریجیستر PIR1 چک کنیم تا در صورت خروج کامل داده (بایت)، این بیت یک می شود(البته در بیشتر موارد به جای چک کردن این بیت تاخیری به اندازه 16 برابر اندازه ارسال یک بیت در باد ریت ایجاد می کنیم که مطمئن باشیم بایت ارسال شده است(حالا چرا 16 تا ؟ 8 تا بیت ارسالی ، 2 بیت شروع و پایان ، 1 بیت پریتی ، و 2-3 تا بیت احتیاط زمانی)
    پس برنامه تا اینجا به صورت زیر در می آید
    کد:
    #include<p18f452.h>
    #include<delays.h>
    
    #pragma config OSC=HS
    #pragma config DEBUG=OFF
    #pragma config WDT=OFF
    #pragma config BOR=OFF
    #pragma config LVP=OFF
    #pragma config PWRT=ON
    
     void main(){
     TXSTA=0x20;
     SPBRG=12;
     RCSTAbits.SPEN=1;
    
     while(1){
          
     }
     }
    حالا برای ارسال کارکتر A خواهیم داشت
    کد:
    #include<p18f452.h>
    #include<delays.h>
    
    #pragma config OSC=HS
    #pragma config DEBUG=OFF
    #pragma config WDT=OFF
    #pragma config BOR=OFF
    #pragma config LVP=OFF
    #pragma config PWRT=ON
    
     void main(){
     TXSTA=0x20;
     SPBRG=12;
     RCSTAbits.SPEN=1;
    
     while(1){
       TXREG='A';
       Delay10KTCYx(100);
        
     }
     }
    برای ارسال یک رشته هم می تونین به روشهای مختلفی عمل کنیم که نمونه رو در زیر می بینین
    کد:
    #include<p18f452.h>
    #include<delays.h>
    
    #pragma config OSC=HS
    #pragma config DEBUG=OFF
    #pragma config WDT=OFF
    #pragma config BOR=OFF
    #pragma config LVP=OFF
    #pragma config PWRT=ON
    
     void main(){
       unsigned char msg[]="Hello World";
       unsigned char i;
     TXSTA=0x20;
     SPBRG=12;
     RCSTAbits.SPEN=1;
    
     while(1){
       for(i=0;i<11;i++){
       TXREG=msg[i];
       Delay1KTCYx(10);
       }
       TXREG=10;
      Delay1KTCYx(1);
       TXREG=13;
       Delay10KTCYx(100);
        
     }
     }
    حالا طبق تجربه ای تلخ که داشتم نتونستم بادریت 9600 رو تحت فرکانس 4 مگاهرتز تهیه کنم جالبیش به این هست که در دیتاشیت نوشته می شه و از چند متخصص خارجی هم پرسیدم انکار نکردم که نمی شه اما ما هر کاری کردیم که نشد تنها راه برای راه اندازی بادریت 9600 با فرکانس 4 مگاهرتز استفاده از مد سرعتی سریال هست(اگر شما تونستین و فهمیدن مشکل از کجاست اینجا بگین تا هم من و بقیه دوستان استفاده کنیم) که برای این منظور باید بیت BRGH رو در ریجستر TXSTA برابر یک کنیم که در این حالت به جای عدد 64 در فرمول محاسبه SPBRG ، باید فرکانس ورودی رو بر 16 تقسیم کنیم که یعنی سرعتی 4 برابر قبل.در حالت BRGH=1 مقدار SPBRG برای بادریت های مختلف به صورت مثال به شرح زیر هست
    برای 4800 خواهیم داشت 51
    برای 9600 خواهیم داشت 25
    بنابراین می تونیم برنامه بالا رو برای 9600 به صورت زیر تصحیح کنیم
    کد:
    #include<p18f452.h>
    #include<delays.h>
    
    #pragma config OSC=HS
    #pragma config DEBUG=OFF
    #pragma config WDT=OFF
    #pragma config BOR=OFF
    #pragma config LVP=OFF
    #pragma config PWRT=ON
    
     void main(){
       unsigned char msg[]="Hello World";
       unsigned char i;
     TXSTA=0x20;
     SPBRG=25;
    TXSTAbits.BRGH=1;
     RCSTAbits.SPEN=1;
    
     while(1){
       for(i=0;i<11;i++){
       TXREG=msg[i];
       Delay1KTCYx(10);
       }
       TXREG=10;
      Delay1KTCYx(1);
       TXREG=13;
       Delay10KTCYx(100);
        
     }
     }
    حالت دریافت:

    تا اینجا دیگه مشکلات و برنامه نویسی ها دیگه براتون سهل و آسون شده و برای دریافت هم با دو تا تنظیم ساده می تونین برنامه رو گیرنده کنین.برای این منظور باید دست به دامن ریجستر RCSTA بشیم این ریجستر به صورت زیر هست

    برای تعریف مد ، 9600 بادریت ، داده 8 بیتی ، یک بیت پایان ، مد آسنکرون مقدار ریجستر RCSTA رو به صورت زیر انتخاب می کنیم


    بنابراین مقدار هگزادسیمال این ریجستر خواهد بود 90
    حالا تعیین مقدار بادریت مدار که همانند توضیحات بالا برابر خواهد بود با 25 (در مد پرسرعت)
    برای دریافت بایت های رسیده باید ابتدا مقدار بیت RCIF در ریجستر PIR1 رو چک کنیم که در صورت یک بودن یک بایت در متغییر RCREG قرار گرفته هست و باید به صورت آن رو بخونیم تا داده از دست نرود پس نمای کلی برنامه برابر خواهد بود با
    کد:
    #include<p18f452.h>
    #include<delays.h>
    
    #pragma config OSC=HS
    #pragma config DEBUG=OFF
    #pragma config WDT=OFF
    #pragma config BOR=OFF
    #pragma config LVP=OFF
    #pragma config PWRT=ON
    
     void main(){
       unsigned char msg[]="Hello World";
       unsigned char i;
       unsigned char x;
       RCSTA=0x90;
     TXSTA=0x20;
     TXSTAbits.BRGH=1;
     SPBRG=25;
     RCSTAbits.SPEN=1;
    
     while(1){
       while(PIR1bits.RCIF==0);
       x=RCREG;
       for(i=0;i<11;i++){
       TXREG=msg[i];
       Delay1KTCYx(10);
       }
         TXREG=x;
       Delay1KTCYx(10);
       TXREG=10;
      Delay1KTCYx(1);
       TXREG=13;
       Delay10KTCYx(100);
        
     }
     }

    در برنامه بالا ، میکرو منتظر می ماند تا کاربر یک کارکتر رو تایپ کند و سپس عبارت Hello world رو نمایش می دهد و سپس بعد از آن کارکتر تایپی کاربر رو نیز چاپ می کند و باز منتظر دریافت کارکتر دیگر می ماند.
    برای ارتباط دو میکرو به هم به وسلیه RS232 شما می تونید پایه TX میکرو اول رو به RX میکرو دوم و RX میکرو اول رو به TX میکرو دوم وصل کنین.
    برای ارتباط میکرو با کامپیوتر از طریق پورت RS232 با توجه به عدم یکسان بودن سطح منطقی بیت های ارسالی و دریافتی باید از تراشه max232 بهره بگیرید که شمای اتصال به کامپیوتر و میکرو به صورت زیر است

    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  9. #9
    2008/10/29
    2,098
    203

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    جلسه هفتم:راه اندازی LCD کارکتری
    از جهتی که در اکثر پروژه ها گویا lcd همه گیر شده است و بیشترین مصرف رو بعد از میکرو کنترولر مبتی بر بردهای embedded system بر روی برد داره این جلسه رو به راه اندازی این قطعه اختصاص می دهیم.
    خود میکروچیپ و افراد بسیاری کتابخانه های متفاوتی برای راه اندازی lcd کارکتری نوشته اند که در این میان توابع میکروچیپ از تنوع و قدرت بیشتری برخوردار است اما این کتابخانه حجیم به دلیل گستردگی فایل ها و طولانی بودن سورس کد کوچکترین تغییری در کتابخانه می تونه به ساعتها وقت بیانجامد.برای راحتی شما کتابخانه رو نوشتم که در کمتر از 5 دقیقه می تونین به پروژه اتون اضافه کنین و به راحتی از توابع اون استفاده کنین.این کتابخانه بر روی فرکانس کاری بین 4 مگاهرتز الی 16 مگاهرتز که اکثر میکروها رو دوستان در این بازه راه اندازی می کنن شامل می شود و در صورتی که در فرکانس های بالاتر دستورات با مشکل در اجرا برخورد کردن می تواند با مراجعه به کتابخانه و پیدا کردن تابع و افزایش زمان Delay تابع رو تصحیح و مجددا آن را به کار بگیرید.
    توابع کتابخانه:
    Lcdinit: برای راه اندازی و آماده سازی lcd باید در ابتدای برنامه به کار گرفته شود
    Cls:پاک کردن صفحه نمایش
    Cursoron:روشن کردن کرسر ال سی دی
    Cursoroff:خاموش کردن کرسر ال سی دی
    Displayon:روشن کردن صفحه نمایش
    Displayoff:خاموش کردن صفحه نمایش
    Shiftleft:شیفت دادن کل صفحه نمایش به سمت چپ
    Shiftright:شیفت دادن کل صفحه نمایش به سمت راست
    Locate: با دریافت عدد سطر و ستون در مکان مورد نظر مکان نما رو برای چاپ کارکتر قرار می دهد
    Lcdprint:چاپ کردن آرایه ای به حجم ماکزیمم 16 کارکتر در هر سطر
    Writedata:نوشتن یک کارکتر به وسیله مقدار اسکی کارکتر
    Writecommand:نوشتن دستورات مربوط به ال سی دی
    همانطور که می بینین این کتابخانه ها با توجه به داشتن lcd 16*2 نوشتم که بر روی ال سی دیهای 16*1 , 16*2 به خوبی کار می کنه و برای ال سی دیهای دیگر تنها فقط باید چند تا از مقادیر عوض بشن.
    حالا شروع می کنیم برای کار با این کتابخونه
    ابتدا مداری مثل زیر ببندین

    یادتون باشه که پین d0 تا d7 رو دقیقا به پین های 0 تا 7 پورت میکرو مورد نظر خودتون وصل کنین
    و دو پین دیگه از lcd یعنی RS , E رو به هر پین دلخواه دیگری وصل کنین
    کتابخانه ضممیه شده رو دانلود کنین و سپس با راست کلیک کردن بر روی فولدر Header Files و انتخاب گزینه Add existing item
    فایل های lcd.h و delay.h رو به پروژه اضافه کنین.


    کتابخانه ها:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    حالا در فایل سورس اصلی (جایی که خودتون برنامتون رو می نویسین) این سه عبارت رو اضافه کنین

    #include <stdio.h>
    #include "delays.h"
    #include "LCD.h"

    حالا برای تغییر مشخصات فایل کتابخانه مطابق با پیکربندی پورت ها بر روی فولدر Header Files کلیک کرده و سپس فایل lcd.h رو انتخاب کنین تا پنجره ادیتور باز بشه

    #define rs PORTDbits.RD0
    #define en PORTDbits.RD1
    #define rsts TRISDbits.RD0
    #define ents TRISDbits.RD1
    #define datas LATB
    #define datab TRISB
    در خط اول باید بگین که پایه rs ال سی دی به چه پینی متصل هست
    در خط دو برای En ال سی دی
    در خط سوم و چهارم باز باید ریجستر TRIS رو برای همون دو پورت تعریف کنین یعنی مقادیر پورت و پین یکی هستن تنها در ریجستر PORT و TRIS متفاوت هستن
    در خط پنجم باید بگین که پورت دیتا که وصل به پایه d0 تا d7 هست کدوم پین هست
    در خط ششم هم بگین باز کدوم TRIS مربوط به پورت مورد نظرتون هست که باز می شه همون نام پورت خط پنجم
    حالا چندین خط پایین تر بیان تا به عبارت زیر برسین
    تبریک ، پیکربندی هم تموم شد
    حالا برای برنامه نویسی
    ابتدا ی برنامه اصلی عبارت زیر رو بنویسین

    lcdinit();

    به همین راحتی هم ال سی دی آماده سازی شد
    حالا برای پاک کردن صفحه نمایش می نویسیم

    cls();

    برای چاپ یک کارکتر می نویسیم(مثلا کارکتر A)

    writedata('A'

    برای نوشتن یک عبارت روی ال سی دی ، یک آرایه 16 تایی از نوع unsigned char تعریف کنین و توسط دستور sprint عبارت خودتون رو بهش بدین به صورت زیر

    sprintf(msg,"Hello"
    lcdprint(msg);

    اگر بخواین مقدار عددی یه متغییر هم چاپ کنین می تونین بنویسین

    sprintf(msg,"Hello %d",i);
    lcdprint(msg);

    برای چاپ کردن کارکتر در مکان خاصی توسط دستور locate می تونین مکان قرار گرفتن کارکتر رو تعیین کنین مثلا برای رفتن به سطر دوم و مکان 5 ام می نویسیم

    locate(2,5);

    نمونه برنامه زیر رو ببینین که در خط اول چاپ می کنه Hello world و در خط بعدی یک متغییر رو هر یک ثانیه یکبار یکی افزایش می ده و در وسط خط دوم نمایش می ده

    #include<p18f452.h>
    #include <stdio.h>
    #include "delays.h"
    #include "LCD.h"

    #pragma config OSC=HS
    #pragma config DEBUG=OFF
    #pragma config WDT=OFF
    #pragma config BOR=OFF
    #pragma config LVP=OFF
    #pragma config PWRT=ON

    void main(){
    unsigned char msg[16];
    unsigned char i;
    lcdinit();
    i=0;
    while(1){
    i=i+1;
    cls();
    locate(1,4);
    sprintf(msg,"Hello world"
    lcdprint(msg);
    locate(2,8);
    sprintf(msg,"%d",i);
    lcdprint(msg);
    Delay10KTCYx(100);

    }
    }
    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.
  10. #10
    2008/01/23
    تهران
    440
    5

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    بسیار جامع و کامل
    واقعا ممنون از محبتت

    دستوری داره که توی خروجی مثلا به مدت 500 ms یک پالس با فرکانس خاصی که بخواهیم بده ؟
    همینطور دستوری هست که عرض پالس را اندازه بگیره یا فرکانس را ؟
    همه دوست دارند به بهشت بروند اما جالب اینجاست کسی دوست ندارد بمیرد
    کانت
صفحه 1 از 20 1234567891011 ... آخرین
نمایش نتایج: از 1 به 10 از 191

موضوعات مشابه

  1. ارتباط بين usb و ميکروکنترولر
    توسط رحمتي در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2014/06/29, 08:21
  2. آموزش نصب MPLAB X
    توسط hfhossein در انجمن میکروکنترلرهای PIC
    پاسخ: 14
    آخرين نوشته: 2013/08/25, 18:03
  3. آموزش کامپایلر pic-mplab-c32
    توسط uvwxyz در انجمن میکروکنترلرهای PIC
    پاسخ: 4
    آخرين نوشته: 2012/08/31, 13:19
  4. آموزش درايو ميکرواستپ با ميکروکنترولر
    توسط hamidmicro در انجمن رباتيك و مكاترونيك
    پاسخ: 40
    آخرين نوشته: 2012/01/30, 15:25
  5. آموزش MPLAB
    توسط mjs1990s در انجمن میکروکنترلرهای PIC
    پاسخ: 4
    آخرين نوشته: 2011/07/15, 17:42

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •