faf

Dependencies:   mbed

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?

UserRevisionLine numberNew 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