[an error occurred while processing this directive]
Ответ: я делал так
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено A_F 21 февраля 2005 г. 20:44
В ответ на: Как правильно инициализировать wg320240(s1d13305)? отправлено _Sam_ 21 февраля 2005 г. 14:41

#define MAX_COL 320 //MAX COLUMN
#define MAX_ROW 240 //MAX ROW(

#define MAX_LEVELS 3

//#define GRAPH_PAGE_SIZE (((unsigned long)MAX_ROW * (unsigned long)MAX_COL) / 8)
#define GRAPH_PAGE_SIZE 9600

#define SAD_1 0
#define SAD_2 (SAD_1 + GRAPH_PAGE_SIZE)
#define SAD_3 (SAD_2 + GRAPH_PAGE_SIZE)

#define LOADDR(w) ((unsigned char)(w & 0xFF))
#define HIADDR(w) ((unsigned char)(w >> 8))

#define SAD_1L LOADDR(SAD_1)
#define SAD_1H HIADDR(SAD_1)

#define SAD_2L LOADDR(SAD_2)
#define SAD_2H HIADDR(SAD_2)

#define SAD_3L LOADDR(SAD_3)
#define SAD_3H HIADDR(SAD_3)

#define DATA_SED PORTD
#define E_SED RE0
#define R_W_SED RE1
#define CS_SED RE2
#define A0_SED RC0
#define RST_SED RC1

#define lcdPUT_Data(w) R_W_SED = 0; A0_SED = 0; DATA_SED = (w); E_SED = 1; E_SED = 0;
#define lcdPUT_Command(w) R_W_SED = 0; A0_SED = 1; DATA_SED = (w); E_SED = 1; E_SED = 0;

#define lcdGET_Data(w) E_SED = 1; w = DATA_SED; E_SED = 0;

#define HIBYTE(w) (w>>8)
#define LOBYTE(w) (w & 0xFF)

#define lcdSET_Write lcdPUT_Command (0x42);
#define lcdSET_Read lcdPUT_Command (0x43); DATA_SED = 0xff; TRISD = 255; A0_SED = R_W_SED = 1;
#define lcdSET_CSR_DOWN lcdPUT_Command (0x4f);
#define lcdSET_CSR_RIGHT lcdPUT_Command (0x4c);
#define lcdSET_Address(w) lcdPUT_Command(0x46); lcdPUT_Data(LOBYTE(w)); lcdPUT_Data(HIBYTE(w));


void LCD_Init (void)
{

int n;
CS_SED=0;
//sed1335 reset
//START:
RST_SED = 0; RST_SED = 0; RST_SED = 0; RST_SED = 0;
RST_SED = 1; RST_SED = 1; RST_SED = 1; RST_SED = 1;

//SYSTEM_SET:
lcdPUT_Command (0x40); //SYSTEM SET
lcdPUT_Data (0b00110000); //HW_SETUP
lcdPUT_Data (0x87); //FX
// lcdPUT_Data (0x85); //FX
lcdPUT_Data (0x07); //FY
lcdPUT_Data (MAX_COL/8 - 1);//CR
lcdPUT_Data (66); //TC/R
lcdPUT_Data (MAX_ROW - 1); //L/F
lcdPUT_Data (MAX_COL/8); //APL
lcdPUT_Data (0); //APH

//SCROLL:
lcdPUT_Command (0x44); //SCROLL
lcdPUT_Data (SAD_1L); //
lcdPUT_Data (SAD_1H); //
lcdPUT_Data (MAX_ROW - 1); //L/F
lcdPUT_Data (SAD_2L); //
lcdPUT_Data (SAD_2H); //
lcdPUT_Data (MAX_ROW - 1); //L/F
lcdPUT_Data (SAD_3L); //
lcdPUT_Data (SAD_3H); //
lcdPUT_Data (0); //
lcdPUT_Data (0); //

//CSR_FORM:
lcdPUT_Command (0x5d); //CSR_FORM
lcdPUT_Data (0x07); //
lcdPUT_Data (0x87); //

//CSR_DIR:
lcdPUT_Command (0x4c); //CSR_DIR ai?aai
// lcdPUT_Command (0x4f); //CSR_DIR aiec

//HDOT_SCR:
lcdPUT_Command (0x5a); //HDOT_SCR
lcdPUT_Data (0); //NO SCROLL

//OVERLAY:
lcdPUT_Command (0x5b); //OVERLAY:
//---------------------------------------------------------------------
// lcdPUT_Data (0x0c); //OR 2-level Graphics+Graphics
// lcdPUT_Data (0x0d); //EXOR 2-level Graphics+Graphics
// lcdPUT_Data (0x1d); //EXOR 3-level Graphics+Graphics+Graphics
// lcdPUT_Data (0x1f); //PriOR 3-level Graphics+Graphics+Graphics
// lcdPUT_Data (0x01); //EXOR 2-level Text+Graphics
//---------------------------------------------------------------------
lcdPUT_Data ( 0x0d); //EXOR 3-level Graphics+Graphics+Graphics
//lcdPUT_Data ( 0x0b00001101); //EXOR 3-level Graphics+Graphics+Graphics

//DISP_ON:
lcdPUT_Command (0x59); //DISP_ON
//lcdPUT_Data (0x14); // w/o cursor
// lcdPUT_Data (0b00000100); // 3 слоя включены, 3-й слой мигающий 2 Гц, cursor мигающий 2 Гц

lcdPUT_Data (0b00010100); // 3 слоя включены, 3-й слой мигающий 2 Гц, без курсора

lcdSET_Address(0);
lcdPUT_Command (0x42);
for (n = 0; n != (SAD_3 + GRAPH_PAGE_SIZE); n++)
{
lcdPUT_Data(0x0);
}
}


//****************************************************************************
// lcdSET_PixelAsByte
// Вывод черточки в графические позиции Graph_X/8 и Graph_Y
// c текущими атрибутами графики
//****************************************************************************
void LCD_SET_PixelAsByte (void)
{ /* нарисовать черточку */
unsigned int Address;
unsigned char WriteByte;

Address = Graph_Y * (MAX_COL/8) + (Graph_X>>3) + CurrentSAD;
lcdSET_Address(Address);
WriteByte = 0xFF;

// Настраиваемся на запись нужного байта
lcdSET_Write;

// Записываем нужный байт
lcdPUT_Data(WriteByte);
}


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru