رفتن به مطلب

آموزش مقدماتی میکروکنترلرهای avr همراه عکس + فایل برنامه و شبیه سازی +فیلم آموزشی


ارسال های توصیه شده

رنگ هاش یادم نیست دقیق ولی تو بسکام نوشته های توضیحات سبز میشن دستوراتم آبی و مشکی اند

آره ارور زیاد میده من یکم باهاش کار کردم خیلی گیر میده ولی خب زیانش سطح بالاس به زودی میرم سراغ همین زبان c

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

توضیح برای اینه که اگه یکی برنامه رو خوند متوجه بهش که چیکار کردید یا این دستورات واسه چی استفاده شده یا اینکه قسمت های مختلف رو ازهم جداکنید :w16:

 

اهاااااان . :ws37:چه خوب ... پس کلا توضیحاتو پاک میکنم. خییییلی ممنون از کمکتون:a030:

  • Like 7
لینک به دیدگاه
  • پاسخ 57
  • ایجاد شد
  • آخرین پاسخ

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

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

اهاااااان . :ws37:چه خوب ... پس کلا توضیحاتو پاک میکنم. خییییلی ممنون از کمکتون:a030:

 

توضیحات هیچ نقشی جز راهنمایی ندارن ...........خواهش میکنم:a030:

  • Like 7
لینک به دیدگاه

برنامه کی پد با کدویژن .

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

برای اسکن کیبرد روشهای مختلفی برای برنامه نوییسیش وجود داره که هرکسی میتونه با توجه به آموخته های خودش از برنامه نویسی میکروکنترلر و شکل ساختار کی پد ها برنامه خودش رو استفاده کنه.یادش بخیر چندسال پیش که این برنامه رو نوشتم وقتی جوابش رو با پروتئوس دیدم خیلی لذت بردم:w16:

  • Like 7
لینک به دیدگاه
  • 1 ماه بعد...

برنامه نویسی با کد ویژن

 

برنامه ی اول:

میخواهیم برنامه ای بنویسیم که یک چراغ ledبا میکرو کنترلرATmega32توسط یک کلید روشن وخاموش شود:

 

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

delay_ms(100);

PORTB.0=0;

توضیح:دستور#include فایل سر امد mega32.hرا که شامل تعریف رجیستر های ATmega32است به پروژه اضافه میکند. زمانی که بخواهیم در برنامه تاخیری ایجاد کنیم ابتدا باید فایل delay.hرا به کمک دستور#include به پروژه اضافه نماییم.

قسمت اصلی هر برنامه با main()اغاز میشود . دستور while(1) حلقه ای را تعریف میکند که شرط ان همواره درست است و دستورات داخل ان مدام تکرار میشود.

دستور

delay_ms(100); نیز تاخیری برابر 100 میلی ثانیه تولید می کند .

 


میخواهیم برنامه ای بنویسیم که با زدن یک کلید هفت چراغ ledبه ترتیب و پشت سر هم روشن شوند:

 

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

delay_ms(100);

PORTB.1=1;

delay_ms(100);

PORTB.2=1;

delay_ms(100);

PORTB.3=1;

delay_ms(100);

PORTB.4=1;

delay_ms(100);

PORTB.5=1;

delay_ms(100);

PORTB.6=1;

delay_ms(100);

}

}

}

 

 


میتوانیم روشن شدن چراغ ها را به سبک خودمان تغییر دهیم. ویا حتی تاخییر زمانی را کوتاه تر یا بلند تر کنیم.

به عنوان مثال :

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

PORTB.7=1;

delay_ms(100);

PORTB.1=1;

PORTB.6=1;

delay_ms(100);

PORTB.2=1;

PORTB.5=1;

delay_ms(100);

PORTB.3=1;

PORTB.4=1;

}

}

}

  • Like 5
لینک به دیدگاه
برنامه نویسی با کد ویژن

 

برنامه ی اول:

میخواهیم برنامه ای بنویسیم که یک چراغ ledبا میکرو کنترلرATmega32توسط یک کلید روشن وخاموش شود:

 

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

delay_ms(100);

PORTB.0=0;

توضیح:دستور#include فایل سر امد mega32.hرا که شامل تعریف رجیستر های ATmega32است به پروژه اضافه میکند. زمانی که بخواهیم در برنامه تاخیری ایجاد کنیم ابتدا باید فایل delay.hرا به کمک دستور#include به پروژه اضافه نماییم.

