Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.06.2010, 21:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Я могу дать инициализацию! Если нужна! Может библиотеку напишем?
|
|
|
|
15.06.2010, 21:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Сообщение от Uragan90
|
Я могу дать инициализацию! Если нужна!
|
Давайте. Лучше ссылкой на источник. А то у меня только даташит на TM032LDH03 с таким же контроллером.
|
|
|
|
15.06.2010, 23:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Так какой у вас дисплей, я думал st032... с контроллером HX8352A...
|
|
|
|
16.06.2010, 00:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Сообщение от Uragan90
|
я думал st032... с контроллером HX8352A...
|
Он и есть. А вот документация с инициализацией от TM032LDH03 - там тоже HX8352A.
Но от еще одного описания не откажусь
|
|
|
|
16.06.2010, 13:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Вот я начал писать библиотеку под этот дисплей! Но трудно дается Может поможите чем? Нутам замечания, предложения, правки
PHP код:
|
//--------------------------------------------------------------------------//
// Подпрограмма инициализации и основных функций дисплея ST032D6C-E00 //
// КОНТРОЛЛЕР-HX8352A //
//--------------------------------------------------------------------------//
/*-------------- ЦВЕТ -----------------------------------------------------*/
#define RGB(r,g,b)
#define RGB_GREEN
#define RGB_BLUE
#define RGB_RED
#define RGB_GREEY
#define RGB_YELLOW
#define RGB_ORANGE
#define RGB_PINK
#define RGB_BROWN
#define RGB_GREY
#define RGB_VIOLET
#define RGB_WHITE
#define RGB_BLACK
/*-------------------------------------------------------------------------*/
/*----------- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ -----------------------------------------------------------------------------*/
void LCD_Init(void); //Инициализация дисплея
void LCD_FillRect(unsigned char X1,unsigned char Y1,unsigned char X2,unsigned char Y2); //Задать область вывода
void LCD_FillScr(unsigned int color); //Залить дисплей цветом
void LCD_PutPixel(unsigned char X1,unsigned char Y1,unsigned int color); //Вывод точки на дисплей
void LoadImage(unsigned char X1,unsigned char Y1,const unsigned int *Image); //Вывод рисунка на дисплей
void LCD_FilScr(const unsigned char *Buff); //Залить дисплей цветом
void LCD_Line(int x1, int y1, int x2, int y2); //Рисуем линию
void LCD_Circle(unsigned char cx, unsigned char cy ,unsigned char radius,unsigned color); //Рисуем круг
void delay_ms(unsigned int sleep);
/*--------------------------------------------------------------------------------------------------------------*/
//================================================== ================================================== ==========//
void delay_ms(unsigned int sleep)
{
unsigned int _del, _del2;
_del2 = sleep;
while (_del2 › 0){
_del = 0x2FFF;
while (_del›0)
_del--;
_del2--;
}
}
//--- Инициализация дисплея ------------------------------------------------//
void LCD_Init(void) //------- Инициализация дисплея ------------------------//
{
RESET();
delay_ms(150);
Set_LCD_8B_REG(0x83,0x02); // TESTM=1
Set_LCD_8B_REG(0x85,0x02); // VDC_SEL=010.
Set_LCD_8B_REG(0x8B,0x00); // STBA[15:8]=0x00
Set_LCD_8B_REG(0x8C,0xB3); // STBA[7]=1, STBA[5:4]=11, STBA[1:0]=11
Set_LCD_8B_REG(0x83,0x00); // TESTM=0
//----------- РУГИСТРЫ ГАММЫ -----------------------------------------------//
Set_LCD_8B_REG(0x3E,0xA0); //Управляющий регистр гаммы №1
Set_LCD_8B_REG(0x3F,0x03); //Управляющий регистр гаммы №2
Set_LCD_8B_REG(0x40,0x00); //Управляющий регистр гаммы №3
Set_LCD_8B_REG(0x41,0x45); //Управляющий регистр гаммы №4
Set_LCD_8B_REG(0x42,0x03); //Управляющий регистр гаммы №5
Set_LCD_8B_REG(0x43,0x47); //Управляющий регистр гаммы №6
Set_LCD_8B_REG(0x44,0x23); //Управляющий регистр гаммы №7
Set_LCD_8B_REG(0x45,0x77); //Управляющий регистр гаммы №8
Set_LCD_8B_REG(0x46,0x01); //Управляющий регистр гаммы №9
Set_LCD_8B_REG(0x47,0x1F); //Управляющий регистр гаммы №10
Set_LCD_8B_REG(0x48,0x0F); //Управляющий регистр гаммы №11
Set_LCD_8B_REG(0x49,0x03); //Управляющий регистр гаммы №12
//---------------------------------------------------------------------------//
//----------- Power Supply Setting ------------------------------------------//
Set_LCD_8B_REG(0x17,0xC1); // RADJ=1100, OSC_EN=1
Set_LCD_8B_REG(0x23,0x01); // TE 0n
Set_LCD_8B_REG(0x2B,0xF9); // N_DCDC=0xF9.
delay_ms(10);
Set_LCD_8B_REG(0x1B,0x14); // BT=0001, AP=100
Set_LCD_8B_REG(0x1A,0x11); // VC3=001, VC1=001 (VLCD/DDVDH)=6.45V)
Set_LCD_8B_REG(0x1C,0x0E); // VRH=1110 (VREG1=6.0V)
Set_LCD_8B_REG(0x1D,0x0F); // VBGP=1111
Set_LCD_8B_REG(0x1F,0x3B); // VCM=011_1011
delay_ms(20);
Set_LCD_8B_REG(0x19,0x0A); // GASENB=0, PON=0, DK=1, XDK=0, VLCD_TRI=1, STB=0
Set_LCD_8B_REG(0x19,0x1A); // GASENB=0, PON=1, DK=1, XDK=0, VLCD_TRI=1, STB=0
delay_ms(40);
Set_LCD_8B_REG(0x19,0x12); // GASENB=0, PON=1, DK=0, XDK=0, VLCD_TRI=1, STB=0
//---------------------------------------------------------------------------//
//------------ VLCD=2XVCI by 2 CAPs -----------------------------------------//
delay_ms(40);
Set_LCD_8B_REG(0x1E,0x2E); // VCOMG=1, VDV=0_1110
//---------------------------------------------------------------------------//
//----------- VCOMG NEW LOCATION --------------------------------------------//
Set_LCD_8B_REG(0x83,0x02); // TESTM=1
Set_LCD_8B_REG(0x93,0x10); // R93[4]=1, VCOMG=1
Set_LCD_8B_REG(0x83,0x00); // TESTM=0
delay_ms(100);
//---------------------------------------------------------------------------//
//------------ DGC Function Enable ------------------------------------------//
Set_LCD_8B_REG(0x5A,0x01);
DGC_PA_REG(0x5C);
//---------------------------------------------------------------------------//
//------------ Display ON Setting -------------------------------------------//
Set_LCD_8B_REG(0x3C,0xFF); // N_SAP=0111 1111
Set_LCD_8B_REG(0x3D,0x0E); // I_SAP=0000 1110
Set_LCD_8B_REG(0x34,0x38); // EQS=1000 0111
Set_LCD_8B_REG(0x35,0x38); // EQP=0011 1000
Set_LCD_8B_REG(0x24,0x38); // GON=1, DTE=1, D=10
delay_ms(40);
Set_LCD_8B_REG(0x24,0x3C); // GON=1, DTE=1, D=11
Set_LCD_8B_REG(0x16,0x08); // BGR=1
Set_LCD_8B_REG(0x01,0x06); // INVON=1, NORNO=1
}
void DGC_PA_REG(unsigned char ADDR)
{
unsigned char i;
LCD_CS = 0;
LCD_RS = 0;
WR_8B_FORMAT(ADDR); //ADDR=0x5C.
LCD_RS = 1;
for( i=0; i‹=2; i++)
{
WR_8B_FORMAT(0x00);
WR_8B_FORMAT(0x04);
WR_8B_FORMAT(0x08);
WR_8B_FORMAT(0x0C);
WR_8B_FORMAT(0x10);
WR_8B_FORMAT(0x14);
WR_8B_FORMAT(0x18);
WR_8B_FORMAT(0x1C);
WR_8B_FORMAT(0x20);
WR_8B_FORMAT(0x24);
WR_8B_FORMAT(0x28);
WR_8B_FORMAT(0x2C);
WR_8B_FORMAT(0x30);
WR_8B_FORMAT(0x38);
WR_8B_FORMAT(0x3C);
WR_8B_FORMAT(0x3F);
WR_8B_FORMAT(0x43);
WR_8B_FORMAT(0x46);
WR_8B_FORMAT(0x48);
WR_8B_FORMAT(0x4C);
WR_8B_FORMAT(0x50);
WR_8B_FORMAT(0x54);
WR_8B_FORMAT(0x58);
WR_8B_FORMAT(0x5C);
WR_8B_FORMAT(0x60);
WR_8B_FORMAT(0x64);
WR_8B_FORMAT(0x66);
WR_8B_FORMAT(0x6A);
WR_8B_FORMAT(0x6E);
WR_8B_FORMAT(0x71);
WR_8B_FORMAT(0x75);
WR_8B_FORMAT(0x79);
WR_8B_FORMAT(0x7D);
WR_8B_FORMAT(0x81);
WR_8B_FORMAT(0x85);
WR_8B_FORMAT(0x89);
WR_8B_FORMAT(0x8E);
WR_8B_FORMAT(0x92);
WR_8B_FORMAT(0x98);
WR_8B_FORMAT(0x9C);
WR_8B_FORMAT(0xA0);
WR_8B_FORMAT(0xA4);
WR_8B_FORMAT(0xA9);
WR_8B_FORMAT(0xAE);
WR_8B_FORMAT(0xB1);
WR_8B_FORMAT(0xB5);
WR_8B_FORMAT(0xB9);
WR_8B_FORMAT(0xBD);
WR_8B_FORMAT(0xC1);
WR_8B_FORMAT(0xC5);
WR_8B_FORMAT(0xCA);
WR_8B_FORMAT(0xCF);
WR_8B_FORMAT(0xD4);
WR_8B_FORMAT(0xDA);
WR_8B_FORMAT(0xDE);
WR_8B_FORMAT(0xE1);
WR_8B_FORMAT(0xE5);
WR_8B_FORMAT(0xE9);
WR_8B_FORMAT(0xED);
WR_8B_FORMAT(0xEF);
WR_8B_FORMAT(0xF2);
WR_8B_FORMAT(0xF5);
WR_8B_FORMAT(0xF8);
WR_8B_FORMAT(0xFF);
}
LCD_CS = 1;
}
//-----------------------------------------------------------------------//
//================================================== ================================================== ===================
//================================================== ================================================== ===================
void LCD_FillRect(unsigned char stX,unsigned char stY,unsigned char lngX,unsigned char lngY)//====//Задать область вывода
{
}
//================================================== ================================================== ===================
void LCD_FillScr(unsigned int color)//================================================== ==========//Залить дисплей цветом
{
}
//================================================== ================================================== ===================
void LCD_FilScr(const unsigned char * Buff)//================================================== ==//Залить дисплей цветом
{
}
//================================================== ================================================== ===================
void LCD_PutPixel(unsigned char X1,unsigned char Y1,unsigned int color)//========================//Вывод точки на дисплей
{
}
//================================================== ================================================== ===================
void LoadImage(unsigned char X1,unsigned char Y1,const unsigned int *Image)//==================//Вывод рисунка на дисплей
{
}
//================================================== ================================================== ===================
void LCD_Circle(unsigned char cx, unsigned char cy ,unsigned char radius,unsigned color)//==================//Рисуем круг
{
}
//================================================== ================================================== ==================
void LCD_Line(int x1, int y1, int x2, int y2)//================================================== =========//Рисуем линию
{
}
//================================================== ================================================== ==================
|
|
|
|
|
16.06.2010, 14:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Сообщение от Uragan90
|
Может поможите чем? Нутам замечания
|
Мощная заготовка Непонятно правда под что пишется. Ну вот например:
Сможете объяснить КАК это должно работать? Применительно к ARM7 LPC2368.
Что такое LCD_CS в Вашем варианте?
Кстати инициализация на первый взгляд у Вас не для HX8352A. Можно все же ссылку на источник?
И еще - не надо делать 8-ми битные переменные, если в этом нет необходимости.
К примеру из Вашей заготовки:
Код:
|
unsigned char i;
LCD_CS = 0;
LCD_RS = 0;
WR_8B_FORMAT(ADDR); //ADDR=0x5C.
LCD_RS = 1;
for( i=0; i‹=2; i++) |
Какой смысл делать i 8-ми битной? Регистр в ARM7 имеет 32 разряда и работает всегда с полной разрядностью. Так что unsigned int или uint32_t будет куда правильнее.
Задержки софтом делать не стоит - таймеров в LPC2368 много, вот через них и делайте. Предсказать время исполнения кода в ARM7TDMI весьма непросто. Так что для софтовых задержек его придется подгонять и не в симуляторе, а на железе измеряя получившуюся задержку. Это кривой путь. С таймером все проще.
|
|
|
|
16.06.2010, 14:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Инициализацию мне подогнали с какого то китайского сайта! Она выше в том виде как есть и она именно для HX8352A- это точно (я проверял по даташит, все сходятся)!!! "LCD_CS" какая то переменная, сам разбираюсь... Вот и попросил помощи!!! Мне немног не понятно как описать цвет, в даташит на дисплей есть 12 регистров отвечающих за гамму, не мог бы кто объяснить принцип?
Последний раз редактировалось Uragan90; 16.06.2010 в 14:36.
Причина: доп
|
|
|
|
16.06.2010, 14:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Сообщение от Uragan90
|
"LCD_CS" какая то переменная, сам разбираюсь... Вот и попросил помощи!!!
|
Это должна быть вовсе не переменная, а физический вывод порта.
И выглядеть должно примерно так:
Код:
|
#define LCD_CS (1) // CS подключен к P1.1
#define SET_LCD_CS() FIO1SET = (1‹‹LCD_CS)
#define CLR_LCD_CS() FIO1CLR = (1‹‹LCD_CS)
// дальше в тексте программы вместо LCD_CS = 0 нужно:
CLR_LCD_CS(); |
Нужно еще инициализировать вывод вначале - сделать ножку выходом. По умолчанию после сброса она вход.
Инициализацию посмотрю повнимательней, но Ваша совпала с hx8347A один в один. А это немного другой контроллер. Ссылку на китайский сайт/форум можно?
|
|
|
|
16.06.2010, 15:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Держи!!! Как пиксель засветить с нужным цветом Может поможешь в понимании процесса
|
|
|
Сказали "Спасибо" Uragan90
|
|
|
16.06.2010, 16:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Библиотека LS020+LPC2368
Сообщение от Uragan90
|
Как пиксель засветить с нужным цветом
|
Записать соответствующее значение в экранную память. Как кодируется цвет - на странице P.39 даташита на контроллер. Это для 8-ми битной шины. Для 16 битной стр. Р.38 В документации на дисплей нет указания сколько цветов у интерфейса (65536 или 262144), это придется выяснять методом тыка.
Хотя когда я пытал мелтовцев, там фигурировало 65536 цветов - http://www.lcddisplay.ru/forum/index...d&FID=3&TID=43
Последний раз редактировалось kison; 16.06.2010 в 16:09.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Плата LPC2368
|
Uragan90 |
Микроконтроллеры, АЦП, память и т.д |
170 |
13.04.2010 13:03 |
библиотека HC12 для Proteus
|
Fenolftalein |
Proteus, KiCAD и другие ECAD |
0 |
12.01.2010 10:47 |
Часовой пояс GMT +4, время: 02:21.
|
|