اطلاعیه

Collapse
No announcement yet.

برنامه ای که آلتراسونیک با صفحه کلید کار کنه . . .

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    برنامه ای که آلتراسونیک با صفحه کلید کار کنه . . .

    با سلام خدمت دوستان :
    من دو برنامه رو میخواهم با هم ترکیب کنم :
    :NO: برنامه سنسور آلتراسونیک را دارم (SRF04) :

    $regfile = "m16adef.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
    Config Portd.4 = Output
    Trigger Alias Portd.4
    Trigger = 0
    Config Portd.5 = Input
    Config Portd.7 = Output
    Led Alias Portd.7
    Led = 0
    Dim A As Word
    Dim S As Single
    Config Single = Scientific , Digits = 2
    Const K = 0.1725
    Waitms 50
    Cursor Off
    Cls
    Lcd "SRF-05"
    Locate 2 , 1
    Lcd "AUTO Range"
    Wait 3
    Do
    Trigger = 1
    Waitus 15
    Trigger = 0
    Waitus 10
    Pulsein A , Pind , 5 , 1
    S = A * K
    Cls
    Locate 2 , 1
    Lcd "dis: " ; S ; " cm"
    If S < 20 Then
    Led = 1
    Waitms 20
    Led = 0
    End If
    Waitms 100
    Loop
    End

    :NO: و این هم برنامه صفحه کلید که عدد از کیبورد بگیره و روی LCD نمایش میده :

    $regfile = "m16def.dat"
    $crystal = 8000000
    Config Kbd = Portb , Debounce = 200 , Delay = 200
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , Rs = Portd.2 , E = Portd.3
    Config Lcd = 16 * 2
    Dim A As Byte
    Cls : Home
    Do
    Locate 1 , 1 : Lcd "pleae the h = " ; A
    L1:
    A = Getkbd()
    If A = 16 Then Goto L1
    A = Lookup(a , Dat)
    If A > 9 Then Goto L1
    Loop
    End
    Dat:
    Data 7 , 8 , 9 , 12 , 4 , 5 , 6 , 13 , 1 , 2 , 3 , 14 , 11 , 0 , 12 , 15
    $regfile = "m16def.dat"
    $crystal = 8000000
    Config Kbd = Portb , Debounce = 200 , Delay = 200
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , Rs = Portd.2 , E = Portd.3
    Config Lcd = 16 * 2
    Dim A As Byte
    Cls : Home

    Do
    Locate 1 , 1 : Lcd "pleae the h = " ; A
    L1:
    A = Getkbd()
    If A = 16 Then Goto L1
    A = Lookup(a , Dat)
    If A > 9 Then Goto L1
    Loop
    End
    Dat:
    Data 7 , 8 , 9 , 12 , 4 , 5 , 6 , 13 , 1 , 2 , 3 , 14 , 11 , 0 , 12 , 15

    :NO: حالا من این دو برنامه رو با هم بدین صورت تلفیق کردم :


    $regfile = "m16adef.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , Rs = Portd.2 , E = Portd.3
    Config Kbd = Portb , Debounce = 200 , Delay = 200
    Config Portc.0 = Output
    Trigger Alias Portc.4
    Trigger = 0
    Config Portc.1 = Input
    Config Portc.3 = Output
    Led Alias Portc.3
    Led = 0
    Dim A As Word
    Dim S As Single
    Dim C As Byte
    Config Single = Scientific , Digits = 2
    Const K = 0.1725
    Waitms 50
    Cursor Off
    Cls
    Lcd "SRF-05"
    Locate 2 , 1
    Lcd "AUTO Range"
    Led = 1
    Waitms 100
    Led = 0
    Wait 3
    Do
    L1:
    Trigger = 1
    Waitus 15
    Trigger = 0
    Waitus 10
    Pulsein A , Pinc , 5 , 1
    S = A * K
    Cls
    Locate 2 , 1
    Lcd "dis: " ; S ; " cm"

    If C < 20 Then
    Led = 1
    Waitms 20
    Led = 0
    End If
    Waitms 100
    C = Getkbd()
    If C = 16 Then Goto L1
    C = Lookup(c , Dat)
    If C > 9 Then Goto L1
    Loop
    End
    Dat:
    Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 10 , 1 , 2 , 3 , 10 , 11 , 0 , 12 , 10

    ولی وقتی روی برد بورد میبندم ، عدد از صفحه کلید گرفته میشه ، اما یک ثانیه بعدش عدد 16 یا 165 نمایش داده میشه !!!

    دوستان میتونن راهنمایی کنن ، کجای برنامه مشکل داره ؟؟؟؟
    آرزوی سرافرازی برای ایران عزیز . . .



    #2
    پاسخ : برنامه ای که آلتراسونیک با صفحه کلید کار کنه . . .

    با توجه به این که این موضوع بارها در انجمن مطرح شده و یا جهت ساماندهی انجمن AVR موضوع قفل میشود

    دیدگاه

    لطفا صبر کنید...
    X