قسمت اصلی هر برنامه با main()اغاز میشود . دستور while(1) حلقه ای را تعریف میکند که شرط ان همواره درست است و دستورات داخل ان مدام تکرار میشود.

دستور

delay_ms(100); نیز تاخیری برابر 100 میلی ثانیه تولید می کند .

 


میخواهیم برنامه ای بنویسیم که با زدن یک کلید هفت چراغ ledبه ترتیب و پشت سر هم روشن شوند:

 

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

delay_ms(100);

PORTB.1=1;

delay_ms(100);

PORTB.2=1;

delay_ms(100);

PORTB.3=1;

delay_ms(100);

PORTB.4=1;

delay_ms(100);

PORTB.5=1;

delay_ms(100);

PORTB.6=1;

delay_ms(100);

}

}

}

 

 


میتوانیم روشن شدن چراغ ها را به سبک خودمان تغییر دهیم. ویا حتی تاخییر زمانی را کوتاه تر یا بلند تر کنیم.

به عنوان مثال :

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

PORTB.7=1;

delay_ms(100);

PORTB.1=1;

PORTB.6=1;

delay_ms(100);

PORTB.2=1;

PORTB.5=1;

delay_ms(100);

PORTB.3=1;

PORTB.4=1;

}

}

}

 

اگر ممکنه فایل شبیه سازی و برنامه رو پیوست کنید:a030:

  • Like 4
لینک به دیدگاه

دانلود فایل شبیه سازی برنامه ی اول:

لینک دانلود:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

برنامه ی دوم:

لینک دانلود:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

برنامه ی سوم:

لینک دانلود:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

:a030::a030:

  • Like 5
لینک به دیدگاه

برنامه هاتون رو وقتی قرار میدید به صورت کد قرار بدید که بهم ریخته نباشه و واضح خونده بشه، داخل ویرایشگر هستش یه گزینه به نام: پوشش این برچسب در متن :a030:

  • Like 3
لینک به دیدگاه
برنامه نویسی با کد ویژن

 

برنامه ی اول:

میخواهیم برنامه ای بنویسیم که یک چراغ ledبا میکرو کنترلرATmega32توسط یک کلید روشن وخاموش شود:

 

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

delay_ms(100);

PORTB.0=0;

توضیح:دستور#include فایل سر امد mega32.hرا که شامل تعریف رجیستر های ATmega32است به پروژه اضافه میکند. زمانی که بخواهیم در برنامه تاخیری ایجاد کنیم ابتدا باید فایل delay.hرا به کمک دستور#include به پروژه اضافه نماییم.

قسمت اصلی هر برنامه با main()اغاز میشود . دستور while(1) حلقه ای را تعریف میکند که شرط ان همواره درست است و دستورات داخل ان مدام تکرار میشود.

دستور

delay_ms(100); نیز تاخیری برابر 100 میلی ثانیه تولید می کند .

 


میخواهیم برنامه ای بنویسیم که با زدن یک کلید هفت چراغ ledبه ترتیب و پشت سر هم روشن شوند:

 

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

delay_ms(100);

PORTB.1=1;

delay_ms(100);

PORTB.2=1;

delay_ms(100);

PORTB.3=1;

delay_ms(100);

PORTB.4=1;

delay_ms(100);

PORTB.5=1;

delay_ms(100);

PORTB.6=1;

delay_ms(100);

}

}

}

 

 


میتوانیم روشن شدن چراغ ها را به سبک خودمان تغییر دهیم. ویا حتی تاخییر زمانی را کوتاه تر یا بلند تر کنیم.

به عنوان مثال :

#include

#include

void main(void)

{

while (1)

{/*loop for ever*/

if(PORTA.0==)

{

PORTB.0=1;

PORTB.7=1;

delay_ms(100);

PORTB.1=1;

PORTB.6=1;

delay_ms(100);

PORTB.2=1;

PORTB.5=1;

delay_ms(100);

PORTB.3=1;

PORTB.4=1;

}

}

}

 

برنامه هاتون درست هستند اگه داخل کدویژن ایراد نداشته باشه چون ارور زیاد میگیره ...کاش فایل هگزشم قرار میدادید چون کدویژن نصب ندارم :icon_pf (34):

  • Like 2
