Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.04.2011, 15:52
|
|
Частый гость
Регистрация: 23.09.2009
Сообщений: 41
Сказал спасибо: 8
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Програмерский вопрос (вывод текста на экран)
Всем привет!)
Нужен совет по организации библиотеки вывода текста на ЛСД экран, задача вроде бы стандартная, но есть нюансы.
Немного о сетапе, есть МК MSP430F2471, 4K RAM, 32K Flash, 16MHz max (хотя и не планирую гонять на таких высоких частотах), к нему по I2C подключен дисплей от SonyEricsson T68i (101x80 pix, 8bpp). Нужно выводить простую текстовую информацию. Достаточно ч\б.
Как видите ресурсов не очень много, кроме того на этой шине сидят еще 2 чипа с невысокой частотой опроса.
Доступные команды для вывода: 1) поставить курсор на такую-то точку (х,у); 2)вывести данные для пикселя под курсором и следующих за ним (с переносом строк).
Памяти для буфера никак не хватит, он ведь хочет по байту на пиксель, хотя мне достаточно 1bpp.
Понятно что придется хранить битмап для шрифта, но можно ли обойтись 1bpp, а при выводе перекодировать (бит 1 -› 0xFF, бит 0 -› 0x00)
Что люди делают в таких условиях?
|
|
|
|
20.04.2011, 16:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
В таком случае создают в ПЗУ контроллера знакогенератор, выводят строчку из него в ОЗУ, и из ОЗУ загружают в дисплей. Следующая строчка аналогично
|
|
|
|
20.04.2011, 18:18
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
gud_alex, Какой шрифт нужен? Если вывод будет строго монохром , знакогенератор фиксированный 8х(X). Знакогенератор будет занимать максимум (Х)*256 . Ну то есть то что вы хотите . 1 бит на пиксель .
Готовые знакогенераторы ищите от монохромных дисплеев типа Nokia 3310.
__________________
Осторожно , злой кот
|
|
|
|
20.04.2011, 18:52
|
|
Частый гость
Регистрация: 23.09.2009
Сообщений: 41
Сказал спасибо: 8
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
Неясно одно, как мне из этого знакогенератора выводить на дисплей? мне же нужно для каждого пикселя на экране запихнуть в него 1 байт а не один бит.
|
|
|
|
20.04.2011, 19:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
Ну, что-нибудь типа:
PHP код:
|
void send_8b_i2c(char byte_to_send) For (i=0;i‹8;i++) { if((byte_to_send)&(0x80)) {send_i2c(0xFF)} else {send_i2c(0x00)}; byte_to_send=(byte_to_send‹‹1); }
|
для передачи старшим битом вперед.
|
|
|
|
20.04.2011, 19:47
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
Цитата:
|
Неясно одно, как мне из этого знакогенератора выводить на дисплей? мне же нужно для каждого пикселя на экране запихнуть в него 1 байт а не один бит.
|
Ну так и проверяйте каждый бит, и, в зависимости от его значения, рисуете или не рисуете точку.
Вот один из вариантов знакогенератора:
Код:
|
/* ASCII таблица символов*/
const unsigned char ascii_tab[96][14]={
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32)
{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00}, //!
{ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //"
{ 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00}, //#
{ 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18}, //$
...
};
/*функция вывода символа 14х8 пикселей*/
void PutChar(unsigned int x, unsigned int y, char c, unsigned int color)
{
unsigned char h, ch, p, mask;
for (h=0; h‹=13; h++) // every column of the character
{
ch = ascii_tab[ c-32 ][h];
mask=0x80;
for (p=0; p‹=7; p++) // write the pixels
{
if (ch&mask)
{
PutPixel(x+p, y+h, color);
}
mask=mask/2;
}
}
} |
__________________
Если ты читаешь это - значит тебе нечем заняться...
|
|
|
|
20.04.2011, 20:01
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
omercury, Зря удалил , все же правильно .
__________________
Осторожно , злой кот
|
|
|
|
20.04.2011, 20:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
vdlab, полнее написал.
Последний раз редактировалось omercury; 20.04.2011 в 20:20.
Причина: Просто сделал именно то, что хотел ТС.
|
|
|
|
20.04.2011, 20:14
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Програмерский вопрос (вывод текста на экран)
omercury, Пусть у ТС выбор будет.
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Вывод текста на экран жк
|
Uragan90 |
Микроконтроллеры, АЦП, память и т.д |
52 |
21.03.2012 04:29 |
Часовой пояс GMT +4, время: 19:37.
|
|