- -

Dependents:   deal_or_no_deal_graphics

Committer:
AlexFerrara
Date:
Mon Oct 31 08:07:41 2016 +0000
Revision:
0:d904fc771672
-

Who changed what in which revision?

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