Дисплей KD035C-3A подключение и управление

Visits: 688


Дисплей KD035C-3A производиться компанией SHENZHEN STARTEK ELECTRONIC TECHNOLOGY CO.,LTD

Характеристики

Параметр Спецификация Единицы измерения
Размер дисплея 70.08(H)*52.56(V) (3.5inch) mm
Тип дисплея TFT active matrix
Цветовая гамма 65K/262K colors
Разрешение 320(RGB)*240 dots
Расположение пикселей RGB vertical stripe
Размер пикселя 0.219(H)*0.219(V) mm
Контроллер SSD2119M
Угол обзора 12:00 o’clock
Режим дисплея Transmissive/ Normally White
Рабочая температура -20~+70
Температура хранения Температура хранения

 

 


Напряжение питания 3,3V, возможные интерфейсы управления 8BIT/9BIT/16BIT/18BIT MCU, 3SPI/4SPI+16BIT/18BIT RGB.

Размер самого модуля 78,02*64,85*3,35 мм.

 

01cat350

02cat350

Структура дисплея.

cat_35c_01

Более подробно можно прочитать 

Значок

Дисплей KD035C-3A подключение и управление - описание 1.03 MB 119 downloads

Описание на дисплей в pdf ...


Возможные варианты подключения дисплея.

201409261740475372014092617505557020140926175115480

 

 

 

 

 

 

 

 

 

 

 

 

201409261741321682014092617421475020140926174646575

 

 

 

 

 

 

 

 

 

 

 

 

2014092617473699320140926175033362

 

 

 

 

 

 

 

 

 

 

 


Схема используемая для тестирования дисплея.

cat_35c_02

Схема в PDF 

Значок

Дисплей KD035C-3A подключение и управление - схема подключения к PIC24EP512GP806 60.51 KB 114 downloads

Схема подключения к микроконтроллеру PIC24EP512GP806 ...

Схема позволяет подключать дисплей в двух режимах по SPI и чрез 8 битный интерфейс


Библиотека

Для управления была написана библиотека с использование 8 битного интерфейса.

Состоит из следующих функций, графики и вывода текста:

void LCD_init(int color); // инициализация драйвера дисплея
void LCD_fill(unsigned int colour); // закраска дисплея
void LCD_WriteData(unsigned int data); // загрузка данных
void LCD_WriteCommand(unsigned int command); // загрузка команды
int LCD_ReadData(void); // чтение данных, для эмуляции автоприращения ***
unsigned int LCD_ConvColor (unsigned char r, unsigned char g, unsigned char b); // – конвертор 8-8-8 RGB значения в 5-6-5 RGB

// расширенная задание рабочих цветов
// необходимо ввести цвет рисунка, и фона в формате RGB (0-255)
int LCD_ColorSet (unsigned char Rr, unsigned char Gr, unsigned char Br);

int LCD_ColorFast (unsigned char colP);// установить цвет выводимой точки

/*установка курсора/positioning of the cursor X-(0,95),Y-(0,95)*/
void LCD_Cursor (int Xp, int Yp);

/*вывод символа//the output symbol*/
void LCD_Symbol (unsigned char cod,  int tip, int sti, int shi, int vis, int color, int colorz);

/*
* вывод строк/output character strings
* LCD_String – вывод на дисплей строк c любой точки дисплея
* str строка символов или указатель на строку в ПЗУ
* prop – расстояние между символами
* nalo – тип наложения на фон 0-наложение 1 – стирание фона
* width-[ширина символа] 0-нормальное до 7
* height-[высота символа] 0-нормальное, 1-двойная высота
* X-[координата по X][-1 = центрирование строки Х 0-dispX]
* Y-[координата по Y][координата Y 0-62]
*/
void LCD_String(const char *str,int prop,int nalo,int width,int height,int X,int Y, int color, int colorz);

/*вывод строки с текущей позиции*/
void LCD_StringCur(const char *str,int prop,int inv,int width,int height, int color, int colorz);

/*функция центрирования строки в окне*/
/* widthWin – ширина окна центрирования
* позволяет располагать надписи
* по центру установленного окна
*/
void LCD_StringCen(const char *str,int prop,int nalo,int width,int height,int X,int Y,int widthWin, int color, int colorz);

