برنامه نویسی سیستم
برنامه نویسی ربات مسیر یاب
قبل از این که بحث برنامه نویسی رو شروع کنم باید یه سری تنظیماتی رو روی میکروتون و برنامه انجام بدید که تنظیم فیوز بیت های میکرو و پرو گرامره J
ابتدا باید برنامه BASCOM AVR رو تهیه یا دانلود کنید و بعد نصب و کرک اون این مبحث رو ادامه بدید
اول نحوه تنظیم پروگرامر رو توضیح میدم
اول برنامه رو باز کنید و بعد از منوی Option گزینه Programmer رو انتخاب کنید و بعد از اون صفحه ای باز میشه که باید نوع پروگرامرتون رو مشخص کنید که شما از لیست اون گزینه STK200/STK300 Programmer رو انتخاب کنید تا نوع پروگرامرتون رو بشناسه
تنظیم دوم
میکرو خود را به مدار پروگرامرتون وصل کرده و برق پروگرامرتون تامین کنید
وارد محیط برنامه BASCOM AVR شوید و بعد از اون از منوی File گزینه New را انتخاب کنید
بعد از اون روی
کلیک کنید و بعد از اون روی گزینه Manual Program کلیک کنید و بعد از اون وارد محیطی شبیه محیط زیر میشوید که زبانه Lock and Fuse Bits رو انتخواب کنید

و طبق تصویر بالا تنضیمات رو انجام بدید و بعد از اون روی کلید های Write FSو Write FSH کلیک کنید تا تنظیمات اعمال شود
حالا میکرو شما آماده برنامه نویسی شده
برنامه نویسی ربات مسیر یاب
قبل از این که بحث برنامه نویسی رو شروع کنم باید یه سری تنظیماتی رو روی میکروتون و برنامه انجام بدید که تنظیم فیوز بیت های میکرو و پرو گرامره J
ابتدا باید برنامه BASCOM AVR رو تهیه یا دانلود کنید و بعد نصب و کرک اون این مبحث رو ادامه بدید
اول نحوه تنظیم پروگرامر رو توضیح میدم
اول برنامه رو باز کنید و بعد از منوی Option گزینه Programmer رو انتخاب کنید و بعد از اون صفحه ای باز میشه که باید نوع پروگرامرتون رو مشخص کنید که شما از لیست اون گزینه STK200/STK300 Programmer رو انتخاب کنید تا نوع پروگرامرتون رو بشناسه
تنظیم دوم
میکرو خود را به مدار پروگرامرتون وصل کرده و برق پروگرامرتون تامین کنید
وارد محیط برنامه BASCOM AVR شوید و بعد از اون از منوی File گزینه New را انتخاب کنید
بعد از اون روی
کلیک کنید و بعد از اون روی گزینه Manual Program کلیک کنید و بعد از اون وارد محیطی شبیه محیط زیر میشوید که زبانه Lock and Fuse Bits رو انتخواب کنید

