اطلاعیه

Collapse
No announcement yet.

یک مشکل با mega32 و lcd

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

    یک مشکل با mega32 و lcd

    سلام.
    من gage های ماشینم رو الکترونیکی کردم . الان یک مشکل دارم و اون اینه در lcd اصلی که اطلاعات مربوط به سرعت و سنسورهای ماشین رو نشون میده . وقتی که ماشین در حال حرکته اگه سنسوری وضیعتش تغییر کنه باید در صفحه نشون داده بشه . مثلا اگه در باز میشه آیکون در گوشه lcd نشون داده میشه . مشکل اینه تا وقتی که روال تایمر اجرا نشده باشه آیکونها بدرستی نشون داده میشن ولی وقتی که روال تایمر/کانتر برای نشون دادن سرعت اجرا میشه دیگه بجای آیکون یک سری پیکسل نشون داده میشه . نمیدونم مشکل کار تو کانتر ها است و یا جای دیگه .
    نوفن پردازش هوشمند

    #2
    پاسخ : یک مشکل با mega32 و lcd

    سلام
    وقفه تایمر برای چه زمانی تنظیم شده؟؟ (چند ثانیه)
    در دیر مغان آمد یارم قدحی در دست
    مست از می می خواران از نرگس مستش مست

    دیدگاه


      #3
      پاسخ : یک مشکل با mega32 و lcd

      وقفه تایمر روی یک ثانیه هست و در خلال این یک ثانیه کانتر داره پالسهای ورودی رو میشماره .
      نوفن پردازش هوشمند

      دیدگاه


        #4
        پاسخ : یک مشکل با mega32 و lcd

        سلام
        با codevision برنامه می نویسی؟؟؟
        ال سی دی گرافیکی هست دیگه؟
        اگر بتونی برنامه رو بذاری یه نگاه بندازیم خیلی خوب میشه
        در دیر مغان آمد یارم قدحی در دست
        مست از می می خواران از نرگس مستش مست

        دیدگاه


          #5
          پاسخ : یک مشکل با mega32 و lcd

          سلام
          اینم سورس برنامه


          $regfile = "m32def.dat" ' specify the used micro
          $crystal = 8000000 ' used crystal frequency
          $baud = 9600 ' use baud rate
          $hwstack = 32 ' default use 32 for the hardware stack
          $swstack = 10 ' default use 10 for the SW stack
          $framesize = 40 ' default use 40 for the frame space
          Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 4 , Cd = 5 , Wr = 2 , Rd = 3 , Reset = 6 , Fs = 7 , Mode = 8
          Config Serialout = Buffered , Size = 10
          Config Sda = Portc.0
          Config Scl = Portc.1
          Config I2cdelay = 1
          Declare Sub Writee
          Const Eewrite = 160
          Const Eeread = 161
          Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
          Config Timer1 = Counter , Edge = Rising
          Config Timer0 = Timer , Prescale = 1024
          Config Portd = Output
          Config Portb = Output
          Open "comd.2:9600,8,n,1" For Input As #2
          Cursor Off Noblink
          Cls
          Portd.2 = 1
          Locate 15 , 10 : Lcd "Please Use Keycard"
          Startp:
          Dim Code As Word
          Inputhex #2 , Code
          If Code = 0 Then Goto Startp
          Cls
          If Code = 10272 Or Code = 8432 Then Goto Nextcard Else Goto Startp
          Nextcard:


          Locate 1 , 1
          Lcd "Hello . access Code is Granted "
          Portd.4 = 1
          Code = 0
          Wait 3
          Cls
          Showpic 64 , 0 , Logo
          Wait 1
          Showpic 64 , 64 , Wel
          Wait 3
          Cls


          Locate 2 , 10 : Lcd "Welcome to Car"
          Locate 4 , 12 : Lcd "Car in ACC MODE "
          Locate 6 , 12 : Lcd "You Can Use Only"
          Locate 8 , 12 : Lcd "ACCESSORIES Tools"
          Locate 10 , 1 : Lcd "For Start CAR Flowing Role Below"
          Locate 12 , 1 : Lcd "Insert KEYCARD In CARDHOLDER"
          Locate 14 , 1 : Lcd "Then Press START Button"
          Code = 0

          Startwait:
          Inputhex #2 , Code
          If Code = 0 Then Goto Startwait
          If Code = 10272 Or Code = 8432 Then
          Portd.5 = 1
          Cls
          Locate 10 , 15 : Lcd "Press START"

          End If

          Dim Dd As Word

          Dim Dshow As String * 20
          Dim Dis As Single
          Dim Dis2 As Single
          Dim Dis3 As Long
          Dim Max1 As Integer
          Dim Max2 As Integer
          Dim Dis4 As Single
          Dim Dis5 As Single
          Dim Doo As Integer
          Dis2 = 1000
          'Showpic 0 , 32 , Vline
          'Showpic 0 , 96 , Vline
          'Enable Counter1
          Enable Interrupts
          'Enable Timer0
          Enable Timer1
          On Ovf1 Pulsecount
          On Ovf0 Ovf0occures
          On Doo Gosub Doors
          Dim A As Long , I As Long , B As Byte
          B = 0
          A = 0
          Start Timer0
          Do

          Loop

          End
          Ovf0occures:


          Incr I
          If I > 30 Then
          Stop Timer0

          'Showpic 0 , 0 , Rpm
          A = B * 65536
          A = A + Counter1
          'A = A * 30
          'If A > 99 And A < 1000 Then
          'A = A / 100
          'a = A * 100
          'End If

          If A > 1000 Then
          A = A / 100
          A = A * 100
          End If
          Locate 11 , 15 : Lcd " "
          Locate 10 , 10 : Lcd " "
          Locate 8 , 15 : Lcd " "
          Locate 11 , 15 : Lcd " "
          Locate 9 , 11 : Lcd " "
          Locate 12 , 10 : Lcd " "
          Locate 14 , 1 : Lcd " "
          Locate 8 , 15 : Lcd A
          Locate 8 , 21 : Lcd "K/m"
          Max1 = A
          If Max2 < Max1 Then Max2 = Max1
          Locate 10 , 1 : Lcd "Max Speed"
          Locate 10 , 10 : Lcd Max2

          Dis = A * 1000
          Dis = Dis / 3600
          Dis2 = Dis2 + Dis
          'Locate 14 , 1 : Lcd Dis2

          'If Dis2 > 100 Then
          Dis3 = Dis2 / 1000
          Dis4 = Dis2
          Locate 13 , 1 : Lcd Dis4
          Dis5 = Dis4 / 100
          If Dis5 > 9 Then Dis5 = 0
          'Dis3 = Dis3 + 1
          'Dis3 = Dis3 * 100
          'End If
          'If Dis3 > 10 Then
          'Dis3 = Dis3 * 100

          'Dis4 = Dis3 / 1000
          'End If
          '
          Locate 9 , 11 : Lcd Dis5
          Locate 11 , 1 : Lcd "Average Speed"
          Locate 11 , 16 : Lcd Dis
          Locate 9 , 1 : Lcd "Dist X100"
          Locate 12 , 1 : Lcd "Dist K/m"
          Locate 12 , 10 : Lcd Dis3
          If A > 5000 Then

          Locate 1 , 3 : Lcd "Danger"
          Locate 3 , 3 : Lcd "RPM"
          Wait 2
          End If

          B = 0
          I = 0 : Counter1 = 0
          Start Timer0

          End If
          Return



          Pulsecount:
          Incr B
          Counter1 = 0
          Return
          Doors:
          If Doo = 0 Then
          Cls
          Showpic 64 , 64 , Door
          Return
          End If
          Return
          End
          Vline:
          $bgf "line.bgf"
          Logo:
          $bgf "lo128.bgf"
          Wel:
          $bgf "wel128.bgf"
          Door:
          $bgf "doorsu.bgf"


          وقتی که doo فعال بشه ال سی دی دیگه چیزی نشون نمیده
          نوفن پردازش هوشمند

          دیدگاه


            #6
            پاسخ : یک مشکل با mega32 و lcd

            نوشته اصلی توسط پشه 007
            سلام.
            من gage های ماشینم رو الکترونیکی کردم . الان یک مشکل دارم و اون اینه در lcd اصلی که اطلاعات مربوط به سرعت و سنسورهای ماشین رو نشون میده . وقتی که ماشین در حال حرکته اگه سنسوری وضیعتش تغییر کنه باید در صفحه نشون داده بشه . مثلا اگه در باز میشه آیکون در گوشه lcd نشون داده میشه . مشکل اینه تا وقتی که روال تایمر اجرا نشده باشه آیکونها بدرستی نشون داده میشن ولی وقتی که روال تایمر/کانتر برای نشون دادن سرعت اجرا میشه دیگه بجای آیکون یک سری پیکسل نشون داده میشه . نمیدونم مشکل کار تو کانتر ها است و یا جای دیگه .
            با سلام خدمت دوستان گرامی و 007 عزیز

            من قدیما ، با مشابه مشکل شما روی یه سیستم مشابه مواجه بودم ، قضیه از این قرار بود که پس از اجرا وقفه توسط میکرو ، روی صفحه ال سی دی ، بجای تصویر آیکون مورد نظر ، گاربیج نشون داده میشد . بعد از بررسی برنامه اسمبلی ( البته اسمبلی 8051 ) ، متوجه شدم که در روال وقفه ، حافظه میکرو رو ، پوش نکردم و چون اون حافظه بصورت اشتراکی ( چک نویس ) ، استفاده میشد ، بعد از اجرا وقفه ، این حالت ( نمایش پیکسل یا گاربیج ) روی ال سی دی بوجود می اومد . میگم شاید ، مورد ایراد سیستمت ، همین باشه !!

            دیدگاه

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