// рисование точки
//[тип] 0-цвет рисунка,1-цвет фона
//[координата по X] 0-320
//[координата по Y] 0-240
void LCD_Point(int X, int Y, int color );

// рисование линии алгоритм Брезенхема
// tip тип линии 0-цвет рисунка 1-цвет фона, 2-варианты пунктиров
// x0 y0 x1 y1 – координаты линии
void LCD_Line(int x0, int y0, int x1, int y1, int tip, int color);

//Рисование прямоугольника (есть ограничение на задание координат – задание координаты верхний левый угол + ширина и высота)
// ugl-[тип углов]0-прямые, 1-скругленные
// tip-[тип линии] 0 – сплошная, от 1 и более варианты прорисовки
// bor-[толщина бордюра] 0- нет (заливка все равно будет делать 1 пиксель отступа), 1,2,3 толщина
// tipzal-[тип заливки]0-нет заливки,1- и более варианты
// x0y0-[x0][y0] – координата нижнего левого угла
// sh -[ширина] – ширина прямоугольника
// vs-[высота] – высота прямоугольника
// color – цвет бордюра
// colorz – цвет заливки
void LCD_Rectangle( int ugl, int tip, int bor, int tipzal, int x0, int y0, int sh, int vs, int color, int colorz);

// полоса загрузки индикатор линейный (есть ограничение на задание координат – задание координата нижнего левый угол + ширина и высота)
//[тип углов]0-прямые, 1-скругленные
//[тип линии]0-белая 1- сплошная, от 2 и более варианты
//[тип заливки]0-белая,1-черная, 2 и более варианты
//[x0][y0] – координата нижнего левого угла
//[ширина] – ширина прямоугольника
//[высота] – высота прямоугольника
//[vol] – уровень 0-100%
void LCD_Strip(int ugl, int x0, int y0, int sh, int vs, int vol, int color, int colorz);

/* color – цвет
* [cx][cy] – координаты центра окружности
* radius[радиус] – радиус окружности
*/
void LCD_Circle(int cx, int cy, int radius, int color);

/* где,
* data – число в диапазоне от -999999 до +9999999
* des – положение запятой 0 – не показывать 1- после первого (младшего разряда), 2 -после второго…
* nul – количество непогашенных нулей 0 – все гаситься
* mes – количество знакомест индикации (0/1) – 1 знакоместо до 7
* ras – расстояние между символами
* raz – размер выводимых цифр 0/1-нормальные, 2-7 увеличение в соответствующее раз
* color – цвет текста
* colorz- цвет фона
*/
void LCD_BinDec(long data, char des, char mode, char mes, char ras, char raz, int color, int colorz); // вывод на дисплей/режим

Вывод на дисплей чисел в 16-ричном виде
void LCD_BinHEX (unsigned long chisloin, int color, int colorz);

// LCD_Scrolling – бегущая строка
/*
* str – строка символов
* window – ширина окна вывода
* sti – стиль наложения символов
* ras – расстояние между символами
* shi – ширина символа
* vis – высота
* color – цвет текста
* colorz- цвет фона
*
*/
void LCD_Scrolling(const char *str, int window, int ras, int shi, int vis, int color, int colorz); //cтрока
void LCD_ScrollingRes (void); // начать работу бегущей строки снова

// таймер для формирование интервалов
void timer3init (void); // таймер интервалов 10 гц

/*прорисовка в окне
* stX, stY – левый нижний угол окна по X и по Y
* dli и vys – длина и высота окна
* color1 – цвет начала
* color2 – цвет конца
*/
void LCD_windows (unsigned int Xs, unsigned int Ys, unsigned int shi, unsigned int vys, unsigned int color);


LCD Image Converter

Для вывод картинок на дисплей их необходимо предварительно обработать, для этого я рекомендую использовать редактор LCD Image Converter.

 

Описание как работать с редактором и скачать его можно найти на сайте автора. Для микроконтроллера важно место занимаемое картинкой, по этому важно использовать функцию сжатия RLE, которую предусмотрел автор.

