Странная фенька.
Дисплей от Siemens S65
поигрался со скролом, хрень какая-то. Скролить то она скролит, но как-то странно, такое ощущение что просто смещает точку начала отсчёта. При этом скролить бесконечно не получится, а если обратно выставить регистр на 0, то тупо "отлистает назад".
Странная фенька.
Странная фенька.
- Реклама
- Сообщения: 94
- Зарегистрирован: Ср авг 01, 2007 13:32:33
кстати насчет скролинга...
а если сделать так:
скролим на 1 пиксель.
нижнюю строку заполняем 1 строкой новой картинки
скролим на 1 пиксель
заполняем второй строкой и так далее, получется плавно выдвинуть 2 картинку? никто случаем не пробовал?
а если сделать так:
скролим на 1 пиксель.
нижнюю строку заполняем 1 строкой новой картинки
скролим на 1 пиксель
заполняем второй строкой и так далее, получется плавно выдвинуть 2 картинку? никто случаем не пробовал?
Получается. Но только её потом нужно будет обратно на всю ширину проскролить.
- Сообщения: 94
- Зарегистрирован: Ср авг 01, 2007 13:32:33
а если не скролить - не будет выводиться ничего? или координаты сбиваются?
можно же вывести... потом стереть все и в момент когда экран монотонный - отскролить назад... зато менюшки делать можно прикольные
можно же вывести... потом стереть все и в момент когда экран монотонный - отскролить назад... зато менюшки делать можно прикольные
смещается именно начало отсчета (начало видеобуфера), насколько помню. В любом случае выводится все, только в другом месте. Сейчас не вижу причин не использовать такое поведение для терминала, например, но тогда причины были. Может из-за горизонтального положения дисплея в том устройстве. Давно делал, поднимать лень.
- Реклама
Всем мяу!!!!!!! а я таки сделал осциллограф!!!!!!! на меге8 и дисплей от нокии3310!!!!!!! работает на ура!!!! на железе лучче работает чем в протеусе.... оно и понятно!!! только видео не хочет добавляться.... жаль...
радиоэлектроника - жизнь моя...
А как большие цифры вывести на экран??? Мне нужно часы отобразить на весь экран. А то 6х8, 5х5 ... А чего нибудь 100х40 ??? Как сделать?
Нельзя всё знать, достаточно понимать.
- Сообщения: 94
- Зарегистрирован: Ср авг 01, 2007 13:32:33
нарисуйте себе цифры 100х40.. и выводите наздоровье...
не понятно в чем собственно проблемма.
не понятно в чем собственно проблемма.
Если самому рисовать шрифт то он не влазиет в МК (мега8). Слишком большой массив получается. Нельзя ли программно увеличить стандартный шрифт 14х8 ? Он мало места во flash занимает.
Нашел такой пример, но масштаб выше двух не работает:
Нашел такой пример, но масштаб выше двух не работает:
Код: Выделить всё
// поместить символ в графическую память дисплея
// m - масштаб текста. 1-самый маленький
void put_char(char x, char y, char c, unsigned int color, char m)
{
char h,ch,p,mask,tt;
x=DISP_H - CHAR_H - x;
WRCMD(0xEF90);
WRCMD(0x0504);
WRCMD(0x0800+y);
WRCMD(0x0A00+x);
WRCMD(0x0900+y+CHAR_H*m-1);
WRCMD(0x0B00+x+CHAR_W*m-1);
for (h=CHAR_H; h>0; h--) // every column of the character
{
for(tt=0;tt<m;tt++)
{
ch=ascii_tab[ c-32 ][CHAR_H-h];
mask=0x01;
for (p=0; p<CHAR_W; p++) // write the pixels
{
if (ch&mask)
{
WRDATA(color);
if(m==2) WRDATA(color);
}
else
{
WRDATA(bgcolor);
if(m==2) WRDATA(bgcolor);
}
mask=mask*2;
}
}
}
}
// вывести строку, начиная с координат x,y, цветом color
// m - масштаб текста. 1-самый маленький
void put_string(unsigned char x, unsigned char y, char *str, unsigned int color, char m)
{
unsigned char j=0;
while (j<strlen(str))
{
put_char(x+j*CHAR_W*m,y,str[j],color,m); // 0 deg. rotated str[j]
j++;
}
}
Нельзя всё знать, достаточно понимать.
Немного переделал функцию put_char, теперь можно выводить текст с масштабированием от 1 до 4.
Код: Выделить всё
// поместить символ в графическую память дисплея
// m - масштаб текста. 1-самый маленький
void put_char(char x, char y, char c, unsigned int color, char m) {
char h,ch,p,mask,tt;
x=DISP_H - CHAR_H - x;
WRCMD(0xEF90);
WRCMD(0x0504);
WRCMD(0x0800+y);
WRCMD(0x0A00+x);
WRCMD(0x0900+y+CHAR_H*m-1);
WRCMD(0x0B00+x+CHAR_W*m-1);
for (h=CHAR_H; h>0; h--) { // every column of the character
for(tt=0;tt<m;tt++) {
ch=ascii_tab[ c-32 ][CHAR_H-h];
mask=0x01;
for (p=0; p<CHAR_W; p++) { // write the pixels
if (ch&mask) {
WRDATA(color);
if(m==2) {
WRDATA(color);
}
if (m==3) {
WRDATA(color);
WRDATA(color);
}
if (m==4) {
WRDATA(color);
WRDATA(color);
WRDATA(color);
}
}
else {
WRDATA(bgcolor);
if(m==2) {
WRDATA(bgcolor);
}
if (m==3) {
WRDATA(bgcolor);
WRDATA(bgcolor);
}
if (m==4) {
WRDATA(bgcolor);
WRDATA(bgcolor);
WRDATA(bgcolor);
}
}
mask=mask*2;
}
}
}
}
Нельзя всё знать, достаточно понимать.
Хочу, для примера, вывести 12:15
Error: C:\Users\Äìèòðèé\Desktop\Ðàáîòà ñ äèñïëååì\S65\S65.c(582): character constant is too long
Чего ему надо? Как строки то сложить?
Код: Выделить всё
unsigned int counter=15;
...
while (1)
{
char cnt[]; // промежуточная переменная для функции sprint()
sprintf(cnt,"%5u",counter); // преобразование числа в строку
put_string(0, 0,'12:'+cnt, 0xF800, 4); <-- ошибка
};Error: C:\Users\Äìèòðèé\Desktop\Ðàáîòà ñ äèñïëååì\S65\S65.c(582): character constant is too long
Чего ему надо? Как строки то сложить?
Нельзя всё знать, достаточно понимать.
Мужики, дайте, пожалуйста, самую последнюю версию описалова на ls020 с системой команд. Мучает вопрос как в нём можно контраст регулировать (где-то находил, что это вроде как возможо)? И ещё, как писать не напрямую в отображаемую область, а в видеопамять экрана? Спасибо.
Всем котам МЯУ !
Написал обработчик кнопок, прикрутил дисплей LS020. И далее думаю сделать примитивное меню. но есть вопрос: если при нажатии кнопки меняется текст и допустим меняется на одной и той же позиции, то он просто накладывается на предыдущий текст. при этом, если выводимый текст короче предыдущего, от него остается кусок! Уважаемые коты! как с этим бороться? и если строчки будут бегать вверх или вниз (типа меню) как сделать чтоб выводилось только нужное?
Написал обработчик кнопок, прикрутил дисплей LS020. И далее думаю сделать примитивное меню. но есть вопрос: если при нажатии кнопки меняется текст и допустим меняется на одной и той же позиции, то он просто накладывается на предыдущий текст. при этом, если выводимый текст короче предыдущего, от него остается кусок! Уважаемые коты! как с этим бороться? и если строчки будут бегать вверх или вниз (типа меню) как сделать чтоб выводилось только нужное?
радиоэлектроника - жизнь моя...
и еще: можно ли будет не пользоваться графическим буфером в памяти МК? или без этого никак в моем случае?
радиоэлектроника - жизнь моя...
Залей область куда выводится текст цветом фона, а потом уже выводи. Как раз старая надпись полностью сотрется и на "чистом" месте по новой пиши текст.
Нельзя всё знать, достаточно понимать.
и еще надо узнавать длину предыдущей строки чтоб знать сколько заливать
радиоэлектроника - жизнь моя...
Ну неужели ни кто из вас, уважаемые, не знает как регулировать контраст и лить в фоновую страницу видеопамяти ls020? Вы что, совсем уже мышей не ловите??? Фи, товарищи, фи!!!
я тут решил приступить к освоению сего занимательного дисплея и накачал всякой информации из сети для изучения... так вот, вроде нашелся даташит на контроллер LS020xxxx - там ни слова не говорится о какой-то "фоновой" странице памяти. я так понял, что это устоявшееся заблуждение общественности, типа мифа.ELcat писал(а):Ну неужели ни кто из вас, уважаемые, не знает как регулировать контраст и лить в фоновую страницу видеопамяти ls020? Вы что, совсем уже мышей не ловите??? Фи, товарищи, фи!!!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Там памяти ровно столько, сколько отображается на дисплее. В мобилке этот дисплей управляется контроллером, в котором и находится вся фоновая память, регулировка контраста и тд.
Ну либо это какие-то недокументированные ф-ии.
Ну либо это какие-то недокументированные ф-ии.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Предыдущая строка стирается такой же строкой (по длине) содержащей одни пробелы ...mr_smit писал(а):Залей область куда выводится текст цветом фона, а потом уже выводи. Как раз старая надпись полностью сотрется и на "чистом" месте по новой пиши текст.


