Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void display_Initialise(void){
- //INITIALISES PORTS C12-C19 TO COMMUNICATE WITH CHIP
- //RESETS DISPLAY AND INITIATES GRAPHIC & TEXT
- //PORT ENABLE C12-19 check with PIO_PSR 0x400E1208
- *((volatile unsigned int*)0x400E1200) = (0xFF << 12);
- //DISABLE INPUT DEBOUNCE
- *((volatile unsigned int*)0x400E1224) = (0xFF00FF << 2);
- //SET OUTPUT DATA C12-C19
- //74CHIP OE = 1, 74CHIP DIR = 0, W/R = 0, RD = 0, CE = 0 C/D, FS, RV = 0
- *((volatile unsigned int*)0x400E1230) = (0x1 << 12);
- //OUTPUT ENABLE C12-C19 check with PIO_OSR 0x400E0018
- *((volatile unsigned int*)0x400E1210) = (0xFF << 12);
- //PORT ENABLE D0 (DISPLAY RESET)
- *((volatile unsigned int*)0x400E1400) = (1 << 0);
- //OUTPUT ENABLE OE CONTROL (D0) check with PIO_OSR 0x400E1218, 0=pure input
- *((volatile unsigned int*)0x400E1410) = (1 << 0);
- //CLEAR DISPLAY RESET
- *((volatile unsigned int*)0x400E1434) = (1 << 0);
- util_Delay(1000);
- //_delay_Systick(8000, 5);
- //SET DISPLAY RESET check with OSDR
- *((volatile unsigned int*)0x400E1430) = (1 << 0);
- //INITIALISE GRAPHIC & TEXT
- _display_WriteData(0x00);
- _display_WriteData(0x00);
- _display_WriteCommand(0x40); //Set text home adress
- _display_WriteData(0x00);
- _display_WriteData(0x40);
- _display_WriteCommand(0x42); //Set graphic home adress
- _display_WriteData(0x1E);
- _display_WriteData(0x00);
- _display_WriteCommand(0x41); //Set text area (changed from 41)
- _display_WriteData(0x1E);
- _display_WriteData(0x00);
- _display_WriteCommand(0x43); //Set graphic area
- _display_WriteCommand(0x80); //Text mode
- _display_WriteCommand(0x94); //Text on, graphic off
- }
- unsigned char _display_ReadStatus(void){
- //READS STATUS WORD FROM DISPLAY CHIP VIA DATABUS ON PIO_C
- //STATUS WORD 0x3 MEANS CHIP IS READY
- unsigned char readbyte;
- //SET DATABUS C2-C9 AS INPUT
- *((volatile unsigned int*)0x400E1214) = (0xFF << 2);
- //SET DIR AS INPUT (1)
- *((volatile unsigned int*)0x400E1230) = (1 << 13);
- //CLEAR 74CHIP OUTPUT ENABLE (0 = ENABLE)
- *((volatile unsigned int*)0x400E1234) = (1 << 12);
- //SET C/D (C/D=1 & RD=0 > STATUS READ)
- *((volatile unsigned int*)0x400E1230) = (1 << 17);
- //CLEAR DISPLAY CHIP SELECT (0 = ACTIVE)
- *((volatile unsigned int*)0x400E1234) = (1 << 16);
- //CLEAR DISPLAY RD
- *((volatile unsigned int*)0x400E1234) = (1 << 15);
- util_Delay(20);
- //READ DATABUS C2-C9, save in Temp char MASK??
- readbyte = (((unsigned char) *((unsigned int*)0x400E123C) & (0xFF << 2)) >> 2);
- //SET CHIP SELECT DISPLAY
- *((volatile unsigned int*)0x400E1230) = (1 << 16);
- //SET READ DISPLAY
- *((volatile unsigned int*)0x400E1230) = (1 << 15);
- //DISABLE CHIP (OE = 1)
- *((volatile unsigned int*)0x400E1230) = (1 << 12);
- //DIR AS OUTPUT, DIR = 0
- *((volatile unsigned int*)0x400E1234) = (1 << 13);
- return readbyte;
- }
- void _display_WriteData(unsigned char data){
- //WAITS FOR CONTROLLER READY AND THEN
- //WRITES DATA CHAR VIA DATABUS ON PIO_C
- while((_display_ReadStatus() & (3 << 0)) != (3 << 0)){}
- //CLEAR DATABUS C2-C9
- *((volatile unsigned int*)0x400E1234) = (0xFF << 2);
- //SET DATA TO C2-C9
- *((volatile unsigned int*)0x400E1230) = (data << 2);
- //SET DIR TO OUTPUT IN CHIP (0)
- *((volatile unsigned int*)0x400E1234) = (1 << 13);
- //CHIP74 OE OUTPUT (0)
- *((volatile unsigned int*)0x400E1234) = (1 << 12);
- //ENABLE OUTPUT C2-C9
- *((volatile unsigned int*)0x400E1210) = (0xFF << 2);
- //CLEAR C/D SIGNAL HI (0 = Data)
- *((volatile unsigned int*)0x400E1234) = (1 << 17);
- //CLEAR CHIP SELECT DISPLAY
- *((volatile unsigned int*)0x400E1234) = (1 << 16);
- //CLEAR WRITE DISPLAY (WRITE = 0)
- *((volatile unsigned int*)0x400E1234) = (1 << 14);
- util_Delay(20);
- //SET CHIP ENABLE DISPLAY
- *((volatile unsigned int*)0x400E1230) = (1 << 16);
- //SET WRITE DISPLAY
- *((volatile unsigned int*)0x400E1230) = (1 << 14);
- //DISABLE, OE=1
- *((volatile unsigned int*)0x400E1230) = (1 << 12);
- //DIR AS OUTPUT, DIR = 0
- *((volatile unsigned int*)0x400E1234) = (1 << 13);
- //DATABUS AS INPUT
- *((volatile unsigned int*)0x400E1214) = (0xFF << 2);
- }
- void _display_WriteCommand(unsigned char command){
- //WAITS FOR CONTROLLER READY AND THEN
- //WRITES COMMAND DATA VIA DATABUS ON PIO_C
- while((_display_ReadStatus() & (3 << 0)) != (3 << 0)){}
- //CLEAR DATABUS C2-C9
- *((volatile unsigned int*)0x400E1234) = (0xFF << 2);
- //SET DATA TO DATABUS C2-C9
- *((volatile unsigned int*)0x400E1230) = (command << 2);
- //SET DIR AS OUTPUT IN CHIP (0)
- *((volatile unsigned int*)0x400E1234) = (1 << 13);
- //OE OUTPUT (1)
- *((volatile unsigned int*)0x400E1234) = (1 << 12);
- //ENABLE OUTPUT C2-C9
- *((volatile unsigned int*)0x400E1210) = (0xFF << 2);
- //SET C/D SIGNAL HI (1 = Command)
- *((volatile unsigned int*)0x400E1230) = (1 << 17);
- //CLEAR CHIP SELECT DISPLAY
- *((volatile unsigned int*)0x400E1234) = (1 << 16);
- //CLEAR WRITE DISPLAY (0=WRITE)
- *((volatile unsigned int*)0x400E1234) = (1 << 14);
- util_Delay(20);
- //SET CHIP ENABLE DISPLAY
- *((volatile unsigned int*)0x400E1230) = (1 << 16);
- //SET WRITE DISPLAY
- *((volatile unsigned int*)0x400E1230) = (1 << 14);
- //DISABLE CHIP OE=1)
- *((volatile unsigned int*)0x400E1230) = (1 << 12);
- //DIR AS OUTPUT, DIR = 0
- *((volatile unsigned int*)0x400E1234) = (1 << 13);
- //DATABUS AS INPUT
- *((volatile unsigned int*)0x400E1214) = (0xFF << 2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement