تبليغاتX
آموزش مقدماتی میکروکنترلر avr

آموزش مقدماتی میکروکنترلر avr

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

دوباره کار را شروع میکنیم

سلامی به گرمی همیشه

اول باید از همه دوستانی که ما رو مورد لطف خودشون قرار دادن بالاخص آقای ذوالفقاری تشکر

کنم.

بعد باید از نبود خودم و بدقولیم معذرت خواهی کنم و برای جبران , هر چه سریعتر اقدام میکنم.

سوم باید بگم که قولم یادم نرفته و شروع میکنم به بستن مدارات.


بریم سر کارمون و جلسه آموزشی رو شروع کنیم.

برای بستم مدارات باید اول ای سی رو پروگرم کنیم. برای پروگرم آی سی ها چند راه داریم .

از طرق مختلف میشه آی سی رو پروگرم کرد. 

پروگرمرها انواع مختلفی داره مثل usb  یا مثلا پروگرم کردن از طریق پورت com یا مثلا jtag ها 

ولی من چون با jtag کار نکردم از توضیحش صرف نظر میکنم.

البته کار کردن با usb راحت تره به دلیل اینکه شما دیگه نیاز به منبع تغذیه خارجی ندارید و میتونید

با همون usb پروگرمرتون رو تغذیه کنید.

دو راه برای پروگرم کردن داریم:

1)یا یک پروگرمر بسازیم.

2)یا یه پروگرمر بخریم.

البته من با گزینه ی اول موافقم 

مراحل ساخت پروگرمر رو در همین جلسه ی توضیح میدم.

البته برای خرید پروگرمر باید بگم که میتونیم یه پروگرم رو در پاساژ امجد تهران که از 8 هزارتومن

شروع میشه به بالا تهیه کنید. البته میتونید انترنتی هم خریداری کنید.

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

1)با کدوم برنامه سازگاره؟؟ بیسکام؟کدویژن؟یا...؟؟آیا این پروگرمر با برنامتون همخونی داره؟؟؟

2)سرعتش چطوره؟؟

3)از کجا تغذیه میشه؟؟

4)..

..

..کلا کار باهاش باید آسون باشه.

خوب برای ساخت پروگرمر میتونیم هم stk200/300  هم usb ولی چون ساخت usb زمانبر تر است

من فقط به دادن نقشه اکتفا میکنم

برای ساخت stk 200\300 فقط به یک پورت lpt و مقداری  فلت احتیاج داریم ولی بهتره برای ساختش از یک

بافر هم استفاده کنیم

نقشه ی ساخت  این پروگرمر در کتاب کاهه هست

ولی باید به تغییراتی جزئی که در انتهای کتاب هست توجه کنید .

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

امیدوارم مصالب وبلاگ مفید واقع بشه.

نظر فراموش نشه.

در این شبهای عزیز من رو هم فراموش نکنید .

التماس دعا

 موفق باشید

                stk200\300         

       usb

+ نوشته شده در  چهارشنبه 10 شهریور1389ساعت   توسط مهندس ساعی  | 

تشکر

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

از زحمات مهندس ساعی واقعا ممنونم. از پیگیری ها و توجه شما دوشتان عزیز هم سپاسگزارم

یه سری فایل آموزشی در سایت زیر هست که خیلی خوب میکرو رو آموزش داده حتما یه سری بزنید

با وجود این مطالب آموزشی مثل همیشه ما در خدمتیم

شاد و پیروز باشید

www.eca.ir

 

+ نوشته شده در  یکشنبه 31 مرداد1389ساعت   توسط مهندس ذوالفقاری  | 

معذرت خواهی

سلام به همه ی دوستان

با عرض معذرت از همه ی شما غیبت طولانی من دلیل قابل قبولی نداره

در اولین فرصتی که وقت پیدا کردم حتما مطلب جدید آپ میکنم

 

باتشکر

+ نوشته شده در  چهارشنبه 9 تیر1389ساعت   توسط مهندس ساعی  | 

مژده+دستور Gosub

سلام به همه ی دوستان 

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

دانش پژوهان عزیز سرشار از چالش های علمی و یادگیری مطالب جدید باشه 

قبل از هر چیزی باید بابت غیبتم ازتون معذرت بخوام حقیقتا سرم خیلی شلوغ بود ولی قول میدم

جبران کنم

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

بیسکام رو یادمیگرفتیم و نهایتا برنامه هارا تو خود بیسکام سیمولیت میکردیم حالا میخوام اگر خدا 

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

بزارم فکر میکنم این بهترین قسمت این وبلاگ باشه.

خوب بریم سر کارمون 

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

دیگه در مورد یک زیر برنامه از نوع Sub ادامه بدیم


پرش به یک زیر برنامه توسط دستورGosub

