Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Дисплеи от сотовых (схемы подключения, код, datasheet)

Непрочитано 02.09.2011, 21:24  
dadigor
Прописка
 
Аватар для dadigor
 
Регистрация: 10.09.2010
Сообщений: 113
Сказал спасибо: 31
Сказали Спасибо 27 раз(а) в 27 сообщении(ях)
dadigor на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Сообщение от vlad145 Посмотреть сообщение
// Нарисовать прямоугольник с началом по х=10:у=14 с размером по х=32:у=16 цветом BLUE
void fill_area( char x1, char x2, char y1, char y2,int color)
{
int i;
char w,h;
lcd_reg(0x05);lcd_dat(0x0030);
lcd_reg(0x16);lcd_dat8(y2,y1);
lcd_reg(0x17);lcd_dat8(x2,x1);
lcd_reg(0x21);lcd_dat8(x1,y1);
lcd_reg(0x22);lcd_write8(0x76);
//Пишем точку
w=x2-x1+1;h=y2-y1+1;
for (i=0;i‹w*h;i++)
{
lcd_write(color);
};
}
При использовании первого, 0 или 1 без разницы, квадрат чистый. При использовании второго, заполнение на полностью. Причем, если квадрат маленький, примерно 15х15, то нормально. Если размер больше, то только часть. Где может быть ошибка в коде?
Судя по всему у вас i - 8-битное целое, поэтому i = w * h не может превышать 255... Попробуйте объявить его 16-битным.
Реклама:
dadigor вне форума  
Непрочитано 02.09.2011, 21:48  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Я ещё не совсем разобрался с данным кодом, адаптировал из WINAVR в CVAVR. Вот все процедуры. Удалось переделать(может и не совсем правильно) почти все, кроме этих двух.
Вложения:
Тип файла: txt процедуры.txt (10.1 Кб, 121 просмотров)
vlad145 вне форума  
Непрочитано 02.09.2011, 22:54  
dadigor
Прописка
 
Аватар для dadigor
 
Регистрация: 10.09.2010
Сообщений: 113
Сказал спасибо: 31
Сказали Спасибо 27 раз(а) в 27 сообщении(ях)
dadigor на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

попробуй в fill_area объявление переменной i:

int i;

заменить на:

uint16_t i;
dadigor вне форума  
Непрочитано 02.09.2011, 23:02  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Сообщение от dadigor Посмотреть сообщение
попробуй в fill_area объявление переменной i:

int i;

заменить на:

uint16_t i;
Сразу выдаёт ошибки:

Error: .... undefined symbol 'uint16_t'
Error: .... must declare first in block
vlad145 вне форума  
Непрочитано 02.09.2011, 23:10  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Сообщение от dadigor Посмотреть сообщение
попробуй в fill_area объявление переменной i:

int i;

заменить на:

uint16_t i;

В CVAVR uint16_t i вроде не катит а vlad145 под него надо
sdsrem вне форума  
Непрочитано 02.09.2011, 23:14  
dadigor
Прописка
 
Аватар для dadigor
 
Регистрация: 10.09.2010
Сообщений: 113
Сказал спасибо: 31
Сказали Спасибо 27 раз(а) в 27 сообщении(ях)
dadigor на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

хм, ступил я... вообще-то int обычно и так 16-битное число. Возможно произведение w*h у тебя приводится к char. Тогда попробуй объявить w и h 16-битными целыми:

int w, h;

или сделать вот так:

// Нарисовать прямоугольник с началом по х=10:у=14 с размером по х=32:у=16 цветом BLUE
void fill_area( char x1, char x2, char y1, char y2,int color)
{
int i, v;

lcd_reg(0x05);lcd_dat(0x0030);
lcd_reg(0x16);lcd_dat8(y2,y1);
lcd_reg(0x17);lcd_dat8(x2,x1);
lcd_reg(0x21);lcd_dat8(x1,y1);
lcd_reg(0x22);lcd_write8(0x76);
//Пишем точку
v = (x2-x1+1) * (y2-y1+1);
for (i = 0; i ‹ v; i++)
{
lcd_write(color);
};
}

Последний раз редактировалось dadigor; 02.09.2011 в 23:45.
dadigor вне форума  
Сказали "Спасибо" dadigor
vlad145 (05.09.2011)
Непрочитано 03.09.2011, 05:47  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Сообщение от dadigor Посмотреть сообщение
хм, ступил я... вообще-то int обычно и так 16-битное число. Возможно произведение w*h у тебя приводится к char. Тогда попробуй объявить w и h 16-битными целыми:

int w, h;

или сделать вот так:

// Нарисовать прямоугольник с началом по х=10:у=14 с размером по х=32:у=16 цветом BLUE
void fill_area( char x1, char x2, char y1, char y2,int color)
{
int i, v;

lcd_reg(0x05);lcd_dat(0x0030);
lcd_reg(0x16);lcd_dat8(y2,y1);
lcd_reg(0x17);lcd_dat8(x2,x1);
lcd_reg(0x21);lcd_dat8(x1,y1);
lcd_reg(0x22);lcd_write8(0x76);
//Пишем точку
v = (x2-x1+1) * (y2-y1+1);
for (i = 0; i ‹ v; i++)
{
lcd_write(color);
};
}
Проект компилируется но результат тот же. В предупреждениях пишет следующее:

Warning: .... overflow is possible in 8 bit addition, casting to 'int' may be required
Warning: .... overflow is possible in 8 bit multiplication, casting to 'int' may be required
vlad145 вне форума  
Непрочитано 03.09.2011, 06:54  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Странно как то. Просмотрел кучу разных проектов под данные дисплеи и такое впечатление, что в 16bit под них пишу в чем угодно, только не в CVAVR.
vlad145 вне форума  
Непрочитано 04.09.2011, 10:28  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Что, никто не писал в CVAVR для отображения 16 битного цвета?
vlad145 вне форума  
Непрочитано 04.09.2011, 23:35  
dadigor
Прописка
 
Аватар для dadigor
 
Регистрация: 10.09.2010
Сообщений: 113
Сказал спасибо: 31
Сказали Спасибо 27 раз(а) в 27 сообщении(ях)
dadigor на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

overflow is possible in 8 bit addition, overflow is possible in 8 bit multiplication
Я бы попробовал еще char x1, char x2, char y1, char y2 заменить на int x1 и т.п....
dadigor вне форума  
Сказали "Спасибо" dadigor
vlad145 (05.09.2011)
 

Метки
lcd
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто использовал дисплеи от сотовых телефонов - помогите! Afandi Делимся опытом 12 14.01.2012 09:48
дисплеи от сотовых Sp-alex-trio Ремонт оргтехники 5 22.05.2009 15:11
преобразователь код-код zazan111 TTL и CMOS логика 18 05.01.2009 06:11
TV LCD дисплеи NecroSS Ремонт оргтехники 1 08.12.2008 11:48


Часовой пояс GMT +4, время: 05:48.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.