![]() |
![]() |
|
| آموزش میکروکنترلر avr به منظور افزایش اطلاعات الکترونیکی |
|
سلام عرض می کنم خدمت دوستان امیدوارم حال همتون خوب باشه !
امروز می خواستم نرم افزار بسکام رو توضیح بدم ولی چون یکی از دوستان از سقز زنگ زدند و خواستند که نحوه ساختن پروگرامر رو براشون توضیح بدم تصمیم گرفتم که در این جلسه فقط راجع به پروگرامر صحبت کنم. تعریف پروگرامر:خب اول باید بدونیم که یک پروگرامر چیه؟ یک پروگرامر یک قطعه سخت افزاری که شما می تونید به وسیله ی اون برنامه ای رو که نوشتید روی میکروتون قرار بدین و حالشو ببرین! ساده ترین نوع پروگرامر نوع STK 200/300است که در این پست آموزش اونو می دم . برای ساختن این پروگرامر به قطعات زیر نیاز دارید:
خب در واقع در تصویر بالا در سمت راست میکرو و در سمت چپ پورت قرار داره اما مراحل کار: 1-پایه های 18 تا 25 پورت (همون پایه هایی که با خط مشکی به هم وصل شدند)به قطب - منبع تغذیه وصل شوند. 2-پایه 8 میکرو به پین شماره 6 پورت وصل شود. 3-پایه 6 میکرو به پایه ی شماره 7 پورت وصل شود. 4-پایه 9 میکرو به 9 پورت وصل شود. 5-پایه ی 7 میکرو به پایه 10 پورت وصل شود. 6-پایه 11و 31 میکرو به پایه - منبع تغذیه و پایه 10و 30 میکروبه +5ولت وصل شود. خب در واقع با این کارها پروگرامر شما آماده است اما بهتره به چند نکته توجه کنید: 1-مونتاژ مدار پروگرامر با این روش اگرچه موثر است و جواب می دهد ولی به صرف حوصله و دقت زیاد احتیاج دارد. 2-پورت Paralelپورت بسیار حساسی است و بسیار آسان در اثر مونتاژ نادرست شما صدمه می بیند و ممکن است رایانه شما خراب شود لذا تا زمانی که از مونتاژ درست مدار مطمئن نشدید آنرا تست نکنید. 3-درجلسه آینده تنظیمات نرم افزاری پروگرامر گفته خواهد شد. 4-امکان خرید پروگرامر به صورت آن لاین وجود دارد در لینک زیر یکی از سایت های رباتیک قرار داده شده است که پروگرامر های خوبی را عرضه می کند و شیوه خرید هم به این صورت است که شما سفارش را می دهید و سفارش درب منزل شما تحویل داده می شود و پول هم آنجا دریافت می شود. این سایت هیچ ارتباطی به ما ندارد ولی ما برای رفاه شما دوستان لینک آنرا قرار دادیم تا از آن استفاده کنید. |
|
+ نوشته شده در
سه شنبه هفدهم اردیبهشت 1387ساعت 22:55 توسط یحیی |
|
|
سلام دوستان از همه تون عذر می خوام اگه یه وقت دیر کردم اما یه دلیل داشت :
کار گلچین فلک گرچه همه یغما بود لیکن این بار گلی چید که بی همتا بود خاموش ای دل که به غمناک ترین واژه شعر غم او را نتوان گفت چه جان فرسا بود
مادر بزرگ به دیدار خدا رفت! باز هم از تمام دوستان عذر می خواهم ان شا الله در اولین فرصت شروع می کنم اگر سوالی در مورد میکرو داشتید در خدمتم: ۰۹۱۵۳۱۱۴۴۱۷ یحیی حسن زاده |
|
+ نوشته شده در
چهارشنبه یازدهم اردیبهشت 1387ساعت 22:34 توسط یحیی |
|
|
سلام دوستان یه کم تاخیر داشتم عذر می خوام
بخش ورودی و خروجی در این بخش چهار پورت به نام های A(پایه های 33تا40)B(پایه های 1تا8)C (پایه های22تا29)D(پایه های 14تا 21) داریم به پایه های هر پورت پین میگیم پ در مجموع چون هر پورت 8 پین داره 8×4=32پین داریم که از اونا می تونیم به عنوان ورودی یا خروجی استفاده کنیم اما ورودی یا خروجی یعنی چی؟ منظور از ورودی یعنی اینکه اگر ولتاژ+5به یک پایه برسه اون پایه فعال شده و یه کار بخصوصی رو انجام می ده و منظور از خروجی یعنی اینکه اگر اون پایه فعال بشه ولتاژ +5 ولت رو می ده مثلا اگه برنامه ای بنویسیم که هر دوثانیه یک بار به مدت 5 ثانیه پین 5 پایه ی A رو فعال کنه و به پایه ی اون یه led وصل کنیم یه چشمکزن ساختیم. خب درس این جلسه هم تموم شد به سه نکته توجه کنید و بعد خدا حافظ: 1-لطفا اگر دستتون درد نمیگیره نظر بدید! 2-برای آگاهی از بروز شدن در خبرنامه ی پایین صفحه عضو شوید 3-جلسه ی بعد یعنی 10 روز دیگه پروژه ی زیبای چشمک زن 32 کانال با چندین برنامه رو میدم! |
|
+ نوشته شده در
شنبه بیست و چهارم فروردین 1387ساعت 21:48 توسط یحیی |
|
|
حماسه بسازیم !
سلام دوستان گرامی ! حتما شما هم ماجرای خلیج فارس رو که می خواهند به زور بکننش خلیج عربی شنیدید سایت گوگل اعلام کرده که اگه ۱۰۰۰۰۰۰(یک میلیون)نفر امضا بدن برای همیشه بیخیال خلیج عربی میشه و اسم خلیج همیشه فارس رو ثبت می کنه من اینکار رو کردم کار بسیار ساده ای است و در مجموع ۱ دقیقه زمان می بره تا موقعی که من امضا دادم با من ۱۰۵۴۹۷نفر امضا دادن شما هم به عنوان یک ایرانی با کلیک بر روی لینک زیر این کار رو بکنید. در ضمن حتما نظرات شما در این باره خوندنیه برای همین نظ رو آزاد گذاشتم و نیاز به تایید نداره! |
|
+ نوشته شده در
چهارشنبه بیست و یکم فروردین 1387ساعت 22:33 توسط یحیی |
|
|
سلام دوستان زیاد مقدمه چینی نمی کنم و می رم سر اصل مطلب میکرو avrخودش چندین شاخه می شه که بررسی تخصصی هر کدوم از اونا خارج از حوصله است متداول ترین میکرو ها سری megaاست که دونوع mega 16 , mega32میکرو های بسیار رایجی هستند ساختمان این دو میکرو مثل هم است و فقط حافظه ی اولی 32 کیلوبایت و حافظه ی دومی 16 کیلو بایت است.
من ساختمان mega32 رو براتون تشریح می کنم و ساختمان mega 16 هم مثل همونه! mega32 و تقریبا تمام میکرو های خانوادهmega دارای دو نوع شکل هستند که بسته به معماری مدار مورد استفاده قرار میگیرند: 1)مدل مربعی 2)مدل مستطیلی که من به دلیل راحت تر بودن بهره برداری از مدل مستطیلی و همچنین ارزون تر بودن اون (3000تومان) این مدل رو آموزش می دم شکل این مدل به صورت زیر هست:
خب همونطور که می بینید این میکرو 40 پایه داره که به هر پایه اون یک پین هم میگن این میکرو سه بخش داره : 1)بخش راه اندازی 2)بخش ورودی / خروجی 3)بخش نوسان ساز ============================================================== بخش راه اندازی هنگامی که یک برنامه خاص مثلا یک چشمک زن 8 کانال را روی میکرو می ریزید برای راه اندازی اون باید کار های زیر رو انجام بدید: 1)پایه ی 10 یا VCCتغذیه ی قسمت دیجیتال میکرو ی شما هستند و باید اون رو به ولتاژ 5 ولت وصل کنید 2)پایه ی 30 یا AVCCتغذیه ی قسمت آنالوگ میکرو هستند و باید اون پایه رو هم به 5ولت وصل کنید 3)پایه ی 11 یا GNDتغذیه ی منفی قسمت دیجیتال میکرو هست و باید اون رو به سر منفی منبع تغذیه با در اصطلاح علمی پتانسیل صفر وصل کنید. 4) پایه ی 31 یاGND تغذیه ی منفی قسمت دیجیتال میکرو هست و باید اون رو به سر منفی منبع تغذیه با در اصطلاح علمی پتانسیل صفر وصل کنید. اگر تغذیه ی قسمت آنالوگ و دیجیتال با هم به میکرو وصل نشود احتمال آسیب دیدن میکرو وجود داره! 5)پایه ی شماره ی 9 یا RESET در صورت وصل شدن به منفی منبع تغذیه باعث می شود برنامه ی میکرو در هر قسمت از اجرای خود که باشد به خط اول برگردد مثلا اگر برنامه شما یک چشمک زن 8 کانال است و الان لامپ یا LEDشماره 5 روشن است بعد از وصل شدن پایه ی 9 به جای آنکه LED شماره 6 روشن شود شماره 1 روشن می شود . خب فکر می کنم برای این جلسه کافی باشه جلسه آینده در مورد بخش ورودی خروجی صحبت می کنم در ضمن یک خبر نامه در وبلاگ ایجاد کردیم و شما می تونید با عضویت در اون از به روز شدن وبلاگ آگاهی پیدا کنید.برای عضویت به پایین این صفحه بروید! نوشته شده توسط یحیی حسن زاده تلفن تماس 09153114417
|
|
+ نوشته شده در
یکشنبه هجدهم فروردین 1387ساعت 20:22 توسط یحیی |
|
|
سلام دوستان ببخشید یه کم تاخیر داشتم آخه داریم روی یه ربات مین یاب کار می کنیم برای مسابقات کشوری (برامون دعا کنید
تمام مطالب قرمز رنگ نوشته های این دوست عزیزمون آقا امین است.دستشون درد نکنه! جلسه سوم AVRشنبه ۱۶فروردین از ساعت ۲۳ روی وبلاگ قرار میگیرد. pic محصول جديد شركت Microchip ميباشد.
|
|
+ نوشته شده در
جمعه شانزدهم فروردین 1387ساعت 12:22 توسط یحیی |
|
|
سلام خدمت همه ی دوستان عزیزم نوروز باستانی را از مهد تمدن ایران عزیز به شما تبریک میگم و امیدوارم همیشه شاد باشید.
امروز وقتی به سایت googleرفتم دیدم یه لوگوی قشنگ به مناسبت نوروز ما گذاشته حیفم اومد تو اولین پستم تو سال 87 این لوگو رو نذارم :
اما از هرچه بگذریم سخن دوست خوش تره خوب تا کجا درس دادیم ؟ 1)8051 :اسم این میکرو ها همینه هشتاد - پنجاه و یک و از میکرو های کهن ! هستند . (البته از میکرو هایی هستند که از زمان دانش آموزی با اونا کار کردم و یه جورایی به جوانب کارشون واردم) راهکار:در میکرو های 8051 عبارت 8051 به گونه ای نوشته شده است. من در مثال های زیر ابتدا عکس میکرو را می گذارم و سپس شیوه تشخیص آنرا می گویم. میکرو P8051AHشرکت سازنده intel دارای 40 پایه . به عبارت p8051AH توجه کنید میکرو SCN8051H )شرکت سازندهSignetics دارای 40 پایه به عبارت SCN8051توجه کنید.
خب فکر می کنم برای 8051 همین دو نوع کافی باشه 2)میکرو های PIC:تلفظ این میکرو ها به صورت پیک است و بیشتر در ربات های مسیر یاب کاربرد دارند و من کاربرد بیشتری برای اونا نمی دونم ولی اگر دوستان می دانند حتما در بخش نظرات اعلام کنند.(البته نمب دونم با وجود مبکرو های خوبی مثل avr دیگه ملت با چه عقلی از این میکرو ها استفاده می کنند؟
3)میکرو های avr که در این رابطه در جلسه آینده بیشتر براتون صحبت میکنم . هرچه شما بیشتر نظر بدهید می توانم بیشتر مطالب مورد نیاز شما را بنویسم فعلا خدانگهدار
|
|
+ نوشته شده در
پنجشنبه یکم فروردین 1387ساعت 19:32 توسط یحیی |
|
|
سلام ! امروز می خوام بگم میکرو ها چه جوری به وجود اومدند!
خب ببینید در ابتدا تراشه های اولیه به صورت ROMبودند که مخفف Read Only Memoryاست یعنی تو کارخونه یه سری اطلاعات روی اونا می ریختن و اونا فقط با استفاده از اون اطلاعات پردازش می کردند یعنی سطح پردازش محدودی داشتند.اطلاعات روی اونا هم قابل پاک شدن یا تعویض نبود و فقط خواندنی بودند. یعنی مثلا طوری برنامه ریزی شده بودند که اگه یک پایه ی اونا 1 شد پایه ی دیگر 0 شود ولی مثلا اگه می خواستین این عمل برعکس اجرا شود باید از یه رله استفاده می کردین . به تدریج ملت اومدن دیدن این حافظه های ROM خیلی ضایعه ! لذا اومدن حافظه های ERom رو ساختند یعنی Eraseable ROM حافظه های که قابل برنامه ریزی بودند و می توانستید به تعداد محدودی برنامه روی آنها بنویسید ولی اینکار به وسیله ی اشعه ی فرابنفش انجام می شد به طوریکه به هنگام نوشتن یه تعداد سلول داخل تراشه را می سوزاند و به هنگام پاک کردن اونا رو باز آوری می کرد. یواش یواش ملت دیدن که به دلیل سرطان زا بودن فرابنفش و خاصیت پرتوزایی تراشه بعد از هر بار نوشتن یا پاک کردن دهنشون داره آسفالت می شه ! لذا حافظه های EEROMرو اختراع کردند که مخفف Electricaly Erasaeble ROM یعنی حافظه با قابلیت برنامه ریزی الکترونیکی که میکرو کنترلر ها جزء این دسته می باشند . البته حافظه های مدرن تری به نام Flashهم اختراع شد که الان برای ذخیره و حمل اطلاعات ازشون استفاده می کنیم ولی یه نوع EEROM هستند. خب درس این جلسه همین بود جلسه بعد ایشاالله در مورد خصوصیت های عمومی میکرو ها صحبت می کنم و بعدش می ریم تو AVR خودمون و آموزش نرم افزاری و سخت افزاری اونا . منتظر شنیدن نظرات شما عزیزان هستم می دونید که میگن مستمع صاحب سخن را بر سر ذوق آورد ! فعلا خدا نگهدار |
|
+ نوشته شده در
سه شنبه بیست و هشتم اسفند 1386ساعت 8:51 توسط یحیی |
|
|
سلام من یحیی حسن زاده هستم دانشجوی مهندسی برق دانشگاه فردوسی مشهد قرار هست در کنار فرزان جان یک دوره ی جدید رو از میکروکنترلر براتون آموزش بدیم که ایشاالله از همین فردا س فردا شروع می شه این دوره دوباره میکرو رو از صفر شروع می کنه ولی با دید مهندسی گونه تر و اساسی و علامه بر آموزش مقدماتی شامل ربات و سیستم های حفاظتی و کنترلی هم خواهد شد .
ضمنا باید بهتون بگم تمام مطالبی که آموزش می دهم اول تجربیات من در زمینه میکرو است و همه ی اونا رو بر اساس آزمایشاتی که با میکرو انجام دادم بدست آوردم ولی اگر جایی لازم باشه از روی منبع بگم حتما اسم منبع رو هم ذکر می کنم ! در ضمن حیف جامعه ی علمی ماست که این اندازه حسود باشند فرزان جان وبلاگش رو باز کرده و داره اونو به هر نحوی است می چرخونه اینکه بعضی از دوستان حالا به هردلیلی میان ضد حال می زنن که آقا فرزان از روی کتاب خاصی نوشته واقعا کم لطفیه ! امیدوارم این دوستان بینش خودشون رو نسبت به موضوع عوض کنند. با آروزوی موفقیت برای شما یحیی حسن زاده |
|
+ نوشته شده در
دوشنبه بیست و هفتم اسفند 1386ساعت 23:5 توسط یحیی |
|
|
سلام عرض می کنم خدمت همه دوستای خوبم برای پیکر بندی تایمر ها در مد کانتر از دستور زیر استفاده می کنیم که در آن x شماره تایمر مورد نظر(مثلاْ TIMER0) می باشد و با انتخاب Edge=Rising محتوای کانتر با لبه بالا رونده سیگنال ورودی افزایش می یابد و با انتخاب Edge=Falling محتوای کانتر با لبه پایین رونده سیگنال ورودی افزایش می یابد. Config Timerx = Counter , Edge = Rising / Falling همانطور که در پست قبل به آن اشاره شد تایمر بر اساس اینکه هشت بیتی باشد یا شانزده بیتی می تواند تا حداکثر ۲۵۵(هشت بیتی) و ۶۵۵۳۵(شانزده بیتی) را بشمرد که وقتی کانتر تا این مقدار را شمرد یکی از پرچم های وقفه ovfx را یک می کند که در آن x شماره تایمر مورد نظر است که با استفاده ار دستوراتی که در پست قبل به آن ها اشاره شد می توان بر آن ها نظارت کرد. دوستان همانطوری که قولش رو داده بودم در پست بعد پروژه فرکانس متر رو خواهیم داشت که با استفاده از تایمر-کانتر های موجود در میکرو به طراحی آن ها می پردازیم. اما نکاتی که قبل از این پروژه باید بدانید این است که فرکانس چیست؟ و فرکانس متر چه کاری انجام می دهد؟ در پاسخ به این دو سوال باید بگویم که ما دو نوع جریان الکتریکی داریم ۱-جریان ثابت ۲DC-جریان متناوب AC . که مقدار DC کاملاً ثابت است و تغییری نمی کند مانند باتری. اما جریان AC جریانی است که مقدار آن متناسب با زمان تغییر می کند و از مقدار صفر به ماکزیمم(حداکثر) و از ماکزیمم به صفر و از صفر به مینیمم(حداقل)و از مینیمم به صفر می رسد که به این حلقه که دائماً تکرار می شود یک سیکل می گویند و فرکانس عبارت است از: تعداد سیکل هایی که در یک ثانیه تکرار می شوند و واحد آن هرتز(HZ ) است. وقتی می گوییم فرکانس موجی 50 (HZ) است یعنی در یک ثانیه 50 سیکل وجود دارد. از بحث فوق نتیجه می گیریم که ما برای اندازه گیری فرکانس باید تعداد سیکل ها را در یک ثانیه بشمریم که می توانیم این یک ثانیه را توسط تایمر بسازیم و سپس با استفاده از کانتر تعداد سیکل ها را اندازه بگیریم.فقط این وسط می مونه اینکه میکرو فقط می تونه فرکانس موج مربعی را اندازه بگیره که اینم مشکل بزرگی نیست و به راحتی حل شدنیه که به امید خدا در پست بعد به آن اشاره خواهیم کرد. ضمن نوید این که به احتمال زیاد در پست بعد ضمن ساخت فرکانس متر یه پروژه توپ دیگه هم داریم که مطمئنم خوشتون میاد.(ساخت ماوس کامپیوتر با میکرو). راستی اینم بگم ها تا نظرات بالای 10 تا نشه از پست بعد و پروژه ها خبری نیست. موفق و سربلند باشید |
|
+ نوشته شده در
دوشنبه هشتم بهمن 1386ساعت 22:3 توسط فرزان شجاعی |
|
|
دوستان خوبم سلام: تا فردا حق نگهدارتان |
|
+ نوشته شده در
یکشنبه هفتم بهمن 1386ساعت 19:30 توسط فرزان شجاعی |
|
|
سلام به دوستان خوب و عزيزم با استفاده از دستور زير مي توان تايمر-کانترها را در مد تايمر پيکره بندي کرد که در آن x يکي از اعداد 0،1،2،3 به معني تايمر 0 يا يک و... است و عبارت PRESCALE مي تواند يکي از موراد 1024،256،64،8،1 باشد که اين عدد تقسيمي از فرکانس کريستال مورد استفاده در ميکرو است به عنوان مثال اگر فرکانس کريستال مورد استفاده برابر 8 مگاهرتز باشد و مقدار PRESCALE برابر 8 آنگاه فرکانس پالس اعمالي به تايمر برابر 1=8/8 يک مگاهرتز خواهد بود. Config timerX=timer ,PRESCALE=1 / 8 / 64 / 256 / 1024 در دستور بالا چنانچه Timerx را Timer0 قرار دهیم و آن را مساوی با timer قرار دهیم Timer0 را در مُد تایمر پیکره بندی کرده ایم . PRESCALE*256 / Fosc با استفاده از دستور زیر می توان مقدار اولیه ای را در رجیستر شمارنده تایمر قرار داد که در اینصورت تایمر از عدد مورد نظر شروع به شمارش کرده در نتیجه به میزان عدد مورد نظر از 256 کمتر شمرده می شود و برای محاسبه زمان تأخیر عدد مورد نظر را از 256 کم کرده و در فرمول قرار می دهیم. که در آن value عدد مورد نظر است. TimerX= value در مثال زیر مقدار PRESCALE برابر با 1024 و فرکانس کریستال برابر یک مگاهرتز است و مقدار اولیه 10 در رجیستر شمارنده تایمر قرار داده شده است که طبق فرمول 1000000/246*1024 میزان تأخیر برابر با 251 میلی ثانیه است یعنی تایمر هر 251 میلی ثانیه یک بار سرریز می شود. همانطور که مشاهده می کنید عدد 10 از 256 کم شده و عدد 246 در فرمول قرار گرفته است.[دو زاریتون افتاد
و با استفاده از دستور زیر می توان مقدار تایمر را خواند و در متغیر Var قرار داد. Var= TimerX اکنون که تایمر را در مد تایمر پیکره بندی کردید و نحوه ایجاد تأخیرهای مختلف با آن را فرا گرفتید می توانید با استفاده از دستور Start TimerX تایمر X را شروع به شمارش کنید و با استفاده از دستور Stop TimerX آن را متوقف کنید. نکته دیگری که می ماند آن است که تایمر هر بار که سرریز می شود یک پرچم به نام Ovf 0 را یک می کند که شما برای نظارت بر این پرچم می توانید از دستورات وقفه استفاده کنید طوری که میکرو طبق روال دستورات برنامه را انجام می دهد و به محض بروز سرریز شدن تایمر و یک شدن پرچم Ovf X اجرای دستورات به بر چسب مربوطه پرش کرده و پس از اتمام مراحل دوباره به بدنه اصلی برنامه باز می گردد اما برای استفاده از وقفه ابتدا باید توسط دستور enable interrupts اجازه کلی استفاده از تمامی وقفه ها داده شود [این دستور امکان استفاده از تمامی وقفه ها را می دهد] سپس توسط دستور enable TimerX وقفه مربوط به تایمرها را فعال کرد و در نهایت با استفاده از دستور ON Ovf X Lable در صورت یک شدن هریک از بیت پرچم های Ovf 0 ، Ovf 1 ، Ovf 2 یا Ovf 3 به برچسب Lable که در پایان برنامه بعد از دستور End قرار می گیرد پرش کرد. خوب دوستان إن شاء الله در پست بعد به پیکره بندی تایمرها در مد کانتر اشاره خواهم کرد و قول یه پروژه خوب «فرکانس متر» فعلاً یا حق |
|
+ نوشته شده در
دوشنبه بیست و ششم شهریور 1386ساعت 15:13 توسط فرزان شجاعی |
|
|
سلام خدمت دوستان گل خوب امروز (البته الان شبه) پیکره بندی صفحه کلید های ماتریسی برای پیکره بندی این صفحه کلید ها از دستور زیر استفاده می شود که در آن portx می تواند یکی از پورت های میکروکنترلر باشد که صفحه کلید به آن وصل می شود (این صفحه کلید ها همانطور که در شکل می بینید دارای 8 پایه برای اتصال به میکروکنترلر هستند) و مقدار Debounce بر حسب میلی ثانیه مدت زمانی است که میکرو در تشخیص کلید فشرده شده صبر می کند و دوباره وضعیت پایه را بررسی می کند و اگر تغییری نکرده بود آن را به منزله فشرده شدن کلید در نظر می گیرد و این به دلیل آن است که کلید هایی که به طور مکانیکی فشرده می شوند مدت زمانی در حدود 20 میلی ثانیه لرزش بین مقدار 0 و 1 ایجاد می کنند که این مسئله میکرو را در تشخیص کلید فشرده شده گمراه می کند که استفاده از مقدار 20 بر حسب میلی ثانیه برای Debounce این مشکل را حل می کند و مقدار اختیاری Delay زمانی استفاده می شود که صفحه کلید به طور مداوم اسکن می شود و مدت زمانی است بین فشرده شدن دو کلید که مقدار 100 میلی ثانیه برای آن ایده آل است. [ config KBD=portx, Debounce=x,[Delay=x عکس مربوط به اتصال keypad به atmega32 پس از اینکه توسط دستور بالا صفحه کلید را پیکره بندی کردیم نوبت به آن رسیده که توسط دستور زیر عدد فشرده شده از صفحه کلید را در یک متغیر بریزیم این دستور تا زمانی که کلیدی فشرده نشده باشد عدد 16 را در متغیر مربوطه قرار می دهد و در زمان فشرده شدن کلید عدد متناسب با آن را از بین 0 تا 15 در متغیر قرار می هد. ( )var=GETKBD می گم خودمونیم دوستان الان آخر شبه منم خیلی خوابم یا حق |
|
+ نوشته شده در
جمعه شانزدهم شهریور 1386ساعت 23:30 توسط فرزان شجاعی |
|
|
دوستان خوبم سلام: راستش امروز اومده بودم که وبلاگو آپدیت کنم ولی دیدم که جمع آوری مطالب این پست خیلی کار داره منم چون داشتم می رفتم بیرون وقت نکردم که آپدیت کنم ولی به شما قول ٪۱۰۰ اما الان اومدم که از دوستانی که در زمینه ساخت ربات (خصوصاً قسمت مکانیک) تجربه دارند دعوت به همکاری کنم و به امید خدا یه تیم تشکیل بدیم و فعالیت کنیم. دوستانی که تمایل به همکاری دارند می تونند تو بخش نظرات این پست آمادگی خودشونو اعلام کنن یا به آدرس زیر برام آف بزارند. فعلاً یا حق |
|
+ نوشته شده در
پنجشنبه پانزدهم شهریور 1386ساعت 14:18 توسط فرزان شجاعی |
|
|
سلام خدمت شما دوستان خوب
پس خوب فکراتونو بکنین فعلا یا حق |
|
+ نوشته شده در
دوشنبه پنجم شهریور 1386ساعت 13:37 توسط فرزان شجاعی |
|
|
دوستان خوبم سلام دستور HEX (VAR=HEX(X به مثال زير توجه کنيد: Dim A As Byte , B As String * 5 دستور HEXVAL (VAR=HEXVAL(X به مثال زير توجه کنيد: Dim A As Byte , B As String * 5
(VAR=STRING(N , X به مثال زير توجه کنيد: Dim A As String * 20
دستور ASC (VAR=ASC(STRING به مثال زیر توجه کنید: Dim A As Byte , B As String * 5 دستور STR (VAR=STR(X به مثال زیر توجه کنید: Dim A As Byte , B As String * 5 دستور VAL (VAR=VAL(X به مثال زیر توجه کنید: Dim A As Byte , B As String * 5 دستور IF IF Expression THEN statement که همچنین می توان این دستور را به شکل زیر نیز به کار برد که در آنصورت اگر شرط عبارت Epression1درست شد دستورالعمل statement1 اجرا خواهد شد و در صورتی که شرط عبارت Expression1 درست نبود ولی شرط عبارت Expression2 درست بود دستورالعمل statement2 اجرا خواهد شد و در غیر اینصورت یعنی موقعی که شرط هیچکدام از دو عبارت Expression1 و Expression2 درست نباشد دستورالعمل statement 3 اجرا خواهد شد. IF Expression1 THEN به مثال زیر توجه فرمایید: Config Pinc.0 = Input در مثال بالا ابتدا توسط دستور CONFIG PORTX=INPUT/OUTPUT جهت پایه های پورت C را تعیین کردیم سپس برای هرکدام یک اسم مستعار در نظر گرفتیم و بعد با استفاده از دستور IF وضعیت پایه های ورودی را چک کردیم که در صورت درست شدن هریک از شرط ها دستورالعمل مربوطه اجرا خواهد شد. حلقه تکرار DO - LOOP DO به مثال زیر توجه کنید: "regfile = "m32def.dat$ در واقع ما با استفاده از برنامه بالا یک چشمک زن 8 کاناله ساخته ایم که شما می توانید آن را در محیط bascom نوشته و پس از کامپایل کردن آن را روی آی سی مورد نظر پروگرم(برنامه ریزی)کنید. دستور CASE Select Case Var که شما می توانید مقادیر test را به صورت تساوی با مقداری دلخواه،به صورت بزرگتر یا کوچکتر از مقداری دلخواه یا به صورت محدوده ای برای آن انتخاب کنید. مانند: Case 5:statement ، Case IS>4:statement ، یا Case 2 to 6 . به مثال زیر توجه کنید: Config Portc = Input خوب دوستان خوبم فکر می کنم برای این پست کافی باشه فقط یه سری از حلقه های تکرار می مونه برای پست بعدی. اگه تو دستورات این پست به مشکل برخوردید تو نظرات بنویسید خوشحال می شم فعلاً یا حق |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
+ نوشته شده در
جمعه دوازدهم مرداد 1386ساعت 20:12 توسط فرزان شجاعی |
|
|
سلام دوستان اميدوارم که حالتون خوب باشه جدول دستورات رياضي محيط BASCOM
با استفاده از علائم رياضي بالا مي توانيد عمليات رياضي خود را روي يک متغير در محيط BASCOM انجام دهيد. تابع ABS (VAR=ABS(var1 دقت کنيد که در مثال زير متغير ها از نوع INTEGER معرفي شده اند و دليل استفاده از اين نوع اين است که بايد از نوعي استفاده کرد که شامل مقادير منفي هم باشد(رجوع به (0)AVR ).مثال: Dim A As Integer , B As Integer تابع POWER (VAR=POWER(param1 , param2 به مثال زير توجه کنيد: Dim A As Byte , B As Byte , C As Byte
(VAR=sqr(X به مثال زير توجه کنيد: Dim A As Byte , B As Byte
(VAR=LOG(source به مثال زير توجه کنيد: Dim A As Single , B As Single
(VAR=ROUND(X به مثال زير توجه کنيد: Dim A As Single , B As Single
(VAR=RND(X به مثال زير توجه کنيد: Dim A As Byte
SET BIT به مثال زير توجه کنيد: SET PORTA.5 دستور RESET دستور TOGGLE دستور BITWAIT BITWAIT X , SET / RESET به مثال زير توجه کنيد: BITWAIT PORTC.2 , RESET تا زماني که پايه 3 پورت C (پايه صفر که همان پايه يک حقيقي ميکرو ماست هم حساب شده) صفر شود صبر مي کند و پس از صفر شدن اين پايه، پايه 5 پورت C يک مي شود. خوب فکر مي کنم براي اين پست کافي باشه اميدوارم که استفاده لازم رو ازشون ببريد اگه مشکلي داشتيد حتماً تو نظرات بنويسيد. فعلاً BYE |
||||||||||||||||||||||||||
|
+ نوشته شده در
چهارشنبه دهم مرداد 1386ساعت 15:56 توسط فرزان شجاعی |
|
|
با سلام خدمت دوستان خوبم دستور RIGHT
(VAR=LEFT(var1,n به مثال زير توجه کنيد: Dim A As String * 10 , B As String * 10 دستور ROTATE [ROTATE var ,LEFT/RIGHT [,BITS به مثال زیر دقت کنید: Dim A As Byte لازم می دونم که کمی بیشتر در مورد مثال بالا توضیح بدم که برای این کار ابتدا باید با مبناهای ریاضی آشنا بشید.اصولاً در ریاضی اعداد را در مبناهای مختلف از جمله BINARY (در مبنای دو)، OCTAL (در مبنای 8)، HEXADECIMAL (در مبنای 16) و DECIMAL (در مبنای ده) به کار می برند که ما در برنامه نویسی از سه مبنای BINARY ، HEXADECIMAL ، DECIMAL استفاده می کنیم به طوری که وقتی عدد باینری را در متغیری قرار می دهیم آن را با نماد B& شروع می کنیم زمانی که عدد هگزادسیمال را در متغیری قرار می دهیم آن را با نماد H& شروع می کنیم و برای قرار دادن عدد در مبنای دسیمال از نماد خاصی استفاده نمی کنیم و آن را بدون علامت در متغیر قرار می دهیم. اکنون به چگونگی تبدیل عدد از مبنای دسیمال به باینری می پردازیم: برای تبدیل عدد از مبنای دسیمال به باینری عدد مورد نظر را به طور متوالی به عدد دو تقسیم می کنیم تا خارج قسمت از مقسوم الیه کوچکتر شود سپس از خارج قسمت به سمت اولین باقیمانده عدد ها را می نویسیم که عدد بدست آمده معادل باینری عدد ما خواهد بود.به مثال زیر توجه کنید: باقیمانده 2(10000000)=128 همانطور که در مثال بالا دیدید معادل عدد 128 در مبنای باینری مساوی عدد (10000000) شد. که با توجه به این عدد متوجه می شویم که تعداد این اعداد هشت تا است و ما در مثال مربوط به دستور ROTATE این مقدار را (البته مقدار دسیمال آن را یعنی 128) در متغیر A قرار داده ایم که در واقع این هشت عدد معادل هشت پایه پورت دلخواه ماست که در این مثال فقط پایه هشتم پورت دلخواه ما یک است و بقیه پایه ها در وضعیت صفر(منطقی) به سر می برند که ما با دستور ROTATE این مقدار یک را در پورت مربوطه به سمت راست می چرخانیم که کاربرد آن می تواند در روشنایی ترتیبی LED باشد البته با هر بار استفاده از این دستور بیت مورد نظر فقط یک بار می چرخد که ما برای استفاده از این دستور برای روشنایی ترتیبی LED باید آن را داخل یک حلقه تکرار(در پست های آینده به طور مفصل راجع به این موضوع صحبت خواهیم کرد) قرار دهیم. جدول LOOKUP (VAR=LOOKUP(value , lable به مثال زیر توجه کنید: Dim A As Byte دستور MID ([VAR=MID(var , st [, L البته گزینه L اختیاری می باشد و در صورتی که برای آن مقداری نوشته نشود بیشترین طول L در نظر گرفته می شود. به مثال زیر توجه کنید: Dim A As String * 10 , B As String * 10 خوب دوستان خوبم امیدوارم که مطالب این پست به دردتون بخوره و استفاده لازم رو ازشون ببرید. فعلاً bye |
|
+ نوشته شده در
دوشنبه هشتم مرداد 1386ساعت 12:11 توسط فرزان شجاعی |
|
|
|
|
+ نوشته شده در
دوشنبه هشتم مرداد 1386ساعت 9:10 توسط فرزان شجاعی |
|
|
+ نوشته شده در
دوشنبه هشتم مرداد 1386ساعت 9:7 توسط فرزان شجاعی |
|
|
*
*
*
*
*
*
* |
|
+ نوشته شده در
یکشنبه هفتم مرداد 1386ساعت 23:45 توسط فرزان شجاعی |
|
|
با سلام خدمت دوستان گل
دو نوع LCD وجود دارد: LCD های کاراکتر و اعداد(متن) و LCD های گرافیکی. LCD 2x16 به طور مثال یک LCD متنی است و دارای دوسطر است که هر سطر دارای 16 مکان برای نمایش کاراکتر می باشد. LCD2x16 دارای 16 پایه می باشد.
|