با این دستور برنامه تا خط Gosubخوانده میشود از انجا به بعد برنامه قطع میشود و به زیر برنامه

میرود و از آن آدرس برنامه ادامه میابد .

در آخر این زیر برنامه ها به جای END از RETURN استفاده میکنیم.

بعد از خواندن  RETURN از زیر برنامه برنامه به خط بعدی  Gosub  منتقل میشود.

توجه:

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

بنویسیم اسم زیر برنامه را با علامت دونقطه (:)قرار دهیم

                                                                                Dim A As Byte     

                                                                                       Gosub Ali  

                                                                                  wait_ms 300

                                                                                               Cls  

                                                                                         "Lcd"Ali 

                                                                                              End

  

                                                                                              :Ali

                                                                                              Cls

                                                                                    "Lcd"Hello

                                                                                         Return

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

IC مد نظر است و کم حجم تر شدن برنامه ی اصلی.

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

 ال سی دی از کتاب کاهه  رو یه نگاه بندازید

اگر متن جاییش نارسایی داشت پیغام بدید بیشتر توضیح بدم

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

ممنون و متشکر

+ نوشته شده در  چهارشنبه 11 فروردین1389ساعت   توسط مهندس ساعی  | 

عذر خواهی

سلام

معذرت میخوام بابت دیر کردم

 به خدا سرم یه خورده شلوغه (یه خورده که چه عرض کنم خیلی زیاد )در اولین فرصت میام و مطلب میزارم

بازم شرمنده

برام دعا کنید

+ نوشته شده در  دوشنبه 10 اسفند1388ساعت   توسط مهندس ساعی  | 

آموزش AVR با بیسکام+شروع مبحث تابع ها و زیر برنامه ها









سلام دوستان

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

خوب

هر زیر برنامه  از یک یا چند تابع و روال تشکیل میشود

انواع زیر برنامه ها:

1)  روال  ---------------------------------------------->Sub 
2)  تابع   ----------------------------------------------> Function 

روال می تواند چندین مقدار را به برنامه فراخوان باز گرداند ولی تابع فقط می تواند یک خروجی داشته باشد. هر دوی روال و تابع می توانند مقداری را باز نگردانند و فقط عملیات خودشان را انجام دهند مثل چاپ یک مقدار. هر دوی روال و تابع می توانند هیچ مقداری را به عنوان آرگومان نگیرند.

قبل از استفاده از این تابع ها یاروال ها( زیر برنامه ها) باید حتما اعلان شوند به عبارتی دیگر اول باید معرفی گرددند و بعد از با دستور call فراخوانی شوند

و حتما به یاد داشته باشید که هر تابع و روال  )یا زیر برنامه) یا هر برنامه ای حتما باید در انتها به end ختم شود

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

باید به یاد داشته باشیم که این دستور مقداری از تابع را برمیگرداند پس باید علاوه بر متغییر های تابع نوع تابع را هم مشخص کنیم.

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

