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


امتیاز موضوع:
  • 5 رأی - میانگین امتیازات: 3.4
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش قدم به قدم برنامه نویسی AVR
#1
سلام
خیلی از ما مشتاق یادگیری زبان برنامه نویسی جهت بکارگیری آی سی های avr هستیم، من خودم پس از مطالعه ی چندین کتاب و مقاله های فارسی و انگلیسی موفق به نوشتن برنامه هایی که از پیچیدگی زیادی برخوردار نیستند ( مثلا برنامه ی یک ساعت دقیق با LCD ) شدم و حالا اگر توفیق داشته باشیم میخواهم آن را قدم به قدم توضیح بدهم و چندین مدار را از سطح ساده به پیشرفته به صورت کاملاً عملی بسازیم. و از نوشتن برنامه های avr به زبان بیسکام لذت کامل را ببریم
پاسخ
#2
با تشکر از شما - مشتاقانه منتظریم
Rolleyes
پاسخ
#3
(۱۳۹۵/۰۱/۱۲، ۰۸:۵۱ ب.ظ)avrmh نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام
خیلی از ما مشتاق یادگیری زبان برنامه نویسی جهت بکارگیری آی سی های avr هستیم، من خودم پس از مطالعه ی چندین کتاب و مقاله های فارسی و انگلیسی موفق به نوشتن برنامه هایی که از پیچیدگی زیادی برخوردار نیستند ( مثلا برنامه ی یک ساعت دقیق با LCD ) شدم و حالا اگر توفیق داشته باشیم میخواهم آن را قدم به قدم توضیح بدهم و چندین مدار را از سطح ساده به پیشرفته به صورت کاملاً عملی بسازیم. و از نوشتن برنامه های avr به زبان بیسکام لذت کامل را ببریم

سلام ، بسیار عالی هست ، ما هم مشتاقیم و اگر لازم باشه همکاری خواهیم کرد
آی دی تلگرام : دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
پاسخ
#4
جلسه اول
سلام به امید خدا می خواهیم شروع به فرا گرفتن برنامه نویسی به ربان بیسکام کنیم
زبان آردوینو معمولاً جهت برنامه های پیشرفته ای که نیاز به کتابخانه های قطعات دارند استفاده میشود و یا در صورتی که نیاز به ارتباط سریال باشد بهترین گزینه است ولی زمانی که میخواهیم یک مدار معمولی با قطعاتی که نیاز به داشتن کتابخانه نیست(مثلا NRF) نیازمند یک کامپایلر ساده هستیم مانند بیسکام
کامپایلر:برای تعریف کامپایلر یک مثال میزنم:
وقتی به یک کودک که فقط بلد هست تا ۵ بشمارد ۱۲مداد رنگی بدهیم و از او بپرسیم که که چند مداد رنگی دارد می گوید:خیلی
پس برای اینکه به او بگویم چند مداد رنگی دارد باید مداد ها را به ۳ دسته ۴تایی تقسیم کنیم و دوباره از او باید سوال را به شکلی که در ادامه خواهیم گفت بپرسیم تا کودک توانایی پاسخ را داشته باشد:تو چند دسته مداد رنگی داری،در این لحظه کودک می گوید۳.و اگر از او بپرسیم که در هر دسته چند مداد رنگی وجود دارد می گوید:۴مداد رنگی
پس بدین ترتیب کودک فهمیده که چند مداد دارد ولی به زبان خودش
آیسی ها هم به همین منوال باید خواسته خود را به زبان خودش به او گفت تا بتواند منظور ما را بفهمد ولی داسنتن زبان میکروکنترلر ها که فقط دارای دو حرف است (۰-۱) که بسیار هم مشکل است پس ما از کامپایلر استفاده می کنیم که زبانی را که برای خود کامپایلر معرفی شده را به زبان میکرو کنترلر تبدیل میکند
خوب حالا که فهمیدیم کامپایلر چیست شروع به یادگیری زبان بیسکام و فرا گرفتن دستورات آن می کنیم.


ادامه دارد...
پاسخ
#5
سلام
به حول قوه ی الهی شروع میکنیم به آموزش بخش اصلی
در اولین مرحله نرم افزار بیسکام را نصب کنید و اگر هم دارید آن را باز کنید. ( دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
)
و سپس فایل های دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
حالا که باز کردید با یک برنامه ی پنج خطی مواجه می شوید که همانند شکل زیر است و در ادامه آنرا توضیح خواهیم داد




[تصویر:  Capture-2016-04-06-03-14-32-22.png]


