Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.08.2011, 22:26
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от vdlab
|
Неоптимальный путь, так слишком долго.
|
А как быстрее?
|
|
|
|
27.08.2011, 22:50
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
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);
} |
__________________
Если ты читаешь это - значит тебе нечем заняться...
|
|
|
|
27.08.2011, 22:56
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
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;
}
|
|
|
|
29.08.2011, 06:38
|
|
Прописка
Регистрация: 18.04.2005
Сообщений: 101
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Зачем вам вообще нужно париться с окружностью? Ведь практического применения ей нетууууу
|
|
|
|
02.09.2011, 08:17
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
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, то нормально. Если размер больше, то только часть. Где может быть ошибка в коде?
|
|
|
|
02.09.2011, 08:24
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
И ещё вопрос. Есть вот такой код для вывода информации на LCD.
// Выводим данных на ЛСД
sprintf( TimeBuff1,"%.0f", FREC1 );
put_string(10,110,TimeBuff1,BLACK,0,1)
Как можно ограничить количество выводимых знакомест, допустим до 4. Естественно чтобы выводились старшие биты.
|
|
|
|
02.09.2011, 12:36
|
|
Временная регистрация
Регистрация: 18.04.2011
Адрес: Russia
Сообщений: 51
Сказал спасибо: 7
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от vlad145
|
А для L2F50 и LPH8836 коды похожи?
|
Для L2F50 вот на этой странице есть http://electronix.ru/forum/index.php...=16563&st=1185
правда на ассемблере
Последний раз редактировалось BigallS; 02.09.2011 в 12:38.
|
|
|
|
02.09.2011, 19:59
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
В том то и дело что ассемблер, мне Си ближе.
|
|
|
|
02.09.2011, 20:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
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
|
|
|
|
02.09.2011, 20:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от vlad145
|
В том то и дело что ассемблер, мне Си ближе.
|
Вот драверок на С L2F50, может подайдёт?
|
|
|
Эти 2 пользователя(ей) сказали Спасибо sdsrem за это сообщение:
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:19.
|
|