لینک به دیدگاه
برنامه هاتون درست هستند اگه داخل کدویژن ایراد نداشته باشه چون ارور زیاد میگیره ...کاش فایل هگزشم قرار میدادید چون کدویژن نصب ندارم :icon_pf (34):

 

همشو تو کدویژن امتحان کردم . ارور نمیداد:w16::a030: :a030::a030::w16:

  • Like 3
لینک به دیدگاه
همشو تو کدویژن امتحان کردم . ارور نمیداد:w16::a030: :a030::a030::w16:

 

پس دیگه حله میتونید پروگرام کنید ...حتما برنامه هایی که با پروتئوس تست میکنید رو همزمان پروگرام هم کنید و واقعی هم چک کنید من که همیشه پروگرمر کنار سیستممه دائم درحال تستم :ws3:

  • Like 3
لینک به دیدگاه
پس دیگه حله میتونید پروگرام کنید ...حتما برنامه هایی که با پروتئوس تست میکنید رو همزمان پروگرام هم کنید و واقعی هم چک کنید من که همیشه پروگرمر کنار سیستممه دائم درحال تستم :ws3:

 

اره خودمم خیلی دوست داشتم پروگرامش میکردم ولی متاسفانه پروگرامرو avrهنوز ندارمicon_pf%20(34).gifsigh.gifsigh.gif

  • Like 3
لینک به دیدگاه
اره خودمم خیلی دوست داشتم پروگرامش میکردم ولی متاسفانه پروگرامرو avrهنوز ندارمicon_pf%20(34).gifsigh.gifsigh.gif

 

من یکی سال 89 خریدم اونموقع قیمتش 23 یا 25 هزار بود الانم دارمش همه خانواده های avr رو ساپورت میکنه.......الان هاتل اومده از این جیبی ها همه از اون میخرن ولی به نظر خودم هیچی مث پروگرمر خودم نمیشه خیلی ردیفه :ws3:

  • Like 3
لینک به دیدگاه
من یکی سال 89 خریدم اونموقع قیمتش 23 یا 25 هزار بود الانم دارمش همه خانواده های avr رو ساپورت میکنه.......الان هاتل اومده از این جیبی ها همه از اون میخرن ولی به نظر خودم هیچی مث پروگرمر خودم نمیشه خیلی ردیفه :ws3:

 

چه عالی... استادمون گفت الانم avr تو همین قیمت میتونم پیدا کنم. ولی فکر نکنم مثل مال شما خوب در بیاد:w16: ولی خیلی کیف داره وقتی نتیجه میگیری

  • Like 3
لینک به دیدگاه
چه عالی... استادمون گفت الانم avr تو همین قیمت میتونم پیدا کنم. ولی فکر نکنم مثل مال شما خوب در بیاد:w16: ولی خیلی کیف داره وقتی نتیجه میگیری

اون هاتل که گفتم الان حدود 60تومن هست ولی از مدل خودم اگه پیدا بشه، قبل پاساژ امجد یه پاساژ هست طبقه زیرزمینش همون مغازه داریه که من ازش خریدم اگه داشته باشه خوبه از اون بخرید البته ممکنه پروگرمر های الان بهتر شده باشند ولی من با این راحت ترم

عکسش اینه اگه بتونید پیدا کنید:

 

h8b07c5foeky86yngp61.jpg

  • Like 3
لینک به دیدگاه

واااااای عجب پروگرامریه این... تو دانشگاه هم از این مدل پروگرامرنداشتیم . قدرشو بدونید:w16: ایشالا به زودی تهیه میکنم.:a030::a030:00

  • Like 3
لینک به دیدگاه
واااااای عجب پروگرامریه این... تو دانشگاه هم از این مدل پروگرامرنداشتیم . قدرشو بدونید:w16: ایشالا به زودی تهیه میکنم.:a030::a030:00

آره دیگه از این نوع شاید گیر نیاد چون قبلا تو سایتش خرید پستی داشت اما 2سال میشه سایتش جم شده هرچی میزنم نمیره ....تو گاوصندوق میذارمش :ws3:

  • Like 3
لینک به دیدگاه
آره دیگه از این نوع شاید گیر نیاد چون قبلا تو سایتش خرید پستی داشت اما 2سال میشه سایتش جم شده هرچی میزنم نمیره ....تو گاوصندوق میذارمش :ws3:

 

