TextLCD library for controlling various LCD panels based on the HD44780 4-bit interface

Dependencies:   mbed

Fork of TextLCD by Simon Ford

Committer:
a00958821
Date:
Wed Oct 05 21:47:44 2016 +0000
Revision:
9:a504aa8ce73b
Laboratio 4, clase de micro controladores. Basic LCD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
a00958821 9:a504aa8ce73b 1 #include "mbed.h"
a00958821 9:a504aa8ce73b 2 #include "TextLCD.h"
a00958821 9:a504aa8ce73b 3
a00958821 9:a504aa8ce73b 4 TextLCD lcd(D2, D3, D4, D5, D6, D7); // rs, e, d4-d7
a00958821 9:a504aa8ce73b 5
a00958821 9:a504aa8ce73b 6 DigitalOut col1 (D8);
a00958821 9:a504aa8ce73b 7 DigitalOut col2 (D9);
a00958821 9:a504aa8ce73b 8 DigitalOut col3 (D10);
a00958821 9:a504aa8ce73b 9 DigitalOut col4 (D11);
a00958821 9:a504aa8ce73b 10 DigitalIn fila1 (A5);
a00958821 9:a504aa8ce73b 11 DigitalIn fila2 (A4);
a00958821 9:a504aa8ce73b 12 DigitalIn fila3 (A3);
a00958821 9:a504aa8ce73b 13 DigitalIn fila4 (A2);
a00958821 9:a504aa8ce73b 14 DigitalIn Reset (D12);
a00958821 9:a504aa8ce73b 15 DigitalIn Next (USER_BUTTON);
a00958821 9:a504aa8ce73b 16
a00958821 9:a504aa8ce73b 17 char Simbolos[4][4] = {
a00958821 9:a504aa8ce73b 18 {'1','2','3','A'},
a00958821 9:a504aa8ce73b 19 {'4','5','6','B'},
a00958821 9:a504aa8ce73b 20 {'7','8','9','C'},
a00958821 9:a504aa8ce73b 21 {'*','0','#','D'}
a00958821 9:a504aa8ce73b 22 };
a00958821 9:a504aa8ce73b 23 int usrInput();
a00958821 9:a504aa8ce73b 24 void turnOffteclado();
a00958821 9:a504aa8ce73b 25 int * teclado();
a00958821 9:a504aa8ce73b 26 void printLCD(int a, int b);
a00958821 9:a504aa8ce73b 27
a00958821 9:a504aa8ce73b 28
a00958821 9:a504aa8ce73b 29 int n = 0;
a00958821 9:a504aa8ce73b 30
a00958821 9:a504aa8ce73b 31 int main() {
a00958821 9:a504aa8ce73b 32
a00958821 9:a504aa8ce73b 33 int j = 0;
a00958821 9:a504aa8ce73b 34 while(1){
a00958821 9:a504aa8ce73b 35 if (n == 0)
a00958821 9:a504aa8ce73b 36 {
a00958821 9:a504aa8ce73b 37 j=0;
a00958821 9:a504aa8ce73b 38 lcd.cls();
a00958821 9:a504aa8ce73b 39 wait(1);
a00958821 9:a504aa8ce73b 40 lcd.printf("A");
a00958821 9:a504aa8ce73b 41 while (j == 0)
a00958821 9:a504aa8ce73b 42 {
a00958821 9:a504aa8ce73b 43 if (Next == 0)
a00958821 9:a504aa8ce73b 44 {
a00958821 9:a504aa8ce73b 45 j = 1;
a00958821 9:a504aa8ce73b 46 n = 1;
a00958821 9:a504aa8ce73b 47 }
a00958821 9:a504aa8ce73b 48 }
a00958821 9:a504aa8ce73b 49 }
a00958821 9:a504aa8ce73b 50 if (n == 1)
a00958821 9:a504aa8ce73b 51 {
a00958821 9:a504aa8ce73b 52 j = 0;
a00958821 9:a504aa8ce73b 53 lcd.cls();
a00958821 9:a504aa8ce73b 54 wait(1);
a00958821 9:a504aa8ce73b 55 lcd.printf("Unas kguamas o k");
a00958821 9:a504aa8ce73b 56 while (j == 0)
a00958821 9:a504aa8ce73b 57 {
a00958821 9:a504aa8ce73b 58 if (Next == 0)
a00958821 9:a504aa8ce73b 59 {
a00958821 9:a504aa8ce73b 60 j = 1;
a00958821 9:a504aa8ce73b 61 n =2;
a00958821 9:a504aa8ce73b 62 }
a00958821 9:a504aa8ce73b 63 }
a00958821 9:a504aa8ce73b 64 }
a00958821 9:a504aa8ce73b 65 while (n == 2)
a00958821 9:a504aa8ce73b 66 {
a00958821 9:a504aa8ce73b 67 j = 0;
a00958821 9:a504aa8ce73b 68 lcd.cls();
a00958821 9:a504aa8ce73b 69 wait(1);
a00958821 9:a504aa8ce73b 70 lcd.printf("Unas kguamas o kDos kguamas o k?");
a00958821 9:a504aa8ce73b 71 while (j == 0)
a00958821 9:a504aa8ce73b 72 {
a00958821 9:a504aa8ce73b 73 if (Next == 0)
a00958821 9:a504aa8ce73b 74 {
a00958821 9:a504aa8ce73b 75 j = 1;
a00958821 9:a504aa8ce73b 76 n =3;
a00958821 9:a504aa8ce73b 77 }
a00958821 9:a504aa8ce73b 78 }
a00958821 9:a504aa8ce73b 79 }
a00958821 9:a504aa8ce73b 80 lcd.cls();
a00958821 9:a504aa8ce73b 81 wait(1);
a00958821 9:a504aa8ce73b 82 while (n == 3)
a00958821 9:a504aa8ce73b 83 {
a00958821 9:a504aa8ce73b 84 j = 0;
a00958821 9:a504aa8ce73b 85 int *Index ;
a00958821 9:a504aa8ce73b 86 Index = teclado();
a00958821 9:a504aa8ce73b 87 printLCD(Index[0],Index[1]);
a00958821 9:a504aa8ce73b 88
a00958821 9:a504aa8ce73b 89 }
a00958821 9:a504aa8ce73b 90
a00958821 9:a504aa8ce73b 91
a00958821 9:a504aa8ce73b 92 }
a00958821 9:a504aa8ce73b 93 }
a00958821 9:a504aa8ce73b 94
a00958821 9:a504aa8ce73b 95 void printLCD(int a, int b)
a00958821 9:a504aa8ce73b 96 {
a00958821 9:a504aa8ce73b 97 lcd.printf("%c",Simbolos[a][b]);
a00958821 9:a504aa8ce73b 98 wait(.3);
a00958821 9:a504aa8ce73b 99 }
a00958821 9:a504aa8ce73b 100
a00958821 9:a504aa8ce73b 101 int * teclado()
a00958821 9:a504aa8ce73b 102 {
a00958821 9:a504aa8ce73b 103 static int r[2];
a00958821 9:a504aa8ce73b 104 turnOffteclado();
a00958821 9:a504aa8ce73b 105 int numero;
a00958821 9:a504aa8ce73b 106 while(1)
a00958821 9:a504aa8ce73b 107 {
a00958821 9:a504aa8ce73b 108 if (Next == 0)
a00958821 9:a504aa8ce73b 109 {
a00958821 9:a504aa8ce73b 110 lcd.cls();
a00958821 9:a504aa8ce73b 111 n = 0;
a00958821 9:a504aa8ce73b 112 wait_ms(30);
a00958821 9:a504aa8ce73b 113 break;
a00958821 9:a504aa8ce73b 114 }
a00958821 9:a504aa8ce73b 115
a00958821 9:a504aa8ce73b 116 col1 = 1;
a00958821 9:a504aa8ce73b 117 numero = usrInput();
a00958821 9:a504aa8ce73b 118 if (numero != 0)
a00958821 9:a504aa8ce73b 119 {
a00958821 9:a504aa8ce73b 120 r[0]=numero-1;
a00958821 9:a504aa8ce73b 121 r[1]=0;
a00958821 9:a504aa8ce73b 122 //wait_ms(30);
a00958821 9:a504aa8ce73b 123 return r;
a00958821 9:a504aa8ce73b 124 }
a00958821 9:a504aa8ce73b 125 turnOffteclado();
a00958821 9:a504aa8ce73b 126 col2 = 1;
a00958821 9:a504aa8ce73b 127 numero = usrInput();
a00958821 9:a504aa8ce73b 128 if (numero != 0)
a00958821 9:a504aa8ce73b 129 {
a00958821 9:a504aa8ce73b 130 r[0]=numero-1;
a00958821 9:a504aa8ce73b 131 r[1]=1;
a00958821 9:a504aa8ce73b 132 //wait_ms(30);
a00958821 9:a504aa8ce73b 133 return r;
a00958821 9:a504aa8ce73b 134 }
a00958821 9:a504aa8ce73b 135 turnOffteclado();
a00958821 9:a504aa8ce73b 136 col3 = 1;
a00958821 9:a504aa8ce73b 137 numero = usrInput();
a00958821 9:a504aa8ce73b 138 if (numero != 0)
a00958821 9:a504aa8ce73b 139 {
a00958821 9:a504aa8ce73b 140 r[0]=numero-1;
a00958821 9:a504aa8ce73b 141 r[1]=2;
a00958821 9:a504aa8ce73b 142 //wait_ms(30);
a00958821 9:a504aa8ce73b 143 return r;
a00958821 9:a504aa8ce73b 144 }
a00958821 9:a504aa8ce73b 145 turnOffteclado();
a00958821 9:a504aa8ce73b 146 col4 = 1;
a00958821 9:a504aa8ce73b 147 numero = usrInput();
a00958821 9:a504aa8ce73b 148 if (numero != 0)
a00958821 9:a504aa8ce73b 149 {
a00958821 9:a504aa8ce73b 150 r[0]=numero-1;
a00958821 9:a504aa8ce73b 151 r[1]=3;
a00958821 9:a504aa8ce73b 152 //wait_ms(30);
a00958821 9:a504aa8ce73b 153 return r;
a00958821 9:a504aa8ce73b 154 }
a00958821 9:a504aa8ce73b 155 turnOffteclado();
a00958821 9:a504aa8ce73b 156
a00958821 9:a504aa8ce73b 157 }
a00958821 9:a504aa8ce73b 158 }
a00958821 9:a504aa8ce73b 159
a00958821 9:a504aa8ce73b 160 void turnOffteclado()
a00958821 9:a504aa8ce73b 161 {
a00958821 9:a504aa8ce73b 162 col1 = col2 = col3 = col4 = 0;
a00958821 9:a504aa8ce73b 163 }
a00958821 9:a504aa8ce73b 164
a00958821 9:a504aa8ce73b 165 int usrInput()
a00958821 9:a504aa8ce73b 166 {
a00958821 9:a504aa8ce73b 167 if (fila1 == 1)
a00958821 9:a504aa8ce73b 168 {
a00958821 9:a504aa8ce73b 169 return 1;
a00958821 9:a504aa8ce73b 170 }
a00958821 9:a504aa8ce73b 171 else if (fila2 == 1)
a00958821 9:a504aa8ce73b 172 {
a00958821 9:a504aa8ce73b 173 return 2;
a00958821 9:a504aa8ce73b 174 }
a00958821 9:a504aa8ce73b 175 else if (fila3 == 1)
a00958821 9:a504aa8ce73b 176 {
a00958821 9:a504aa8ce73b 177 return 3;
a00958821 9:a504aa8ce73b 178 }
a00958821 9:a504aa8ce73b 179 else if (fila4 == 1)
a00958821 9:a504aa8ce73b 180 {
a00958821 9:a504aa8ce73b 181 return 4;
a00958821 9:a504aa8ce73b 182 }
a00958821 9:a504aa8ce73b 183 else{
a00958821 9:a504aa8ce73b 184 return 0;
a00958821 9:a504aa8ce73b 185 }
a00958821 9:a504aa8ce73b 186 }