4DGL-uLCD-SE

Dependents:   ECE2035_SUM17_Project Air_Rendezvous_transmitter Transmitter app-board-RTOS-Threads ... more

Committer:
kennyainny
Date:
Fri Jul 14 21:42:47 2017 +0000
Revision:
0:19588ac80c02
no changes;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kennyainny 0:19588ac80c02 1 //
kennyainny 0:19588ac80c02 2 // uLCD_4DGL is a class to drive 4D Systems LCD screens
kennyainny 0:19588ac80c02 3 //
kennyainny 0:19588ac80c02 4 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
kennyainny 0:19588ac80c02 5 // Modifed for Goldelox processor <2013> Jim Hamblen
kennyainny 0:19588ac80c02 6 //
kennyainny 0:19588ac80c02 7 // uLCD_4DGL is free software: you can redistribute it and/or modify
kennyainny 0:19588ac80c02 8 // it under the terms of the GNU General Public License as published by
kennyainny 0:19588ac80c02 9 // the Free Software Foundation, either version 3 of the License, or
kennyainny 0:19588ac80c02 10 // (at your option) any later version.
kennyainny 0:19588ac80c02 11 //
kennyainny 0:19588ac80c02 12 // uLCD_4DGL is distributed in the hope that it will be useful,
kennyainny 0:19588ac80c02 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
kennyainny 0:19588ac80c02 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
kennyainny 0:19588ac80c02 15 // GNU General Public License for more details.
kennyainny 0:19588ac80c02 16 //
kennyainny 0:19588ac80c02 17 // You should have received a copy of the GNU General Public License
kennyainny 0:19588ac80c02 18 // along with uLCD_4DGL. If not, see <http://www.gnu.org/licenses/>.
kennyainny 0:19588ac80c02 19
kennyainny 0:19588ac80c02 20 #include "mbed.h"
kennyainny 0:19588ac80c02 21 #include "uLCD_4DGL.h"
kennyainny 0:19588ac80c02 22
kennyainny 0:19588ac80c02 23
kennyainny 0:19588ac80c02 24 //Media Commands
kennyainny 0:19588ac80c02 25
kennyainny 0:19588ac80c02 26 //******************************************************************************************************
kennyainny 0:19588ac80c02 27 int uLCD_4DGL :: media_init()
kennyainny 0:19588ac80c02 28 {
kennyainny 0:19588ac80c02 29 int resp = 0;
kennyainny 0:19588ac80c02 30 char command[1] = "";
kennyainny 0:19588ac80c02 31 command[0] = MINIT;
kennyainny 0:19588ac80c02 32 writeCOMMAND(command, 1);
kennyainny 0:19588ac80c02 33 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
kennyainny 0:19588ac80c02 34 if (_cmd.readable()) {
kennyainny 0:19588ac80c02 35 resp = _cmd.getc(); // read response
kennyainny 0:19588ac80c02 36 resp = resp << 8 + _cmd.getc();
kennyainny 0:19588ac80c02 37 }
kennyainny 0:19588ac80c02 38 return resp;
kennyainny 0:19588ac80c02 39 }
kennyainny 0:19588ac80c02 40
kennyainny 0:19588ac80c02 41 //******************************************************************************************************
kennyainny 0:19588ac80c02 42 void uLCD_4DGL :: set_byte_address(int hi, int lo)
kennyainny 0:19588ac80c02 43 {
kennyainny 0:19588ac80c02 44 char command[5]= "";
kennyainny 0:19588ac80c02 45 command[0] = SBADDRESS;
kennyainny 0:19588ac80c02 46
kennyainny 0:19588ac80c02 47 command[1] = (hi >> 8) & 0xFF;
kennyainny 0:19588ac80c02 48 command[2] = hi & 0xFF;
kennyainny 0:19588ac80c02 49
kennyainny 0:19588ac80c02 50 command[3] = (lo >> 8) & 0xFF;
kennyainny 0:19588ac80c02 51 command[4] = lo & 0xFF;
kennyainny 0:19588ac80c02 52 writeCOMMAND(command, 5);
kennyainny 0:19588ac80c02 53 }
kennyainny 0:19588ac80c02 54
kennyainny 0:19588ac80c02 55 //******************************************************************************************************
kennyainny 0:19588ac80c02 56 void uLCD_4DGL :: set_sector_address(int hi, int lo)
kennyainny 0:19588ac80c02 57 {
kennyainny 0:19588ac80c02 58
kennyainny 0:19588ac80c02 59 char command[5]= "";
kennyainny 0:19588ac80c02 60 command[0] = SSADDRESS;
kennyainny 0:19588ac80c02 61
kennyainny 0:19588ac80c02 62 command[1] = (hi >> 8) & 0xFF;
kennyainny 0:19588ac80c02 63 command[2] = hi & 0xFF;
kennyainny 0:19588ac80c02 64
kennyainny 0:19588ac80c02 65 command[3] = (lo >> 8) & 0xFF;
kennyainny 0:19588ac80c02 66 command[4] = lo & 0xFF;
kennyainny 0:19588ac80c02 67 writeCOMMAND(command, 5);
kennyainny 0:19588ac80c02 68 }
kennyainny 0:19588ac80c02 69
kennyainny 0:19588ac80c02 70 //******************************************************************************************************
kennyainny 0:19588ac80c02 71 char uLCD_4DGL :: read_byte()
kennyainny 0:19588ac80c02 72 {
kennyainny 0:19588ac80c02 73 char resp = 0;
kennyainny 0:19588ac80c02 74 char command[1] = "";
kennyainny 0:19588ac80c02 75 command[0] = READBYTE;
kennyainny 0:19588ac80c02 76 writeCOMMAND(command, 1);
kennyainny 0:19588ac80c02 77 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
kennyainny 0:19588ac80c02 78 if (_cmd.readable()) {
kennyainny 0:19588ac80c02 79 resp = _cmd.getc(); // read response
kennyainny 0:19588ac80c02 80 resp = _cmd.getc();
kennyainny 0:19588ac80c02 81 }
kennyainny 0:19588ac80c02 82 return resp;
kennyainny 0:19588ac80c02 83 }
kennyainny 0:19588ac80c02 84
kennyainny 0:19588ac80c02 85 //******************************************************************************************************
kennyainny 0:19588ac80c02 86 int uLCD_4DGL :: read_word()
kennyainny 0:19588ac80c02 87 {
kennyainny 0:19588ac80c02 88 int resp=0;
kennyainny 0:19588ac80c02 89 char command[1] = "";
kennyainny 0:19588ac80c02 90 command[0] = READWORD;
kennyainny 0:19588ac80c02 91 writeCOMMAND(command, 1);
kennyainny 0:19588ac80c02 92 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
kennyainny 0:19588ac80c02 93 if (_cmd.readable()) {
kennyainny 0:19588ac80c02 94 resp = _cmd.getc(); // read response
kennyainny 0:19588ac80c02 95 resp = resp << 8 + _cmd.getc();
kennyainny 0:19588ac80c02 96 }
kennyainny 0:19588ac80c02 97 return resp;
kennyainny 0:19588ac80c02 98 }
kennyainny 0:19588ac80c02 99
kennyainny 0:19588ac80c02 100 //******************************************************************************************************
kennyainny 0:19588ac80c02 101 void uLCD_4DGL :: write_byte(int value)
kennyainny 0:19588ac80c02 102 {
kennyainny 0:19588ac80c02 103 char command[3]= "";
kennyainny 0:19588ac80c02 104
kennyainny 0:19588ac80c02 105 command[0] = WRITEBYTE;
kennyainny 0:19588ac80c02 106
kennyainny 0:19588ac80c02 107 command[1] = (value >> 8) & 0xFF;
kennyainny 0:19588ac80c02 108 command[2] = value & 0xFF;
kennyainny 0:19588ac80c02 109 writeCOMMAND(command,3);
kennyainny 0:19588ac80c02 110 }
kennyainny 0:19588ac80c02 111
kennyainny 0:19588ac80c02 112 //******************************************************************************************************
kennyainny 0:19588ac80c02 113 void uLCD_4DGL :: write_word(int value)
kennyainny 0:19588ac80c02 114 {
kennyainny 0:19588ac80c02 115 char command[3]= "";
kennyainny 0:19588ac80c02 116
kennyainny 0:19588ac80c02 117 command[0] = WRITEWORD;
kennyainny 0:19588ac80c02 118
kennyainny 0:19588ac80c02 119 command[1] = (value >> 8) & 0xFF;
kennyainny 0:19588ac80c02 120 command[2] = value & 0xFF;
kennyainny 0:19588ac80c02 121 writeCOMMAND(command,3);
kennyainny 0:19588ac80c02 122 }
kennyainny 0:19588ac80c02 123
kennyainny 0:19588ac80c02 124 //******************************************************************************************************
kennyainny 0:19588ac80c02 125 void uLCD_4DGL :: flush_media()
kennyainny 0:19588ac80c02 126 {
kennyainny 0:19588ac80c02 127 char command[1] = "";
kennyainny 0:19588ac80c02 128 command[0] = FLUSHMEDIA;
kennyainny 0:19588ac80c02 129 writeCOMMAND(command, 1);
kennyainny 0:19588ac80c02 130 }
kennyainny 0:19588ac80c02 131
kennyainny 0:19588ac80c02 132 //******************************************************************************************************
kennyainny 0:19588ac80c02 133 void uLCD_4DGL :: display_image(int x, int y)
kennyainny 0:19588ac80c02 134 {
kennyainny 0:19588ac80c02 135 char command[6]= "";
kennyainny 0:19588ac80c02 136 command[0] = DISPLAYIMAGE;
kennyainny 0:19588ac80c02 137
kennyainny 0:19588ac80c02 138 command[1] = (x >> 8) & 0xFF;
kennyainny 0:19588ac80c02 139 command[2] = x & 0xFF;
kennyainny 0:19588ac80c02 140
kennyainny 0:19588ac80c02 141 command[3] = (y >> 8) & 0xFF;
kennyainny 0:19588ac80c02 142 command[4] = y & 0xFF;
kennyainny 0:19588ac80c02 143 writeCOMMAND(command, 5);
kennyainny 0:19588ac80c02 144 }
kennyainny 0:19588ac80c02 145
kennyainny 0:19588ac80c02 146 //******************************************************************************************************
kennyainny 0:19588ac80c02 147 void uLCD_4DGL :: display_video(int x, int y)
kennyainny 0:19588ac80c02 148 {
kennyainny 0:19588ac80c02 149 char command[5]= "";
kennyainny 0:19588ac80c02 150 command[0] = DISPLAYVIDEO;
kennyainny 0:19588ac80c02 151
kennyainny 0:19588ac80c02 152 command[1] = (x >> 8) & 0xFF;
kennyainny 0:19588ac80c02 153 command[2] = x & 0xFF;
kennyainny 0:19588ac80c02 154
kennyainny 0:19588ac80c02 155 command[3] = (y >> 8) & 0xFF;
kennyainny 0:19588ac80c02 156 command[4] = y & 0xFF;
kennyainny 0:19588ac80c02 157 writeCOMMAND(command, 5);
kennyainny 0:19588ac80c02 158 }
kennyainny 0:19588ac80c02 159
kennyainny 0:19588ac80c02 160 //******************************************************************************************************
kennyainny 0:19588ac80c02 161 void uLCD_4DGL :: display_frame(int x, int y, int w)
kennyainny 0:19588ac80c02 162 {
kennyainny 0:19588ac80c02 163 char command[7]= "";
kennyainny 0:19588ac80c02 164
kennyainny 0:19588ac80c02 165 command[0] = DISPLAYFRAME;
kennyainny 0:19588ac80c02 166
kennyainny 0:19588ac80c02 167 command[1] = (x >> 8) & 0xFF;
kennyainny 0:19588ac80c02 168 command[2] = x & 0xFF;
kennyainny 0:19588ac80c02 169
kennyainny 0:19588ac80c02 170 command[3] = (y >> 8) & 0xFF;
kennyainny 0:19588ac80c02 171 command[4] = y & 0xFF;
kennyainny 0:19588ac80c02 172
kennyainny 0:19588ac80c02 173 command[5] = (w >> 8) & 0xFF;
kennyainny 0:19588ac80c02 174 command[6] = w & 0xFF;
kennyainny 0:19588ac80c02 175 writeCOMMAND(command,7);
kennyainny 0:19588ac80c02 176 }
kennyainny 0:19588ac80c02 177