- Лоботрясы

Поиск
Перейти к контенту

Главное меню:

Библиотеки для AVR

Читать в Яндекс.Подписках



     Библиотека для дисплея LPH9157-2
Просмотров: 5000

v 1.1: - Реализована возможность с помощью макроса _USE_SOFT_SPI выбрать аппаратный или программный SPI;
       
- добавлена функция void SetRotation (unsigned int angle), где angle - угол поворота экрана (0, 90, 180 и 270 градусов), по умолчанию - 0
  
      - добавлена функция void LCD_FillLine (char tx1, char ty1, char tx2, char ty2, char width, int color) для рисования линии шириной width;

    В далёком 2005 году телефоны Siemens C75 и ME75 били рекорды популярности в бюджетном секторе благодаря привлекательному внешнему виду и демократичной цене.
    Привлекал внимание и TFT-дисплейчик, имеющий разрешение 132x176 пикселей и палитру в 65536 цветов.
    И вот, благодаря своей былой популярности, найти такие телефоны даже спустя 7-8 лет не представляет труда, и сегодня я поделюсь своими наработками, которые могут помочь использовать дисплеи данных телефонов в своих конструкциях.
    Скажу сразу
данный дисплей мне очень понравился миниатюрный, яркий и красочный, поэтому было решено продумать библиотеку для работы с ним по максимуму, т.к. при разработке своих устройств, из пары десятков индикаторов от различных старых телефонов, предпочтение отдаю именно ему.
    В телефонах Siemens C75 и ME75 можно обнаружить два типа применяемых индикаторов - LPH9157-2 (с зелёным текстолитом) и некий ALPS (по крайней мере, под таким именем он фигурирует в Internet-ресурсах), имеющий жёлтый текстолит.
    Дисплеи  LPH9157-2 и ALPS
и распиновка дисплея LPH9157-2:

1. CS – Chip Select. При установке в «0» контроллер дисплея принимает информацию;
2. RESET – вывод для сброса контроллера;
3. RS – вывод для определения типа передаваемых данных («0» - команда, «1» - данные);
4. SYNC
вывод для синхронизации с VGA-камерой (нам он не нужен);
5. CLK – вывод тактового сигнала для передачи данных;
6. DAT – вывод передачи данных;
7. 2,9V
к источнику питания;
8. GND
общий провод (земля);
9. VBOOST
вывод анодов светодиодов подсветки;
10. LIGHT DISP
вывод катодов светодиодов подсветки (к GND).

    Схема подключения дисплея:

    Для подключения дисплея к микроконтроллеру, можно воспользоваться печатной платой, на которой дисплей крепится в металлической рамке, снятой с платы телефона. Эту рамку, на первый взгляд крепко припаянную к основанию платы телефона, на деле легко снять с помощью скальпеля и такой-то матери:

    Печатная плата выполнена в программе Proteus:

    И, собственно, библиотека:

    Библиотека (для CodeVisionAVR) работы с LPH9157-2 содержит следующие функции (приведены только пользовательские функции!):

    В самом начале библиотеки, если объявлен макрос _8_BIT_COLOR, то цветовая палитра дисплея будет составлять 256 цветов, иначе - 65536 цветов.
    Если объявлен макрос _USE_SOFT_SPI, используется программный SPI, иначе -аппаратный SPI.

1. void LCD_init (void);
Инициализация дисплея
2. void SetRotation (unsigned int angle);
Задание угла поворота экрана (0º , 90º, 180º, 270º)
3. void SetArea (char x1, char x2, char y1, char y2);
Рабочая функция выделения области экрана
4. void Put_Pixel (char x, char y, unsigned int color);
Функция вывода точки (пикселя). x и y – координаты экрана, где будет отображён пиксель цветом color
5. void LCD_Putchar (char symbol, char x, char y, int t_color, int b_color, char zoom_width, char zoom_height);
Функция вывода одного символа ASCII-кода. Данная функция рассчитана на вывод символов размером 5х8 пикселей 
symbol – выводимый на экран символ в ASCII-кодировке; x и y – начальная координата вывода символа; t_color – цвет пикселя; 
b_color – цвет фона; переменные zoom_width и zoom_height увеличивают символ на экране в указанное число раз
6. void LCD_Puts(char *str, int x, int y, int t_color, int b_color, char zoom_width, char zoom_height);
Функция вывода строки, расположенной в ram-памяти микроконтроллера. x и y - координаты пикселя начала вывода строки
7. void LCD_Putsf(flash char *str, int x, int y, int t_color, int b_color, char zoom_width, char zoom_height);
Функция вывода строки, расположенной во flash-памяти микроконтроллера
8. void LCD_Putchar_Shadow (char symbol, char x, char y, int t_color, char zoom_width, char zoom_height); 
То же, что и LCD_Putchar, только без цвета фона
9. void LCD_Puts_Shadow (char *str, int x, int y,  int t_color, char zoom_width, char zoom_height);
То же, что и LCD_Puts, только без цвета фона
10. void LCD_Putsf_Shadow (flash char *str, int x, int y,  int t_color, char zoom_width, char zoom_height);
То же, что и LCD_Putsf, только без цвета фона
11. void LCD_FillScreen (unsigned int color);
Функция заливки экрана цветом color
12. void LCD_Output_image (char x, char y, char width, char height, flash char *img); 
Функция вывода картинки. x и y начальная позиция выводимого на экран изображения; width и height – ширина и высота изображения
(в пикселях);  *img – указатель на массив данных, составляющий изображение. Данная функция предполагает, что массив данных
изображения расположен во flash-памяти микроконтроллера. Для преобразования необходимого вам изображения в массив, содержащий
цвет пикселей, можно воспользоваться программами Image2Lcd или Nokia Image Creator, которые несложно найти на просторах 
интернета. Единственное требование – направление вывода массива изображения должно выполняться слева-направо, сверху-вниз! 
При использовании 16-ти битной палитры, при преобразовании изображения в массив типа char, обязательно старший байт должен 
идти первым!

    Объявление в начале файла 9157-2.h библиотеки макроса _GEOMETRICAL позволяет использовать функции вывода линии, рамки, прямоугольника, окружности, круга и треугольника.

13. void LCD_DrawLine (char x1, char y1, char x2, char y2, int color);
Нарисовать линию. x1 и y1 – начальная позиция линии; x2 и y2 – конечная позиция линии
14. void LCD_FillLine (char tx1, char ty1, char tx2, char ty2, char width, int color);
Нарисовать линию шириной width 
15. void LCD_DrawRect (char x1, char y1, char width, char height, char size, int color);
Нарисовать рамку. size - толщина рамки
16. void LCD_FillRect (char x1, char y1, char width, char height, int color);
Нарисовать прямоугольник
17. void LCD_DrawCircle (char xcenter, char ycenter, char rad, int color);
Нарисовать окружность. rad – радиус окружности в пикселях
18. void LCD_FillCircle (char xcenter, char ycenter, char rad, int color);
Нарисовать круг, заполненный цветом color
19. void LCD_DrawTriangle (char x1, char y1, char x2, char y2, char x3, char y3, int color);
Нарисовать контуры треугольника
20. void LCD_FillTriangle (char x1, char y1, char x2, char y2, char x3, char y3, int color);
Нарисовать треугольник, заполненный цветом color

    Скачать:

Обновлено 28.09.2014
© Igoryosha, 2013-2014
 
 
Назад к содержимому | Назад к главному меню