cat_35c_03

Дополнительные функции которые можно использовать для вывода графических примитивов.

//——————————————————————————
/* Для одномерных массивов
* mas – указатель на массим
* raz – размер матирицы, например, 48*48/32*32
* xp – положение по X
* yp – положение по Y
*/
void picture (__eds__ int *mas,int raz, int xp, int yp); // прорисовка примитивов
//——————————————————————————
/* Для одномерных массивов
* прорисовка наложением белый цвет прозрачный
* mas – указатель на массим
* raz – размер матирицы, например, 48*48/32*32
* xp – положение по X
* yp – положение по Y
*/
void pictureNAL (__eds__ int *mas,int raz, int xp, int yp); // прорисовка примитивов наложением
//——————————————————————————
/*управляемый для экономии памяти
* читает размер из 0-го и 1-го байта
* xp – положение по X
* yp – положение по Y
* только наложение для любого фона, прозрачный цвет в рисунке 0xffff – белый
*/
int pictureXYZ (__eds__ int *mas, int xp, int yp); // прорисовка примитивов
//——————————————————————————
// полная прорисовка
void pictureM (__eds__ int *mas, int xp, int yp); // прорисовка примитивов
//——————————————————————————

/* где,
* data число в диапазоне от -9999 до +32768
* mode – положение десятичной точки 0- нет точки, 1-4 после 2-4 знакоместа
* vyv – не печатать пустые знакоместа 0-печатать все 7 знакомест, 1-не печатать
* x –
* y –
*/
void PIC_BinDec(long data,int mode, int x, int y); // вывод на дисплей/режим

//——————————————————————————
int PIC_Symbol (int chislo, int x, int y);
//——————————————————————————
/*RLE – файл графики использующие сжатие*/
void pictureRLE (__eds__ int *mas, int Xs, int Ys); // прорисовка примитивов
//——————————————————————————
void pictureRLENAL (__eds__ int *mas, int Xs, int Ys); // прорисовка примитивов наложением
//——————————————————————————

Описание массива картинки

__eds__ int Signal0[] __attribute__((space(prog))) = {
    20,20, // размер объекта X, Y.
    0x0014, 0x001f, 0x0015, 0x087e, 0x0003, 0x9cd3, 0x0002, 0x087e, 0x0003, 0x9cd3, 0x0002, 0x087e, 0x0003, 0x9cd3, 0x0002, 0x087e, 0x0003, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0x0003, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0007, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x0005, 0x001f, 0xfffc, 0x087e, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x0005, 0x001f, 0xfffc, 0x087e, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x0005, 0x001f, 0xffff, 0x087e, 0x0003, 0x9cd3, 0x0002, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x0005, 0x001f, 0x0006, 0x087e, 0xfffd, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x000a, 0x001f, 0xfffc, 0x087e, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x000a, 0x001f, 0xfffc, 0x087e, 0x9cd3, 0x0000, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x000a, 0x001f, 0xffff, 0x087e, 0x0003, 0x9cd3, 0x0002, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x000a, 0x001f, 0x0006, 0x087e, 0xfffc, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x000f, 0x001f, 0xfffb, 0x087e, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x000f, 0x001f, 0xfffb, 0x087e, 0x9cd3, 0x0000, 0x9cd3, 0x087e, 0x000f, 0x001f, 0xffff, 0x087e, 0x0003, 0x9cd3, 0xffff, 0x087e, 0x000f, 0x001f, 0x0005, 0x087e, 0x0014, 0x001f
};

Декларация для использования в основной программа

extern __eds__ int Signal0[] __attribute__((space(prog)));

Функции для вывода на дисплей картинок

/* Для одномерных массивов
 * mas - указатель на массив
 * raz - размер матрицы, например, 48*48/32*32
 * xp - положение по X
 * yp - положение по Y
 */
void picture (__eds__ int *mas,int raz, int xp, int yp) // прорисовка примитивов
{
int xs,ys,cors;         // переменные цикла
    for (ys = 0; ys < raz; ys++) 
    {
        for (xs = 0; xs < raz; xs++) 
        {
            cors = (ys*raz)+xs; //установка указателя
            LCD_Point(xs+xp, ys+yp , mas[cors]); // рисование точки
        }
    } 
}
//------------------------------------------------------------------------------

 