ما در برنامه ی اصلی هر جا به آن نیاز پیدا کردیم آن را فراخوانی میکنیم

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

                            Dim A As Integer                
                            Dim B As Integer                                                                                     
                            Dim K As Integer                                                                                     
                            A = 12
                            B = 100                                                                                                 
                            K = 40                                                                                                   

                            Declare Function Mail(byval E As Integer )as Integer                                    


                                                                                                                                                      Cls  
                                Lcd K                                                                                                 
                                Waitms  100
                             Cls                                                                                                          
                                Lcd A                                                                                                 
   Waitms  300                             
                                Cls                                                                                                    
                                  Lcd B                                                                                               
                                Waitms 300                                                                                         
                                                                                            (                                                          K = Mail(b)
                                Cls                                                                                                     
                                  Lcd B                                                                                               

                             Waitms 400                                                                                          

             Cls                             
                            Lcd K                                                                                                                         Waitms 300                                                                                           
              
                            End                                                                                                        
                                        ------------------------------------------------------- '
                       Function Mail(byval E As Integer )as Integer 
                       Dim P As Integer                                                                                      
                       P = E                                                                                                   3*                                       Waitms                                                                                            300  
                                                                                                       lcd p                                 

                                                                                             Waitms 600                                                                          

End Function                                  

    

خوب شروع کنیم به تحلیل برنامه

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

خط هفتم تابعی با نام mail را با مقدار ورودیه اولیه ی E تعریف کردیم و نوع آن را نیز intمعین کردیم و نوع خود تابع را نیز همینطور

حال برویم سر کلمه ی  byref /  byval  :

byval کپی از مقدار متغییر مد نظر را برمیگرداندولی در byref  آدرس متغییر (آدرسی که در حافظه اشغال کرده)را برمیگرداند و تغییرات بر روی متغییر آن تاثیر میگذارد

در واقع فرق بین byval

اگر موقع تعریف یک تابع قبل از نام متغیر از عبارت ByRef استفاده نماییم هنگام فراخوانی تابع با قراردادن متغیری در تابع که دارای مقدارمیباشد ، پس از محاسبات ، مقدار متغیر نیز تغییر میکند. در ضمن مقدار تابع با آخرین مقدار متغیر محاسبه میگردد.

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

در صورت درج نشدن پیش فرض به صورت byref داده شده است.

با این خط تابع را اعلان کردیم

تا خط های ۱۷:اینجا مقدار تابع را به مقدار k  میدهیم مغییر b  داخل پرانتز به این معنیست که مقدار متغییر b را مانند یک مقدار به مقدار Eدر داخل آعلان تابع بر میگرداند

حالا تابع شروع به اجرا شدن میکندبه انتهای برنامه بروید تابع را با دستور Function mailشروع کردیم و بعد آن داخل پرانتز مشخصات تابع را دادیم تا متوجه شود منظور ما کدوم تابع است حالا کارهایی که توقع داریم این تابع برای ما انجام دهد را در این قسمت ذکر میکنیم و در آخراز کلمه ی End  استفاده میکنیم. 

نکته:

در تابع ها میتوانیم هر مقدار که میخواییم متغییر تعریف کنیم در این مورد تابع هاو زیر برنامه ها(روال ها ) به هم مرتبط نیستن

فکر میکنید چه مقداری را در خط بعدی LCD برای B نشان میدهد ؟؟؟؟؟؟بله درسته همان عدد ۱۰۰  را نشان میدهد

حالا در مورد k چه حدسی میزنید؟؟؟؟

در واقع اینجاست که شک میکنیم اینجا تابع به جای عدد 300 که تابع به عدد k داده عدد 40 یعنی مقدار اولیه خودش رو نشون میده یا نه ؟؟؟!!!!!چون تغییرات را انجام داده ولی در مقداری که تابع بر میگردونه ذخیره نکردیم به اصلاح به تابع مقدار p را برنگردوندیم پس با اضافه کردن خط k= mail(p)  به خط یکی مونده به آخر تابع همان مقدار 300 که تابع دارد را برای k نمایش میدهد

و

End

خوب امیدوام این موضوع روشن شده باشه 

برای جلسات بعدی ادامه ی این مطلب رو میذارم امیدوارم کاربردی باشه

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

سر افراز باشید

+ نوشته شده در  چهارشنبه 14 بهمن1388ساعت   توسط مهندس ساعی  | 

آموزش مقدماتی avrبا بسکام(کار و دستورات موبوط به LCD تموم شد)



سلام   سلام   سلام

امیدوارم خوب و سرحال باشید به امید خدا امتحانات من هم تموم شد و مجالی شد برای مطلب گذاشتن

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

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

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

بسم الله الرحمن الرحیم

تا اینجا در مورد نشون دادن کاراکتر ها در روی LCD

و دستورات

lowerline , CLS , Shiftright , Shiftleft , lcd chr() , Locate,. . . . .و نشون دادن کارکتر های فارسی و کاراکترهای دلخواه روی LCDبحث کردیم

الان میخوایم در مورد   CURSOR  و  Shift cursor و  Upperline  ,  Thirdline  ,  Fourthline

صحبت کنیم که دیگه مطالب LCDتموم بشه

خوب مثل بعضی از Lcd ها میتوانیم مکان نمای Lcdرو تعیین کرد

با دستور Cursor  مکان نما رو تعیین میکنیم این دستور با گزینه های  ON , OFF, BLINK ,NOBLINk میاد.

منظور از BLINK همون  چشمک زن هست.

on/ off که خودتون میدونید!!!!!!مکان نما یا در حالت ثابت یا اصلا نیست

توجه :

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

Shift Cursor:

این دستور هم مانند  دستور Shift Lcd عمل میکند فقط با این تفاوت که در اینجا مکان نما رو به چپ یا راست منتقل می کند. 

و دستور مورد نظر Shift cursor RIGHT /LEFT است

و چهار دستور lowerline / upperline  / thirdline / fourthline کاملا شبیه هم هستن 

 خط مورد نظر و یا به عبارتی کارکتر ها رو به خط قید شده منتقل میکنه 

اگر دستور lower line رو خوب یاد گرفته باشید این کاری نداره

دستور upperlineبه خط بالا و دستورهای thirdline , fourthline به ترتیب به خط سوم و چهارم منتقل میکنن

نکته:

باید توجه داشت که این دوستور third , fourth  به شرطی کاربری دارن که

ما قبلا در تعیین نوع lcd ,lcd مورد نظر را 4*16 یا هر lcd که 3یا 4 خط یا بیشتر داشته باشه تعریف کنیم

خوب جلسه ی هفدهم هم به این ترتیب تموم شد

 برای دوستمون که درخواست دستور IFکردن چشم به محض شروع کردن تابع و زیر تابع اون رو هم میگم

برنامه های جلسه ی امروز کار آنچنانی نمیخواد پس من سعی میکنم مطالب تابع رو خیلی زود بزارم

ضمنا نظر دادن رو فراموش نکنید 

منتظر ما باشید

یاعلی

+ نوشته شده در  سه شنبه 13 بهمن1388ساعت   توسط مهندس ساعی  | 

بزودی×رباتیک×بزودی

سلام به همه ی دوستان و دانشجویان عزیز

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

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

در ضمن دوست خوبمون آقای حیدری یه فایل آموزشی تهیه کردند که از لینک زیر میتونید دانلود کنید.البته ایشون با codevision و زبان c کار کردن ولی دیدنش خالی از لطف نیست

دانلود آموزش AVR برای مبتدیان

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

شاد و پیروز باشید

+ نوشته شده در  جمعه 2 بهمن1388ساعت   توسط مهندس ذوالفقاری  | 

آموزش AVR با BASCOM از پایه



سلام 

به همهی دوستان که در ابتدای آموزش AVR هستن

جلسه ی شانزدهم رو همونطور که قول دادم با طراحی روی LCD شروع میکنیم

برای این کار ابتدای برنامه رو مثل برنامه های دیگه اول نوع میکرو فرکانسش و ....

رو تعیین میکنیم

بعد توی گزینه ی TOOLS>>LCD designer رو انتخاب میکنیم

با انتخاب این گزینه یه صفحه ای شطرنجی 8*5

شکل - حروف یا هر چیزی کهمیخواید lcd نشون بده رو اینجا طراحی کنید ok که کردید

یه خط به این صورت 

                                        Deflcdchar  ? ,  32  ,  8 , 4 , 2 , 12 , 2 , 16 , 3 

تو صفحه ی برنامتون میاد

به جای علامت سوال باید یه عدد بزارید یعنی باید عددی بین 0 تا 7 

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

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

بعد که به میزان دلخواه و مورد نیاز کارکتر تعریف کردید با دستور Lcd Chr  کارکتر مورد نظر را فراخوانی میکنیم

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

Deflcdchar 0 , 32 , 32 , 1 , 1 , 31 , 16 , 4 , 32                                                 
Deflcdchar 1 , 16 , 16 , 20 , 16 , 17 , 31 , 32 , 32                                            
Deflcdchar 2 , 32 , 32 , 31 , 21 , 23 , 16 , 16 , 16                                            
Deflcdchar 3 , 8 , 3 , 5 , 9 , 1 , 31 , 32 , 32                                                    '
Deflcdchar 4 , 32 , 32 , 8 , 4 , 2 , 2 , 4 , 8                                                      
Deflcdchar 5 , 4 , 4 , 4 , 4 , 4 , 4 , 32 , 32                                                      
Cls                                                                                                             
Lcd Chr(5)                                                                                                  
Lcd Chr(4)                                                                                                  
Lcd Chr(3)                                                                                                  
Lcd Chr(2)                                                                                                  
Lcd Chr(1)                                                                                                  
Lcd Chr(0)                                                                                                  
Waitms 50                                          

خوب؟

حالا میتونید خودتون هر کاراکتری رو تو lcd نمیایش بدید

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

نظر هم بدید خوشحال میشیم

موفق باشید

+ نوشته شده در  شنبه 21 آذر1388ساعت   توسط مهندس ساعی  | 

آموزش avr با BASCOM(تمرین 2+عذر خواهی)


 سلامی آشنا به همهی دانشجو های عزیز 

بابت چند روز تاخیر معذرت میخوام مشکلی پیش اومده بود که الحمدو الله برطرف شد

امروز فقط برنامه ی دوم تمرین زیر رو با چند تا متغییر طراحی شده رو براتون میزارم

این جلسه فقط حل تمرین داریم 

برنامه از این قراره:

Do                                                                                             
Dim A As Byte                                                                             
For A = 1 To 17                                                                          
Cls                                                                                             
Locate 1 , A                                                                               
Lcd "Hello"                                                                                 
Waitms 100                                                                                
Next A                                                                                      
خوب این برنامه همون نتیجه ی برنامه ی جلسه قبل رو میده ولی با یه دید دیگه نوشته شده 

الان با یه دستور lowerline میتونیم hello  رو در خط پایین هم دو باره نمایش بدیم به برنامه  زیر نگاه کنید


Dim A As Byte                                                                            
For A = 1 To 17                                                                         
Cls                                                                                            
Locate 1 , A                                                                               
Lcd "Hello"                                                                                 
Waitms 100                                                                                
Next A                                                                                      
Cls                                                                                            
Lowerline                                                                                  
For A = 1 To 16                                                                         
Cls                                                                                            
Locate 2 , A                                                                              
Lcd "Hello"                                                                                
Waitms 100                                                                               
Next  A                                                                                  A                    

تجزیه و تحلیل برنامه دیگه با خودتون  

فقط یه چیزی !!!!!

برنامه ها رو در simulate  خود بیسکام بینید

و یه خورده تمرین کنید 

جلسه ی بعد طراحی فارسی رو صفحه ی Lcd  رو توضیح میدم 

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

همچنان از آقای ذوالفقاری تشکر میکنم که به روز کردن سایت رو یادآوری میکنن

و با درایت برای پیشرفت بچه ها قدم بر میدارن

شاد و پیروز باشید



+ نوشته شده در  جمعه 6 آذر1388ساعت   توسط مهندس ساعی  | 

آموزش avr با بیسکام "تمرین"

سلام به همه ی شما دوستای خوبم

آماده اید تا جلسه ی پانزدهم رو شروع کنیم؟؟

خوب  بسم الله

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

که با توجه به چرخه ها و فرمان هایی که تا الان  خوندیم Hello از یه طرف lcd بیاد از طرف دیگه خارج شه

به برنامه ی زیر نگاه کنید . خط به خط تحلیلش کنید

Dim A As Byte                                                                                    
Cls                                                                                                    
Lcd "hello"                                                                                         
For A = 1 To 15                                                                                 
Shiftlcd Right                                                                                      
Wait 3                                                                                              
Next  A                                                                                           A                   

نگاه کنید به برنامه بعد از تعریف نوع ic میزان فرکانس نوع lcdو..........

اومدیم براش متغییر A رو تعریف کردیم lcd رو پاک کردیم روی lcd کلمه ی Hello رو نمایش دادیم و اما بعد.............

دستور shift lcd  رو داخل حلقه ی for next گذاشتیم به نظر شما چه اتفاقی مییوفته؟؟؟

درسته آفرین

دقیقا با هر بار داخل چرخه شدن یک بار lcd به سمت مورد نظر shift پیدا میکند

برای رویت هر تغییری هم یه time 3 یا 4 ثانیه ای رو قرار میدیم

 و در آخر یه فرمان next A 


این برنامه رو به یه صوت دیگه هم میشه نوشت اگر نوشتید mail بزنید ببینم

تو جلسه ی بعدی حتما میزارم

موفق باشید


نظر هم فراموش نشه  من رو با نظراتتون همراهی کنید

متشکرم

+ نوشته شده در  جمعه 15 آبان1388ساعت   توسط مهندس ساعی  | 

آموزش گام به گام avr (دستور shiftlcd )




سلام

جلسه ی چهاردهم رو شروع میکنیم

امروز میخوام در مورد shiftlcd  right     or    left صحبت کنیم

این دستور از اسمش هم مشخصه Lcd رو به راست و چپ میبره 

حالا این دستور رو میخوام با مثال زیر بهتون نشون بدم

                                                                                        Dim A As Byte        

                                                                                                        Cls   

                                                                                              Lcd "hello"

                                                                                    For A = 1 To 15

                                                                                         Shiftlcd Right 

                                                                                           Waitms 500

                                                                                                 Next A

در خط اول اومدیم نوع متغییر a رو معین کردیم 

در خط دوم اومدیم Lcdرو پاک کردیم و آماده ی پذیرش کاراکترها

در خط سوم hello رو نشون میدیم

در خط چهارم با کمک چرخه ی For یه حلقه ی پرش ایجاد میکنیم تا بعد از یه بازه ی مشخص دیگه اون کار رو انجام نده 

در خط پنجم  Lcd رو به راست  shift میدیم 

در خط ششم  500 میلی ثانیه برای هر shift صبر میکنیم

در خط هفتم با رویت Next کار shift کردن Lcd رو 15 بار انجام میدیم 

این برنامه رو تو قسمت simulste بسکام انجام بدید فوق العاده جالبه

در مورد shiftlcd left نیز مانند shiftlcd rightعمل میکند فقط به جای shit به راست به چپ shift میدهد

همین

راحت بود نه؟؟؟؟؟؟؟؟؟؟؟

نظر فراموش نشه 

از نظراتتون هم ممنون

موفق باشيد

+ نوشته شده در  جمعه 1 آبان1388ساعت   توسط مهندس ساعی  | 

ادامه آموزش avr با بسکام (دستور های Incr و Decr )






سلام به بچه های دانش پرور

خوبید؟

امیدوارم سلامت باشید و از یادگیریه avr با بسکام لذت برده باشید و راضی باشید

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

امروز دو دستور دیگه هم بهتون میگم

INCR(این دستور به متغییر ما یک واحد اضافه میکنه)

DECR(این دستور از متغییر ما یک واحد کم میکنه)

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

هر جا که ما نیاز به شمارندهداریم میتوان از این دو دستور استفاده کرد

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

این دو دستور به این صورت نوشته میشوند

                                                                                               Dim  A  As byte

                                  (اینجا مورد دلخواه مورد نظر خودمون رو به عدد aنسبت میدیم)' = A 

                                                                                                         INCR   A 

                                                                                                                 Cls

                                                                                                            Lcd  A  

تحلیل برنامه :

خط اول نوع متغییر a  رو تعیین کردیم که از نوع byte

خط دوم اولین مقدار دلخواه رو به a A  دادیم این مقدار با توجه به برناممون متغییر میتونه باشه

خط سوم هم که به متغییر اولیه A یک واحد اضافه کردیم مثلا اگر مقدار A  برابر

 با 10 بود بعد از خط سوم A  دیگه مقدار 10 رو نداره دیگه برابر 11  میشه .  ok ؟

حالا اگر Decr بود یه واحد کم میکنه A برابر با 9 میشه

 تا اینجا همه چیز مشخصه؟؟؟؟؟؟؟؟؟

خوب برنامه ی این دو دستور رو هم جلسه ها ی بعد در خلال برنامه های دیگه میگم

ممنون از نظراتتون 

بازم یادآوری میکنم نظر فراموش نشه نظراتتون مارو برای ادامه دادن دلگرمتر میکنه

باز هم ممنون از آقای ذوالفقاری که همچنان وجودشون امیدی برای یادگیریه 

فعلا

+ نوشته شده در  چهارشنبه 15 مهر1388ساعت   توسط مهندس ساعی  | 

نمونه ای از برنامه های ساده و طرز استفاده از چرخه Do-Loop



سلام 
امروز جلسه 12
ادامه میدیم مبحث قبل رو . قرار بود که من برای شما چند تا از برنامه های
ساده رو با چرخه ی Do-Loopقرار بدم 
الان من هم برنامه ها رو قرار میدم هم نتیجه شو میگم هم با چرخه توضیح میدم
برنامه ی اول  
Dim A As Byte
A = 1
Cls
Lcd A
Waitms 500
این برنامه فقط یک بار اجرا میشه A رو نشون میده wait میکنه فقط همین!!!!
حالا به برنامه ی پایین توجه کنید
Do
Dim A As Byte
A = 1
Cls
Lcd A
Waitms 500
Loop
این برنامه تا وقتی پنجره ی شبیه سازی باز است اجرا میشود
برنامه ی دوم
Cls
Lcd "hello"
Waitms 500
Lowerline  
Lcd "mohamad"

این برنامه hello رو سطر اول نمایش داده سپس بعد از 500 msصبر کردن
در سطر دوم mohamad را نمایش میدهد وبعد هیچ اتفاق خاصی دیگری نمی افتد.
بعد از اضافه کردن Do_Loop به برنامه
 برنامه بعد از نمایش  mohamad پاک میشود و دوباره hello رو نمایش میده صبر میکند
دوباره mohamad رو نشون میده

Do
Cls
Lcd "hello"
Waitms 500
Lowerline 
Lcd "mohamad"
Cls
Loop
خوب همین دو تا برنامه برای استارت کار خوبه شما برنامه های دیگه تون رو تو همین چرخه امتحان کنید
نظر فراموش نشه ها 
تا جلسه ی بعد 
+ نوشته شده در  دوشنبه 6 مهر1388ساعت   توسط مهندس ساعی  | 

چرخه ی do-loop


سلام به دانش پزوهان عزیز
امیدوارم حالتون خوب باشه
امروز جلسه ی یازدهم
امروز میخوام در مورد چرخه ی DO-loop بیشتر صحبت کنیم
ما قبلا چرخه ی دیگه ای رو هم توضیح داده بودیم؟؟؟؟؟ ............. بله!!!!!!!!!!!
درسته چرخه ی FOR-NEXT  !!!!!!!
اون چرخه یادتونه؟؟؟؟؟
for-next
دستوریه که step by step کاری رو که بین FOR و  next باشه رو انجام میده 
وقتی که شرط توش صدق نمیکنه از داخل چرخه  بیرون میاد
به برنامه ی زیر نگاه کنید

Dim A As Byte
For A = 1 To 15
Cls
Lcd "a"
wait 2
Cls
Lcd "b"
Wait 2
Cls
Next A

برنامه از خط اول شروع میشود نوع منغییر A از نوع Byte است مقدار دهی
اولیه ی A را برابر یک قرار دادیم . 
خط دوم  مغییر  A را بین بازه 1  تا  15  تعریف کردیم این بازه را با توجه به
میل خودمان و نیاز برنامه  مشخص میکنیم .
توجه:اگر مشخص نکردیم به صورت خودکار یک در نظر گرفته میشود.
حال بین For  و Next  برنامه ی دلخواه خود را قرار میدهیم که ما در اینجا
فقط نمایش در Lcd را مد نظر داریم.
اول در Lcd
کاراکتر "a" را نمایش میدهد 2 ثانیه صبر میکند "a" را پاک میکند دوباره
کاراکتر"b" را نمایش میدهد 2 ثانیه صبر میکند "b"را پاک میکند
وقتی به عبارت  Next A رسیدیم به صورت خودکار به A یک واحداضافه میشود
و مقدار 2 را می پذیرد . شرط را مطابقت میدهد آیا A بین 1 تا 15 هست ؟؟؟
بله هست !!!!!!
دوباره به اول چرخه برمیگردیم شروع میکند به نمایش "a"
2 ثاتیه صبر...... پاک کردن نمایش"b"
2 ثانیه صبر .......وتا آخر ادامه میدهد.
به عبارت Next A رسیدیم به طور خودکار به A  یک واحد اضافه شده به 3 تغییر میکند 
دوباره مقدار  A را مطابقت میدهیم اگردر بین بازه ی مد نظر بود که به خط برمیگردیم
اگر نبود دستورات بعد ازNext a را ادامه میدهد.
این دستور For-Next بود ولی دستور DO-Loop هیچ شرطی ندارد مثل  (While(1عمل میکند
دائما در حال تکرار است. (البته استثناتی هم داره که در جا هم خارج بشه اونم اینه که
با دستور زیر برنامه که بعدا در موردش بیشتر حرف میزنیم خارج بشه)
همین!!!!!!!!!!!!!!!
Do--Loop خیلی راحته به شرط اینکهFor-Next  رو خوب درک کرده باشید
حالا میتونید همهی برنامه های اولیتون رو تو چرخه یDo-Loop بنویسید تا پشت سر هم اجرا بشن 
قبلا اگر میخواستید برنامه ای رو بنویسید فقط یک بار اجرا میشد و تمام . الان به صورت مداوم اجرا میشه
یه چند نمونه از برنامه های ساده ای رو که تا الان نوشتیم رو براتون میذارم تا خودتون ببینید
ممنونم 
نظر هم یادتون نره 
اشکالی داشتید mailبزنیدیا تو نظرات بگید. 
ودر آخر میخوام از آقای ذوالفقاری بابت حرکت خوبشون تشکر کنم
تا جلسه بعد
+ نوشته شده در  سه شنبه 31 شهریور1388ساعت   توسط مهندس ساعی  | 

AVR به زبان BASCOM(شبیه سازی)

سلام

به همه دانش پژوهان عزیز

فکر کنم امروز دهمین جلسه آموزشی ما باشه که داریم پیش میریم

امیدوارم تا اینجا برنامه ها رو به راحتی تونسته باشید بنویسید و شبیه سازی کنید(اصلا نگران نباشیددر مورد شبیه سازی خود برنامه bascom بیشتر توضیح میدم)

جلسه های قبل در مورد lcd و نوع تعیین ic و کریستال و نوع تعیین lcd و .....صحبت کردیم 

حالا اصل قسمت آموزشی

که همون شبیه سازیه

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

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

بعد از این که برنامه رو نوشتید و compileکردید (یا کلید F7 رو زدید)روی گزینه ی simulate porgram

در نوار ابزار (یا کلید F2)کلیک کنید برای شما یه پنجره جدید باز میشود که روی نوار ابزار آن گزینه ی lcd

نمایان است با انتخاب ان و play کردن میتوانید برنامتونو شبیه سازی کنید

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

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

ضمنا بچه ها اگر جایی به مشکل بر خوردید سوالاتتون رو در قسمت نظرات بپرسید تا جواب داده بشه 

نظرات شما ما را در بهبود هر چه بیشتر آموزش avr با برنامه بسکام هدایت میکند

موفق باشید

+ نوشته شده در  یکشنبه 22 شهریور1388ساعت   توسط مهندس ساعی  | 

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

با سلامی مجدد

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

روند کار بصورت زیر می باشد از این پس:

ا-شما میرید اون مبحثی که میگمو مطالعه می کنید.

۲-من یه تمرین میدم.

۳-فایل برنامه به همراه فایل شبیه سازی پروتئوس رو برای دانلود میزارم تا شما در ضمن اینکه اشکالاتتون رو ایمیلی با ما در میون میزیارید دسترسی به اصل داستان هم داشته باشید.

لطفا و خواهشا این دوتا کتابی که تو آدرس زیر گذاشتم رو دانلود بفرمایید.

التماس دعا

http://avr-starter.blogfa.com/post-2.aspx

+ نوشته شده در  دوشنبه 9 شهریور1388ساعت   توسط مهندس ذوالفقاری  | 

دستورالعملهای حلقه و پرش: For-Next

اون دسته از دوستانی که سری تو برنامه نویسی دارند با دستور For آشنا هستند. دستور خوبیه

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

FOR var = start TO end [STEP value]

                statements

Next var

var یک متغیر که مثل یک شمارنده عمل میکنه و قبل حلقه تعریفش میکنیم و start مقدار اولیشه وEnd مقدار نهاییش که عددند.

value هم مقدار عددی step که گام هامونو تعیین میکنه میتونه مثبت یا منفی باشه

For C = 10 To -5 Step -1
lcd c

Next

اگه گفتید خروجی برنامه چیه؟

تا بعد

 

+ نوشته شده در  دوشنبه 2 شهریور1388ساعت   توسط مهندس ذوالفقاری  | 

نحوه ی تعریف متغیر

سلام

متغیر از اسمش پیداست یعنی چیزی که دارای تغییره. ما تو برنامه نویسی طبیعتا یه سری داده داریم که میخوایم ازش استفاده کنیم برای اینکه این داده ها که میتونند عدد باشند یا رشته یادمون نره یا یه جور سازماندهیش کرده باشیم میایم بهش اسم میدیم و نوعشم تعیین میکنیم.اینجوری:

DIM var AS data type

var اسم متغیرمونه مثل hasan یا هر چیز دیگه ای و data type هم نوع متغیرمونه بقیه دستورم ثابت برای تعریف متغیر(Dim,AS)

data type بسته به کاری که میخوایم کنیم میتونه انواع زیر رو داشته باشه اعم از:

bit,byte,integer,word,long,single,string

به مثال های زیر توجه نمایید.

Dim A As string*10    

یعنی متغیری بنام  A تعریف کردیم از نوع رشته ای با طول 10 کاراکتر

Dim B As byte

متغیری بنام B از نوع بایت

اوکی؟

تمرین:

1-متغیری ینام خودتون تعریف کنید از نوع رشته ای با طول 15 کاراکتر

2-چند متغیر با نام های دلخواه از انواع داده شده تعریف نمایید.

 

 

+ نوشته شده در  پنجشنبه 29 مرداد1388ساعت   توسط مهندس ذوالفقاری  | 

دستورات جدید

دستورات جدیدو میگم بعد یه تمرین میدم برا هر کدومشون

دستور زیر مکان نمای lcd رو میبره خط پایین :

lowerline

برنامه ای بنویسید که اسمتون رو خط اول و فامیلتون رو خط دوم lcd نشون بده جواباتونو میل کنید ببینم درست یا نه؟

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

بنابراین از حلقه تکرار مهم Do...Loop استفاده میکنیم. به مثال زیر توجه کنید.

'program
Do
Cls
Lcd "mohammad"
Wait 1                                                      '1 sanie takhir eijad mikone
Cls
Lcd "zolfaghari"
Waitms 500                                                '500 milisanie takhir eijad mikone
Loop
End   

نکته: به دستور wait دقت کنید یه بار waitنوشته شده و یه بار waitms. اولی تاخیر های ثانیه ای ایجاد میکنه و دومی تاخیرهای میلی ثانیه ای پس دقت کنید.

تمرین اینه که خط خط برنامه بالا رو براش توضیح بزارید ببینم بلدید همه رو؟

دستور بعدی مکان نمای lcd  رو هر جایی که دوست داشته باشیم میبره:

LOCATE  y  , x

x ستون ماست یادتونه lcd که استفاده کردیم گفتیم چیه؟ 2*16

یعنی 16 تا ستون داره و 2 تا سطر پس y میشه سطر lcd ما

حالا من اسممو که 8 کاراکتره میخوام بندازم وسط خط اول lcd حالا میبینم که lcd ما 16 ستونست یعنی 16 کاراکترو تو یه خط میتونه نشون بده پس اگه من از ستون 5 شروع کنم نوشتن تقریبا اسمم میفته وسط مثل برنامه زیر:

'program
Do
Cls
Locate 1 , 5
Lcd "mohammad"
Wait 1                                                      '1 sanie takhir eijad mikone
Loop
End                                                         'end program

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

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

E-mail:m.zolfaghari21@gmail.com

تا بعد

+ نوشته شده در  سه شنبه 20 مرداد1388ساعت   توسط مهندس ذوالفقاری  |