KAIQUE DOGNANI
/
LCD_Aula_25_03_2020
faf
LCD_ka.cpp@1:d5b85bc9e87b, 2020-04-03 (annotated)
- Committer:
- kaiquedog
- Date:
- Fri Apr 03 22:06:47 2020 +0000
- Revision:
- 1:d5b85bc9e87b
- Parent:
- 0:4a5c6f06b26c
- Child:
- 2:edc5d3177f86
TUDO NOVO DE CARA NOVA;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kaiquedog | 0:4a5c6f06b26c | 1 | #include "LCD_ka.h" |
kaiquedog | 0:4a5c6f06b26c | 2 | |
kaiquedog | 1:d5b85bc9e87b | 3 | |
kaiquedog | 1:d5b85bc9e87b | 4 | //**** Define as portas que o LCD lê: **** |
kaiquedog | 1:d5b85bc9e87b | 5 | DigitalOut RS(D8); |
kaiquedog | 0:4a5c6f06b26c | 6 | DigitalOut E(D9); |
kaiquedog | 0:4a5c6f06b26c | 7 | BusOut dados(D4, D5, D6, D7); |
kaiquedog | 0:4a5c6f06b26c | 8 | |
kaiquedog | 1:d5b85bc9e87b | 9 | //**** Variáveis que o código utiliza para funções internas: **** |
kaiquedog | 1:d5b85bc9e87b | 10 | int _coluna = 1; |
kaiquedog | 1:d5b85bc9e87b | 11 | int _linha = 1; |
kaiquedog | 1:d5b85bc9e87b | 12 | |
kaiquedog | 1:d5b85bc9e87b | 13 | //**** Comando que indica para o LCD que metade dos bits foram enviados: **** |
kaiquedog | 0:4a5c6f06b26c | 14 | void bate_enable(void){ |
kaiquedog | 0:4a5c6f06b26c | 15 | E = 1; |
kaiquedog | 1:d5b85bc9e87b | 16 | wait(0.000040f); |
kaiquedog | 0:4a5c6f06b26c | 17 | E=0; |
kaiquedog | 1:d5b85bc9e87b | 18 | wait(0.000040f); |
kaiquedog | 0:4a5c6f06b26c | 19 | } |
kaiquedog | 0:4a5c6f06b26c | 20 | |
kaiquedog | 1:d5b85bc9e87b | 21 | //**** Função de inicialização do LCD: **** |
kaiquedog | 0:4a5c6f06b26c | 22 | void Inicia_LCD(void){ |
kaiquedog | 0:4a5c6f06b26c | 23 | RS = 0; |
kaiquedog | 0:4a5c6f06b26c | 24 | E = 0; |
kaiquedog | 0:4a5c6f06b26c | 25 | dados = 0x0; |
kaiquedog | 1:d5b85bc9e87b | 26 | |
kaiquedog | 1:d5b85bc9e87b | 27 | wait(0.05); |
kaiquedog | 1:d5b85bc9e87b | 28 | for (int i=0; i<3; i++){ |
kaiquedog | 1:d5b85bc9e87b | 29 | // Define como 4 bits |
kaiquedog | 1:d5b85bc9e87b | 30 | dados = 0x2; |
kaiquedog | 1:d5b85bc9e87b | 31 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 32 | |
kaiquedog | 1:d5b85bc9e87b | 33 | // Define 0 0 1 DL - N F _ _ |
kaiquedog | 1:d5b85bc9e87b | 34 | //(DL = Data Lengh: 0 --> 4 Bits |
kaiquedog | 1:d5b85bc9e87b | 35 | // 1 --> 8 Bits) |
kaiquedog | 1:d5b85bc9e87b | 36 | //(N = n° de linhas:0 --> 1 linha |
kaiquedog | 1:d5b85bc9e87b | 37 | // 1 --> 2 linhas) |
kaiquedog | 1:d5b85bc9e87b | 38 | //(F = n° de pontos:0 --> 5 x 8 pontos |
kaiquedog | 1:d5b85bc9e87b | 39 | // 1 --> 5 x 10 pontos) |
kaiquedog | 1:d5b85bc9e87b | 40 | dados = 0x2; |
kaiquedog | 1:d5b85bc9e87b | 41 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 42 | dados = 0x8; |
kaiquedog | 1:d5b85bc9e87b | 43 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 44 | |
kaiquedog | 1:d5b85bc9e87b | 45 | wait(0.02); |
kaiquedog | 1:d5b85bc9e87b | 46 | |
kaiquedog | 1:d5b85bc9e87b | 47 | // Define 0 0 0 0 - 1 D C B |
kaiquedog | 1:d5b85bc9e87b | 48 | //(D = Display on/off: 0 --> off |
kaiquedog | 1:d5b85bc9e87b | 49 | // 1 --> on) |
kaiquedog | 1:d5b85bc9e87b | 50 | //(C = Cursor on/off : 0 --> off |
kaiquedog | 1:d5b85bc9e87b | 51 | // 1 --> on) |
kaiquedog | 1:d5b85bc9e87b | 52 | //(B = Blink on/off : 0 --> off |
kaiquedog | 1:d5b85bc9e87b | 53 | // 1 --> on) |
kaiquedog | 1:d5b85bc9e87b | 54 | dados = 0x0; |
kaiquedog | 1:d5b85bc9e87b | 55 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 56 | dados = 0xE; |
kaiquedog | 1:d5b85bc9e87b | 57 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 58 | |
kaiquedog | 1:d5b85bc9e87b | 59 | wait(0.02); |
kaiquedog | 1:d5b85bc9e87b | 60 | |
kaiquedog | 1:d5b85bc9e87b | 61 | // Define 0 0 0 0 - 0 1 I/D S |
kaiquedog | 1:d5b85bc9e87b | 62 | //(I/D = Direção de escrita: 0 --> Direita |
kaiquedog | 1:d5b85bc9e87b | 63 | // 1 --> Esquerda) |
kaiquedog | 1:d5b85bc9e87b | 64 | //(S = Display shift : 0 --> Não |
kaiquedog | 1:d5b85bc9e87b | 65 | // 1 --> Sim) |
kaiquedog | 1:d5b85bc9e87b | 66 | dados = 0x0; |
kaiquedog | 1:d5b85bc9e87b | 67 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 68 | dados = 0x6; |
kaiquedog | 1:d5b85bc9e87b | 69 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 70 | } |
kaiquedog | 1:d5b85bc9e87b | 71 | |
kaiquedog | 1:d5b85bc9e87b | 72 | // Limpa o diplay |
kaiquedog | 1:d5b85bc9e87b | 73 | clc(); |
kaiquedog | 1:d5b85bc9e87b | 74 | } |
kaiquedog | 1:d5b85bc9e87b | 75 | |
kaiquedog | 1:d5b85bc9e87b | 76 | //**** Função que recebe string e escreve no display: **** |
kaiquedog | 1:d5b85bc9e87b | 77 | void disp(char* value){ |
kaiquedog | 1:d5b85bc9e87b | 78 | for (int i = 0; value[i] != '\0';++i) |
kaiquedog | 1:d5b85bc9e87b | 79 | { |
kaiquedog | 1:d5b85bc9e87b | 80 | if (_coluna == 17) |
kaiquedog | 1:d5b85bc9e87b | 81 | { |
kaiquedog | 1:d5b85bc9e87b | 82 | RS = 0; |
kaiquedog | 1:d5b85bc9e87b | 83 | fim_de_curso(); |
kaiquedog | 1:d5b85bc9e87b | 84 | } |
kaiquedog | 1:d5b85bc9e87b | 85 | RS = 1; |
kaiquedog | 1:d5b85bc9e87b | 86 | char txt = value[i]; |
kaiquedog | 1:d5b85bc9e87b | 87 | dados = txt>>4; |
kaiquedog | 1:d5b85bc9e87b | 88 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 89 | dados = txt; |
kaiquedog | 1:d5b85bc9e87b | 90 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 91 | |
kaiquedog | 1:d5b85bc9e87b | 92 | _coluna = _coluna + 1; |
kaiquedog | 1:d5b85bc9e87b | 93 | } |
kaiquedog | 1:d5b85bc9e87b | 94 | RS = 0; |
kaiquedog | 1:d5b85bc9e87b | 95 | } |
kaiquedog | 1:d5b85bc9e87b | 96 | |
kaiquedog | 1:d5b85bc9e87b | 97 | //**** Função que limpa o display e volta o cursor para (1,1): **** |
kaiquedog | 1:d5b85bc9e87b | 98 | void clc(void){ |
kaiquedog | 1:d5b85bc9e87b | 99 | wait(0.02); |
kaiquedog | 0:4a5c6f06b26c | 100 | |
kaiquedog | 0:4a5c6f06b26c | 101 | dados = 0x0; |
kaiquedog | 0:4a5c6f06b26c | 102 | bate_enable(); |
kaiquedog | 0:4a5c6f06b26c | 103 | dados = 0x1; |
kaiquedog | 0:4a5c6f06b26c | 104 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 105 | |
kaiquedog | 1:d5b85bc9e87b | 106 | wait(0.02); |
kaiquedog | 1:d5b85bc9e87b | 107 | |
kaiquedog | 1:d5b85bc9e87b | 108 | _coluna = 1; |
kaiquedog | 1:d5b85bc9e87b | 109 | _linha = 1; |
kaiquedog | 1:d5b85bc9e87b | 110 | } |
kaiquedog | 1:d5b85bc9e87b | 111 | |
kaiquedog | 1:d5b85bc9e87b | 112 | //**** Função que volta o cursor para (1,1): **** |
kaiquedog | 1:d5b85bc9e87b | 113 | void home(void){ |
kaiquedog | 1:d5b85bc9e87b | 114 | wait(0.002); |
kaiquedog | 1:d5b85bc9e87b | 115 | |
kaiquedog | 1:d5b85bc9e87b | 116 | dados = 0x0; |
kaiquedog | 1:d5b85bc9e87b | 117 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 118 | dados = 0x2; |
kaiquedog | 1:d5b85bc9e87b | 119 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 120 | |
kaiquedog | 1:d5b85bc9e87b | 121 | wait(0.002); |
kaiquedog | 1:d5b85bc9e87b | 122 | |
kaiquedog | 1:d5b85bc9e87b | 123 | _coluna = 1; |
kaiquedog | 1:d5b85bc9e87b | 124 | _linha = 1; |
kaiquedog | 1:d5b85bc9e87b | 125 | } |
kaiquedog | 1:d5b85bc9e87b | 126 | |
kaiquedog | 1:d5b85bc9e87b | 127 | //**** Função que manda o cursor para a direita: **** |
kaiquedog | 1:d5b85bc9e87b | 128 | void direita(void){ |
kaiquedog | 1:d5b85bc9e87b | 129 | wait(0.0002); |
kaiquedog | 1:d5b85bc9e87b | 130 | |
kaiquedog | 1:d5b85bc9e87b | 131 | dados = 0x1; |
kaiquedog | 1:d5b85bc9e87b | 132 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 133 | dados = 0x4; |
kaiquedog | 1:d5b85bc9e87b | 134 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 135 | |
kaiquedog | 1:d5b85bc9e87b | 136 | wait(0.0002); |
kaiquedog | 1:d5b85bc9e87b | 137 | |
kaiquedog | 1:d5b85bc9e87b | 138 | _coluna = _coluna+1; |
kaiquedog | 1:d5b85bc9e87b | 139 | |
kaiquedog | 1:d5b85bc9e87b | 140 | fim_de_curso(); |
kaiquedog | 1:d5b85bc9e87b | 141 | } |
kaiquedog | 1:d5b85bc9e87b | 142 | |
kaiquedog | 1:d5b85bc9e87b | 143 | //**** Função quem manda o cursor para a esquerda: **** |
kaiquedog | 1:d5b85bc9e87b | 144 | void esquerda(void){ |
kaiquedog | 1:d5b85bc9e87b | 145 | wait(0.0002); |
kaiquedog | 1:d5b85bc9e87b | 146 | |
kaiquedog | 1:d5b85bc9e87b | 147 | dados = 0x1; |
kaiquedog | 1:d5b85bc9e87b | 148 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 149 | dados = 0x0; |
kaiquedog | 1:d5b85bc9e87b | 150 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 151 | |
kaiquedog | 1:d5b85bc9e87b | 152 | wait(0.0002); |
kaiquedog | 1:d5b85bc9e87b | 153 | |
kaiquedog | 1:d5b85bc9e87b | 154 | _coluna = _coluna - 1; |
kaiquedog | 1:d5b85bc9e87b | 155 | |
kaiquedog | 1:d5b85bc9e87b | 156 | fim_de_curso(); |
kaiquedog | 0:4a5c6f06b26c | 157 | } |
kaiquedog | 0:4a5c6f06b26c | 158 | |
kaiquedog | 1:d5b85bc9e87b | 159 | //**** Função que apaga o que está no cursor: **** |
kaiquedog | 1:d5b85bc9e87b | 160 | void apaga(void){ |
kaiquedog | 1:d5b85bc9e87b | 161 | RS = 1; |
kaiquedog | 1:d5b85bc9e87b | 162 | |
kaiquedog | 1:d5b85bc9e87b | 163 | wait(0.002); |
kaiquedog | 1:d5b85bc9e87b | 164 | |
kaiquedog | 1:d5b85bc9e87b | 165 | dados = 0x2; |
kaiquedog | 1:d5b85bc9e87b | 166 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 167 | dados = 0x0; |
kaiquedog | 1:d5b85bc9e87b | 168 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 169 | |
kaiquedog | 1:d5b85bc9e87b | 170 | RS = 0; |
kaiquedog | 1:d5b85bc9e87b | 171 | |
kaiquedog | 1:d5b85bc9e87b | 172 | pos(_linha,_coluna); |
kaiquedog | 1:d5b85bc9e87b | 173 | } |
kaiquedog | 0:4a5c6f06b26c | 174 | |
kaiquedog | 1:d5b85bc9e87b | 175 | //**** Função que manda o display para linha de cima: **** |
kaiquedog | 1:d5b85bc9e87b | 176 | void cima(void){ |
kaiquedog | 1:d5b85bc9e87b | 177 | pos(1,_coluna); |
kaiquedog | 1:d5b85bc9e87b | 178 | |
kaiquedog | 1:d5b85bc9e87b | 179 | _linha = 1; |
kaiquedog | 1:d5b85bc9e87b | 180 | } |
kaiquedog | 1:d5b85bc9e87b | 181 | |
kaiquedog | 1:d5b85bc9e87b | 182 | //**** Função que manda o display para linha de baixo: **** |
kaiquedog | 1:d5b85bc9e87b | 183 | void baixo(void){ |
kaiquedog | 1:d5b85bc9e87b | 184 | pos(2,_coluna); |
kaiquedog | 1:d5b85bc9e87b | 185 | |
kaiquedog | 1:d5b85bc9e87b | 186 | _linha = 2; |
kaiquedog | 1:d5b85bc9e87b | 187 | } |
kaiquedog | 1:d5b85bc9e87b | 188 | |
kaiquedog | 1:d5b85bc9e87b | 189 | //**** Função que posiciona o cursor na linha e coluna inseridas: **** |
kaiquedog | 1:d5b85bc9e87b | 190 | void pos(int li, int co){ |
kaiquedog | 1:d5b85bc9e87b | 191 | home(); // Primeiro o cursor volta para (0,0) |
kaiquedog | 1:d5b85bc9e87b | 192 | wait(0.002); |
kaiquedog | 0:4a5c6f06b26c | 193 | |
kaiquedog | 1:d5b85bc9e87b | 194 | if (li == 1) // Se o usuário inseriu a linha 1 |
kaiquedog | 1:d5b85bc9e87b | 195 | { //esse comando faz o cursor andar |
kaiquedog | 1:d5b85bc9e87b | 196 | for(int i = 1; i < co; i++) //para a direita até a posição declarada |
kaiquedog | 1:d5b85bc9e87b | 197 | { |
kaiquedog | 1:d5b85bc9e87b | 198 | direita(); |
kaiquedog | 1:d5b85bc9e87b | 199 | } |
kaiquedog | 1:d5b85bc9e87b | 200 | } |
kaiquedog | 1:d5b85bc9e87b | 201 | |
kaiquedog | 1:d5b85bc9e87b | 202 | if (li == 2) // Se o usuário inseriu a linha 2 |
kaiquedog | 1:d5b85bc9e87b | 203 | { //Primeiro temos que mandar o cursor |
kaiquedog | 1:d5b85bc9e87b | 204 | dados = 0xC; //para a linha dois e depois andar |
kaiquedog | 1:d5b85bc9e87b | 205 | bate_enable(); //para a direita até a posição declarada |
kaiquedog | 1:d5b85bc9e87b | 206 | dados = 0x0; |
kaiquedog | 0:4a5c6f06b26c | 207 | bate_enable(); |
kaiquedog | 1:d5b85bc9e87b | 208 | for(int i = 1; i < co; i++) |
kaiquedog | 1:d5b85bc9e87b | 209 | { |
kaiquedog | 1:d5b85bc9e87b | 210 | direita(); |
kaiquedog | 1:d5b85bc9e87b | 211 | } |
kaiquedog | 1:d5b85bc9e87b | 212 | } |
kaiquedog | 1:d5b85bc9e87b | 213 | _coluna = co; |
kaiquedog | 1:d5b85bc9e87b | 214 | _linha = li; |
kaiquedog | 1:d5b85bc9e87b | 215 | } |
kaiquedog | 1:d5b85bc9e87b | 216 | |
kaiquedog | 1:d5b85bc9e87b | 217 | //**** Função que define se o cursor saiu do display: **** |
kaiquedog | 1:d5b85bc9e87b | 218 | void fim_de_curso (void){ |
kaiquedog | 1:d5b85bc9e87b | 219 | switch (_coluna) |
kaiquedog | 1:d5b85bc9e87b | 220 | { |
kaiquedog | 1:d5b85bc9e87b | 221 | case 17 : |
kaiquedog | 1:d5b85bc9e87b | 222 | switch (_linha){ |
kaiquedog | 1:d5b85bc9e87b | 223 | case 1 : pos(2,1); break; |
kaiquedog | 1:d5b85bc9e87b | 224 | case 2 : home(); break; |
kaiquedog | 1:d5b85bc9e87b | 225 | } |
kaiquedog | 1:d5b85bc9e87b | 226 | break; |
kaiquedog | 1:d5b85bc9e87b | 227 | case 0 : |
kaiquedog | 1:d5b85bc9e87b | 228 | switch (_linha){ |
kaiquedog | 1:d5b85bc9e87b | 229 | case 1 : pos(2,16); break; |
kaiquedog | 1:d5b85bc9e87b | 230 | case 2 : pos(1,16); break; |
kaiquedog | 1:d5b85bc9e87b | 231 | } |
kaiquedog | 1:d5b85bc9e87b | 232 | break; |
kaiquedog | 0:4a5c6f06b26c | 233 | } |
kaiquedog | 0:4a5c6f06b26c | 234 | } |
kaiquedog | 1:d5b85bc9e87b | 235 | |
kaiquedog | 1:d5b85bc9e87b | 236 | |
kaiquedog | 1:d5b85bc9e87b | 237 | |
kaiquedog | 1:d5b85bc9e87b | 238 |