//------------------------------------------------------------------------------
/* Для одномерных массивов
 * прорисовка наложением белый цвет прозрачный
 * mas - указатель на массив
 * raz - размер матрицы, например, 48*48/32*32
 * xp - положение по X
 * yp - положение по Y
 */
void pictureNAL (__eds__ int *mas,int raz, int xp, int yp) // прорисовка примитивов наложением
{
int xs,ys,cors;         // переменные цикла
    for (ys = 0; ys < raz; ys++) 
    {
        for (xs = 0; xs < raz; xs++) 
        {
            cors = (ys*raz)+xs; //установка указателя
            if(mas[cors] != 0xffff)LCD_Point(xs+xp, ys+yp , mas[cors]); // рисование точки
        }
    } 
}
//------------------------------------------------------------------------------

 

/*управляемый для экономии памяти
 * читает размер из 0 и 1 байта
 * xp - положение по X
 * yp - положение по Y
 * только наложение для любово форан прощрачный цвет 0xffff - белый
 */
int pictureXYZ (__eds__ int *mas, int xp, int yp) // прорисовка примитивов
{
int xs,ys,            // переменные цикла
    cors,             // координато указателя в матрице
    razX,razY;        // размер массива
    
    razX=mas[0];      // размер 
    razY=mas[1];      //
    
    for (ys = 0; ys < razY; ys++) 
    {
        for (xs = 0; xs < razX; xs++) 
        {
            cors = ((ys*razX)+xs+2); //установка указателя 2 - начало картинки, 0/1 - размер X/Y
            if(mas[cors] != 0xffff)LCD_Point(xs+xp, ys+yp , mas[cors]); // рисование точки
        }
    } 
    return razX;    // шаг
}

 

/*управляемый для экономии памяти
 * читает размер из 0 и 1 байта
 * xp - положение по X
 * yp - положение по Y
 */
void pictureM (__eds__ int *mas, int xp, int yp) // прорисовка примитивов
{
int xs,ys,            // переменные цикла
    cors,             // координато указателя в матрице
    razX,razY;        // размер массива
    
    razX=mas[0];      // размер 
    razY=mas[1];      //
    
    for (ys = 0; ys < razY; ys++) 
    {
        for (xs = 0; xs < razX; xs++) 
        {
            cors = ((ys*razX)+xs+2); //установка указателя 2 - начало картинки, 0/1 - размер X/Y
            LCD_Point(xs+xp, ys+yp , mas[cors]); // рисование точки
        }
    } 
}
//------------------------------------------------------------------------------

 

/* RLE - сжатие
 * читает размер из 0 и 1 байта
 * Xs - положение по X
 * Ys - положение по Y
 */
