Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Графичен LCD и въпрос за код.
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9897
Страница 1 от 1

Автор:  iivantodorov [ Пон Фев 20, 2012 5:55 pm ]
Заглавие:  Графичен LCD и въпрос за код.

Здравейте,

реших да разгледам как се процедира с графичните дисплеи.
Ползвам един такъв 128х64 с чипове KS0108. И една сравнително проста програмка за визуализиране на картинка.

Код:
//****************************************************************************//
// Purpose:       Fill the graphic LCD screen with 128x64 bit converted image //
// Inputs:        YES - Inverse of image (Raw data saved in ROM)              //
//                NO - Normal image (Raw data saved in ROM)                   //
// Dependencies:  glcd_pixel(), glcd_init()                                   //
//                                                                            //
//                      !! Check the "Bitmap.h" file !!                       //
//                                                                            //
//****************************************************************************//
void glcd_image(int1 inverse)
{
   unsigned int i, j, k;
   unsigned int16 count=0;
   int width = 128; 
   int height = 64;
   glcd_fillScreen(OFF);                        //Clears the screen (opt.)
   if(inverse)
   {
      for(i=0;i<height;i+=8)
      {
         for(j=0;j<width;j++)
         {
            for(k=0;k<8;k++)
            {
               if(~bit_test(image[count],k))
               {
                 glcd_pixel(j,i+k,ON);
               }
               
            }
            count++;
         } 
      }

   }
   else
   {
      for(i=0;i<height;i+=8)
      {
         for(j=0;j<width;j++)
         {
            for(k=0;k<8;k++)
            {
               if(bit_test(image[count],k))
               {
                  glcd_pixel(j,i+k,ON);
               }         
               
            }
            count++;
         } 
      }
   }
}



Опитвам се да преформя функцията така, че да може да се извиква за различни изображение а не само с това което ползва масива image, но не успявам понеже не може да се направи указател към константа и така не мога да добавя указател към масива като параметър.
Как да се справя с тази задачка?

Автор:  tolstolob [ Пон Фев 20, 2012 9:06 pm ]
Заглавие:  Re: Графичен LCD и въпрос за код.

Указател към константа:
Код:
const unsigned char*  ptr;


В твоя случай:
Код:
void glcd_image(int1 inverse, const unsigned char*  ptr)

и заместваш image[] с ptr[].

Ако става дума за лайняния Ц18, декларираш rom const.

Автор:  iivantodorov [ Вто Фев 21, 2012 12:14 pm ]
Заглавие:  Re: Графичен LCD и въпрос за код.

Верно шантава работа, нямаше да намеря начин ако четях само хелпа на компилатора. :)

Стана така:

декларирах масива вместо
Код:
const int imagе[]= { ... }

така:
Код:
rom int image[]= { ... }


и функцията

Код:
void glcd_image(int1 inverse, rom *ptr)



Благодаря tolstolob. :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/