da-nie, спасибо огромное за код только я немогу понять почему допустим при прорисовке прямоугольника указываются координаты но не указывается цвет (и как его указывать?) и почему при выводе одного пикселя наоборот указывается только цвет но не указываются координаты??? Как задать текущий цвет и текущие координаты? Что значит функция послать по
Потому что эта команда задаёт прямоугольник в который будет осуществляться вывод цветов. Она его не закрашивает, а только задаёт и инициализирует начальные координаты вывода цветов. После этого каждая команда поставить точку определённого цвета ставит эту точку в этот прямоугольник по текущим координатам вывода, которые изменяются с каждой новой поставленной точкой. Проще говоря, вы сканируете этот прямоугольник и указываете для каждой его точки цвет. Вот и всё.
SPI-данные???
Да, дисплей должен быть подключён к линиям MOSI и SCK.
И еще... я так понял в этой программе используется только три вывода на дисплей с порта "С"? Почему так?
Потому что этому дисплею требуются линии:
1) CS - Chip Select - "выбор кристалла" - при низком уровне (т.е. при нуле) дисплей понимает, что сейчас будут работать с ним.
2) RS - эта линия определяет передаются ли данные или команды. Если на ней высокий уровень (т.е. 1), то передаются данные, если низкий (т.е. 0), то передаются команды.
3) Reset - линия сброса - низкий уровень осуществляет сброс дисплея.
Вы можете эти линии подключить на любые свободные порты (кроме SPI, конечно; к SPI подключаются другие линии).
Вот как можно подключить этот дисплей:
В большом разрешении:
Диоды там практически любые (только не Шоттки!), микросхемы стабилизаторов LM7805 и 2950A CS-3.3. Их можно заменить на аналогичные.
Если я напишу функцию вывода пикселей таким образом(код ниже) я смогу за одну команду выводить пиксель в указанные координаты и присваивать свой цвет?:
Нет, не сможете. Сможете вот как:
Код: Выделить всё
//устанавливаем первый и последний столбцы записи в память
LCD_SendCommand(0x2a);
LCD_SendData8(x);
LCD_SendData8(131);
LCD_SendCommand(0x2b);
LCD_SendData8(y);
LCD_SendData8(175);
//устанавливаем направление вывода
LCD_SendCommand(0x36);
LCD_SendData8(0);//сверху-вниз слева-направо, без инверсии
//запускаем процесс вывода пикселей
LCD_SendCommand(0x2c);
LCD_SendData16(color);
Но это нерационально.
как осуществить стирание экрана?
Вот как:
Код: Выделить всё
LCD_SetOutputRectangle(0,0,131,175);
for(unsigned short n=0;n<132*176;n++) LCD_SetPixel(LCD_BLACK);
Что значит функция послать по SPI-данные???
Эта функция используя интерфейс SPI отправляет дисплею данные или команды. Вот и всё.
Настраивается SPI так:
Код: Выделить всё
SPCR=(0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR=(1<<SPI2X);//удвоенная скорость SPI