و طبق تصویر بالا تنضیمات رو انجام بدید و بعد از اون روی کلید های Write FSو Write FSH کلیک کنید تا تنظیمات اعمال شود
حالا میکرو شما آماده برنامه نویسی شده
با سلام خدمت تمام بازديد كنندگان عزيز
بريم سر اصل مطلب كه برنامه نويسي بود
برنامه نويسي يك ربات مسير ياب معمولا يا با زبان برنامه نويسي Basic و يا با زبان برنامه نويسي C برنامه نويسي ميشه كه براي برنامه نويسي با زبان بيسيك از نرم افزار Bascom Avr و برنامه نويسي C از برنامه Codevision استفاده ميشه و من فعلا توي اين وبلاگ برنامه نويسي بيسك مقدماتي تا پيشرفته رو شروع ميكنم و دليل انكه اين زبان رو انتخاب كردم اين بود كه چون برنامه نويسي سي براي بعضي از بازديد كنندگان سخت و نا مفهومهو بيسك براي استارت كار راحت تره و بعدا هم سي رو شروع ميكنم ولي من توصيه ميكنم بعدا برنامه نويسي C++ رو شروع كنيد
شروع مبحث برنامه نويسي ( مقدماتي بيسك )
در ابتداي برنامه نويسي باسد نوع ميكرو و كريستال خودتون رو به برنامه معرفي كنيد براي اين كار از دستور زير استفاده ميكنيم
$ RegFile ="x"
x در اين مثال نوع ميكرو مورد استفاده شماست مثلاً$RegFile ="M
32Def.Dat" يا$ Regfile ="M
16Def.Dat"مثال اولي براي ميكروهاي سري اتمگا 32 هست و مثال دومي براي ميكرو هاي سري اتمگا 16 براي درك بهتر من اين مثال ها رو با 2 رنگ نوشتم توجه داشته باشيد كه بايد نام معرفي ميكرو تون رو داخل دابل كوتيشن " " قرارگيرد
براي معرفي كريستال هم از دستور زير استفاده ميكنيم
$Crystal =
80000008000000
نوع كرستال شماست كه ميتونيد بنا به كريستالي كه داريد اونو تغيير بديدمقدار پيش فرض رو همين مقدار 8000000
قرار بديد چون كريستال داخلي خود ميكرو 16 و 32 همين مقدار است ولي اگر از كريستال بيروني استفاده ميكنيد مقدار اون رو مطابق با كريستالدون تغيير بديدتوجه كنيد كه مقدار اين كرستال داخل دابل كوتيشن " " نمي باشد
براي اين كه بخواهيد در قسمتي از برنامه خود توضيحاتي اضافه كنيد كه فقط جنبه راهنمايي داشته باشد تا سر در گم نشيد و در عملكرد برنامتون تاثير نداشته باشد اول خط يك
' كوتيشن براريد كه متن شما سبز رنگ ميشه ماند مثال زير
' www.Robotic-Pro.blogfa.com
' Line Follower Programming
الان اين فقط جنبه توضيحي داره و هيج تاثيري روي عملكرد برنامه ندارد و حتي ميتونيد توضيحات فارسي هم اضافه كنيد تا خودتون متوجه بشيد
خوب فعلا بريد اينا رو ياد بگيريد تا پست بعدي
این دستور برای تعریف نوع متغیر میباشد که انواع متغیر های عبارتند از :
Integer è -32767 -> 32768
Byte è 255
Bit è 0 or 1 کوچکترین واحد حافظه که فقط مقدار 0 یا 1 میگیرد
Variant این برای مواقعی است که متغیر معلوم نیست از چه نوعیه
Booliean این برای مواقعی است که مقدار بر کشتی متغیر صحیح یا غلط باشه یعنی فقط مقدار درستس و نادرستی می پذیره
Long این برای تعریف اعداد خیلی بزرگ تا چند رقم اعشار میباشد که الان دقیقا یادم نیست مقدار دقیقش و دقتش تا چند رقم اعشاره
String این برای تعریف متغیر هایی از نوع رشته ای میباشد مثلا میخواید داخل یه متغیر یه متن بریزید
و ....
مثال
اول از همه بگم که اون حرف هایی که در متغیر های زیر قرمز رنگ میباشند اسم خاصی نیستند م شما میتوانید هر نامی که مورد نظرتان است را جای گزین کنید تا توی برنامه نویسی از انا استفاده کنید
Dim a As Integer
در بالا ما متغیری تعریف کردیم به نام A و از نوع Integer میباشد یعنی عدد صحیح که مقدار -32767 تا 32768 را میتواند در خود جای دهد
Dim s As String
در این مثال ما متغیری به نام s تعریف کردیم که از نوع رشته ای میباشد و فقط میتوان در آن رشته ای ریخت
Dim b As Byte
در مثال بالا ما یک متغیر از نوع Byte تعریف کردیم به اسم b که میتوان تا مقدار 255 را در اون ریخت
به همین ترتیب متغیر های مورد نیاز رو تعریف میکنیم
ولی ما در این برنامه نویسی بیشتر به Integer و Byte نیاز داریم
خوب ها میخویم تعریف کنیم که کدوم پورت ها ورودی یا خروجی باشه که به این ترتیب عمل میکنیم
Config PortA = Input
Config PortD= OutPut
خوب ما در بالا تعریف کردیم که پین های پورت A به عنوان ورودی میکرو در نظر گرفته بشه و پین های پورت D به عنوان خروجی در نظر کرفته بشه که من در بالا نام پورت ها رو با رنگ قرمز و سبز مشخص کردم Input یعنی ورودی و OutPut یعنی خروجی که ما میتونیم برای هر پورتی تعریف کنیم یا میتونیم پین های ورودی و خروجی رو به صورت دونه دونه تعریف کنیم که به ای صورته :
Config pina.0 =input
Config pina.1 = input
‘----------------------------
Config pinD.4 =Output
Config PinD.5 =Out Put
D.5 یعنی پین شماره 5 از پورت D مثال بلای سرش همین طور
به همین منوال پین ها رو تعریف میکنیم
خوب حالا ما میخوایم که برنامه نویسی با 3 سنسور را را شروع کنیم که بدین صورت عمل میکنیم
Dim s1 As integer ‘ Sensore samte rast سنسور ها
Dim s2 As integer ‘ Sensore Vasati
Dim s3 As integer ‘ Sensore Samte Chap
‘===============================
Config pinA.0 = Input ‘ Port a ; pin 0 ro be onvane voroodi dar nazar gereftim
Config pinA.1 = Input ‘ Port a ; pin 0 ro be onvane voroodi dar nazar gereftim
Config pinA.2 = Input ‘ Port a ; pin 0 ro be onvane voroodi dar nazar gereftim
‘-----------------------------------
Config pinD.4 = Output ‘Port D ;Pin 4 --- > Ro Be Onvane Khorooji Dar Nazar Migiri
Config pinD.5 = Output
Config pinD.6 = Output
Config pinD.7 = Output
‘===============================
M1 Alias PinD.4
M2 Alias PinD.5
M3 Alias PinD.6
M4 Alias PinD.7
‘==================================
S1 = pinA.0
S2 = pinA.1
S3 = pinA.2
اون کد هایی که با رنگ سبز مشخص شده که اصلا ربطی به کد های بر نامه نداره و فقط جنبه توضیحی داره که در کار کرد برنامه تاثیری نداره برای این کار هم شما میتونید توی برنامه نویسی برای اضافه کردن توضیحات که بیشتر متوجه کد نویسی بشید و سر در گم نشید از این علامت ‘ در اول و بعد از اون توضیحات رو بنویسید که خود به خود سبز رنگ میشه
فکر نکنم دیگه جایی مبهم مونده باشه به غیر از چند خط آخری که توضیح میدم
دستور Alias میاد و اون اسمی رو که برای پینی که در جلوی اون تعریف کرید در نظر میگیره که توی برنامه میتونید اون پین رو با اون اسمی که براش تعریف کردید صدا بزنید مثلا اگه میخواید توی برنامه pina.0 رو صدا بزنی اسم معادل اون رو که M1 گذاشتی صدا میزنی
Port D هم که به عنوان خروجی تعریف کردیم که به درایور موتور وصل میشه و به اون دستور میده
S1 = pinA.0
این هم که معلومه S1 رو به عنوان سنسور شماره 1 که در بالا تعریفش کردیم که کدوم پینه رو در نظر میگیره که توی برنامه سنسور شماره 1 رو به این اسم میشناسم
در بیسیک یک دستور برای چک کردن شرطه که چک میکنه که آیا این شرط برقراره یا نه
اگه بود فلان کاری رو بکن و اگه نبود فلان کارو بکن
دستور شرط : If . . . Then
در غری اینصورت : Else
دستور بعدی هم حلقه تکراره :
Do . . . Loop
For . . . Next
دستور اولی حلقه تکرار بی نهایته و لی دستور دومی حلقه به تهداد مورد نظر شما اجرا میشه
خوب حالا برنامه نویسی رو شروع میکنیم
شرط های ما :
1 - اگر سنسور وسطی ما روی خط سیاه بود به جلو حرکت کن
2 - اگر سنسور سمت چپ روی خط بود موتور سمت چب خاموش و موتور سمت راست روشن باشد
3 - اگر سنسور سمت راست روی خط بود موتور سمت راست خاموش و سنسور سمت چب روشن باشد
این شرط ها باید مرتباً تکرار و چک شود
خوب حالا الگوریتم های بالا رو به کد نویسی تبدیل میکنیم
برای تبدیل دستورات مورد نیاز ما یک حلقه تکرار بینهایت و دستود چک کردن شرطه که به صورت زیر مینویسیم
اول از همه یاد آوری کنم که M1,M2,M3,M4 موتور های ما هستند یعنی 1و 2 موتور سمت راست و 3و 4 موتور سمت چپ و S1,S2,S3 سنوسور های ما هستند که S1 سنسور چپ و S2 سنسور وسطی و اون یکی هم سنسور سمت راست ما است
Do
If S2=1 Then
M1= 1
M2= 1
M3= 1
M4= 1
ElseIf S1=1 Then
M1= 1
M2= 1
M3= 0
M4= 0
ElseIf S3=1 Then
M1= 0
M2= 0
M3= 1
M4= 1
End If
Loop
1 جواب مثبت و 0 جواب منفی
سلام بر تمام کسانی که به الکترونیک علاقه دارن
میکروکنترلر چیست؟
میکروکنترلر به سیستم تک تراشه ای گفته میشود که دارای
1- ریز پردازنده
2- حافظه برنامه
3- حافظه داده
4-و یک سری ورود/خروجی (I/O)
باشد.میکروکنترلرهایی که هم اکنون در بازار کشور ما به راحتی یافت میشود و همچنین
کار برد زیادی هم دارند به سه گروه زیر تقسیم میشود.
1-8051از شرکت Atmel
2-PICاز شرکت MICRO CHIP
3-AVRاز شرکت Atmel
AVR وPIC نصبت به 8051از تکنولوژی ساخت بالاتری بر خوردار هستند و همچنین
یک سری امکانات دیگری از قبیل EEPROMوADCداخلی سرعت بالاویک سری
امکاناتدیگر که انشاالله بعد از آشنائی با 8051 به آنها اشاره خواهد شد.
ساختمان داخلی میکروکنترلرها:
مکروکنترلرها متشکل از یک ریزپردازند،حافظه،و درگاه ورودی وخروجی(I/O) هستند
.
که ریز پردازنده خود ار دو بخش پردازنده مرکزی(CPU)و واحد کنترل(CU) تشکیل
شده است.
:CPUدر واقع مغز یک پردازنده و محلی برای انجام محاسبات ریاظیو منطقی میباشد.
CU :عملیات داخلی ریز پردازنده را کنترل میکند و سیگنالهای کنترلی رابه سایر بخشهای ریزپردازنده ارسال میکند.
حافظه:حافظه بخش مهمی ازیک میکروکنترلر است که خود به دو بخش حافظه برنامه و
حافظه داده تقسیم میشود حافظه برنامه تمام کدهای برنامه را در خود ذخیره میکند این نوع
حافظه معمولاًاز نوع فقط خواندنی (ROM) می باشد.حافظه داده از نوع خواندن/نوشتن
(RAM)می باشد
درگاههای ورودی/خروجی:درگاههای ورودی/خروجی به سیگنالهای بیرونی امکان میدهد
که با میکرو در ارتباط داشته باشد.
این درگاهها(I/O)به صورت گروههای 8 بیتی دسته بندی میشود و به هرگروه نام خاصی اختصاص داده میشود 89C51 دارای 4 درگاه ورودی /خروجی 8بیتی با نام های P0.P1
.P2.P3 میباشد.
که هر یک از این گروههای 8 بیتی را یک پورت مینامند پس ۸۹C51ارای 4 پورت 8
بیتی است که هر مکدام از آنها به صورت جدا گانه قابل دست رسی است
در این بخش تعدادی از خانواده معروف 8051 به شما معرفی میکنم
|
شماره آی سی |
حجم حافظه برنامه |
حجم حافظه داده |
تایمر/شمارنده |
I/O |
تعداد PIN |
|
AT89C1051 |
1K flash |
64 RAM |
1 |
15 |
20 |
|
AT89C2051 |
2K flash |
128 RAM |
2 |
15 |
20 |
|
AT89C51 |
4K flash |
128 RAM |
2 |
32 |
40 |
|
AT89C52 |
8K flash |
256 RAM |
3 |
32 |
40 |
|
8051AH |
4K ROM |
128 RAM |
2 |
32 |
40 |
|
87C51H |
4K EPROM |
128 RAM |
2 |
32 |
40 |
|
87C52 |
8K EPROM |
256 RAM |
3 |
32 |
40 |
|
87C54 |
16K EPROM |
256 RAM |
3 |
32 |
40 |
|
87C58 |
32K EPROM |
256 RAM |
3 |
32 |
40 |
تاریخچه ی میکرو پرسوسور و کاربرد
|
مقدمه: |
