اطلاعیه

Collapse
No announcement yet.

سوالات مربوط به LCD های کاراکتری و گرافیکی

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

    سوالات مربوط به LCD های کاراکتری و گرافیکی

    با سلام
    لطفا از این پس تمام سوالات خود در باره انواع LCD های کاراکتری و گرافیکی را در این تاپیک بپرسید .


    مقالات نوشته شده در رابطه با LCD ها :
    مقاله جامع LCD کاراکتری(CodeVision)
    مقاله جامع LCD کاراکتری و گرافیکی با BASCOM AVR

    پروژه ها و موارد پایه مربوط به LCD ها :
    کتابخانه LCDآ‌ گرافیکی AVR
    نوشتن حروف فارسی بر روی LCD گرافیکی با بسکام AVR

    قوانین این تاپیک :
    *لطفا توجه کنید که تمام تاپیک های مشابه ایجاد شده حذف و یا قفل خواهند شد .
    *قبل از پرسیدن سوال حتما از گزینه جستجو استفاده کنید.
    *پست های بی مورد بلافاصله حذف خواهند شد.

    #2
    سوال : سوالات مربوط به LCD های کاراکتری و گرافیکی

    سلام خسته نباشید
    دیروز من یه lcd دیگه خریدم lgm12864
    اصلا چیزی رو نشون نمیده!!!! مگه پایه هاش کاملا شیبه kxm12864 نیستش؟
    با kxm12864 نشون میده اما یه مشکل داره....اونم اینه که در یه جای برنامه عکسی رو که میزارم یه حالتی . از وسط.سمت راست عکس یه پیکسل پایین تر نشون میده.در صورتی که همین عکس در اول استفاده میکنم درست نمایش داده میشه!!!
    امکان داره chipراستی lcd مشکل داشته باشه؟اگه ایجور باشه باید همه عکس رو با مشکل نشون بده ...
    من حتی قبل از نمایش هر عکس تایمر رو stop میکنم بعد عکس و نمایش میدم
    روال برنامه به این شکل...اول یه سری عکس نمایش داده میشه.تایمر شروع به کار میکنه.زمان برنامه نمایش داده میشه.با touch به زیرروال set_1 میره در اینجاس که عکس به شکل فوق نمایش میده.حتی زیروال رو هم غیر فعال کردم یعنی طوری که به زیرروال نره اما بازم نشد..
    اینم برنامه...عکسی که در قسمت setup در زیربرنامه باید نمایش بده این مشکل و داره..
    ['------------------------ IN THE NAME OF ALLAH --------------------------
    '---------------------- 18:25 1387/04/11 ------------------------

    $regfile = "M32def.dat"
    $crystal = 8000000
    $lib "glcdKS108.LBX"
    $include "font8x8.font"

    Config Portc.0 = Output
    Config Graphlcd = 128 * 64sed , Dataport = Portd , Controlport = Portb , Ce = 1 , Ce2 = 0 , Cd = 3 , Rd = 4 , Reset = 6 , Enable = 5 , Mode = 8
    Config Adc = Single , Prescaler = Auto
    Config Timer0 = Timer , Prescale = 1024
    Enable Interrupts
    Enable Timer0
    On Ovf0 Sectic
    Stop Timer0

    Dim S As Byte , M As Byte , H As Byte , Day As Byte , Month As Byte , Year As Integer
    Dim Z As Byte , E As Byte , I As Byte
    Dim X As Word , Y As Word , X1 As Word , Y1 As Word
    Dim Sample As Word , Temp As Word , Temp_final As Integer , Sum As Integer
    Dim Dis As Bit

    Declare Sub Set_1
    H = 0
    M = 0
    S = 0
    Year = 2008
    X = 0
    Y = 0
    Z = 0
    E = 1
    Setfont Font8x8
    Set Portc.0
    Cls
    Showpic 0 , 0 , Fish
    Wait 1
    Showpic 0 , 0 , Welcome
    Waitms 700
    Showpic 0 , 0 , Your
    Waitms 700
    Showpic 0 , 0 , Intelligent
    Waitms 700
    Showpic 0 , 0 , Aquarium
    Waitms 700
    Cls
    Stop Adc
    Start Adc
    '--------------- temp -----------------------
    Incr Sample
    Temp = Getadc(5)
    Sum = Sum + Temp
    If Sample = 15 Then
    Sample = 0
    Sum = Sum / 15
    Sum = Sum - 558
    Temp_final = Sum / 2
    Sum = 0
    Lcdat 1 , 1 , Temp_final
    End If

    '-------------------- start -----------------
    -------تا اینجا عکس ها کاملا درست نمایش داده میشه Showpic 0 , 0 , Setting
    Start Timer0
    Do
    '------------------- touch ------------------
    Config Porta.0 = Output
    Config Porta.1 = Input
    Config Porta.2 = Output
    Config Porta.3 = Input
    Set Porta.0
    Reset Porta.1
    Reset Porta.2
    Reset Porta.3
    X = Getadc(1)
    X = X / 4
    Waitms 10
    Config Porta.0 = Input
    Config Porta.1 = Output
    Config Porta.2 = Input
    Config Porta.3 = Output
    Reset Porta.0
    Set Porta.1
    Reset Porta.2
    Reset Porta.3
    Y = Getadc(2)
    Y = Y / 8
    If Z = 0 Then
    '-------------------- lcd time --------------
    Select Case H
    Case 0 To 9 : Lcdat 7 , 39 , "0" ; H
    Case Else : Lcdat 7 , 39 , H
    End Select
    Lcdat 7 , 53 , ":"
    Select Case M
    Case 0 To 9 : Lcdat 7 , 59 , "0" ; M
    Case Else Lcdat 7 , 59 , M
    End Select
    Lcdat 7 , 73 , ":"
    Select Case S
    Case 0 To 9 : Lcdat 7 , 79 , "0" ; S
    Case Else Lcdat 7 , 79 , S
    End Select
    '-------------------- lcd date --------------
    Lcdat 8 , 29 , Year
    Lcdat 8 , 59 , "/"
    Select Case Month
    Case 0 To 9 : Lcdat 8 , 65 , "0" ; Month
    Case Else Lcdat 8 , 65 , Month
    End Select
    Lcdat 8 , 79 , "/"
    Select Case Day
    Case 0 To 9 : Lcdat 8 , 85 , "0" ; Day
    Case Else Lcdat 8 , 85 , Day
    End Select
    Lcdat 7 , 0 , X
    Lcdat 8 , 0 , Y
    '---------------- touch screen ---------------
    Select Case X
    Case 150 To 200:
    Select Case Y
    Case 56 To 90:
    E = 1
    Incr Z

    در اینجا به زیر برنامه میرمCall Set_1
    End Select
    End Select
    End If

    If Z = 1 Then
    Select Case X
    Case 20 To 200:
    Select Case Y
    Case 75 To 90:
    Stop Timer0
    Cls
    Showpic 0 , 0 , Menu1_1
    Waitms 500
    Showpic 0 , 0 , Menu2
    Start Timer0
    End Select
    End Select
    End If
    '----------------- LED light -----------------
    If X <> X1 And Y <> Y1 Then
    E = 1
    Set Portc.0
    End If
    If E = 10 Then
    E = 11
    Z = 0
    Cls
    Stop Timer0
    Showpic 0 , 0 , Setting
    Start Timer0
    End If
    If E > 20 Then
    Reset Portc.0
    E = 0
    End If
    X = X1
    Y = Y1
    Loop
    End
    '-------------------- declare sub -------------
    '-------------------- TIME - DATE -------------
    Sectic:
    Incr I
    If I > 30 Then
    Stop Timer0
    I = 0
    If E >= 1 Then Incr E
    Incr S
    If S > 59 Then
    S = 0
    Incr M
    If M > 59 Then
    M = 0
    Incr H
    If H > 23 Then
    H = 0
    Incr Day
    If Day > 30 Then
    Day = 1
    Incr Month
    If Month > 12 Then
    Month = 1
    Incr Year
    End If
    End If
    End If
    End If
    End If
    Start Timer0
    End If
    Return
    '------------------ setting --------------
    Set_1:
    Stop Timer0
    Cls
    مشکل در نشون دادن این عکسShowpic 0 , 0 , Setup
    'Select Case Z
    ' Case 1 :
    ' Cls
    ' Lcdat 1 , 0 , "SET Time:"
    ' Lcdat 3 , 63 , ":"
    ' Select Case H
    ' Case 0 To 9 : Lcdat 3 , 49 , "0" ; H
    ' Case Else : Lcdat 3 , 49 , H
    ' End Select
    ' Select Case M
    ' Case 0 To 9 : Lcdat 3 , 69 , "0" ; M
    ' Case Else Lcdat 3 , 69 , M
    ' End Select
    'End Select
    Start Timer0
    Return
    '------------------- ax ------------------
    Fish:
    $bgf "FISH.bgf"
    Welcome:
    $bgf "welcome.bgf"
    Your:
    $bgf "to your.bgf"
    Intelligent:
    $bgf "intelligent.bgf"
    Aquarium:
    $bgf "aquarium.bgf"
    Setting:
    $bgf "setting.bgf"
    Setup:
    $bgf "setup.bgf"
    Menu1_1:
    $bgf "1-1Aqarium setup.bgf"
    Menu2:
    $bgf "2-Aqarium setup.bgf"]

    دیدگاه


      #3
      پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

      نوشته اصلی توسط roze_siah
      سلام خسته نباشید
      دیروز من یه lcd دیگه خریدم lgm12864
      اصلا چیزی رو نشون نمیده!!!! مگه پایه هاش کاملا شیبه kxm12864 نیستش؟
      من دیتا شیت اینارو ندیدم... شما دارید بذارید !!

      من یه بار با همین مشکل روبرو شدم
      یادم نیست شماره lcd چی بود ولی رو lcd های دیگه جواب میداد فقط روی همون lcd این مشکل رو داشتم...
      1- شما اون عکس هایی که میگید اینطوری میشه رو در اندازه 63*127 درست کنید.
      یا از این دستور استفاده کن Showpic 127, 0 , lable ببین درست میشه.
      من خودم هنوز نفهمیدم مشکل کجا بود :sad:
      www.icesi.ir

      دیدگاه


        #4
        پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

        ولی من احساس میکنم مشکل از خود lcd باشه چون الان متوجه شدم نوشته رو هم همین بلا رو سرش میاره...!!!
        اما نمیدونم چرا lgm12864 چیزی رو نشون نمیده
        من حتی یه فایل پیدا کردم که تو پروتئس از lgm12864 استفاده کرد hex برنامشو ریختم تو میکرو پایهاشم دقیقن عین پروتئوس بستم اما بازم جواب نداد...
        اینم datashet
        http://www.longtech-display.com/datasheet/LGM12864B.pdf

        دیدگاه


          #5
          پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

          سلام.
          شما گفتی وقتی تایمر رو روشن میکنید این مشکلو دارید؟؟
          یه برنامه ساده بنویسید که یک عکس و یک نوشته رو نمایش بده
          ببینید باز هم همین مشکل را دارید؟
          www.icesi.ir

          دیدگاه


            #6
            پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

            من قبل از نمایش عکس تایمرو stop میکنم بعد از نمایش دوباره start میکنم
            گفتم که اول برنامه درست نمایش میده
            برنامه ساده هم نوشتم واونجا درست نمایش میده...
            چی کار کنم .بدون تایمر که نمی تونم کار کنم...

            دیدگاه


              #7
              پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

              با عرض سلام خدمت دوستان گرامی
              یک مسئله ای رو می خواستم اینجا مطرح کنم و اون هم اینکه :
              آیا به کمک یکی از کامپایلرهای زبان های سطح بالا مثلا بسکام، می توان دو یا چند LCD کاراکتری رو با یک میکرو راه اندازی کرد؟ البته هدف استفاده از کتابخانه ها و توابع خود کامپایلر می باشد و نه به صورت نوشتن مثلا یک زیر برنامه که مستقیما با پایه های LCD سر و کار داشته باشیم. تا بتونیم از دستورات خود کامپایلر (در اینجا بسکام) برای کار با LCD استفاده کنیم. دستوراتی مثل Lcd ، Cls ، Rotate و ...

              من یک سری مشکلات و راه حل های برای این مسئله پیدا کردم که در زیر بیان شده :

              1. اگر هدف نشان دادن یک Data بر روی دو LCD مشابه باشد که مشکلی وجود ندارد و می توان مانند فایل پروتیوسی که با نام 2LCDA در لینک زیر وجود دارد 6 سیم دو LCD رو یک به یک به هم وصل کرد.

              2. اگر هدف نشان دادن دو Data متفاوت بر روی دو LCD مشابه باشد می توان با اضافه کردن دو Latch مثلا 74HC373 مانند فایل پروتیوسی که با نام 2LCDB در لینک زیر وجود دارد این مشکل را هم حل کرد.

              3. اگر مشکل استفاده از دو LCD متفاوت مثلا یک LCD از نوع 2*16 و دیگری 4*20 باشد آنگاه مانند برنامه که در فایل پروتیوسی که با نام 2LCDC در لینک زیر وجود دارد عمل می کنیم بدین صورت که در هنگام Config ، اون LCD رو config می کنیم که دارای ابعاد بزرگتری باشد. البته باید این نکته رو مد نظر داشت که در LCD کوچکتر بعد از کاراکتر آخر اگر بازهم کاراکتری برای LCD ارسال شود بدون آنکه محل آن مشخص شود این کاراکتر دیگر جایگزین اولین کاراکتر نمی شود زیرا میکرو ظرفیت LCD را بیشتر فرض کرده!!! البته این مسئله با دقت در نوشتن برنامه مشکلی پیش نمی آورد.

              حال مسئله اینست که آیا می توان با استفاده از سخت افزارهای کمتر مرحله 2 و 3 را انجام داد؟ بدون استفاده از هیچ سخت افزاری که بعید می دونم چون در config کردن کامپایلر فقط امکانات برای تعریف یک LCD را دارد و وقتی که یک سخت افزار را در کامپایلر پیکربندی می کنیم امکان تغییر این پیکربندی در متن برنامه وجود ندارد، مثلا نمی توان ابتدا LCD اول رو config کرد Data رو برای اون فرستاد و بعد LCD دوم رو config کرده و Data رو برای اون فرستاد، در این حالت کامپایلر پیکربندیی رو اجرا می کند که در خط پایین تری نوشته شده باشد. مسئله دیگری که در مورد پیکربندی کامپایلر وجود دارد اینست که در اولین لحظات شروع کار میکرو، اطلاعات پیکربندی سخت افزارها برای آنها فرستاده می شود و علت استفاده من از مقاومت های Pull Down در 2LCDB و 2LCDC همین مسئله می باشد تا در همان لحظه اول اطلاعات پیکربندی برای هر دو میکرو فرستاده شود. و در این دو برنامه خطی که قبل از دستکاری OE دو Latch نوشته شده در مورد هر دو LCD اجرا می شود که این خط Cursor Off می باشد که باعث می شود Cursor هر دو LCD خاموش شود.

              از دوستان کسی راه حل بهتری به ذهنش می رسه؟

              این هم لینک ذکر شده در متن :
              http://rapidshare.com/files/135162871/2LCD.rar.htm
              سعی نکن انسان موفقی باشی بلکه سعی کن انسان ارزشمندی باشی. آلبرت انیشتین

              دیدگاه


                #8
                پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                سلام بر دوست عزیز جناب موسوی LCD ها فقط کاراکتری هستند اون هم 2 تا!! سایزشون هم متفاوت هست 2*16 و 4*20 .
                خب یک لحظه رو این LCD لحظه بعد روی یک LCD دیگه می نویسیم!!!
                خوشحال میشم روشتون رو ببینم
                سعی نکن انسان موفقی باشی بلکه سعی کن انسان ارزشمندی باشی. آلبرت انیشتین

                دیدگاه


                  #9
                  پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                  نوشته اصلی توسط roze_siah
                  با kxm12864 نشون میده اما یه مشکل داره....اونم اینه که در یه جای برنامه عکسی رو که میزارم یه حالتی . از وسط.سمت راست عکس یه پیکسل پایین تر نشون میده.در صورتی که همین عکس در اول استفاده میکنم درست نمایش داده میشه!!!
                  ممکنه ایراد از پشته ها باشه. مقادیر HWSTACK و SWStACK و FRAMESIZE رو تغییر بده.

                  نوشته اصلی توسط احمد رضا لیاقت
                  آیا به کمک یکی از کامپایلرهای زبان های سطح بالا مثلا بسکام، می توان دو یا چند LCD کاراکتری رو با یک میکرو راه اندازی کرد؟
                  LCD هایی وجود دارند که از طریق SPI و یا I2C کنترل میشن. هر چند که ممکنه مورد نظر شما نباشه ولی مطرح شدنش خالی از لطف نیست.
                  تو انجمن هم سرچ کنین یه نمونشو حامد پروشانی نوشته

                  دیدگاه


                    #10
                    پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                    سلام
                    من میخام یه پروژه با GLCD انجام بدم که اولش یه سری متغیرها رو بتونم با کلید بهش بدم مثلا عدد بعد بره تو برنامه اصلی اون اعداد و نشون بده
                    کسی هست که بدونه چه طور میشه این کارو کرد

                    دیدگاه


                      #11
                      پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                      نوشته اصلی توسط hamed_avr
                      سلام
                      من میخام یه پروژه با GLCD انجام بدم که اولش یه سری متغیرها رو بتونم با کلید بهش بدم مثلا عدد بعد بره تو برنامه اصلی اون اعداد و نشون بده
                      کسی هست که بدونه چه طور میشه این کارو کرد
                      سلام.
                      زبان برنامه نویسی؟
                      نوع lcd ؟
                      تنظیمات چی هستش؟
                      یکمی بیشتر توضیح بده :sad:
                      ------------------------
                      باید برنامه رو به 2 لوپ تقسیم کنی..
                      در لوپ اول مقدار متغییر ها رو تنظیم کنی بعد که تنظیم کردی با یک کلید وارد اول بعدی که لوپ اصلی هست وارد بشی.
                      www.icesi.ir

                      دیدگاه


                        #12
                        پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                        من زیاد درمورد glcd اطلاعات ندارم
                        زبان برنامه بیسیک
                        نوع lcd هم 64*128
                        میخوام یه پروژه درست کنم برای طلا فروشی ها که اول قیمت طلا رو از کاربر بگیره بعدش هم با فونت بزرگ نمایش بده ضمنا کاربر بتونه قیمت ها رو عوض کنه

                        دیدگاه


                          #13
                          پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                          خوب این چیزه خیلی ساده ایه.....
                          فقط کافیه اتصالات lcd رو وصل کنی و lcd رو پیکر بندی بکنی.
                          برای وارد کردن قیمت هم میتونی از کیبورد استفاده کنی..
                          فقط کافیه 2 تا لوپ تو برنامه داشته باشی..تو لوپ اول کیبورد رو بخونی و روی lcd نمایش بدی بعد اگه کاربر کلید ok رو زد از لوپ خارج بشه و اون مقدار متغیر رو بر روی lcd نمایش بدی.


                          این مقاله رو بگیر بخون(قسمت lcd گرافیکی رو بخونی کافیه)
                          http://www.eca.ir/forum2/index.php?topic=16965.0
                          www.icesi.ir

                          دیدگاه


                            #14
                            پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                            از راهنمایی که کردی ممنونم
                            فقط یه سوال دیگه دارم و اینکه چه طور باید فونت فارسی رو با اندازه بزرگ رویglcd نمایش بدم؟

                            دیدگاه


                              #15
                              پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                              اینجا رو یه نگاه بنداز:
                              http://www.eca.ir/forum2/index.php?topic=9411.15

                              دیدگاه

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