Yuji Notsu
/
QVGA_TFT_test
This is test program for running 192GC00(240 x 320 dot, 65K Color TFT LCD module ) on Star Board Orange.
REL225L0.cpp
- Committer:
- y_notsu
- Date:
- 2011-01-21
- Revision:
- 0:0e2aded4edb0
File content as of revision 0:0e2aded4edb0:
#include "REL225L01.h" REL225L01::REL225L01() : CS_OUT(CS), RS_OUT(RS), RD_OUT(RD), WR_OUT(WR),RST_OUT(RST),SCK_OUT(SCK),SDA_OUT(SDA) { CS_OUT = 0x01;RS_OUT = 0x01; RD_OUT = 0x01; WR_OUT = 0x01;RST_OUT = 0x01; SCK_OUT= 0x01; SDA_OUT=0x01; //t.attach( this, &SG12864A::display, ReflashRate ); } //Initialization LCD module void REL225L01::lcd_init(void){ wait_ms(20); RD_OUT=1; CS_OUT=1; WR_OUT=1; RST_OUT=0; wait_ms(1); RST_OUT=1; wait_ms(25); lcd_cmd(0xB0); lcd_data(0xCA); lcd_data(0x90); lcd_data(0x37); lcd_data(0x01); lcd_data(0x48); lcd_data(0x01); lcd_data(0x40); lcd_data(0x04); lcd_data(0x00); lcd_data(0x00); lcd_cmd(0x26); lcd_data(0x01); lcd_cmd(0xB1); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x08); lcd_data(0x00); lcd_data(0x04); lcd_data(0x10); lcd_data(0x48); lcd_data(0x82); lcd_data(0x20); lcd_data(0x84); lcd_data(0x92); lcd_data(0x2A); lcd_data(0x52); lcd_data(0xAA); lcd_data(0x5A); lcd_data(0x55); lcd_data(0x2A); lcd_data(0x55); lcd_data(0xAE); lcd_data(0xFF); lcd_data(0xFE); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x04); lcd_cmd(0xB2); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x04); lcd_data(0x00); lcd_data(0x02); lcd_data(0x08); lcd_data(0x48); lcd_data(0x82); lcd_data(0x20); lcd_data(0x84); lcd_data(0x42); lcd_data(0x48); lcd_data(0x92); lcd_data(0x2A); lcd_data(0x52); lcd_data(0xAA); lcd_data(0x5A); lcd_data(0x55); lcd_data(0x2A); lcd_data(0x55); lcd_data(0xAE); lcd_data(0xFF); lcd_data(0xFE); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x00); lcd_data(0x04); lcd_cmd(MODE); // Entry Mode lcd_data(0x29); //color mode lcd_cmd(COLMOD); lcd_data(0x05); //65k color //Inteface mode lcd_cmd(IFMOD); lcd_data(0x03); //16bit mode lcd_cmd(0xBA); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); lcd_data(0x55); // lcd_cmd(SLPOUT); lcd_cmd(DISON); //Display On } //Command output function void REL225L01::lcd_cmd(unsigned int comm){ if(comm<=0xffff) { for(int i=0;i<16;i++) { SDA_OUT = ((comm >> i) & 0x1); SCK_OUT = 0; SCK_OUT = 1; } RS_OUT = 0; CS_OUT = 0; WR_OUT = 0; //wait_us(1); RS_OUT = 1; WR_OUT = 1; CS_OUT = 1; // wait_us(1); } } void REL225L01::lcd_data(unsigned int data){ if(data<=0xffff) { for(int i=0;i<16;i++) { SDA_OUT = ((data >> i) & 0x1); SCK_OUT = 0; SCK_OUT = 1; } CS_OUT = 0; WR_OUT = 0; //wait_us(1); WR_OUT = 1; CS_OUT = 1; // wait_us(1); } } /*************************** * ��ʏ���֐� * ����p�F�w�肠�� ****************************/ void REL225L01::lcd_clear(unsigned short Color){ int i, j; lcd_cmd(PASET); // �y�[�W�J�n�I���A�h���X�Z�b�g lcd_data(0); lcd_data(0x0C); lcd_data((unsigned char)((ENDPAGE+0x0C)>>8)); lcd_data((unsigned char)(ENDPAGE+0x0C)); //lcd_data(ENDPAGE); lcd_cmd(CASET); // �R�����J�n�A�I���A�h���X�Z�b�g lcd_data(0); lcd_data(0x08); lcd_data((unsigned char)((ENDCOL+0x08)>>8)); lcd_data((unsigned char)(ENDCOL+0x08)); //lcd_data(ENDCOL); lcd_cmd(RAMWR); for(j=0; j<4; j++){ for(i=0; i<(ENDCOL+1)*80; i++){ //lcd_data((unsigned char)(Color>>8)); //lcd_data((unsigned char)Color); lcd_data(Color); } } } /*********************************** * �P�s�N�Z���\���֐� * ��W��(0,0)-(161,131) ***********************************/ void REL225L01::lcd_pixel(short Xpos, short Ypos, unsigned short Color){ if((Xpos<=ENDCOL) && (Ypos<=ENDPAGE)){ Xpos += 0x08; Ypos += 0x0C; lcd_cmd(PASET); // �s�iRAW)�A�h���X�Z�b�g lcd_data(Ypos>>8); lcd_data(Ypos); lcd_data(Ypos>>8); lcd_data(Ypos); lcd_cmd(CASET); // ��iCOLUM)�A�h���X�Z�b�g lcd_data((unsigned char)((Xpos)>>8)); lcd_data((unsigned char)(Xpos)); lcd_data((unsigned char)(Xpos>>8)); lcd_data((unsigned char)(Xpos)); lcd_cmd(RAMWR); // 1�s�N�Z���������� //lcd_data(Color >> 8); // 16�r�b�g�J���[ lcd_data(Color); } } /********************************************************* * �C���[�W�\���֐� *�@ �f�[�^�͏c���8���C������1�o�C�g�Ŋi�[����Ă��� * 128�~128/8=2k�o�C�g/��� * �O���t�B�b�N�F(Color1)�Ɣw�i�F(Color2)�����w�� **********************************************************/ void REL225L01::lcd_image(char line, const unsigned char *ptr, unsigned short Color1, unsigned Color2) { unsigned char Mask; short i, vline, colum; for(vline=line; vline<line+8; vline++){ // �S�̂�8�s�~8=64���C�� for(colum=0; colum<128; colum++){ // ����128�h�b�g�Ƃ��� Mask = 0x01; // ���ʃr�b�g���㑤 for(i=0; i<8; i++){ // 1�o�C�g������ if(*ptr & Mask) // �r�b�g�`�F�b�N lcd_pixel(colum+2, vline*8+i+1, Color1); else lcd_pixel(colum+2,vline*8+i+1, Color2); Mask = Mask << 1; // �r�b�g�ʒu�V�t�g } ptr++; // ���̃f�[�^ } } }