خخخخخ:ws28::ws28: واقعا قیمتیه.... خوب میکنید افرین:w16: :ws3:

  • Like 3
لینک به دیدگاه

:a030: :a030: مقدماتی در مورد برنامه نویسی به زبان c

بعد از نصب برنامه ی codevision AVRبرای ایجاد یک صفحه ی جدید از منوی file گزینه ی newرا انتخاب میکنیم . بعد

از ان گزینه ی projectرا انتخاب میکنیم و okرا میزنیم . ودر پنجره ی confirm گزینه ی yes و در پنجره ی codewizard AVR گزینه ی AT90,AT tiny,AT mega,FPSLIC را انتخاب میکنیم .

حال یک پنجره به نام CODEWIZARD avr باز میشود که این پنجره به شما این امکان را میدهد که با وارد کردن یک سری اطلاعات از جمله مدل میکرو . فرکانس کاری . تعیین پورت lcd . پیکره بندی پورت ها . تایمر ها . کانتر ها و ... کد های مربوطه را تولید کنید . که بعد از تنظیم کردن ان ها از منوی فایل گزینه ی generate,save and Exit رو کلیک کنید .

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

بعد از نوشتن برنامه نوبت به این میرسد که ما ببینیم برنامه ای که نوشتیم از نظر نوشتاری و ..... خطایی نداشته باشد . برای این کار از منوی projectگزینه ی کامپایل را میزنیم .

اگر برنامه ای که نوشتید با خطا روبه رو نشد و eror نداشت یک بار دیگر بر روی منوی project رفته و این بار گزینه ی Build را میزنیم . (علت این کار این است که برنامه ای ما نوشتیم باید به زبان ماشین ترجمه شود )

اگر برنامه ای که نوشتید با خطا روبه رو شد ابتدا خطا را بر طرف کرده و سپس گزینه یBuild را بزنید .

برنامه ی کامپایل شده و فایل هگز HEX خروجی که برای شبیه سازی در پروتئوس نیاز داریم در پوشه Exe تولید میشود.

در محیط برنامه نویسی نوشته هایی که با رنگ ابی مشخص شده اند یک سری توضیحات هستند .

اگر بخواهیم در کنار دستورات یا هر جای دیگر توضیحاتی را قرار دهیم به دو روش میتوانیم این کار را انجام دهیم .

روش اول : اگر توضیحات فقط در یک سطر هست علامت // را در ابتدای توضیحات مینویسیم .

به عنوان مثال : //PORTA=output

ولی اگر توضیحات بیشتر از یک سطر باشد از روش دوم استفاده میکنیم .

روش دوم : باید در ابتدای سطر عبارت */ را بنویسیم و در انتهای سطر عبارت /* را بنویسیم .

مثال:

.................................*/

..................................

...................................

/*.............................

 

درقسمت نقطه چین هر توضیحی را میتوان قرار داد.

یک نکته ی مهم : در زبان برنامه نویسی c بین حروف بزرگ و کوچک تفاوت هست. مثلا متغیرdبا متغیرD تفاوت دارد .

در قسمت پایین محیط برنامه نویسی با کلمه ی main مواجه میشویم .

این main پایه ی ثابت برنامه نویسی c هست و باید حتما باشد .

نکته ی دیگر اینکه در زبان برنامه نویسی c باید در انتهای هر دستوری ( دقت کنید ! دستور ) علامت سیمی کالن ; را قرار دهیم تا دستورات را از یکدیگر جدا کنیم .

تابع main و دیگر توابع هم با } شروع و با { پایان می پذیرند .

در مواقعی که از دستورهای کنترلی مثل شرط. حلقه . سوئیچ و ... استفاده میکنیم اگر فقط یک دستور برای اجرا داشته باشیم دیگر نیازی به { } نیست ولی اگر بیش از یک دستور داشتیم باید دستورات را در داخل { } قرار دهیم If(a==1) PORTD=22;

در این برنامه چون یک دستور داشتیم پس از اکولاد استفاده نکردیم .

If(a==1){

PORTD=22;

PORTA=40;

}

 

ولی در این برنامه چون بیش از یک دستور داشتیم از اکولاد استفاده کردیم . دقت کنید که در پایان هر دستور هم از ; استفاده کردیم .

  • Like 7
لینک به دیدگاه

×
×
  • اضافه کردن...