Страница 1 из 1
LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Пт дек 27, 2013 18:06:44
6Н23П
Здраствуйте
Имеется этот дисплей и библиотека к нему под STM32,
http://www.coocox.org/driver_comp/lcd12 ... mc=4&sc=24 Дак вот в ней все устраивает, но в ней нет графики. Можно ли какнибудь вывести точку?
Re: LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Пт дек 27, 2013 19:12:36
amv2000
6Н23П писал(а): в ней нет графики.
А это разве не графика?
Код: Выделить всё
//*****************************************************************************
//
//! \brief Display a picture
//!
//! \param *pucPic is array of picture data
//!
//! \return None.
//
//*****************************************************************************
void ST7920DisplayPicture(unsigned char *pucPic) {
unsigned char i, j;
ST7920Write(ST7920_CMD, 0x34);
ST7920Write(ST7920_CMD, 0x36);
for (i = 0; i < 32; i++) {
ST7920Write(ST7920_CMD, 0x80 + i);
ST7920Write(ST7920_CMD, 0x80);
for (j = 0; j < 16; j++) {
ST7920Write(ST7920_DAT, *pucPic);
pucPic++;
}
}
#ifdef LCM12864
for (i = 0; i < 32; i++) {
ST7920Write(ST7920_CMD, 0x80 + i);
ST7920Write(ST7920_CMD, 0x88);
for (j = 0; j < 16; j++) {
ST7920Write(ST7920_DAT, *pucPic);
pucPic++;
}
}
#endif
ST7920Write(ST7920_CMD, 0x30);
}
Re: LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Пт дек 27, 2013 19:17:28
coredumped
Можно допилить. Почитайте даташит
http://www.dfrobot.com/image/data/fit0021/st7920.pdf Каждой точке соответчтвует бит в памяти контроллера. Напишите функцию, которая будет вычислять адрес байта, в котором находится точка. Затем читаете байт с этого адреса - устанавливаете желаемый бит и записывете байт обратно. Работы на 15 минут.
Re: LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Сб дек 28, 2013 09:36:30
6Н23П
amv2000, да это графика, но простейших элементов таких как точа , линия, квадрат, круг, прямоугольник нету.
coredumped, спасибо за наводку.
Есть ли какиенибудь книги или доки где расписаны алгоритмы или инструкции как работать с дисплеями? А то мягко говоря в даташите мало чего понятно . Просто непонятно как пишут эти самые библиотеки для контроолера дисплея. В гугле мало чего по этому есть.
Re: LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Сб дек 28, 2013 10:56:38
coredumped
Для рисования линий -
алгоритм Брезенхема
А ваще, возьмите любую либу, где есть интересующие Вас примитивы и портируйте. Но интереснее самому написать

Re: LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Вт дек 31, 2013 16:06:21
6Н23П
кароче не получается выводит мусор за место точки ......
код примерно такой
void LCD_point(void)
{
unsigned char x=5,y=10; //координаты
ST7920Write(ST7920_CMD, 0x34);
ST7920Write(ST7920_CMD, 0x36);
ST7920Write(ST7920_CMD, 0x80|x );
ST7920Write(ST7920_CMD, 0x80|y );
ST7920Write(ST7920_DAT, 0x01);
ST7920Write(ST7920_CMD, 0x30);
}
Кароче теперь я понимаю почему на этот дисплей нет вразумительной инфы...........
Re: LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Пт янв 03, 2014 01:41:00
0867532
У меня тот же дисплей, и скажу вам- Он прекрасный.
Память в нём совершенно долбанутая, и я в памяти(SRAM) контроллера сделал 1024 байтный массив, и обратчик к нему.
По прерыванию экран обновляется.
Код: Выделить всё
#define DATAPORT PORTC
#define RS PORTA.0
#define RW PORTA.1
#define OE PORTA.2
#define PSB PORTA.3
#define RESET PORTA.4
#define SYSTEMVIDEOCLK OE=1;delay_us(1);OE=0;
. . .
unsigned char VideoDump[64][16];
. . .
void VideoRender(void) {
for(cy=0; cy<32; cy++){
RS=0;
DATAPORT=(0x80|cy);
SYSTEMVIDEOCLK
DATAPORT=(0x80);
SYSTEMVIDEOCLK
RS=1;
for(cx=0; cx<16; cx++) {
DATAPORT=(VideoDump[cy][cx]);
SYSTEMVIDEOCLK
} }
for(cy=0; cy<32; cy++){
RS=0;
DATAPORT=(0x80|cy);
SYSTEMVIDEOCLK
DATAPORT=(0x88);
SYSTEMVIDEOCLK
RS=1;
for(cx=16; cx<32; cx++) {
DATAPORT=(VideoDump[cy+32][cx-16]);
SYSTEMVIDEOCLK
} } }
Ну а дальше гораздо проще и быстрее обращаться к массиву контроллера.
Мой дисплей всегда работает в графическом режиме, и текст(6x8) выводит так же.
Re: LCD128x64 на ST7920, вывод точки на экран.
Добавлено: Вс мар 09, 2014 17:05:00
shads
0867532 писал(а):У меня тот же дисплей, и скажу вам- Он прекрасный.
Память в нём совершенно долбанутая
А в чем это выражается...
0867532 писал(а):я в памяти(SRAM) контроллера сделал 1024 байтный массив, и обратчик к нему.
Ух ты... и я так же хотел сделать
http://forum.cxem.net/index.php?showtop ... try1787897
0867532 писал(а):По прерыванию экран обновляется.
Как я понял у вас программно выплевывается... а нельзя ли через DMA запилить... чтобы уж совсем присесть на преимущества STM-ки...
0867532 писал(а):Мой дисплей всегда работает в графическом режиме, и текст(6x8) выводит так же.
Ух ты... и я туда же...
http://forum.cxem.net/index.php?showtop ... try1811878