• مشکی
  • سفید
  • سبز
  • آبی
  • قرمز
  • نارنجی
  • بنفش
  • طلایی
انجمن ها > انجمن برق > صفحه اول بحث
لطفا در سایت شناسائی شوید!
برق (بازدید: 12293)
سه شنبه 5/5/1389 - 23:17 -0 تشکر 215228
آموزش AVR از صفر تا بی نهایت !

سلام دوستان عزیز

می خام توی این تاپیك اموزش AVR رو از صفر شروع كنم و با كمك سایر دوستان ادامه بدیم
اگر لطف كنین و نظر و پیشنهاد بدین ممنون می شم 

راستش من اوایل مطلب رو مثل toggle set reset دستورات حلقه و پرش و ... رو می تونم خوب براتون توضیح بدم و مثال های زیادی رو توی كارگاه اموزشی بزارم ولی مطالب پیشرفترو اساتید با تجربه انجمن باید توضیح بدن چون خود من هم كه قبلا كلاس avr رفتم توش ضعیفم .در ضمن با نرم افزار BASCOM كار می كنیم. در ضمن هر جا كه سوتی دادم اساتید اصلاح كنن

زندگي جاريست و ما بي خبريم....
چهارشنبه 6/5/1389 - 20:55 - 0 تشکر 215570

با سلام
دوست عزیز فکر خوبیه،البته بنده ویژن رو بهتر بلدم،بهرحال آماده همکاریم.

پنج شنبه 7/5/1389 - 1:28 - 0 تشکر 215708

سلام .

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


پایان قسمت اول

زندگي جاريست و ما بي خبريم....
پنج شنبه 7/5/1389 - 1:29 - 0 تشکر 215709

سلام .

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


پایان قسمت اول

زندگي جاريست و ما بي خبريم....
پنج شنبه 7/5/1389 - 13:0 - 0 تشکر 215794

بحث مفید و کاربردی است، ما هم حاضریم، code vision و proteus و...

 ما مي توانيم ....

يکشنبه 10/5/1389 - 16:4 - 0 تشکر 217052

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

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

پایان قسمت دوم

زندگي جاريست و ما بي خبريم....
چهارشنبه 20/5/1389 - 16:15 - 0 تشکر 220042

سلام یک پیشنهاد
ظاهرا افراد زیادی هستند که برنامه های کدویژن را بلد هستند از مدیر محترم خواهشمندم تا چند برنامه AVR برای کاربران قرار دهند تا ببینیم افراد چگونه جذب می شوند البته فکر می کنم در بیشتر دانشگاه ها َAVR را با زبان c در کدویژن آموزش می دهند و البته فایل پرتئوس که بتوان با آن فایل هگز را شبیه سازی نمود.
با تشکر

شنبه 13/6/1389 - 12:3 - 0 تشکر 227540

باسلام من كه چیز زیادی از avrسر در نمیارم ولی فایل آموزشی زیاد دارم چطوری می تونم در اختیارتون بزارم؟

يکشنبه 14/6/1389 - 21:18 - 0 تشکر 228158

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



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/10/1389 - 13:27 - 0 تشکر 265375

سلام چه طوری همزمان با بقیه تو بحث ها شرکت کرد؟

چهارشنبه 14/1/1392 - 16:3 - 0 تشکر 596556



سلام 

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

برو به انجمن
انجمن فعال در هفته گذشته
مدیر فعال در هفته گذشته
آخرین مطالب
  • آلبوم تصاویر بازدید از کلیسای جلفای...
    آلبوم تصاویر بازدید اعضای انجمن نصف جهان از کلیسای جلفای اصفهان.
  • بازدید از زیباترین کلیسای جلفای اصفهان
    جمعی از کاربران انجمن نصف جهان، در روز 27 مردادماه با همکاری دفتر تبیان اصفهان، بازدیدی را از کلیسای وانک، به عمل آورده‌اند. این کلیسا، یکی از کلیساهای تاریخی اصفهان به شمار می‌رود.
  • اعضای انجمن در خانه شهید بهشتی
    خانه پدری آیت الله دکتر بهشتی در اصفهان، امروزه به نام موزه و خانه فرهنگ شهید نام‌گذاری شده است. اعضای انجمن نصف جهان، در بازدید دیگر خود، قدم به خانه شهید بهشتی گذاشته‌اند.
  • اطلاعیه برندگان جشنواره انجمن‌ها
    پس از دو ماه رقابت فشرده بین کاربران فعال انجمن‌ها، جشنواره تابستان 92 با برگزاری 5 مسابقه متنوع در تاریخ 15 مهرماه به پایان رسید و هم‌اینک، زمان اعلام برندگان نهایی این مسابقات فرارسیده است.
  • نصف جهانی‌ها در مقبره علامه مجلسی
    اعضای انجمن نصف جهان، در یك گردهمایی دیگر، از آرامگاه علامه مجلسی و میدان احیا شده‌ی امام علی (ع) اصفهان، بازدیدی را به عمل آوردند.