دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
صفحه 3 از 5 نخستنخست 12345 آخرینآخرین
نمایش نتایج: از شماره 21 تا 30 , از مجموع 43

موضوع: کلاس آموزش زبان c و نرم افزار کدویژن

  1. #21
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    نقل قول نوشته اصلی توسط مخفی نمایش پست ها
    #include <stdio.h>
    #include <delay.h>
    int main()
    {
    while{
    led=1;
    delay_ms(1000);
    led=0;
    delay_ms(1000);
    }
    returno;
    }
    خب برای شروع بد نیست
    فقط چنتا نکته وجود داره
    1- تو برنامه ریزی ای سی فایل stdio وجود نداره
    2- تابع به صورت viod نوشته میشه
    3- return نداریم تو ای سی
    4- از همه مهمتر اینکه شما متغیرتو تعریف نکردی
    اینجا حتما برنامه ارور میده که متغیر led تعریف نشده هست
    5- نکته اخر هم اینکه قرار بود دو تا led رو خلاف هم روشن و خاموش کنیم
    حالا من درستش رو میگم شما اصلاح کن
    ویرایش توسط hadi elec : 7th February 2012 در ساعت 09:30 PM

  2. 4 کاربر از پست مفید hadi elec سپاس کرده اند .


  3. #22
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    نقل قول نوشته اصلی توسط hadi elec نمایش پست ها
    خب الان اطلاعاتمون برای برامه نویسی خوبه
    خب میخوایم شروع کنیم
    الان برنامه نویسی رو با همین اطلاعات موجود انجام میذیم و تنظیمات میکرو و کد ویژن رو کاری نداریم
    ما اول باید برنامه نویسی یاد بگیریم بعد بریم سراغ تنظیمات

    ما یه برنامه میخوایم بنویسیم که یه led با فرکانس 1 هرتز چشمک بزنه و یک led هم همواره بر خلاف led اولی عمل کنه و با اون not باشه
    نظرتون چیه؟
    ایده بدید تا ببینیم چنتا ایده میشه جمع کرد
    برنامه رو کامل از اول تا اخر بنویسید
    اینو میتونید به عنوان تمرین هم در نظر داشته باشید
    این اولین نوع برنامه هست با یه متغیر کمکی
    #include<mega16.h>
    #include<delay.h>
    bit x=0;
    void main(){
    while(){

    led1=x;
    x=!x;
    led2=x;
    delay_ms(1000);

    {{
    این دومین نوع برنامه بدون متغیر کمکی و با استفاده کمی پیچیده ای از منطق برنامه و دستورات

    #include<mega16.h>
    #include<delay.h>
    void main(){
    while(){

    led1=!led1;
    led2=!led1;
    delay_ms(1000);

    {{

    خی اینم سومین نوع نوشتن هست که ساده ترین هست


    #include<mega16.h>
    #include<delay.h>
    void main(){
    while(){

    led1=1;
    led2=0;
    delay_ms(1000);
    led1=0;
    led2=1
    delay_ms(1000);
    {{

    اینجا چون led متغیر نیست و در واقع یه پورت خروجی از میکرو هست نمیشه به صورت متغیر تعریفش کرد بعدا درباره تعریف پورت به عنوان خروجی و یا ورودی صحبت میکنیم

  4. 6 کاربر از پست مفید hadi elec سپاس کرده اند .


  5. #23
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    این برنامه ها رو از نظر تعداد خطوط با هم مقایشه کنید
    فکر میکنید تو کدوم دستمون باز تره؟
    شما فرض کنید این قسمت ممکنه 10 بار توی یه برنامه پیچیده تر بخواد به انواع مختلف تجرا بشه
    کدوم بیشتر قابلیت تغییر داره؟
    خب مسلما اولی
    چون درواقع ما led هامون به وسیله یه منغیر دارن کنترل میشن نه بصورت مستقیم
    در نظر داشته باشید که این متغیر میتونه خروجی یه قسمت دیگه ای از برنامه باشه
    (بصورت پیش فرض ما این برنامه ها رو برای ای سی ATMEGA16 از سری میکروی های AVR نوشتیم)




    اگر هم صرفا هدف روشن خاموش شدن مهم باشه برامون برنامه دومی ایده آل هست
    سومی فقط جنبه اموزشی و تفهیم منطق و چگونگی عمل برنامه برای روشن و خاموش کردن LED ها داره
    ویرایش توسط hadi elec : 7th February 2012 در ساعت 09:47 PM

  6. 4 کاربر از پست مفید hadi elec سپاس کرده اند .


  7. #24
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    تحلیل برنامه ها بصورت خط به خط:
    (خیلی خیلی مهم)

    برنامه اول

    #include<mega16.h>

    #include<delay.h>

    bit x=0;

    void main(){

    while(){

    led1=x;

    x=!x;

    led2=x;

    delay_ms(1000
    );


    {{

    خب اینجا ما به نرم افزار میگیم که میخوایم از at,ega16 استفاده کنیم تا خودش تنظیمات خاصی رو اتومات انجام بده

    اینجا به برنامه میگیم که میخواییم از تابع تاخیری استفاده کنیم و اونو باید برامون تنظیم کنه


    اینجا یه متغیری از نوع بیت و با مقدار اولیه 0 تعریف میکنیم یادتون هست که بیت فقط دو حالت داشت یا صفره یا یکه


    اینجا تابع اصلی برنامه شروع میشه

    اینجا یه حلقه بینهاست رو برای اجرای همواره دستورات ایجاد میکنیم


    اینجا یکی از پورتهای میکرو رو که اسمشو بصورت قراردادی گذاشتیمled1 رو از نظر مقداری مساوی با متغیر x قرار میدیم یعنی اگر x یک هست اونم بشه 1 و اگر 0 هست اونم بشه 0


    اینجا با استفاده از دستور not مقدار متغیر x رو not میکنیم اگر 0 بوده بشه 1 و اگر 1 بوده بشه 0 اینجا یه نکته ای هست توجه کنید چون نوع متغیر bit هست ما میتونیم از این دستور استفاده کنیم چون این متغیر دو حالت کلا میتونه داشته باشه اگر بیشتر از دو حالت میتونست داشته باشه دیگه not معنی نداشت


    خب الان که مقدار متغیر x عوض شده و not شده میتونیم led2 رو با اون مقدار دهی کنیم و اینجوری مینویسیم

    اینجا هم یه تاخیر یک ثانیه ای ایجاد میکنیم تا این حالت به وجود اومده یک ثانیه ثابت بشه و و ما نتیجه اتفاقات رو ببینیم بعد زا اجرای این دستور برنامه به خط بنفش قبلی میره و اونو اجرا میکنه اگر دقت کنید میبینید که مقدار متغیر الان دیگع 0 نیست و شده 1 پس الان برنامه کلا با یه مقدار دیگه شروع به کار میکنه و باز در انتهای برنامه متغیر مقدارش میشه 0 به خاطر اینکه دستورات ما انعطاف پذیری دارن و ورودیشون رو هم خودمون در اخر برنامه داریم تغییر میدیم میتونیم فقط یه تاخیر بنویسیو در صورتی که اگر به برنامه سوم ناه کنید میبینید که دو تا تاخیر وجود داره یکی برای روشن موندن ها و یکی هم برای خاموش موندن های لامپها خی ما با یه روش ساده برنامه رو خیلی خلاصه کردیم


    اخر سر هم به تعداد اکولا های باز شده اکولاد میبیندیم تا مرز حلقه ها مشخص بشه

  8. 6 کاربر از پست مفید hadi elec سپاس کرده اند .


  9. #25
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

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

    اموزش avr به زبان c
    نویسنده حمید بادامی نجات
    انتشارات ایلار
    خ انقلاب پاساژ فروزنده

    اموزش میکروکنتلرهای avr
    نویسنده جابر الوندی
    انتشارات نص


    من خودم شخصا با این دو تا کتاب یاد گرفتم
    هر دوشو هم بخریدو بخونید

  10. 3 کاربر از پست مفید hadi elec سپاس کرده اند .


  11. #26
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    خب تا اینجا اطلاعاتمون فکر کنم به حدی رسیده باشه که بتونیم بریم سراغ نرم افزار
    از این بعد در مورد خود نرم افزار صحبت میکنیم و نکاتی که احیانا درباره برنامه نویسی اولیه جا مونده باشه رو میگیم و یواش یواش شروع به ساخت پروژه تو نرم افزار میکنیم
    خب برنامه code vision avr رو میتئنید از اینجا دانلود کنید این تقریبا اخرین نسخه هست
    البته تو گوگل اگر سرچ کنید سایتهای زیادی پیدا میکنید که از همشون میتونید این برنامه رو رایگان دانلود کنید
    ورژن های این برنامه تفاوت زیادی با هم ندارن
    در واقع هرچی میریم جلو تر امکانات برنامه بیشتر میشه که ما با توضیح مسایل اولیه مطالعه درباره امکانات اضافی رو به خودتون واگذار میکنیم کما اینکه اگر سوالی بود هم حتما جواب میدیم

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

    کتاب ها رو هم اگر تهیه کنید خوبه

    فکر کنم یه مثال دیگه برای برنامه حل کنیم بعد بریم سراغ نرم افزار بهتر باشه
    خب درباره این برنامه هم فکر کنید تا من مقدمات نرم افزار رو اماده کنم

    میخوایم یه برنامه بنویسیم که اگر قدار متغیر a که در واقع مقدار یکی از پورتهای ورودی هست 1 شد
    اونوقت پایه portb.0 صد میکرو ثانیه 1 بشه و دوباره 0 بشه
    و بعدش یک led با فرکانس 2 هرتز چشمک بزنه
    و وقتی که مقدار متغیرa صفر شد
    اونوقت پایه portb.1 صد میکرو ثانیه 1 بشه و دوباره صفر بشه
    و بعدش همون led با فرکانس نیم هرتز چشمک بزنه

    نکته: به مقدار اولیه ورودی ها و خروجی ها توجه کنید خیلی مهم هستن و کاملا کنترل شده باید مقدار دهی شوند

    اصلا سخت نیست فقط کمی دقت میخواد
    شما یک شرط ورودی دارید که کلا دو حالت میتونه داشته باشه
    حالا ما میخوایم توی هرحالتی از ورودی دو خروجی خاص داشته باشیم
    فرض کنید شما با سرعت چشمک زدن لامپ میخواید وضعیت ورودی رو بدونید خب اونوقت همچین برنامه ای براتون کاربردی میشه
    و از طرفی از طریق پایه های portb.0 و portb.1 میخواهیم این اطلاعات رو به یه مدار دیگه بدیم
    خب شروع کنید

  12. 3 کاربر از پست مفید hadi elec سپاس کرده اند .


  13. #27
    استعداد برتر سایت
    رشته تحصیلی
    الکترونیک و فیزیک هسته ای
    نوشته ها
    3,290
    ارسال تشکر
    4,930
    دریافت تشکر: 13,220
    قدرت امتیاز دهی
    12295
    Array
    عرفان سلیم زاده's: خجالت

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    سلام
    با صد بار ویراش
    خودمم نفهمیدم چی نوشتم:

    be name khoda

    #include <mega16.h>
    #include <stdio.h>
    #include <delay.h>
    bit a;
    bit b.0=0;
    bit b.1=0;
    bit led;
    void main();{
    if(a=1){
    b.0=1;
    delay_us(100);
    b.0=0;
    led=1;
    delay_ms(500);
    led=0;
    delay_ms(500);}
    if(a=0){
    b.1=1;
    delay_us(100);
    b.1=0;
    led=1;
    delay_ms(2000);
    led=0;
    delay_ms(2000);
    }}
    ویرایش توسط عرفان سلیم زاده : 10th February 2012 در ساعت 07:21 PM

  14. 3 کاربر از پست مفید عرفان سلیم زاده سپاس کرده اند .


  15. #28
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    نقل قول نوشته اصلی توسط مخفی نمایش پست ها
    سلام
    با صد بار ویراش
    خودمم نفهمیدم چی نوشتم:

    be name khoda

    #include <mega16.h>
    #include <stdio.h>
    #include <delay.h>
    bit a;
    bit b.0=0;
    bit b.1=0;
    bit led;

    void main();{
    if(a=1){
    b.0=1;
    delay_us(100);
    b.0=0;
    led=1;
    delay_ms(500);
    led=0;
    delay_ms(500);}
    if(a=0){
    b.1=1;
    delay_us(100);
    b.1=0;
    led=1;
    delay_ms(2000);
    led=0;
    delay_ms(2000);
    }}
    خب خوبه
    استعدادشو داری
    ولی چنتا نکته::::::::::::
    ما اصلا همچین دستور برای ic نداریم تو برنامه قبلی هم بهت گفته بودیم کلا اینو حذف کن

    متغیر بیت برای زمانیه که میدونیم متغیرمون فقط دوحالت پیدا میکنه دقت کردی ؟ متغیر
    پایه های ورودی و خروجی متغیر حساب نمیشن و اینجوری تعریف نمیشن


    و اما برنامه....

    خب ما اینا وقتی که ورودیمون تغییر میکنه باید دو تا عمل انجام بدیم
    هم تغییر 100 میکرو ثانیه ایه یه پورت
    و هم چشمک زدن یه پورت دیگه

    خب م چجوری باید اینکارو بکنیم؟
    بینید وقتی ما یه دستوری رو که فقط یه بار میخواد انجام بشه میخوایم انجام بدیم کار راحته

    ولی بعد از اون یه دستور دیگه ای باید بصورت مداوم انجام بشه
    ما این تداوم رو چجوری ایجاد کنیم؟؟؟؟؟


    ( با رنگها سعی میکنم نقاط مختلف رو تو صحبنهام به هم مربوط کنم- جمله های همرنگ به هم مربوط میشن)

    من برنامه رو مینویسم شما دقت کنید
    #include<mega16.h>
    #include<delay.h>
    #define led PORTB.2

    bit a=0;
    bit b=0;

    void main(){
    while(1){

    if ( a==1){

    PORTB.0=1;
    delay_us(100);
    PORTB.0=0;

    while(a==1){

    led = b;
    delay_ms(2000);
    b=!b;
    }
    }


    if(a==0){

    PORTB.1=1;
    delau_us(100);
    PORTB.1=0;

    while(a==0){

    led=b;
    delay_ms(500);
    b=!b;
    }
    }

    }}
    payan

    خب فکر کنم مشخص باشه درسته؟
    بازم من خط به خط توضیح میدم چون ایجا یه دستور جدید رو هم میبینید که البته صرفا برای معرفی هست و محاسبه ای نداره
    خودتون یه دور بخونید ببینید چجوریه

    عرفان جان میتونی برنامه رو توضیح بدی؟
    ممنون

  16. 3 کاربر از پست مفید hadi elec سپاس کرده اند .


  17. #29
    استعداد برتر سایت
    رشته تحصیلی
    الکترونیک و فیزیک هسته ای
    نوشته ها
    3,290
    ارسال تشکر
    4,930
    دریافت تشکر: 13,220
    قدرت امتیاز دهی
    12295
    Array
    عرفان سلیم زاده's: خجالت

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    نقل قول نوشته اصلی توسط hadi elec نمایش پست ها

    #include<mega16.h>

    #include<delay.h>
    #define led PORTB.2

    bit a=0;
    bit b=0;

    void main(){
    while(1){

    if ( a==1){

    PORTB.0=1;
    delay_us(100);
    PORTB.0=0;

    while(a==1){

    led = b;
    delay_ms(2000);
    b=!b;
    }
    }


    if(a==0){

    PORTB.1=1;
    delau_us(100);
    PORTB.1=0;

    while(a==0){

    led=b;
    delay_ms(500);
    b=!b;
    }
    }

    }}
    payan


    معرفی ای سی
    معرفی تاخیر زمان
    ال ای دی به صورت ثابت در تمام برنامه پورت بی 2 باشه
    متغییر a که فقط دو حالت هم داره 0 باشه
    b هم همینطور
    تابع void
    یه حلقه بینهایت


    خیلی سخت شد

  18. 3 کاربر از پست مفید عرفان سلیم زاده سپاس کرده اند .


  19. #30
    دوست آشنا
    رشته تحصیلی
    الکترونیک
    نوشته ها
    936
    ارسال تشکر
    2,911
    دریافت تشکر: 4,686
    قدرت امتیاز دهی
    4483
    Array
    hadi elec's: جدید50

    پیش فرض پاسخ : آموزش زبان c و نرم افزار کدویژن

    نقل قول نوشته اصلی توسط مخفی نمایش پست ها
    [/LEFT]

    معرفی ای سی
    معرفی تاخیر زمان
    ال ای دی به صورت ثابت در تمام برنامه پورت بی 2 باشه
    متغییر a که فقط دو حالت هم داره 0 باشه
    b هم همینطور
    تابع void
    یه حلقه بینهایت


    خیلی سخت شد
    خب خوبه
    خوب گفتی
    اما اصلا سخت نیست


    نقل قول نوشته اصلی توسط hadi elec نمایش پست ها

    ( با رنگها سعی میکنم نقاط مختلف رو تو صحبنهام به هم مربوط کنم- جمله های همرنگ به هم مربوط میشن)
    #include<mega16.h>
    #include<delay.h>
    #define led PORTB.2

    bit a=0;
    bit b=0;

    void main(){
    while(1){


    if ( a==1){

    PORTB.0=1;
    delay_us(100);
    PORTB.0=0;


    while(a==1){

    led = b;
    delay_ms(2000);
    b=!b;
    }

    }


    if(a==0){

    PORTB.1=1;
    delau_us(100);
    PORTB.1=0;


    while(a==0){

    led=b;
    delay_ms(500);
    b=!b;
    }

    }

    }}
    payan

    ممنون

    ببین ما اینجا همونطور که گفتم کلا دو حالت یا داریم
    یا ورودیمون مقدار 0 داره یا 1
    پس با یه شرط این دو حالت رو از هم سوا میکنیم
    و شروع میکنیم به تشریح اتفاقات هر بخش

    این دو بخش با هم حالت or دارن یعنی به هیچ عنوان همزمان پیش نمیان
    پس تداخلی هم ندارن
    حالا برای حالت اول:
    خب اول باید اون پورتی رو که معرفی کرده بودیم رو 100 میکرو ثانیه ست کنیم و بعدش ریست اینم که معلومه

    اما بعدش
    خب اینجا ما باید یه برنامه چشمک زن بنویسیم که تا زمانی که وردی ثابت هست برنامه اجرا بشه از if نمیشه استفاده کرد چون فقط یک بار اجرا میشه و برای اجرای بعدیش بقیه خطوط رو هی بررسی میکنه
    پس میایم از دستور while استفاده میکنیم که خیلی راحت بی نهایت بار(تا زمانی که شرط نقض نشده باشه) کاری رو که میخوایم انجام بده


    اما چرا دستور while رو داخل دستور if نوشتیم؟
    اینجا مهمه
    برای این ما توی if نوشتیمش که کلا تحت کنترل دستور if باشه و اگر if اجرا نشد اون هم اجرا نشه
    وقتی شرط if درست میشه برنامه واردش میشه و بعد از اجرای دستورات ست و ریست کردن 100 میکرو ثانیه ای
    میره سراغ while و درستوراتشو اجرا میکنه و وقتی که شرط while نقض شد خود به خود شرطif هم نقض شده پس برنامه کلا از این در میاد و میره به بررسی شرط دوم if میپردازه
    فرق این حالت با حالتی که while داخل if نباشه اینه که اینجا سرعت اجرای برنامه بیشتره


    به طرز نوشته شدن اسم پورتها دقت کنید
    با حروف بزرگ نوشته میشن دقیقا مثل بالا

    به تعداد اکولاد ها هم توجه کنید

  20. 3 کاربر از پست مفید hadi elec سپاس کرده اند .


صفحه 3 از 5 نخستنخست 12345 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

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

  1. آموزشی: آموزش جامع شبکه کردن ویندوز سون و ویندوز ایکس پی توسط VirtualBox
    توسط آبجی در انجمن مقالات و آموزش های شبکه
    پاسخ ها: 1
    آخرين نوشته: 30th April 2010, 09:42 PM
  2. پاسخ ها: 1
    آخرين نوشته: 19th April 2010, 11:15 AM
  3. آموزشی: به 10 دلیل ویندوزتان را به ویندوز سرور 2008 r2 بروزرسانی کنید
    توسط آبجی در انجمن آموزش نرم افزار
    پاسخ ها: 0
    آخرين نوشته: 25th February 2010, 10:46 PM
  4. خبر: * تازه‌های ویندوز؛ ویندوز 8
    توسط MAHDIAR در انجمن اخبار نرم افزار
    پاسخ ها: 0
    آخرين نوشته: 13th February 2010, 12:03 PM
  5. ساندویچ پانل ویژگیها و اموزش
    توسط moji5 در انجمن مهندسی سازه
    پاسخ ها: 0
    آخرين نوشته: 23rd October 2009, 06:16 PM

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

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

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