و اما شروع آموزش:




[تصویر:  Capture-2016-04-06-03-12-07-971.png]

این دو خط جزء لاینفک تمام برنامه هایی است که در محیط بیسکام نوشته می شوند. نوشتن برنامه با علامت $ شروع میشود که به صورت اختصاری بوده و بعد از آن با توجه به معنی لغوی ( دستیابی = regfile ) باید نوع آیسی میکرو به صورت " xdef.det" که به جای x نوع میکروی مورد استفاده را قرار می دهیم که به اختصار به صورت M8 برای ATmega8  استفاده می شود و حتما باید داخل کوتیشن "    " قرار گیرد. در سطر دوم همانطور که حدس زدید فرکانس کریستال میکرو نوشته می شود.
توجه کنید که چه از کریستال بیرونی استفاده شود و چه داخلی این سطر باید نوشته شود و فرکانس را باید به صورت هرتز ( Hz ) بنویسید.
پس این دو سطر باید در آغاز هر برنامه ای بدون استثنا نوشته شود در غیر این صورت برنامه اصلا کامپایل نمی شود.

[تصویر:  Capture-2016-04-06-03-26-27-17.png]


با توجه به معنی لغوی ( قرار دادن = config ) و ( خروجی = output ) ترجمه ی این دستور می شود: که پورت b  میکرو کنترل را خروجی برای ما قرار بده. اما کدام پایه در اینجاست که معمولا زمانی که فقط بخواهیم از یک پایه استفاده کنیم می نویسیم portb.0 یعنی از پورت b پین ( 0) را خروجی قرار بده ولی اگر بخواهیم کل پورت خروجی باشد باید همان portb  را بنویسیم و اگر بخواهیم یک پایه را از همان پورت روشن و پایه ی دیگری را خاموش قرار دهیم باید در هنگام نوشتن ادامه ی برنامه آنرا مشخص کنیم و برای راحتی کار کل پورت را خروجی قرار می دهیم.
حالا بر فرض مثال کل پورت را خروجی گذاشته و می خواهیم پین شماره ی 0 را روشن کنیم و در این حالت به شکل زیر عمل میکنیم:

[تصویر:  Capture-2016-04-06-03-37-26-863.png]

و معنای آن اینست که ما از میکرو خواسته ایم که از portb پایه ی شماره ی 0 را روشن کند. در پایان هم از کلمه ی End همانند شکل زیر استفاده میکنیم:

[تصویر:  Capture-2016-04-06-03-14-32-22.png]

که با این دستور به آی سی می فهمانیم که دیگر کاری ندارد و برنامه تمام شده. این دستور را هم باید در انتهای هر برنامه بنویسیم. با این برنامه ساده ترین استفاده را از میکرو کردیم و آن هم روشن کردن یک ال ای دی بود.
حالا جهت پایان کار و کامپایل ( ترجمه ) کردن برنامه و تبدیل به فایل Hex کافیست اگر زحمتی ندارد یکبار کلید زیر یا F7 را بزنید:

[تصویر:  Capture-2016-04-06-03-45-28-683.png]

حالا کافیست فایل را از طریق پروگرامر بر روی آی سی بریزید و از نوشتن یک برنامه ی ساده به زبان بیسکام لذت ببرید.
سعی کنید جهت تمرین دراین برنامه پورت ها و پین ها را عوض کنید و با کم و کیف کار آشنا شوید.



بخش دوم آموزش:


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

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

