رفتن به مطلب

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


ارسال های توصیه شده

دستور HEX

اين دستور مقدار X را به مقدار هگزادسيمال آن تبديل کرده و در متغير VAR قرار مي دهد.

 

(VAR=HEX(X

 

به مثال زير توجه کنيد:

 

Dim A As Byte , B As String * 5

A = 95

(B = Hex(a

Lcd B 'lcd 5F

End

 

دستور HEXVAL

اين دستور X را که يک داده هگزادسيمال است به مقدار دسيمال آن تبديل کرده و در متغير VAR قرار مي دهد.

 

(VAR=HEXVAL(X

 

به مثال زير توجه کنيد:

 

Dim A As Byte , B As String * 5

B = 5f

(A = Hexval(b

Lcd A 'lcd 95

End

 

 

دستور STRING

با اين دستور مي توان کد اسکي x را به تعداد n به رشته تبديل و در متغير VAR قرار داد.

 

(VAR=STRING(N , X

 

به مثال زير توجه کنيد:

 

Dim A As String * 20

(A = String(3 , 66

Lcd A 'lcd BBB

End

 

 

لازمه که يه کم در مورد کد اسکي( ASCI ) براتون توضيح بدم. ببينيد دوستان براي اينکه هر حرف،عدد یا کاراکتری را روی LCD نمایش دهیم باید کد اسکی آن را به پایه های 7 تا 14 LCD اعمال کنیم.

جدول کد اسکی حروف و اعداد

 

کد اسکی مبنای 10

A 65

 

B 66

 

C 67

 

D 68

 

E 69

 

F 70

 

G 71

 

H 72

 

I 73

 

J 74

 

K 75

 

L 76

 

M 77

 

N 78

 

O 79

 

P 80

 

Q 81

 

R 82

 

S 83

 

T 84

 

U 85

 

V 86

 

W 87

 

X 88

 

Y 89

 

Z 90

 

0 48

 

1 49

 

2 50

 

3 51

 

4 52

 

5 53

 

6 54

 

7 55

 

8 56

 

9 57

  • Like 1
لینک به دیدگاه

دستور ASC

این دستور اولین کاراکتر رشته STRING را به مقدار اسکی آن تبدیل کرده و در متغیر VAR قرار می دهد.

 

(VAR=ASC(STRING

 

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

 

Dim A As Byte , B As String * 5

"B = "LOVE

(A = Asc(b

Lcd A 'lcd 76

End

 

 

دستور STR

این دستور متغیر عددی X را به رشته تبدیل کرده و در متغیر VAR قرار می دهد.

 

(VAR=STR(X

 

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

 

Dim A As Byte , B As String * 5

A = 156

(B = Str(a

"Lcd B 'lcd"156

End

 

 

دستور VAL

این دستور رشته X را به متغیر عددی تبدیل کرده و در متغیر VAR قرار می دهد.[این دستور دقیقاً عکس دستور STR عمل می کند.]

 

(VAR=VAL(X

 

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

 

Dim A As Byte , B As String * 5

"B = "156

(A = Val(b

Lcd A 'lcd 156

End

 

 

دستور IF

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

 

IF Expression THEN statement

 

که همچنین می توان این دستور را به شکل زیر نیز به کار برد که در آنصورت اگر شرط عبارت Epression1درست شد دستورالعمل statement1 اجرا خواهد شد و در صورتی که شرط عبارت Expression1 درست نبود ولی شرط عبارت Expression2 درست بود دستورالعمل statement2 اجرا خواهد شد و در غیر اینصورت یعنی موقعی که شرط هیچکدام از دو عبارت Expression1 و Expression2 درست نباشد دستورالعمل statement 3 اجرا خواهد شد.

 

IF Expression1 THEN

statement1

Elseif Expression2 THEN

statement2

Else

statement3

End if

 

به مثال زیر توجه فرمایید:

 

Config Pinc.0 = Input

Config Pinc.1 = Input

Config Pinc.2 = Output

Config Pinc.3 = Output

Config Pinc.4 = Output

A = Pinc.0

B = Pinc.1

C Alias Portc.2

D Alias Portc.3

E Alias Portc.4

If A = 1 Then

Set C

Elseif A = 0 Then

Set D

Elseif B = 1 Then

Set E

Else

Reset E

End If

End

 

 

در مثال بالا ابتدا توسط دستور CONFIG PORTX=INPUT/OUTPUT جهت پایه های پورت C را تعیین کردیم سپس برای هرکدام یک اسم مستعار در نظر گرفتیم و بعد با استفاده از دستور IF وضعیت پایه های ورودی را چک کردیم که در صورت درست شدن هریک از شرط ها دستورالعمل مربوطه اجرا خواهد شد.

  • Like 1
لینک به دیدگاه

حلقه تکرار DO - LOOP

این دستور یک حلقه تکرار بی نهایت است که وقتی درون آن شرط ها و یا دستوراتی را قرار می دهیم درستی این شرط ها دائماً چک می شود و دستورالعمل های مربوطه انجام می شود و اگر دستوراتی را در این حلقه قرار دهیم این دستورات دائماً تکرار می شوند مانند وقتی که می خواهیم برای روشنایی ترتیبی LED از دستور ROTATE استفاده کنیم این دستور دائماً تکرار شده و به این ترتیب LED ها پشت سر هم روشن و خاموش می شوند.البته می توان با استفاده از گزینه اختیاری UNTIL expression به ازای عبارت expression از درون این حلقه تکرار خارج شد. فرم کلی این دستور به صورت زیر است:

 

DO

statement

[LOOP [uNTIL expression

 

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

 

"regfile = "m32def.dat$

$crystal = 8000000

Config Port A = Output

A Alias Porta

A = 128

Do

Rotate A , Left

Loop

End

 

 

در واقع ما با استفاده از برنامه بالا یک چشمک زن 8 کاناله ساخته ایم که شما می توانید آن را در محیط bascom نوشته و پس از کامپایل کردن آن را روی آی سی مورد نظر پروگرم(برنامه ریزی)کنید.

 

دستور CASE

این دستور مقدار متغیر VAR را با مقادیر مختلف TEST مقایسه کرده و اگر متغیر VAR با یکی از مقادیر TEST برابر بود دستورالعمل مربوط به آن اجرا خواهد شد.

 

Select Case Var

case test1: statement1

case test2: statement2

case else : statement3

End Select

 

که شما می توانید مقادیر test را به صورت تساوی با مقداری دلخواه،به صورت بزرگتر یا کوچکتر از مقداری دلخواه یا به صورت محدوده ای برای آن انتخاب کنید.

 

مانند: Case 5:statement ، Case IS>4:statement ، یا Case 2 to 6 .

 

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

 

Config Portc = Input

A Alias Portc

Do

Select Case A

Case 1 To 50 : Lcd A

:Case Is > 50

A = A * 2

Lcd A

End Select

Loop

End

 

 

(avr(4

درباره توابع رياضي محيط BASCOM براتون توضيح بدم و معرفي دستوراتي که با رجيستر هاي ميکرو کار مي کنند از برنامه ساده در محيط BASCOM رو براي شما دوستان بنويسم خوب ميريم سر آموزش امروزمون

جدول دستورات رياضي محيط BASCOM

 

علامت نمادعلامت ضرب *

 

علامت تقسیم /

 

علامت ممیز .

 

علامت جمع +

 

علامت تفریق -

 

علامت بتوان ^

 

علامت مخالف

 

علامت مساوی =

 

علامت بزرگتر از >

 

علامت بزرگتر یا مساوی با =

 

علامت کوچکتر از

 

علامت کوچکتر یا مساوی با

 

 

 

با استفاده از علائم رياضي بالا مي توانيد عمليات رياضي خود را روي يک متغير در محيط BASCOM انجام دهيد.

 

تابع ABS

اين دستور قدر مطلق var1 را در متغير VAR قرار مي دهد.

 

(VAR=ABS(var1

 

دقت کنيد که در مثال زير متغير ها از نوع INTEGER معرفي شده اند و دليل استفاده از اين نوع اين است که بايد از نوعي استفاده کرد که شامل مقادير منفي هم باشد(رجوع به (0)AVR ).مثال:

 

Dim A As Integer , B As Integer

A = -685

(B = Abs(a

Lcd B 'lcd 685

End

 

تابع POWER

اين دستور مقدار param1 را به توان مقدار param2 رسانده و در متغير VAR قرار مي دهد.

 

(VAR=POWER(param1 , param2

 

به مثال زير توجه کنيد:

 

Dim A As Byte , B As Byte , C As Byte

A = 2

B = 4

(C = Power(a , B

Lcd C 'lcd 16

End

  • Like 1
لینک به دیدگاه

تابع sqr

اين دستور مقدار ريشه دوم يا همان جذر مقدار X را گرفته و در متغير VAR قرار مي دهد.

 

(VAR=sqr(X

 

به مثال زير توجه کنيد:

 

Dim A As Byte , B As Byte

A = 36

(B = Sqr(a

Lcd B 'lcd 6

End

 

 

تابع LOG

اين دستور مقدار لگاريتم SOURCE را که بايد از نوع SINGLE معرفي شده باشد گرفته و در متغير VAR که اين متغير نيز از نوع داده SINGLE است قرار مي دهد.

 

(VAR=LOG(source

 

به مثال زير توجه کنيد:

 

Dim A As Single , B As Single

A = 100

(B = Log(a

Lcd B 'lcd 2

End

 

 

تابع ROUND

اين دستور مقدار X از نوع داده SINGLE را روند کرده و در متغير VAR از نوع داده SINGLE قرار مي دهد.

 

(VAR=ROUND(X

 

به مثال زير توجه کنيد:

 

Dim A As Single , B As Single

A = 2.7

(B = Round(a

Lcd B 'LCD 3

End

 

 

تابع RND

اين دستور يک عدد تصادفي بين 0 و X بدست مي آورد و در متغير VAR قرار مي دهد که X يک عدد مثبت است.

 

(VAR=RND(X

 

به مثال زير توجه کنيد:

 

Dim A As Byte

(A = Rnd(213

Lcd A 'lcd 67

End

 

 

دستور SET

توسط اين دستور مي توان مقدار يک بيت را يک کرد. که BIT مي تواند يک پايه از يک پورت باشد.

 

SET BIT

 

به مثال زير توجه کنيد:

 

SET PORTA.5

 

دستور RESET

توسط اين دستور مي توان يک بيت را صفر کرد.

 

دستور TOGGLE

توسط اين دستور مي توان مقدار منطقي يک بيت را معکوس کرد يعني اگر بيت صفر است يک مي شود و اگر يک است صفر مي شود.

 

دستور BITWAIT

با استفاده از اين دستور مي توان اجراي برنامه را تا زماني که بيت X صفر يا يک شود متوقف کرد و در صورت درست شدن شرط اجراي برنامه از خط بعد ادامه مي يابد.

 

BITWAIT X , SET / RESET

 

به مثال زير توجه کنيد:

 

BITWAIT PORTC.2 , RESET

SET PORTC.4

 

تا زماني که پايه 3 پورت C (پايه صفر که همان پايه يک حقيقي ميکرو ماست هم حساب شده) صفر شود صبر مي کند و پس از صفر شدن اين پايه، پايه 5 پورت C يک مي شود.

 

خوب فکر مي کنم براي اين پست کافي باشه اميدوارم که استفاده لازم رو ازشون ببريد اگه مشکلي داشتيد حتماً تو نظرات بنويسيد.

 

فعلاً BYE

 

+ نوشته شده در چهارشنبه دهم مرداد 1386ساعت 15:56 توسط فرزان شجاعی | نظر بدهید

 

(avr(3

با سلام خدمت دوستان خوبم اميدوارم که حالتون خوب باشه. راستش تصميم داشتم که در پست قبل آموزش هاي ابتدايي رو به پايان برسونم ولي به خاطر طولاني شدن مطلب توضيح در مورد LCD که فکر مي کنم لازم بود و مسائل ديگه نشد که بشه ولي اشکال نداره چون ديگه تو اين پست حتماً تموم مي شه. دوستان شما الان با استفاده از مطالب پست قبل به راحتي مي تونيد يک LCD رو راه اندازي کنيد و جملات خود را روي LCD نمايش بديد و از نتيجه آن لذت ببريد.خوب ديگه خيلي حرف زدم ميريم سراغ آموزش هاي اين پست:

 

دستور RIGHT

با اين دستور از سمت راست رشته VAR1 ،به تعداد n کاراکتر جدا مي شود و در متغير VAR قرار ميگيرد.

 

 

(VAR=RIGHT(var1,n

 

 

به مثال زير توجه کنيد:

 

 

Dim A As String * 10 , B As String * 10

"A = "1234567

(B = Right(a , 4

Lcd B 'lcd 4567

End

 

 

دستور LEFT

با اين دستور از سمت چپ رشته VAR1 ،به تعداد n کاراکتر جدا مي شود و در متغير VAR قرار مي گيرد.

 

(VAR=LEFT(var1,n

 

به مثال زير توجه کنيد:

 

Dim A As String * 10 , B As String * 10

"A = "ABCDEFGH

(B = Left(a , 3

Lcd B 'lcd ABC

End

 

دستور ROTATE

با این دستور می توان تمام بیت ها را به سمت چپ یا راست انتقال داد که LEFT/RIGHT جهت چرخش بیت ها و گزینه اختیاری BITS تعداد چرخش بیت ها را مشخص می کند و در صورتی که برای این گزینه مقداری تعریف نشود مقدار پیش فرض یک برای آن در نظر گرفته می شود.

 

[ROTATE var ,LEFT/RIGHT [,BITS

 

به مثال زیر دقت کنید:

 

Dim A As Byte

A = 128

Rotate A , Right

Lcd A 'lcd 64

End

 

لازم می دونم که کمی بیشتر در مورد مثال بالا توضیح بدم که برای این کار ابتدا باید با مبناهای ریاضی آشنا بشید.اصولاً در ریاضی اعداد را در مبناهای مختلف از جمله BINARY (در مبنای دو)، OCTAL (در مبنای 8)، HEXADECIMAL (در مبنای 16) و DECIMAL (در مبنای ده) به کار می برند که ما در برنامه نویسی از سه مبنای BINARY ، HEXADECIMAL ، DECIMAL استفاده می کنیم به طوری که وقتی عدد باینری را در متغیری قرار می دهیم آن را با نماد B& شروع می کنیم زمانی که عدد هگزادسیمال را در متغیری قرار می دهیم آن را با نماد H& شروع می کنیم و برای قرار دادن عدد در مبنای دسیمال از نماد خاصی استفاده نمی کنیم و آن را بدون علامت در متغیر قرار می دهیم. اکنون به چگونگی تبدیل عدد از مبنای دسیمال به باینری می پردازیم:

 

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

 

باقیمانده

0 2/ 128

0 2/64

0 2/32

0 2/16

0 2/ 8

0 2/ 4

0 2/2

1

 

2(10000000)=128

 

همانطور که در مثال بالا دیدید معادل عدد 128 در مبنای باینری مساوی عدد (10000000) شد. که با توجه به این عدد متوجه می شویم که تعداد این اعداد هشت تا است و ما در مثال مربوط به دستور ROTATE این مقدار را (البته مقدار دسیمال آن را یعنی 128) در متغیر A قرار داده ایم که در واقع این هشت عدد معادل هشت پایه پورت دلخواه ماست که در این مثال فقط پایه هشتم پورت دلخواه ما یک است و بقیه پایه ها در وضعیت صفر(منطقی) به سر می برند که ما با دستور ROTATE این مقدار یک را در پورت مربوطه به سمت راست می چرخانیم که کاربرد آن می تواند در روشنایی ترتیبی LED باشد البته با هر بار استفاده از این دستور بیت مورد نظر فقط یک بار می چرخد که ما برای استفاده از این دستور برای روشنایی ترتیبی LED باید آن را داخل یک حلقه تکرار(در پست های آینده به طور مفصل راجع به این موضوع صحبت خواهیم کرد) قرار دهیم.

 

جدول LOOKUP

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

 

(VAR=LOOKUP(value , lable

 

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

 

Dim A As Byte

(A = Lookup(4 , Fsh

Lcd A 'lcd e

End

:Fsh

Data A , B , C , D , E , F , G , H , I , J , K

 

 

دستور MID

با این دستور می توان قسمتی از رشته VAR1 را با شروع از کاراکتر st ام و طول L در متغیر VAR قرار داد.

 

([VAR=MID(var , st [, L

 

البته گزینه L اختیاری می باشد و در صورتی که برای آن مقداری نوشته نشود بیشترین طول L در نظر گرفته می شود. به مثال زیر توجه کنید:

 

Dim A As String * 10 , B As String * 10

"A = "farzanshojaee

(B = Mid(a , 7 , 7

Lcd B 'lcd shojaee

End

 

 

منبع

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

  • Like 1
لینک به دیدگاه
×
×
  • اضافه کردن...