اطلاعیه

Collapse
No announcement yet.

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

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    دستورات برنامه نویسی میکروکنترلر 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



    دستور 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 وضعیت پایه های ورودی را چک کردیم که در صورت درست شدن هریک از شرط ها دستورالعمل مربوطه اجرا خواهد شد.

    حلقه تکرار 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


    تابع 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


    منبع http://www.vis.ir
    **همیشه به این فکر کن که خداوند با توست**
لطفا صبر کنید...
X