ECE 4180 Project for Spring 2020

Dependencies:   mbed mbed-rtos SDFileSystem PinDetect ESP8266NodeMCUInterface

Committer:
kimberlylie99
Date:
Fri May 01 18:43:13 2020 +0000
Revision:
1:5ae291085f75
Parent:
0:b97c07227845
Edit Main.cpp;

Who changed what in which revision?

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