-توابع تبدیل کدها و متغییر ها به یکدیگر
دستور ASC:
Var = ASC (string
این دستور اولین کاراکتر یک متغیر از نوع داده STRING را به مقدار اسکی آن تبدیل می کند .
دستور HEX:
Var = Hex (x)
این دستور یک داده از نوع BYTE,INTEGER , WORD , LONG را به مقدار هگزادسیمال تبدیل می کند .
مقدار HEX متغیر یا ثابت X در متغیر VAR جای می گیرد .
دستور MAKEBCD:
Var1 = MAKEBCD (Var2)
این دستور متغیر یا ثابت var2 را تبدیل به مقدار BCD اش می کند و در متغیر var1 جای می دهد .
دستور MAKEDEC:
Var1 = MAKEDEC (Var2)
برای تبدیل یک داده BCD نوع INTEGER , WORD , BYTE به مقدار DECIMAL از این دستوراستفاده می شود .مقدار دسیمال متغیر یا ثابت var2 در متغیر var1 جای می گیرد .
دستور STR:
Var = STR (X )
با این دستور می توان یک متغیر عددی ( X) را به رشته (VAR) تبدیل کرد .
دستور VAL:
Var = VAL (S )
با این دستور می توان یک رشته (S) را به متغیر عددی (VAR) تبدیل کرد .
دستور STRING :
Var = STRING (m , n )
این دستور کد اسکی m را با تعداد تکرار n تبدیل به رشته کرده و در متغیر var قرار می دهد . در صورت قرار دادن m =0 یک رشته بطول 255 کاراکتر تولید می شود و.قرار دادن n = 0 قابل قبول نیست .
$regfile = "8052.DAT"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = P3.1 , Db5 = P3.2 , Db6 = P3.3 , Db7 = P3.4 , E = P3.5 , Rs = P3.6
Config Lcd = 16 * 2
Dim A As Byte
Dim S As String * 10
S = "ABC"
A = Asc(s)
Locate 1 , 1
Lcd A '65
S = Hex(a)
Locate 1 , 8 '41
Lcd S
A = 50
A = Makebcd (A)
Locate 2 , 8 '80
Lcd A
End
سلام
دستورات بیسیک برای 8051 گفته شد ، اکنون نوبت به کار با انهاست (اساتید گرامی: اگر اشکالی در دستورات وجود داشت بفرمایید تا اصلاح کنم )
کار با پورت ها در محیط بسکام:
میکرو های 8051 دارای چندین پورت میباشند ( به مجموعه 8 پایه از یک میکرو ، یک پورت گفته میشود ) پورت ها با اعداد نام گذاری میشوند ، مثلا در میکروی 89S51 چهار پورت وجود دارد ،که به نام P1 و P2 و P3 و P4 نام گذاری میشود شرح پایه هابه قرار زیر است :
P0 پورت صفر :از پایه 32 تا پایه 39 شامل : P0.0 و P0.1 و P0.2 وP0.3 و P0.4 و P0.5 وP0.6 و P0.7که به ترتیب پایه های 32 تا 39 میکرو را شامل میشوند
P1 پورت یک : از پایه 1 تا پایه 8 شامل : P1.0 و P1.1 و P1.2 وP1.3 و P1.4 و P1.5 وP1.6 و P1.7که به ترتیب پایه های 1 تا 8 میکرو را شامل میشوند
P2 پورت دو : از پایه 21 تا پایه 28 شامل : P2.0 و P2.1 و P2.2 وP2.3 و P2.4 و P2.5 وP2.6 و P2.7که به ترتیب پایه های 21 تا 28میکرو را شامل میشوند
P3 پورت سه : از پایه 10تا پایه 17 شامل : P3.0 و P3.1 و P3.2 وP3.3 و P3.4 و P3.5 وP3.6 و P3.7که به ترتیب پایه های 10 تا 17 میکرو را شامل میشوند
این میکرو چهل پایه دارد که دیگر پایه ها شامل موارد زیر است :
پایه ی شماره 40 : VCC میکرو که باید به 5 ولت متصل شود .
پایه ی شماره ی 20 : GND میکرو که باید به صفر ولت یا زمین متصل گردد .
پایه های شماره 18 و 19 : به این پایه ها کریستال متصل میگردد ( مقدار کریستال روی ان نوشته شده است که باید با مقدار نوشته شده در برنامه یکی باشد )( کریستال جهت ندارد ،فرقی نمیکند کدام پایه را به پایه میکرو متصل کنید).
پایه های شماره 29 و 30 و 31 : این پایه ها برای تعیین وضعیت های میکرو به کار می رود که پایه 31 به گراند متصل میگردد.
دستورات مر بوط به راه اندازی پورتها:
دستور set این دستور یک بیت رایک میکند بیت میتواند یک پین از پورت یا هر چیز دیگر باشد
دستور reset این دستور یک بیت را صفر میکند بیت میتواند یک پین از پورت یا هر چیز دیگر باشد
شما میتوانید یک متغییر را برابر یک پورت یا پین قرار دهید ، عکس این کار را نیز می توانید انجام دهید مانند
دستور Rotate :
فرم این دستور به شکل زیر است :
Rotate Px , Right /Left , Y
این دستور مقدار عددی Y را روی یک پورت به سمت Right (راست ) یاLeft (چپ ) شیفت میدهد
مانند:
$regfile = "8052.DAT"
$crystal = 12000000
Dim A As Byte , C As Byte
P1 = 0
Set P1.0
Q:
Do
For A = 1 To 8
Rotate P1 , Left , 1
Waitms 500
Next
For C = 1 To 8
Rotate P1 , Right , 1
Waitms 500
Next
Set P1.1
Set P1.3
Set P1.5
Wait 1
Goto Q
End
خب با دستورات کار کنید و خوش باشید ، همون طور که قبلا گفتم استفاده از 8051 منسوخ شده (خدا رحمتش کنه) و AVR جای اون رو گرفته ، اما ممکنه یه روز یه مدار گیرتون بیاد که توش 8051 باشه و میکروش سوخته باشه و شما مجبور باشید براش برنامه بنویسید...
موفق وپیروز باشید تا چند روز دیگه ادامه رو میذارم .
آموزش هاي بسيار خوبي اينجا گذاشتيد
اما با اين توضيحاتي كه شما داديد دودل شدم. از يه طرف بسكام رو دوست دارم چون شبيه به ويژوال بيسيك هست و از طرفي هم مي گيد خدابيامرز شده !!!
آقا بالاخره اين قبري كه مي خوايم بالاش نماز بخونيم توش ميت هست يا نه؟!!
راستي اون دوتا لينك بالا ديگه وجود خارجي ندارن اگه ممكنه يا همينجا آپكنيد يا لينك دانلود جديد بزاريد.
ممنونم
سلام
میکرو های 8051 خدابیامرز شده اما AVR هنوز پابرجاست.
شما اگه به ویژوال بیسیک وارد باشید، یاد گیری AVR کار بسیار اسونی هست.
اینم اموزش AVR به زبان بیسیک.
البته دارم به شکل PDF درش میارم و به زودی روی سایت میذارم
و اما در رابطه با میت وقبر ... هر روز یه چیز تازه میاد ، یه میکرو جدید و... شما بسته به استفادتون میتونید از هر کدوم استفاده کنید اما AVR نسبت به 8051 امکانات خیلی بیشتری داره ...
لینک ها رو اصلاح کردم
(آخرین ویرایش در این ارسال: ۲۷-مرداد-۱۳۸۷, ۲۳:۴۰:۲۱، توسط 1nafar.)
Di Di نوشته است:آموزش هاي بسيار خوبي اينجا گذاشتيد
اما با اين توضيحاتي كه شما داديد دودل شدم. از يه طرف بسكام رو دوست دارم چون شبيه به ويژوال بيسيك هست و از طرفي هم مي گيد خدابيامرز شده !!!
آقا بالاخره اين قبري كه مي خوايم بالاش نماز بخونيم توش ميت هست يا نه؟!!
راستي اون دوتا لينك بالا ديگه وجود خارجي ندارن اگه ممكنه يا همينجا آپكنيد يا لينك دانلود جديد بزاريد.
ممنونم
اول زحمات دوست خوبمون یک نفر جای تشکر داره.
بعد هم اینکه اقای di di عزیز با اجازه 1nafar باید بگم دستوراتش با avr تقریبا یکیه ولی امکاناتش خیلی با هم فرق میکنه.
روش درس دادن 1nafar عالیه و با این اموزشهایی که زحمتشو کشیده حتما avr رو بعد که بخونید خوب یاد میگیرید.
codevision هم خوبه بعدا یاد بگیرید خیلی راحت هست و ویزارد هم داره.
بوسه ای به گرمای ظهر تابستان بر لبانت گزاشتم خنده ای به سرمای شبهای زمستان از لبانت دیدم اما اگر میدانستی چقدر شبهای زمستان را دوست دارم هیچ وقت...
تا حالا حتما lcd گرافیکی دیدید ، این lcd ها دارای پیکسل بیشتری نسبت به lcd های معمولی میباشند و میتوان روی انها عکس و متن و ... را نشان داد ،
در زیر در مورد چگونگی راه اندازی این lcd با 851 بحث میکنیم:
lcd های گرافیگی در نمونه های مختلف در بازار وجود دارد ،که انها را از نظر تعداد پیکسل نام گذاری میکنند ،مانند 64*240 و...
این lcd ها دارای پایه های زیر میباشد. (ممکن است محل این پایه هابر روی lcd تفاوت داشته باشد ، اما در همه lcd ها یکسان است (بهتر است موقع خرید دیتا شیت lcd را از فروشنده دریافت کنید))
1 -vss : پایه تغذیه lcd که به 0 ولت متصل میشود.
2 -vdd : پایه تغذیه lcd که به 5 ولت متصل میشود.
3 - d0) : dataport تا d7 )(دیتا پورت ) این 8 پایه مربوط به دیتای lcd میباشد (lcd اطلاعات را از طریق این 8 پایه رد وبدل میکند)که به یکی از پورت های میکرو که در برنامه مشخص می شود متصل میشود .
4 -controlport : که شامل پایه های زیر است و به چند تا از پایه های دلخواه میکرو که در برنامه مشخص میشود متصل میشود این پایه ها برای کنترل lcd به کار میروند .
- rst : پایه ریست (باز نشانی) lcd که به یکی از پایه های میکرو متصل میگردد.
- ce :این پایه برای فعال کردن چیپ (درایور ) lcd است که به یکی از پایه های میکرو که در برنامه مشخص میشود متصل میگردد.
- cd : این پایه مشخص کننده ارسال کد یا دیتا است (بدین صورت که اگر این پایه 1 باشدlcd کد را میگیرد و اگر 0 باشد lcd دیتا را میگیرد (دیتا فرمانها می باشد و کد متن هاو اشکال است ))، که به یکی از پایه های میکرو که در برنامه مشخص میشود متصل میگردد.
- wr :این پایه و پایه rd وضعیت خواندن یا نوشتن دیتا را برای lcd معین میکند بدین صورت که اگر این پایه در وضعیت صفر وپایه rd در وضعیت 1 قرار گیرد ،میکرو دیتا را به lcd ارسال میکند و lcd ان را نمایش میدهد ، اما اگر این پایه در وضعیت 1 قرار گیرد و پایه rd در وضعیت صفر ، lcd ،دیتای را که قبلا بر رویش نوشته شده است را به میکرو ارسال میکند در بسکام 8051 امکان خواندن از lcd وجود ندارد بنابراین این پایه به گراند و پایه rd به 5 ولت متصل میشود.
- rd : در بالا گفته شد.
- fs : این پایه برای مشخص کردن فونت lcd است ، که در اتصال به 8051 ازاد میماند.
5 - con یا vo :پایه کنترل کنتراست lcd است که با توجه به نوع lcd به vcc یا -vcc هر ولتاژ دیگر متصل میشود
با توجه به مطالب بالا پیکر بندی lcd گرافیکی در بسکام به صورت زیر است
Config GRAPHLCD = type , PORT = mode, CE = pin , CD = cd , COLS = 30
Reset Px.y
type : مشخص کننده نوع lcd استفاده شده است ،که میتواند یکی از موارد زیر باشد :
240 * 64, 128* 128, 128 * 64 , 160 * 48 , 240 * 128......
مانند:
Config GRAPHLCD =64*240
mode: یکی از پورت های دلخواه میکرو است ، که برای ارسال دیتا به lcd به کار میرود (پایه های دیتا پورت به این پورت میکرو متصل میشود )(هر پورت از 8 پین (پایه )تشکیل میشود که اولین پین ، پین صفر و اخرین پین ،پین 7 میباشد) .مانند:
PORT = P2
pin : یکی از پایه های دلخواه پورتی است که در قسمت که پایه های ce و cd
، lcd به انها متصل میشوند
COLS: نشان دهنده تعداد ستون های استفاده شده برای هر حرف میباشد
که حداکثر باید 30 باشد
px.y این پایه یکی ار پایه های دلخواه میکرو است که پایه ریست lcd به ان متصل میشود.
مثال:
$regfile = "8052.DAT"
$crystal = 1000000
Config Graphlcd = 240 * 64 , Port = P2 , Ce = P3.1 , Cd = P3.0 , Cols =29
Reset P3.2
نام پایه های lcd مورده استفاده در مثال و محل اتصال انها:
شماره پایه*******محل اتصال**************نام پایه بر روی lcd
1***************GND ******************** GND
2***************GND ********************GND
3***************5V**********************+5V
4**********9V- *******************-9V potmeter
5************* WR***********************GND
6**************RD***********************+5V
11 *************CE******************** **p3.1
10 **************C/D*********************p3.0
9***********NC ***************** not conneted
12**************RESET******************p3.2
11-18********** D0-D7*******************p2
19**********FS ****************not connected
20 ******* NC ******************not connected
پایه d0 (دیتا شماره 0 lcd )به پایه p2.0 (پایه 21 )متصل میشود،پایه d1 (دیتا شماره1 lcd )به پایه p2.1 (پایه 22 )متصل میشود.....پایه d7 (دیتا شماره 7 lcd )به پایه p2.7 (پایه 28 )متصل میشود.
دستورات مربوط به lcd گرافیکی:
دستور lcd
با این دستور میتوان متن یا کارکتری را بر روی lcd نمایش داد
مانند:
Lcd "MCS Electronics"
Lcd "Mdgdgsdsscs"
دستور locate :
با این دستور میتوان متن یا کاراکتری را در مکان دلخواه بر روی lcd گرافیکی نمایش داد
مانند:
Locate 16 , 1
Lcd "write this to the lower line"
Locate 16 , 5
Lcd "fgghfhghfhgjhj"
دستور cls :
با این دستور تمام lcd پاک میشود
با استفاده از دستورCls Text می توان قسمت متنی lcd را پاک کرد
و با دستور Cls graph می توان قسمت گرافیکی را پاک کرد
مانند
$regfile = "8052.DAT"
$crystal = 1000000
Config Graphlcd = 240 * 64 , Port = P2 , Ce = P3.1 , Cd = P3.0 , Cols = 29
Reset P3.2
Cls
Wait 1
Locate 1 , 1
Lcd "1nafar"
Locate 2 , 1
Lcd "/*-+234#$%^^&*()"
Locate 3 , 1
Lcd "1234567890123456789012345678901234567890"
Locate 16 , 1
Lcd "qwertyuiop"
Wait 2
Lcd "jkfjgfghfdh"
Locate 2 , 20
Lcd "546g5h574gh"
Locate 3 , 13
Lcd "hgf547g56jn4h57nj4gf45jh74fg8jm"
Locate 30 , 1
Lcd "qwertyuiop"
Wait 2
Cls Text
End
دستور pset X , Y, value
این دستور یک پیکسل را در مختصات x,y به ازای255 = valueروشن و به ازای0= valueخاموش میکند
مانند:
Pset 10 , 20 , 255
Pset 5, 127 , 255
Pset 10 , 20 , 0
Pset 5, 127 , 0
حداکثر مقدار x,y بستگی به تعداد پیکسل lcd گرافیکی دارد برای مثال در lcd 240*128 حداکثر مقدار x=239 , y=127 است
دستور CURSOR ON / OFF BLINK / NOBLINK
Lcd گرافیکی مانند lcd کاراکتری دارای یک مکان نما می باشد که با دستور زیر میتوان ان را روشن یا خاموش یا چشمک زن یا ثابت قرارداد
Cursor On با این دستور مکان نما روشن می شود (در حالت عادی مکان نما روشن است )
Cursor off با این دستور مکان نما خاموش می شود
Cursor blink با این دستور مکان نما چشمک می زند
Cursor noblink با این دستور مکان نما دیگر چشمک نمی زند
مانند
$regfile = "8052.DAT"
$crystal = 1000000
Config Graphlcd = 240 * 64 , Port = P2 , Ce = P3.1 , Cd = P3.0 , Cols = 29
Reset P3.2
Dim X as Byte, Y as Byte
Cls
Cursor Blink
Wait 1
Cursor On
Wait 1
Cursor Off
Locate 1 , 1
Lcd "MCS Electronics"
Locate 2 , 1 : Lcd "fhfnvn"
Locate 3 , 1 : Lcd "12345678901234567890"
Locate 16 , 1 : Lcd "write this to the lower line"
Wait 2
Cls Text
For X = 0 To 10
For Y = 0 To 10
Pset X , Y , 1 'make a nice block
Next
Next
Wait 3
Cls Graph
End
دستور SHOWPIC x, y , label
این دستور یک عکس را بر روی lcd گرافیکی نمایش میدهد
دیگر دستورات مانند lcd کارکتری است ...
مراحل نمایش عکس بر روی lcd گرافیکی:
اگر عکس مورد نظر رنگی است ان را به محیط فتوشاپ برده و در انجا ان را به عکس سیاه وسفید تبدیل کنید سپس ان را با برنامه point و با پسوند .BMP و در اندازه استاندارد ذخیره کنید (اندازه صفحه نمایش LCD ).
سپس از منوی TOOLS گزینه Graphic bmp Converter را انتخاب کنید ، در پنجره باز شده گزینه load را بزنید و در پنجره باز شده عکس مورد نظر که با پسوند .BMP ذخیره کردید ،باز کنید.
بعد گزینه save را بزنید و فایل را با نام دلخواه وبا پسوند BGF در کنار برنامه ذخیره کنید .
با استفاده از دستور SHOWPICE x, y , labelعکس را در مختصاتx, y نمایش دهید .
label نام برچسبی است که عکی مورد نظر در ان قرار میگیرد
برچسب $bgf "mcs.bgf" اشاره به عکس مورد نظر که در کنار برنامه اصلی قرار گرفته است
مانند:
(این پروژه کار اقای تریپ 2008 هست که میتونید دانلود کنید.)