void pictureRLE (__eds__ int *mas, int Xs, int Ys) // прорисовка примитивов
{
int a,            // переменные цикла
    cors,             // координато указателя в матрице
    counter=0,          // количество данных
    sequence=0,         // одинаковые данные
    nonsequence=0,      // неодинаковые данные 
    value=0,            // данные цвета
    Ye,               // конечная точка оп Y    
    razX,razY;        // размер массива
    
    razX=mas[0];      // размер по X
    razY=mas[1];      // размер по Y
    
// установить курсор в начало окна
    LCD_WriteCommand(0x004E);       // регистр положение X 
    LCD_WriteData(Xs);              // данные X
    LCD_WriteCommand(0x004F);       // регистр положение Y
    LCD_WriteData(Ys);              // данные Y    
// установить координаты окна вывода    
// установим по X
    LCD_WriteCommand(0x0045);       // Начала окна по X
    LCD_WriteData(Xs);              // 
    LCD_WriteCommand(0x0046);       // Конец окна по X
    LCD_WriteData(Xs+razX-1);         // 
// установим по Y
// кодирование положения по Y     
    Ye=Ys+razY-1;                     // вычисление конечной точки                 
    Ys+=Ye<<8;
    LCD_WriteCommand(0x0044);       // координаты окна по Y
    LCD_WriteData(Ys);              // старший байт конец, младший начало 
    
    LCD_WriteCommand(0x0022);       // установить запись в память данных
    
    counter = razX*razY;            // размер массива
    cors = 2;
    
    for (a = 0; a < counter; a++) 
    {
        if ((sequence == 0) && (nonsequence == 0))
        {
            sequence = mas[cors++];
            if (sequence < 0)               // проверим данные не одинаковые?
            {
                nonsequence = -sequence;    // загрузим коичество неодинаковых данных
                sequence = 0;               // количесво одинаковых обнулим
            }
        }
        if (sequence > 0)                   // последовательность одинаковых данных?
        {
            value = mas[cors];              // увеличим укащатель и прочитаем данные
            sequence--;                     // уменьшим счетчик
            if (sequence == 0)              // проверим равен нулю
            cors++;                         // увеличить указатель 
        }
        if (nonsequence > 0)                // проверим есть ли не одиковые данные
        {
            value = mas[cors++];
            nonsequence--;
        }
        LCD_WriteData(value); // рисование точки
    } 
    
// включить доступ к полному дисплею
    LCD_WriteCommand(0x0045);       // Начала окна по X
    LCD_WriteData(0);               // 
    LCD_WriteCommand(0x0046);       // Конец окна по X
    LCD_WriteData(319);             // 
    LCD_WriteCommand(0x0044);       // Координаты окна по Y
    LCD_WriteData(0xEF00);          // старший байт конец, младший начало  
    LCD_WriteCommand(0x0022);       // установить запись в память
    
}
//------------------------------------------------------------------------------

 

/* RLE - сжатие наложение на фон, прозрачный цвет белый
 * читает размер из 0 и 1 байта
 * Xs - положение по X
 * Ys - положение по Y
 */
void pictureRLENAL (__eds__ int *mas, int Xs, int Ys) // прорисовка примитивов
{
int a,            // переменные цикла
    cors,             // координато указателя в матрице
    counter=0,          // количество данных
    sequence=0,         // одинаковые данные
    nonsequence=0,      // неодинаковые данные 
    value=0,            // данные цвета
    Ye,               // конечная точка оп Y    
    razX,razY;        // размер массива
    
    razX=mas[0];      // размер по X
    razY=mas[1];      // размер по Y
    
// установить курсор в начало окна
    LCD_WriteCommand(0x004E);       // регистр положение X 
    LCD_WriteData(Xs);              // данные X
    LCD_WriteCommand(0x004F);       // регистр положение Y
    LCD_WriteData(Ys);              // данные Y    
// установить координаты окна вывода    
// установим по X
    LCD_WriteCommand(0x0045);       // Начала окна по X
    LCD_WriteData(Xs);              // 
    LCD_WriteCommand(0x0046);       // Конец окна по X
    LCD_WriteData(Xs+razX-1);         // 
// установим по Y
// кодирование положения по Y     
    Ye=Ys+razY-1;                     // вычисление конечной точки                 
    Ys+=Ye<<8;
    LCD_WriteCommand(0x0044);       // координаты окна по Y
    LCD_WriteData(Ys);              // старший байт конец, младший начало 
    
    LCD_WriteCommand(0x0022);       // установить запись в память данных
    
    counter = razX*razY;            // размер массива
    cors = 2;
    
    for (a = 0; a < counter; a++) 
    {
        if ((sequence == 0) && (nonsequence == 0))
        {
            sequence = mas[cors++];
            if (sequence < 0)               // проверим данные не одинаковые?
            {
                nonsequence = -sequence;    // загрузим коичество неодинаковых данных
                sequence = 0;               // количесво одинаковых обнулим
            }
        }
        if (sequence > 0)                   // последовательность одинаковых данных?
        {
            value = mas[cors];              // увеличим укащатель и прочитаем данные
            sequence--;                     // уменьшим счетчик
            if (sequence == 0)              // проверим равен нулю
            cors++;                         // увеличить указатель 
        }
        if (nonsequence > 0)                // проверим есть ли не одиковые данные
        {
            value = mas[cors++];
            nonsequence--;
        }
        if(value != 0xffff) LCD_WriteData(value); // рисование точки
        else LCD_ReadData(); //
    } 
    
// включить доступ к полному дисплею
    LCD_WriteCommand(0x0045);       // Начала окна по X
    LCD_WriteData(0);               // 
    LCD_WriteCommand(0x0046);       // Конец окна по X
    LCD_WriteData(319);             // 
    LCD_WriteCommand(0x0044);       // Координаты окна по Y
    LCD_WriteData(0xEF00);          // старший байт конец, младший начало  
    LCD_WriteCommand(0x0022);       // установить запись в память
    
}
//------------------------------------------------------------------------------

 