در این برنامه هیچ تغییری احساس نمی شود به جز انکه سطر مربوط به روشن شدن ال ای دی چند بار نوشته شده که با دقت می بینید که هر پین به صورت جدا گانه روشن شده که شما می توانید جهت درک بالاتر مطلب بیایید مثلا فقط 3 پین را انتخاب و روشن کنید
در مرحله بعد بیایید خود را محک بزنید و با انتخاب 2 پورت مثل پورت b ,c و روشن کردن 5 ال ای دی حسابی خود را در set کردن یک وسیله خارجی ماهر کنید.
ادامه دارد......
[url=http://upload.wle.ir/up/guest/rar/project2.rar][/url]
پاسخ
#6
سلام
امیدوارم که از آموزش های قبلی راضی بوده باشید

بخش سوم:

در بخش های قبل با set کردن آشنا شدید و در این بخش با reset (خاموش کردن) آشنا خواهید شد

برای این کار مانند برنامه های قبل عمل کرده و پس از setکردن باید یک زمان را برای روشن ماندن انتخاب کنید که باید:
  1. ابتدا کلمه wait را نوشته وسپس زمان را بر حسب ثانیه به صورت secondو یا میلی ثانیه به صورت ms و یا بر حسب میکرو ثانیه به صورت us نوشت
  2. زمان مورد نظر را پس از گذاشتن واحد مورد نظر به صورت عددی باید نوشت
حالا عکس زیر زمان 200میلی ثانیه را نشان میدهد
[تصویر:  Capture-2016-04-08-03-28-25-341.png]
خب پس از این کار عبارت reset  را مینویسیم و پین مورد نظر را همانند عکس زیر انتخاب میکنیم

[تصویر:  Capture-2016-04-08-03-30-23-962.png]



بخش چهارم:


در این بخش با دو دستور کوتاه و مهم دیگر آشنا می شوید
دستور اول DO
دستور دوم LOOP
دستور اول در ابتدا و دستور دوم در انتها می آید و بدان معناست که برنامه ای را که بین این دو نوشته شده را همینطور ادامه بده
مثلا برای ساخت یک چشمکزن مینویسیم
[تصویر:  Capture-2016-04-08-03-38-13-147.png]


این برنامه برای زمانی که بخواهیم یک پایه را روشن کنیم مناسب است اما برای روشن و خاموش کردن یک پورت باید مثل عکس زیر عمل کنیم که خیلی طولانی میشود
[تصویر:  Capture-2016-04-08-03-49-26-744.png]
جهت جلو گیری از طولانی شدن برنامه انرا به این صورت می نویسیم
[تصویر:  Capture-2016-04-08-03-45-05-646.png]
در این برنامه ما کل پورت را انتخاب می کنیم و از نوشتن تک تک پایه ها خلاسی پیدا می کنیم.



ادامه دارد...
پاسخ
#7
سلام
با آرزوی موفقیت روز افزون برای شما
با نامو یاد خدا این جلسه از آموزش را شروع میکنیم

بخش پنجم:
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

[تصویر:  Capture-2016-04-09-01-29-25-148.png]
در این مر حله با یک دستوری آشنا می شوید که کارش فقط بر عکس کردن حالت پایه هاست و این بدان معناست که اگر پایه ای set باشد آنرا reset میکند وبالعکس
دستور      toggle port x
که به جای x پورت مورد نظر را می نویسیم تا پین های پورت در هر حالتی باشند آنها را برعکس کند
و ما چون در برنامه از دستورات DOو LOOP استفاده کرده ایم برنامه به روشی که در زیر گفته میشود عمل میکند:
در هنگام اتصال جریان تمامی پین های پورت انتخابی در حالت RESET هستند و پس از رسیدن به دستور TOGGLE پین ها SET میشوند و با رسیدن به دستور LOOP دوباره به اول برنامه برمی گردد و این بار پین ها را خاموش میکند و این روند همینطور ادامه خواهد داشت.



بخش ششم:

در برنامه های قبلی فقط در مورد ال ای دی ها گفتیم که کمی خسته کننده بود حالا جهت رفع این خستگی در مورد ال ای دی ها آموزش اتصال ال سی دی به میکرو وراه اندازی آنرا خواهیم داد
[تصویر:  Capture-2016-04-09-01-45-00-99.png]
در خط سوم وچهارم پیکره بندی پین های ال سی دی را نوشته ایم و چون خط سوم دیگر جا برای نوشتن نداشت ما باید با نوشتن(_) ادامه را به خط بعدی ببریم.
در سطر پنجم ما باید بهد از نوشتن CONFIG LCD و قرار دادن(=) نوع LCD را مشخص کنیم که در اینجا 2*16 را نوشته ایم
دستور CLC برای پاک کردنکل LCD به کار می رود.
در جلوی کلمه LCD  باید متن مورد نظر را در کوتیشن "    " بنویسیم وباز با نوشتن CLC برنامه را به پایان ببریم

و اگر خواستید به جای حرف عدد بنویسید باید
[تصویر:  Capture-2016-04-09-01-53-26-150.png]
مقدار متغیر B را از نوع بایت قرار بدهید
و در پایین آن مقدار B را مشخص کنید.
به همین سادگی
در این بخش با اتصال و راه اندازی LCD آشنا شدید و ان شالله در بخش به با همین آموزه ها و کمی هم یادگیری در بخش بعد یک پروژه ساعت دقیق با ال سی دی را خواهم ساخت و خط به خط آنرا توضیح خواهیم داد.




موفق و سربلند باشید Smile ......
پاسخ
#8
سلام
امید وارم که از بخش های قبلی راضی بوده باشید
در این جا ما یک مدار با برنامه ای دقیق رو داریم و می خواهم که خط به خط آنرا توضیح و به یادگیری کد هایی جدید بپردازیم.
مداری که همینک می خواهیم با آن جلو برویم و آموزش را پی بگیریم مدار یک ساعت با LCD است(دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
)
این مدار قابلیت تنظیم با دو کلید را دارا است و از دقت بسیار بالایی برخورد دار می باشد.

شروع تفسیر برنامه:
ابتدا پیشنهاد میکنم که فایل پروتئوس را باز کرده و آنرا RUN کنید و با عمکرد مدار آشنا شوید و سپس تفسیر را ادامه خواهیم داد.

[تصویر:  Capture-2016-04-12-03-22-08-978.png]


خب حالا که برنامه را هم دیدید میریم به سراغ برنامه:
[تصویر:  Capture-2016-04-12-03-25-13-493.png]

با خط اول و دوم که آشنایی دارید(دو خط مربوط به اطلاعات میکرو و مقدار کریستال)
خط سوم و چهارم هم که طبق جلسه قبل مربوط به پین های اتصال LCD به میکرو است.
خط هفتم نوع LCD  را مشخص کرده که 2*16 است
خط پنجم و چهارم جهت قرار دادن پین های 4و 5 پورت D برای استفاده به عنوان PULLUP است که جهت اتصال دو کلید به میکرو نوشته می شود که در ادامه توضیحات بیشتری را خواهم داد.
نکته مهم در این پروژه:
ما در این پروژه کلمه ساعت را به صورت فارسی نوشته ایم که این کار به طور معمول در بیسکام ممکن نیست ولی ما از روش غیر معمول آن استفاده کرده ایم که جا دارد در اینجا مفصل به آن بپردازیم
  1. جهت این کار ابتدا وارد بیسکام شوید.
  2. CTRL+L را بزنید
پنجره زیر باز خواهد شد.
[تصویر:  Capture-2016-04-12-03-42-59-27.png]
مربع ها را به دلخواه پر کنید و هر چه می خواهید اعم از شکل و حرف بکشید

در زیر حرف آ را نوشته ایم

[تصویر:  Capture-2016-04-12-03-43-57-656.png]


با زدن کلیک OK  یک خط برنامه ایجاد میشود که مربوط به شکل ما است
در زیر برنامه مربوط به حرف آ را مشاهده می کنید.
[تصویر:  Capture-2016-04-12-03-44-31-344.png]
خب حالا باید به جای علامت سوالی که جلوی DEF LCD CHER است یکی از اعداد 0-7 را قرار دهید که مربوط به کاراکتر مورد نظری است که ما می خواهیم شکل و یا حرف مورد نظر به آنجا برود می باشد.
حالا جهت درک بهتر این مطلب یک پروژه ساده که در آن حرف یا شکل مورد علاقه ما بر روی LCD را نمایش می دهد را مشاهده می کنید
(دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
)
[تصویر:  Capture-2016-04-12-03-57-13-445.png]
جهت راه اندازی آن در پروتئوس می توانید برنامه را کامپایل کرده و در آیسی برنامه بخش قبلی (نوشتن حرف انگلیسی ) قرار دهید و مشاهده کنید که تا چه مقدار می توان با AVR کار های مختلفی کرد
حالا شما با نوشتن و یا کشیدن شکل های ساده هم آشنا شدید




احتمال اینکه خسته شده باشید زیاد است پس بقیه مطلب را برای بخش بعدی می گذارم.

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


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش تصویری میکروکنترلر XMEGA به زبان فارسی هادی 4 1,342 ۱۳۹۵/۰۱/۱۵، ۱۲:۲۴ ب.ظ
آخرین ارسال: هادی
  آموزش تصویری میکروکنترلر AVR به زبان فارسی هادی 9 2,043 ۱۳۹۵/۰۱/۱۴، ۰۳:۰۶ ق.ظ
آخرین ارسال: هادی


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

انتخاب پوسته :

دسترسی سریع
درباره ما
انجمن سرزمین الکترونیک در یکم فروردین 1395 تاسیس شده، که همیشه سعی کرده با ظاهری متفاوت و سرعتی خوب رضایت کاربران را جلب کند، امیدواریم توانسته باشیم گامی کوچک در پیشرفت فناوری در ایران برداشته باشیم...
نیرو گرفته از MyBB با فارسی سازی مای بی بی ایران - طراحی شده در : ملت دیزاین
© تمامی حقوق برای انجمن سرزمین الکترونیک محفوظ می باشد .