помогите вывести символ 16x16 пикселя на dg16080

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Аватара пользователя
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Сообщение igonzo »

по координате (x) 16 пикселей

по координате (y) только 8 пикселей

Изображение
---------------------------------------------------------------------------------------
рисую так
---------------------------------------------------------------------------------------

Код: Выделить всё

  void glcd_draw_simvol(unsigned int x,unsigned int y, char simvol) 
 {
    int  dat,i,j;  // j- координата x; i-координата y
    dat = simvol;
    
    if (dat > 255)
        return;
    
    for (i = 0; i < 16; i++)
    {
        for (j = 0; j < 8; j++) 
          { 
            if (font_16x16[16*dat+i] & (1<<j))
                lcd_graphics_plot_pixel(x, y+j, 0xFF);
			else	
				lcd_graphics_plot_pixel(x, y+j, 0x00);
                
            //lcd_buz();
		  }
		  x++;
	}
 } 

-------------------------------------------------------------------------------------
символ 0
-------------------------------------------------------------------------------------

Код: Выделить всё

 flash unsigned char font_16x16[] = 
 {
   0x00,0x00,0x00,0xF8,0xFC,0x06,0x06,0x06,0x06,0x06,0x06,0xFC,0xF8,0x00,0x00,0x00, // 0
 };
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.

Сообщение da-nie »

if (dat > 255)
return;
Для типа char это работать не будет. Этот тип от -128 до 127.

А собственно, в чём вопрос? Что не работает-то?
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Сообщение igonzo »

хочу вывести большие цифры (для термометра)

где то 50x40

а как и где их взять не знаю
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.

Сообщение da-nie »

Так нарисуйте цифры на листе в клетку. Вручную биты соберите в байты. Так раньше на спектруме спрайты кодировали без редактора. Это если красивый шрифт нужен.
Если же просто растянуть надо, тогда продублируйте каждый пискель по высоте и ширине нужное число раз в программе.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Сообщение igonzo »

а как выпихнуть массив

с картинкой ??? :oops:
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.

Сообщение da-nie »

а как выпихнуть массив

с картинкой ???
Не понятен вопрос. :oops:
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Сообщение igonzo »

Изображение

как его отобразить ?
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.

Сообщение da-nie »

Отображать в зависимости от того, как именно кодировалась картинка. Если это цвета RGB, то проходите по массиву и выводите эти цвета для каждой точки. Если там битовый (чёрно-белый) образ, тогда делайте развёртку каждого байта по 8 точек и так же выводите. Чтобы какой-то массив байт отобразить, надо знать, как он был закодирован.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 44
Зарегистрирован: Вс июл 18, 2010 23:17:10

Сообщение igonzo »

а пример можно как проходить по массиву и отображать каждую точку (а то уже с ума схожу) :oops: :oops: :oops:
[size=150][color=#FF0000]Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ![/color][/size]
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.

Сообщение da-nie »

а пример можно как проходить по массиву и отображать каждую точку (а то уже с ума схожу)
Вы лучше сформулируйте правильно задачу. Это первое. Второе - дайте текстовый файл данных изображения с описанием формата.
А так - делают обычно так:

for(unsigned short y=0;y<здесь размер по y;y++)
{
for(unsigned short x=0;x<здесь размер по x;x++)
{
unsigned short ptr=x+y*размер по x;
и здесь выводят точку цвета из массива по смещению ptr.
}
}
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»