//------------------------------------------------------------------------------
/* где,
*  data число в диапазоне от -9999 до +32768
*  mode - положение десятичной точки 0- нет точки, 1-4 после 2-4 знакоместа
*  vyv - не печатать пустые знакоместа 0-печатать все 7 знакомест, 1-не печатать
*  x - 
*  y - 
*/
void PIC_BinDec(long data,int mode, int x, int y)	// вывод на дисплей/режим
{
struct
    {
        unsigned MINS:1;
    }Bit;

    int edin,dest,sotn,tysc,dtys,stys,miln;
    Bit.MINS=0;
    int ukazat;
    
    if (data<0)
    {
        Bit.MINS=1; 	// признак отрицательного
        data=labs(data);
    }
    // преобразование числа в символ
    miln=data%10000000/1000000+0x30;
    stys=data%1000000/100000+0x30;
    dtys=data%100000/10000+0x30;
    tysc=data%10000/1000+0x30;
    sotn=data%1000/100+0x30;
    dest=data%100/10+0x30;
    edin=data%10+0x30;

    if (miln==0x30&&mode<6)// гашение не значащих нулей
    {
        miln=' ';
        if (stys==0x30&&mode<5)
        {
            stys=' ';
            if (dtys==0x30&&mode<4)
            {
                dtys=' ';
                if (tysc==0x30&&mode<3)
                {
                    tysc=' ';
                    if (sotn==0x30&&mode<2)
                    {
                        sotn=' ';
                        if (mode==0&&mode<1)
                        {
                            if (dest==0x30)dest=' ';
                        }
                    }
                }
            }
        }
    }
    
    if (Bit.MINS==1)// формирование символа минус для отричательных чисел
    {
        if (stys!=' ')
        {
            miln='-';
        }
        else
        {
            if (dtys!=' ')
            {
                stys='-';
            }
            else
            {
                if (tysc!=' ')
                {
                    dtys='-';
                }
                else
                {
                    if (sotn!=' ')
                    {
                            tysc='-';
                    }
                    else
                    {
                        if (dest!=' ')
                        {
                            sotn='-';
                        }
                        else
                        {
                            dest='-';
                        }
                    }
                }
            }
        }
    }

    
    ukazat = PIC_Symbol  (edin, x, y);     // единицы
    ukazat = PIC_Symbol (dest, ukazat, y);// десятки
    ukazat = PIC_Symbol (sotn, ukazat, y);// сотни
    ukazat = PIC_Symbol (tysc, ukazat, y);// тысячи
    ukazat = PIC_Symbol (dtys, ukazat, y);// десятки тысяц
    ukazat = PIC_Symbol (stys, ukazat, y);// десятки тысяц
    ukazat = PIC_Symbol (miln, ukazat, y);// десятки тысяц
    
       
}//

 

