اطلاعیه

Collapse
No announcement yet.

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

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

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

    لطفا آموزش کار با LCD گرافیکی را در محیط نرم افزاری CodeVision را یاد بدهید :read:


    َAVR
    دکتر چمران در 1311 در تهران متولد شد
    وی در زمان اقامت در آمریکا انجمن اسلامی آمریکا را تأسیس کرد که منجر به قطع بورسیه وی توسط شاه شد.
    او با اینکه یکی از دانشمندان مطرح آمریکا به حساب می آمد بدون توجه به مدرک به مصر رفت و آموزش نظامی دید.

    دیدگاه


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

      با سلام
      ممنون که مشکل منو حل کردید اما اگر کار این دو دستور را هم بگید سپاس گزار میشم:
      LCD_PORT=0xB8 | page;؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
      LatchLCD();
      LCD_RS=0;
      LCD_RW=0;
      LCD_PORT=0x40 | columns; ؟؟؟؟؟؟؟؟؟؟؟؟
      با تشکر

      اضافه شده در تاریخ :
      سلام
      من منتظر جواب هستم اگه میشه راهنمایی کنید.
      با تشکر

      دیدگاه


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

        سلام صادق جان...
        شرمنده یکم سرم شلوغ بود نرسیدم جواب بدم

        خوب چرا اینجوری شده؟ LCD_PORT=0xB8 | page

        ببین دادا این LCD یه چیپ داره به اسم KS108 که البته خودت بهتر میدونی حالا خود این IC یه سری ریجیستر و بافر و یکم مخلفات دیگه داره حالا باید یجوری باهاش ارتباط برقرار کنیم
        مثلا اگه بخوای بهش بفهمونی که میخوای از کدوم صفه LCD شروع کنی به نوشتن که تو همین مثال بالا گفته
        باید
        RS=0 R/W=0 AB7=1 AB6=0 AB5=1 AB4=1 AB3=1 AB2=0 AB1=0 AB0=0 بشه
        که اینو اگه به HEX تبدیل کنی میشه >>>> 0XB8 = 0010111000
        خوب حالا به جای اون 3 تا بیت کم ارزش که صفر هستن
        میتونی ادرس صفحه رو بنویسی که از 0 شروع میشه تا 8...
        تو مثالشم اگه دقت کنی اومده ادرس صفحه رو با اون 3تا 0 OR بیتی کرده...

        LCD_PORT=0x40 | columns
        اینم برای ادرس دهی ستونهاست که در مجموع 64 تا ستون داریم که دو تا 64 تا میشه 128 ستون
        اینم دقیقا عین بالایی فقط ادرس ستون از 0 شروع میشه تا 63 که به جای COLUMNS باید بنویسی

        یا علی...
        ذکات علم یاد دادنه ....

        دیدگاه


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

          سلام

          من قصد دارم در کنار چاپ واژه Hello Word! روی ال سی دی 2*16 از دو شکل ساختگی (به کمک LCD Designer خود بیسکام) که در اینجا فلشی به سمت چپ در مختصات 1،1 و فلش سمت راست در مختصات 1،16 هست را روی LCD نمایش دهم حالا مشکل اینه که فقط کلمه Hello Word! نمایش داده میشه و هیچکدام از شکل ها دیده نمیشود راه حل مشکل من چیه؟


          کد:
          $regfile = "m8def.dat"
          $crystal = 8000000
          
          Config Lcd = 16 * 2
          Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
          Cursor Off
          
          
          Cls
          Locate 1 , 1
          Deflcdchar 0 , 3 , 7 , 15 , 31 , 31 , 15 , 7 , 3      ' replace ? with number (0-7)
          
          Locate 1 , 3
          Lcd "Hello World"
          
          Locate 1 , 16
          Deflcdchar 1 , 24 , 28 , 30 , 31 , 31 , 30 , 28 , 24    ' replace ? with number (0-7)
          
          
          End                             'end program

          دیدگاه


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

            با سلام
            می خواستم بدونم اگه بخواهم یک انتقال هشت بیتی برای LCD در Codevision انجام بدم باید چه کار کنم.
            چون همانطور که میدانید در Codevision انتقال 4 بیتی امکان پذیر است . آیا باید یک کتابخانه جدیدی برای آن بنویسم .اگر جواب بلی است چگونه؟
            ممنون می شوم راهنماییم کنید.

            دیدگاه


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

              با سلام خدمت دوستان عزیزم.یه پرژه ای دارم روش کار میکنم وقتی دستورات چاپ یک عبارتو تو code vision مینویسم وتو پروتوس شبیه سازیش میکنم بجای بعضی از حرفها یا شماره ها حرفای دیگه ای چاپ میشه اشکالش از چیه؟؟؟؟؟؟؟؟؟؟؟؟

              دیدگاه


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

                با سلام
                من یه تابع برای نوشتن کاراکتر انگلیسی (فارسی هم باشه خیلی خوبه) روی lcd ks0108 را لازم دارم اگه میشه کسی در مورد این تابع به بنده مبتدی کمک کنه. (درضمن با کدویژن کار می کنم.)
                با تشکر

                دیدگاه


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

                  سلام
                  نمیدونم این سوال یا در خواستم به این جا ربط داره یا نه ولی چون عنوان در مورد LCD ها بود گفتم که اینجا بپرسم شاید جواب بگیرم .استاد ما یه پروژه خواسته که روی یک GLCD بدون هیچگونه آی سی یا مدار واسط خاصی فقط و فقط با استفاده از پورت LPT و با استفاده از از زبان ++C ال سی دی رو راه اندازی کنه و اسم خودمون رو نمایش بده ،من یه ال سی دی گرافیکی به نام TS-12864A-2تهیه کردم ولی هیچ ایده ای ندارم هر چی برنامه این جا هست یا تو اینترنت دیدم هم یا با مدار واسطه یا ال سی دی متنیه کسی راه حلی نداره یه ذره هم عجله دارم به دادم برسید با تشکر :sad:

                  دیدگاه


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

                    با سلام و خسته نباشید
                    من سورس بسکام برنامه فارسی نویسی روی lcd گرافیکی با avr رو می خوام / فقط می خوام یه کلمه رو روی lcdگرافیکی نشون بده . فقط سورس شو می خوام لطفا کمکم کنید. لطفا سورس کاملش رو بزارین که دیگه مشکلی نداشته باشم
                    با تشکر

                    دیدگاه


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

                      سلام به همه
                      من می خوام کاری کنم که ساعت سیستم رو بفرستم روی ال سی دی .
                      خول برای این کار کد مربوط به ارسال ساعت رو در محیط C# نوشتم و برنامه از سمت PC مشگلی نداره .
                      سخت افزار کار رو هم تهیه کردم . یک ناکس 232 گرفتم ، دیتا رو از پورت سریال بردم بهش و از این هم بردم به پایه RX میکرو(ATMEGA16) . خوب پورت ال سی دی رو هم پورت B مشخص کردم در کدویژن . پین های پورت B رو هم طبق دستور کدویژن به ال سی دی وصل کردم . خوب حالا اگه کمک کنید و بگید چه کدی بنویسم توی برنامه که دیتا ارسالی از کامپیوتر رو بیارم روی ال سی دی ممنون می شم . اینها رو هم بلد نبودم و یکی دو روزه یاد گرفتم . آخه من اصلا رشته ام نرم افزاره .
                      با کد ویزارد که این تنظیمات رو انجام می دم یه سری کد خودش می نویسه . اما نمی دونم کدی که خودم باید بنویسم چیه.
                      شنیدم خیلی کدش سخت نیست اما من اصلا کدویژن بلد نیستم . چون به زبان سی نزدیک هست این رو انتخاب کردم .
                      توی وصل کردن پتانسیومتر به سه پین اول ال سی دی هم مشکل دارم . نمی دونم چه طوری هم پتانسیومتر رو وصل کنم هم Vcc , GND رو . چون اینها رو که وصل می کنم 7805 داغ می کنه :redface: :angry: :angry: :angry: :angry:
                      راستی ال سی دی 2*16 هست

                      دیدگاه


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

                        نوشته اصلی توسط nbpa
                        با سلام خدمت دوستان عزیزم.یه پرژه ای دارم روش کار میکنم وقتی دستورات چاپ یک عبارتو تو code vision مینویسم وتو پروتوس شبیه سازیش میکنم بجای بعضی از حرفها یا شماره ها حرفای دیگه ای چاپ میشه اشکالش از چیه؟؟؟؟؟؟؟؟؟؟؟؟
                        کسی نیس به ما یه جوابی بده؟؟؟؟؟؟؟؟؟ :read:
                        زندگی شوق رسیدن به همان فردایی است که هرگز نخواهد امد تو نه در دیروزی نه در فردا

                        دیدگاه


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

                          سلام به همه
                          من می خوام کاری کنم که ساعت سیستم رو بفرستم روی ال سی دی .
                          خول برای این کار کد مربوط به ارسال ساعت رو در محیط C# نوشتم و برنامه از سمت PC مشگلی نداره .
                          سخت افزار کار رو هم تهیه کردم . یک ناکس 232 گرفتم ، دیتا رو از پورت سریال بردم بهش و از این هم بردم به پایه RX میکرو(ATMEGA16) . خوب پورت ال سی دی رو هم پورت B مشخص کردم در کدویژن . پین های پورت B رو هم طبق دستور کدویژن به ال سی دی وصل کردم . خوب حالا اگه کمک کنید و بگید چه کدی بنویسم توی برنامه که دیتا ارسالی از کامپیوتر رو بیارم روی ال سی دی ممنون می شم . اینها رو هم بلد نبودم و یکی دو روزه یاد گرفتم . آخه من اصلا رشته ام نرم افزاره .
                          با کد ویزارد که این تنظیمات رو انجام می دم یه سری کد خودش می نویسه . اما نمی دونم کدی که خودم باید بنویسم چیه.
                          شنیدم خیلی کدش سخت نیست اما من اصلا کدویژن بلد نیستم . چون به زبان سی نزدیک هست این رو انتخاب کردم .
                          توی وصل کردن پتانسیومتر به سه پین اول ال سی دی هم مشکل دارم . نمی دونم چه طوری هم پتانسیومتر رو وصل کنم هم Vcc , GND رو . چون اینها رو که وصل می کنم 7805 داغ می کنه :redface: :angry: :angry: :angry: :angry:
                          راستی ال سی دی 2*16 هست
                          خوب شما باید اولا رشته ایی که میفرسی برا ی میکرو بزاری ببینم چیه ...
                          مثلا اول ساعت میاد بعد دقیقه و...
                          بعد کاری که باید تو code vision انجام بدی اینتراپت دریافت سریال میکرو رو فعال کنی و تو وقفه سریال دیتایی که از PC میادو بریزی تو یه ارایه و بعدشم رو LCD نمایش بدی ... به همین راحتی به همین خوشمزگی :mrgreen:

                          البته بصورت کلی اینجوریه حالا جزئیاتشم میگم :agree:

                          خوب فرض میکنیم رشته ای که واسه میکرو میفرسی اینجوریه: 1017
                          حالا تو قسمت اینتراپت سریال :
                          تو قسمت کدویزارد اینکارو بکن البته من از کریستال 11.059200 استفاده کردم:
                          pic1
                          حالا code vision خودش کد مربوط به وقفه سریال رو مینویسه البته من فرض کردم که دیتایی که میفرسی 8 بیت بیشتر نداشته باشه حالا رشته ارسالی توی rx_buffer0

                          کد:
                          // USART0 Receiver interrupt service routine
                          interrupt [USART0_RXC] void usart0_rx_isr(void)
                          {
                          char status,data;
                          status=UCSR0A;
                          data=UDR0;
                          if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                            {
                            rx_buffer0[rx_wr_index0]=data;
                            if (++rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
                            if (++rx_counter0 == RX_BUFFER_SIZE0)
                             {
                             rx_counter0=0;
                             rx_buffer_overflow0=1;
                             };
                            };
                          }
                          حالا میمونه نمایش rx_buffer0 روی lcd

                          کد:
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf( rx_buffer0);
                          البته فکر کنم قسمت مربوط به نمایش روی lcd درست نباشه :redface:
                          امتحان کن اگه جواب نداد بگو اصلاح کنم...


                          ذکات علم یاد دادنه ....

                          دیدگاه


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

                            نوشته اصلی توسط nbpaa
                            کسی نیس به ما یه جوابی بده؟؟؟؟؟؟؟؟؟ :read:
                            برنامتو بزار ببینیم چیکار کردی :nerd:
                            ذکات علم یاد دادنه ....

                            دیدگاه


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

                              نوشته اصلی توسط majid.4206
                              خوب شما باید اولا رشته ایی که میفرسی برا ی میکرو بزاری ببینم چیه ...
                              مثلا اول ساعت میاد بعد دقیقه و...
                              بعد کاری که باید تو code vision انجام بدی اینتراپت دریافت سریال میکرو رو فعال کنی و تو وقفه سریال دیتایی که از PC میادو بریزی تو یه ارایه و بعدشم رو LCD نمایش بدی ... به همین راحتی به همین خوشمزگی :mrgreen:

                              البته بصورت کلی اینجوریه حالا جزئیاتشم میگم :agree:

                              خوب فرض میکنیم رشته ای که واسه میکرو میفرسی اینجوریه: 1017
                              حالا تو قسمت اینتراپت سریال :
                              تو قسمت کدویزارد اینکارو بکن البته من از کریستال 11.059200 استفاده کردم:
                              pic1
                              حالا code vision خودش کد مربوط به وقفه سریال رو مینویسه البته من فرض کردم که دیتایی که میفرسی 8 بیت بیشتر نداشته باشه حالا رشته ارسالی توی rx_buffer0

                              کد:
                              // USART0 Receiver interrupt service routine
                              interrupt [USART0_RXC] void usart0_rx_isr(void)
                              {
                              char status,data;
                              status=UCSR0A;
                              data=UDR0;
                              if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                                {
                                rx_buffer0[rx_wr_index0]=data;
                                if (++rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
                                if (++rx_counter0 == RX_BUFFER_SIZE0)
                                 {
                                 rx_counter0=0;
                                 rx_buffer_overflow0=1;
                                 };
                                };
                              }
                              حالا میمونه نمایش rx_buffer0 روی lcd

                              کد:
                              lcd_clear();
                              lcd_gotoxy(0,0);
                              lcd_putsf( rx_buffer0);
                              البته فکر کنم قسمت مربوط به نمایش روی lcd درست نباشه :redface:
                              امتحان کن اگه جواب نداد بگو اصلاح کنم...
                              سلام مجید جان
                              من این وقفه رو فعال کرده بودم . الان مشکل اینجاست که وقتی توی اون وایل بی نهایت برنامه ، می گم که 8بار گت چر کن(8تا کاراکتر مثلا می خوایم بگیریم) و بریز توی اندیس های یک آرایه کارکتری و بعد نمایشش بده ، دری وری چاپ می کنه . کاراکتر های نا مفهموم چاپ می کنه . کد زیر رو در اون وایل بی نهایت می نویسم:خیلی وقتها اصلا هیچی نشون نمی ده . به جای خیلی از کاراکتر ها اسپیس و مستطیل چاپ می کنه .

                              قسمت اول کد که داخل همون وقفه هستش . بخش نمایش رو کجا بنویسم؟

                              while(i<8)
                              {
                              ch=getchar();
                              str [i] =ch;
                              i++
                              }
                              lcd_puts(str);
                              تایپ در اینجا مشکل هست چه قدر . منظورم از خط سوم اینه که ch رو بریز در اندیس i ام آرایه str . اما نمی دونم چرا این رو نشون نمی ده . یعنی شما از بابت سینتکس بدون که من منظورم این بود : str[i[

                              دیدگاه


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

                                میشه برنامتو کامل بزاری ببینم چیکار کردی...
                                ببین اگه از وقفه سریال استفاده کردی دیگه لازم نیست از تابع getchar استفاده کنی تو اون وقفه هر موقعه دیتا از pc بیاد میریزه تو buofer0 و خودش یکی بهش اضافه میکنه تا دیتای بعدی همینطور تا وقتی 8 تا بشه دوباره 0 میشه حالا شما کافیه همونو رو lcd نمایش بدی...

                                برنامت ایراد داره ... بیا اینو امتحان کن ببین جواب میده

                                char a[9];

                                gets(a,9);
                                lcd_clear();
                                lcd_puts(a);

                                اگه از تابع gets() استفاده کنی دیگه لازم نیست وقفه دریافت سریال رو فعال کنی خود تابع بصورت poling عمل میکنه و به اندازه اون عددی که الان 9 دیتا رو میگیره و بعد رو lcd نشون میده


                                ذکات علم یاد دادنه ....

                                دیدگاه

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