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

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

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

 
Опции темы

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

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

Сообщение от vdlab Посмотреть сообщение
Неоптимальный путь, так слишком долго.
А как быстрее?
Реклама:
vlad145 вне форума  
Непрочитано 27.08.2011, 22:50  
vdlab
Гражданин KAZUS.RUN
 
Аватар для vdlab
 
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
vdlab на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Ну я делал так:

Код:
void Circle(INT x, INT y, INT r, UINT color, UCHAR filled)
{
        int x1,y1,yk = 0;
        int sigma,delta,f;

        x1 = 0;
        y1 = r;
        delta = 2*(1-r);

        do
        {
            if(filled)
                {
                DrawLine(x-x1, y+y1, x+x1, y+y1, color);
                DrawLine(x-x1, y-y1,x+x1, y-y1, color);
                }
            else
                {    
                PutPixel(x+x1,y+y1,color);
                PutPixel(x-x1,y+y1,color);
                PutPixel(x+x1,y-y1,color);
                PutPixel(x-x1,y-y1,color);
                }
                f = 0;
                if (y1 ‹ yk)
                        break;
                if (delta ‹ 0)
                {
                        sigma = 2*(delta+y1)-1;
                        if (sigma ‹= 0)
                        {
                                x1++;
                                delta += 2*x1+1;
                                f = 1;
                        }
                }
                else
                if (delta › 0)
                {
                        sigma = 2*(delta-x1)-1;
                        if (sigma › 0)
                        {
                                y1--;
                                delta += 1-2*y1;
                                f = 1;
                        }
                }
                if (!f)
                {
                        x1++;
                        y1--;
                        delta += 2*(x1-y1-1);
                }
        }
        while(1);
}
__________________
Если ты читаешь это - значит тебе нечем заняться...
vdlab вне форума  
Непрочитано 27.08.2011, 22:56  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

У меня код выглядит так:

//// Рисуем окружность
void lcd_circle(char xcenter, char ycenter, signed int rad, int color)
{
signed int tswitch,y1,x1 = 0;
signed char d;
CS=0;

xcenter = DISP_H - xcenter;
d = ycenter - xcenter;
y1 = rad;
tswitch = 3 - 2 * rad;

while (x1 ‹= y1)
{
lcd_pixel(xcenter + x1, ycenter + y1, color);
lcd_pixel(xcenter + x1, ycenter - y1, color);
lcd_pixel(xcenter - x1, ycenter + y1, color);
lcd_pixel(xcenter - x1, ycenter - y1, color);
lcd_pixel(ycenter + y1 - d, ycenter + x1, color);
lcd_pixel(ycenter + y1 - d, ycenter - x1, color);
lcd_pixel(ycenter - y1 - d, ycenter + x1, color);
lcd_pixel(ycenter - y1 - d, ycenter - x1, color);
if (tswitch ‹ 0) tswitch += (4 * x1 + 6);
else
{
tswitch += (4 * (x1 - y1) + 10);
y1--;
}
x1++;
}
CS=1;
}
vlad145 вне форума  
Непрочитано 29.08.2011, 06:38  
011119xx
Прописка
 
Регистрация: 18.04.2005
Сообщений: 97
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
011119xx на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Зачем вам вообще нужно париться с окружностью? Ведь практического применения ей нетууууу
011119xx вне форума  
Непрочитано 02.09.2011, 08:17  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Уже пару дней бьюсь с одной проблемой. Не могу нормально закрасить область. Вот код:

//================================================== =========================
// Процедура рисования квадрата
//================================================== =========================
// процедура вывода прямоугольников x1,y1,x2,y2-координаты начала и конца,
// color-цвет ,p= 1-закрашеный, 0-пустой
void lcd_rect(int x1, int y1, int x2, int y2, int color, char p)
{
if (p==1)
{
fill_area(x1,y1,x2,y2,color);
}
else
{
lcd_line ( x1,y1,x1,y2,color );
lcd_line ( x1,y2,x2,y2,color );
lcd_line ( x2,y2,x2,y1,color );
lcd_line ( x2,y1,x1,y1,color );
};
}

//================================================== ========================================
// Процедура заполнение цветом области
//================================================== ========================================
// fill_area(10,14,32,16,BLUE);
// Нарисовать прямоугольник с началом по х=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, то нормально. Если размер больше, то только часть. Где может быть ошибка в коде?
vlad145 вне форума  
Непрочитано 02.09.2011, 08:24  
vlad145
Прописка
 
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
vlad145 на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

И ещё вопрос. Есть вот такой код для вывода информации на LCD.

// Выводим данных на ЛСД
sprintf( TimeBuff1,"%.0f", FREC1 );
put_string(10,110,TimeBuff1,BLACK,0,1)

Как можно ограничить количество выводимых знакомест, допустим до 4. Естественно чтобы выводились старшие биты.
vlad145 вне форума  
Непрочитано 02.09.2011, 12:36  
BigallS
Временная регистрация
 
Регистрация: 18.04.2011
Адрес: Russia
Сообщений: 51
Сказал спасибо: 7
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
BigallS на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Сообщение от vlad145 Посмотреть сообщение
А для L2F50 и LPH8836 коды похожи?
Для L2F50 вот на этой странице есть http://electronix.ru/forum/index.php...=16563&st=1185
правда на ассемблере

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

Сообщение от BigallS Посмотреть сообщение
Для L2F50 вот на этой странице есть http://electronix.ru/forum/index.php...=16563&st=1185
правда на ассемблере
В том то и дело что ассемблер, мне Си ближе.
vlad145 вне форума  
Непрочитано 02.09.2011, 20:18  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Сообщение от vlad145 Посмотреть сообщение
И ещё вопрос. Есть вот такой код для вывода информации на LCD.

// Выводим данных на ЛСД
sprintf( TimeBuff1,"%.0f", FREC1 );
put_string(10,110,TimeBuff1,BLACK,0,1)

Как можно ограничить количество выводимых знакомест, допустим до 4. Естественно чтобы выводились старшие биты.
А зачем выводить в формате с плавучкой, если не отображать ни одного знака после запятой? Приведите FREC1 к целому виду перед выводом (если она у вас с плавающей) и выводите целочисленное значение. И что значит "чтобы выводились старшие биты"? Вы же ведь числа выводите, а не биты.
Код:
         sprintf( TimeBuff1,"%4d", (unsigned int)(FREC1) );
Почитайте (пусть даже популярно) про форматы функции... http://ru.wikipedia.org/wiki/Printf
ut1wpr вне форума  
Непрочитано 02.09.2011, 20:41  
sdsrem
Почётный гражданин KAZUS.RUN
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: Дисплеи от сотовых (схемы подключения, код, datasheet)

Сообщение от vlad145 Посмотреть сообщение
В том то и дело что ассемблер, мне Си ближе.
Вот драверок на С L2F50, может подайдёт?
Вложения:
Тип файла: zip L2F50_display4_V01.zip (13.3 Кб, 118 просмотров)
sdsrem вне форума  
Эти 2 пользователя(ей) сказали Спасибо sdsrem за это сообщение:
komar72 (27.10.2011), vlad145 (02.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, время: 09:28.


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