Przepraszam za późną odpowiedź ale przez ostatnie dni musiałem zająć się innymi sprawami. A więc tak. Wyświetlacz jest sprawny w 100% (wysłanie 16 bit sprawdzony na ARM z przykładowego kodu) także podanie 5v nie spowodowało uszkodzenia LCD. Od tego trzeba zacząć gdyż już zaczynałem wątpić w to czy pomimo napisania dobrego kodu wyświetlacz zadziała. Na schematach podobnych wyświetlaczy PIN_11 zarezerwowany jest dla bitu IM0 sterującego wyborem trybu 8/16bit. Na schemacie mojego wyświetlacza (kilka postów wyżej) widać, że PIN_11 jest oznaczony jako NC. Jednakże tak jak w schematach podobnych pcb do PIN_11 mimo, że oznaczonego jako NC doprowadzono masę lub + do wyboru rezystorami R4, R6. Na fizycznym pcb w miejscach R4 i R6 jest przerwa co by potwierdzało, że PIN_11 jest nieużywany jednakże po co w takim razie te rezystory? Ustawiono na sztywno 16 bit? Na to wynika. Bez sensu moim zdaniem no ale cóż. Skoro doszliśmy do tego, że 16 bit jest ustawiony na sztywno i muszę wysyłać dane wg wykresu czasowego dla 16 bit i WR ustawiać w stan niski przed podaniem danych na magistralę to dlaczego w kolejnej bibliotece (w załączniku) WR ustawiany jest w stan niski przed wystawieniem danej na szynie? CS również jest podnoszony po wysłaniu indexu... Co prawda jest to sterowanie 8bit ale z czasówki 8bit wynika to samo co czasówki 16bit. http://obrazki.elektroda.pl/8369531000_1322404642.gif A kod wygląda tak: void TSLCDOutDat(unsigned short dat) //write data to LCD { Clrb(LCD_LE_PRTC,LCD_LE_PIN); //clear LE LCD_DB_DPRT = dat >> 8; Setb(LCD_LE_PRTS,LCD_LE_PIN); //set LE Delay1us(1); Clrb(LCD_LE_PRTC,LCD_LE_PIN); //clear LE Clrb(LCD_CS_PRTC,LCD_CS_PIN); // clear CS Setb(LCD_RS_PRTS,LCD_RS_PIN); // set RS Setb(LCD_RD_PRTS,LCD_RD_PIN); // set RD LCD_DB_DPRT = dat; Clrb(LCD_WR_PRTC,LCD_WR_PIN); // clear WR Setb(LCD_WR_PRTS,LCD_WR_PIN); // set WR Setb(LCD_CS_PRTS,LCD_CS_PIN); // set CS } void ili9320_WriteIndex(unsigned char index) { Clrb(LCD_LE_PRTC,LCD_LE_PIN); //clear LE LCD_DB_DPRT = index >> 8; Setb(LCD_LE_PRTS,LCD_LE_PIN); //set LE Delay1us(1); Clrb(LCD_LE_PRTC,LCD_LE_PIN); Clrb(LCD_CS_PRTC,LCD_CS_PIN); // clear CS Setb(LCD_RS_PRTS,LCD_RS_PIN); // set RS Setb(LCD_RD_PRTS,LCD_RD_PIN); // set RD LCD_DB_DPRT = index; Clrb(LCD_WR_PRTC,LCD_WR_PIN); // clear WR Setb(LCD_WR_PRTS,LCD_WR_PIN); // set WR }
#include & lt; avr/io.h & gt;
///////////////////////////////////////////////////////
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ID_AM 011
#define DATA_LCD_DDR DDRC
#define DATA_LCD_PORT PORTC
#define DATA_LCD_PIN PINC
#define DATA_INPUT() DATA_LCD_DDR = 0x00;
#define DATA_OUPUT() DATA_LCD_DDR = 0xFF;
#define LCD_CS_DDR DDRA
#define LCD_CS_PORT PORTA
#define LCD_CS_PIN PINA
#define LCD_CS_BIT 6
#define LCD_RS_DDR DDRA
#define LCD_RS_PORT PORTA
#define LCD_RS_PIN PINA
#define LCD_RS_BIT 7
#define LCD_RD_DDR DDRB
#define LCD_RD_PORT PORTB
#define LCD_RD_PIN PINB
#define LCD_RD_BIT 2
#define LCD_WR_DDR DDRB
#define LCD_WR_PORT PORTB
#define LCD_WR_PIN PINB
#define LCD_WR_BIT 3
#define LCD_RST_DDR DDRB
#define LCD_RST_PORT PORTB
#define LCD_RST_PIN PINB
#define LCD_RST_BIT 1
#define LCD_BL_DDR DDRD
#define LCD_BL_PORT PORTD
#define LCD_BL_PIN PIND
#define LCD_BL_BIT 6
#define LCD_CS_H() LCD_CS_PORT |= 1 & lt; & lt; LCD_CS_BIT
#define LCD_CS_L() LCD_CS_PORT & = ~(1 & lt; & lt; LCD_CS_BIT)
#define LCD_RS_H() LCD_RS_PORT |= 1 & lt; & lt; LCD_RS_BIT
#define LCD_RS_L() LCD_RS_PORT & = ~(1 & lt; & lt; LCD_RS_BIT)
#define LCD_WR_L() LCD_WR_PORT |= 1 & lt; & lt; LCD_WR_BIT//
#define LCD_WR_H() LCD_WR_PORT & = ~(1 & lt; & lt; LCD_WR_BIT)//
#define LCD_RD_H() LCD_RD_PORT |= 1 & lt; & lt; LCD_RD_BIT
#define LCD_RD_L() LCD_RD_PORT & = ~(1 & lt; & lt; LCD_RD_BIT)
#define LCD_RST_H() LCD_RST_PORT |= 1 & lt; & lt; LCD_RST_BIT
#define LCD_RST_L() LCD_RST_PORT & = ~(1 & lt; & lt; LCD_RST_BIT)
#define LCD_BL_H() LCD_BL_PORT |= 1 & lt; & lt; LCD_BL_BIT
#define LCD_BL_L() LCD_BL_PORT & = ~(1 & lt; & lt; LCD_BL_BIT)
#define LCD_PORT_INI(){ LCD_BL_DDR |= 1 & lt; & lt; LCD_BL_BIT;\
LCD_CS_DDR |= 1 & lt; & lt; LCD_CS_BIT;\
LCD_RS_DDR |= 1 & lt; & lt; LCD_RS_BIT;\
LCD_WR_DDR |= 1 & lt; & lt; LCD_WR_BIT;\
LCD_RD_DDR |= 1 & lt; & lt; LCD_RD_BIT;\
LCD_RST_DDR|= 1 & lt; & lt; LCD_RST_BIT;\
}
void LCD_WR_REG(unsigned int index,unsigned int data);
void LCD_WR_REG16(unsigned int index);//д»ý´æÆ÷ÃüÁî
void LCD_WR_DATA16(unsigned int data);//Î÷»ý´æÆ÷Êý¾Ý
void LCD_Init(void);
void LCD_Clear(unsigned int Color);
void LCD_write_english(unsigned char data,unsigned int color,unsigned int xcolor);//д×Ö·û
void LCD_write_english_string(unsigned int x,unsigned int y,unsigned char *s,unsigned int color,unsigned int xcolor);//Ó¢ÎÄ×Ö·û´®ÏÔʾ
void LCD_SetCursor(unsigned int Xpos, unsigned int Ypos);
void Lcd_SetBox(unsigned int xStart,unsigned int yStart,unsigned int xLong,unsigned int yLong);
void Test(void);
void Test_tu(void);