Ruth Pavoor / Mbed 2 deprecated project1

Dependencies:   mbed mbed-rtos PinDetect

Committer:
rpavoor3
Date:
Mon Apr 27 23:18:38 2020 +0000
Revision:
0:0ca943ce4014
4180 Your Fitness Buddy

Who changed what in which revision?

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