int PIC_Symbol (int chislo, int x, int y)
{
int ukazat=0;
    switch ( chislo ) 
    {
        case 0x30 :
            pictureRLE (SH_0, x-44, y);
            ukazat=x-44;
        break;
        case 0x31 :
            pictureRLE (SH_1, x-29, y);
            ukazat=x-29;
        break;
        case 0x32 :
            pictureRLE (SH_2, x-46, y);
            ukazat=x-46;
        break;
        case 0x33 :
            pictureRLE (SH_3, x-45, y);
            ukazat=x-45;
        break;
        case 0x34 :
            pictureRLE (SH_4, x-48, y);
            ukazat=x-48;
        break;
        case 0x35 :
            pictureRLE (SH_5, x-46, y);
            ukazat=x-46;
        break;
        case 0x36 :
            pictureRLE (SH_6, x-45, y);
            ukazat=x-45;
        break;
        case 0x37 :
            pictureRLE (SH_7, x-46, y);
            ukazat=x-46;
        break;
        case 0x38 :
            pictureRLE (SH_8, x-45, y);
            ukazat=x-45;
        break;
        case 0x39 :
            pictureRLE (SH_9, x-45, y);
            ukazat=x-45;
        break;
        case '-' :
            pictureRLE (SH_M, x-36, y);
            ukazat=x-36;
        break;
        case ' ' :
            LCD_windows (x-48, y, 48, 65, Blue); // быстроая закраска свободных знакомест мест
//            LCD_Rectangle( 0,  0,  1,  1,  x-48,  y,  48,  65, Blue, Blue);
            ukazat=x-48;
        break;
    }
    return ukazat;
}
//------------------------------------------------------------------------------

Библиотека для работы с дисплеем

Значок

Дисплей KD035C-3A подключение и управление - библиотека 17.69 KB 96 downloads

Дисплей KD035C-3A подключение и управление - библиотека ...


Это может быть интересно


  • Ultrasonic Level Meters – ULM –53LUltrasonic Level Meters – ULM –53L
    Visits: 707 Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
    Visits: 10142  Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для …
  • Регулятор влажностиРегулятор влажности
    Visits: 1365 Регулятор ILLISSI-CH-1000 предназначен для контроля и регулировки относительной влажности в диапазоне от 0 до 100%. Регулятор позволяет работать как в режиме осушения, так и увлажнения. Для измерения возможно …
  • Простой сенсорный регулятор светаПростой сенсорный регулятор света
    Visits: 2301 Простой сенсорный регулятор. Проект – 2007 года. Регулятор выполнена на микроконтроллере PIC12F683 и имеет минимальное количество элементов. Выполняет стандартные функции, включение выключение света, изменение яркости, запоминание последнего установленного уровня …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Visits: 17702 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …
  • Development Boards PIC18F47Q84Development Boards PIC18F47Q84
    Visits: 959 Microchip тішить новими мікроконтролерами. Особливістю цього MCU – це багата інтелектуальна периферія, що дозволяє вирішувати такі завдання на 8 бітних MCU, які неможливо реалізувати на деяких навіть 32 …
  • Moving average – скользящее среднееMoving average – скользящее среднее
    Visits: 2201 Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания …
  • I2C MODULE – PIC18F25K42 Device ID Revision = A001I2C MODULE – PIC18F25K42 Device ID Revision = A001
    Visits: 1059 I2C MODULE Обход ошибок в версии I2C MODULE – PIC18F25K42 Device ID Revision = A001 В Серии K42 применен совершенно новый модуль шины I2C, который позволяет поддерживать все …
  • WiFi ESP8266 ESP-202 (ESP-12F)WiFi ESP8266 ESP-202 (ESP-12F)
    Visits: 7638 Первое знакомство, сначала надо его купить… http://voron.ua/catalog/024404 Схема для подключения и тестирования По схеме ставим две кнопки, сброс и кнопку BT2, для перевода в режим обновления прошивки. Если надо сделать …
  • Светодиоды со встроенным драйвером WS2812BСветодиоды со встроенным драйвером WS2812B
    Visits: 916 Производитель http://www.world-semi.com Краткое описание продукции фирмы Каталог продукции” catcatcat_ws_19 catcatcat_ws_15 catcatcat_ws_11 catcatcat_ws_07 catcatcat_ws_03 catcatcat_ws_18 catcatcat_ws_14 catcatcat_ws_10 catcatcat_ws_06 catcatcat_ws_02 catcatcat_ws_05 catcatcat_ws_09 catcatcat_ws_13 catcatcat_ws_17 catcatcat_ws_16 catcatcat_ws_12 catcatcat_ws_08 catcatcat_ws_04 catcatcat_ws_01 This jQuery …



 

Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее