Отговори на тема  [ 3 мнения ] 
Графичен LCD и въпрос за код. 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Фев 05, 2010 7:53 pm
Мнения: 25
Мнение Графичен 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, но не успявам понеже не може да се направи указател към константа и така не мога да добавя указател към масива като параметър.
Как да се справя с тази задачка?


Пон Фев 20, 2012 5:55 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение Re: Графичен LCD и въпрос за код.
Указател към константа:
Код:
const unsigned char*  ptr;


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

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

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


Пон Фев 20, 2012 9:06 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Фев 05, 2010 7:53 pm
Мнения: 25
Мнение Re: Графичен LCD и въпрос за код.
Верно шантава работа, нямаше да намеря начин ако четях само хелпа на компилатора. :)

Стана така:

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

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


и функцията

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



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


Вто Фев 21, 2012 12:14 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 3 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни