ST7920 Testes

Dependencies:   mbed

Committer:
Marcelocostanzo
Date:
Wed Nov 06 10:58:12 2019 +0000
Revision:
0:d93bec0d412f
Child:
1:08481151e25e
ST7920 horizontal line

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marcelocostanzo 0:d93bec0d412f 1 #include "mbed.h"
Marcelocostanzo 0:d93bec0d412f 2 #define OFF 0
Marcelocostanzo 0:d93bec0d412f 3 #define ON 1
Marcelocostanzo 0:d93bec0d412f 4 #define CURSOR 0b00011100
Marcelocostanzo 0:d93bec0d412f 5
Marcelocostanzo 0:d93bec0d412f 6 BusOut DB(D5, D6, D7, D8, D9, D10, D11, D12); // DB0 - DB7 RESPECTIVAMENTE
Marcelocostanzo 0:d93bec0d412f 7 //BusOut DB(D12, D11, D10, D9, D8, D7, D6, D5); // DB7 - DB0 RESPECTIVAMENTE
Marcelocostanzo 0:d93bec0d412f 8
Marcelocostanzo 0:d93bec0d412f 9 DigitalOut RS(D2);
Marcelocostanzo 0:d93bec0d412f 10 DigitalOut RW(D3);
Marcelocostanzo 0:d93bec0d412f 11 DigitalOut EN(D4);
Marcelocostanzo 0:d93bec0d412f 12
Marcelocostanzo 0:d93bec0d412f 13 Serial pc(USBTX, USBRX);
Marcelocostanzo 0:d93bec0d412f 14
Marcelocostanzo 0:d93bec0d412f 15
Marcelocostanzo 0:d93bec0d412f 16 //imagem 11x9 trator
Marcelocostanzo 0:d93bec0d412f 17 unsigned char trator[]={
Marcelocostanzo 0:d93bec0d412f 18 0x00, 0x00, 0x1E, 0x00, 0x92, 0x00, 0x92, 0x00,
Marcelocostanzo 0:d93bec0d412f 19 0xFE, 0x03, 0xFB, 0x07, 0xF1, 0x03, 0x9B, 0x02,
Marcelocostanzo 0:d93bec0d412f 20 0x8E, 0x03};
Marcelocostanzo 0:d93bec0d412f 21
Marcelocostanzo 0:d93bec0d412f 22 int main()
Marcelocostanzo 0:d93bec0d412f 23 {
Marcelocostanzo 0:d93bec0d412f 24 pc.printf("OI \n\r");
Marcelocostanzo 0:d93bec0d412f 25 wait_ms(100);
Marcelocostanzo 0:d93bec0d412f 26
Marcelocostanzo 0:d93bec0d412f 27 //function set 8-bit mode
Marcelocostanzo 0:d93bec0d412f 28 RS = 0;
Marcelocostanzo 0:d93bec0d412f 29 RW = 0;
Marcelocostanzo 0:d93bec0d412f 30 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 31 EN = ON;
Marcelocostanzo 0:d93bec0d412f 32 DB = 0b00110000;
Marcelocostanzo 0:d93bec0d412f 33 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 34 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 35
Marcelocostanzo 0:d93bec0d412f 36 //function set 8-bit mode again
Marcelocostanzo 0:d93bec0d412f 37 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 38 RS = 0;
Marcelocostanzo 0:d93bec0d412f 39 RW = 0;
Marcelocostanzo 0:d93bec0d412f 40 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 41 EN = ON;
Marcelocostanzo 0:d93bec0d412f 42 DB = 0b00110000;
Marcelocostanzo 0:d93bec0d412f 43 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 44 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 45
Marcelocostanzo 0:d93bec0d412f 46 // display on
Marcelocostanzo 0:d93bec0d412f 47 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 48 RS = 0;
Marcelocostanzo 0:d93bec0d412f 49 RW = 0;
Marcelocostanzo 0:d93bec0d412f 50 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 51 EN = ON;
Marcelocostanzo 0:d93bec0d412f 52 DB = 0b00001100;
Marcelocostanzo 0:d93bec0d412f 53 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 54 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 55
Marcelocostanzo 0:d93bec0d412f 56 // cursor - Display shift right by 1, cursor also follows to shift.
Marcelocostanzo 0:d93bec0d412f 57 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 58 RS = 0;
Marcelocostanzo 0:d93bec0d412f 59 RW = 0;
Marcelocostanzo 0:d93bec0d412f 60 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 61 EN = ON;
Marcelocostanzo 0:d93bec0d412f 62 DB = 0b00011100;
Marcelocostanzo 0:d93bec0d412f 63 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 64 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 65
Marcelocostanzo 0:d93bec0d412f 66 // clear screen
Marcelocostanzo 0:d93bec0d412f 67 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 68 RS = 0;
Marcelocostanzo 0:d93bec0d412f 69 RW = 0;
Marcelocostanzo 0:d93bec0d412f 70 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 71 EN = ON;
Marcelocostanzo 0:d93bec0d412f 72 DB = 0b00000001;
Marcelocostanzo 0:d93bec0d412f 73 wait_us(2000);
Marcelocostanzo 0:d93bec0d412f 74 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 75
Marcelocostanzo 0:d93bec0d412f 76 // Returns to home. Cursor moves to starting point
Marcelocostanzo 0:d93bec0d412f 77 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 78 RS = 0;
Marcelocostanzo 0:d93bec0d412f 79 RW = 0;
Marcelocostanzo 0:d93bec0d412f 80 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 81 EN = ON;
Marcelocostanzo 0:d93bec0d412f 82 DB = 0b00000010;
Marcelocostanzo 0:d93bec0d412f 83 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 84 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 85
Marcelocostanzo 0:d93bec0d412f 86 // Setting location to write characters. In this case 0,0 - Top Left Corner
Marcelocostanzo 0:d93bec0d412f 87 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 88 RS = 0;
Marcelocostanzo 0:d93bec0d412f 89 RW = 0;
Marcelocostanzo 0:d93bec0d412f 90 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 91 EN = ON;
Marcelocostanzo 0:d93bec0d412f 92 DB = 0x80;
Marcelocostanzo 0:d93bec0d412f 93 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 94 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 95
Marcelocostanzo 0:d93bec0d412f 96 wait(2);
Marcelocostanzo 0:d93bec0d412f 97
Marcelocostanzo 0:d93bec0d412f 98 // Extended instuction set, 8bit //
Marcelocostanzo 0:d93bec0d412f 99 wait_us(1000); //
Marcelocostanzo 0:d93bec0d412f 100 RS = 0; //
Marcelocostanzo 0:d93bec0d412f 101 RW = 0; //
Marcelocostanzo 0:d93bec0d412f 102 wait_us(100); //
Marcelocostanzo 0:d93bec0d412f 103 EN = ON; //
Marcelocostanzo 0:d93bec0d412f 104 DB = 0b00110100; //
Marcelocostanzo 0:d93bec0d412f 105 wait_us(100); //
Marcelocostanzo 0:d93bec0d412f 106 EN = OFF; //
Marcelocostanzo 0:d93bec0d412f 107 wait_us(20); //
Marcelocostanzo 0:d93bec0d412f 108 //-----> set graphics mode
Marcelocostanzo 0:d93bec0d412f 109 // Repeat instrution with bit1 set //
Marcelocostanzo 0:d93bec0d412f 110 wait_us(1000); //
Marcelocostanzo 0:d93bec0d412f 111 RS = 0; //
Marcelocostanzo 0:d93bec0d412f 112 RW = 0; //
Marcelocostanzo 0:d93bec0d412f 113 wait_us(100); //
Marcelocostanzo 0:d93bec0d412f 114 EN = ON; //
Marcelocostanzo 0:d93bec0d412f 115 DB = 0b00110110; //
Marcelocostanzo 0:d93bec0d412f 116 wait_us(100); //
Marcelocostanzo 0:d93bec0d412f 117 EN = OFF; //
Marcelocostanzo 0:d93bec0d412f 118 wait_us(20); //
Marcelocostanzo 0:d93bec0d412f 119
Marcelocostanzo 0:d93bec0d412f 120 //=========== This function set all the pixels to off in the graphic controller =================
Marcelocostanzo 0:d93bec0d412f 121 for(int y = 0; y < 64; y++)
Marcelocostanzo 0:d93bec0d412f 122 {
Marcelocostanzo 0:d93bec0d412f 123 if(y < 32)
Marcelocostanzo 0:d93bec0d412f 124 {
Marcelocostanzo 0:d93bec0d412f 125 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 126 RS = 0;
Marcelocostanzo 0:d93bec0d412f 127 RW = 0;
Marcelocostanzo 0:d93bec0d412f 128 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 129 EN = ON;
Marcelocostanzo 0:d93bec0d412f 130 DB = (0x80 | y);
Marcelocostanzo 0:d93bec0d412f 131 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 132 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 133 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 134
Marcelocostanzo 0:d93bec0d412f 135 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 136 RS = 0;
Marcelocostanzo 0:d93bec0d412f 137 RW = 0;
Marcelocostanzo 0:d93bec0d412f 138 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 139 EN = ON;
Marcelocostanzo 0:d93bec0d412f 140 DB = 0x80;
Marcelocostanzo 0:d93bec0d412f 141 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 142 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 143 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 144 }
Marcelocostanzo 0:d93bec0d412f 145
Marcelocostanzo 0:d93bec0d412f 146 else
Marcelocostanzo 0:d93bec0d412f 147 {
Marcelocostanzo 0:d93bec0d412f 148 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 149 RS = 0;
Marcelocostanzo 0:d93bec0d412f 150 RW = 0;
Marcelocostanzo 0:d93bec0d412f 151 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 152 EN = ON;
Marcelocostanzo 0:d93bec0d412f 153 DB = (0x80 | (y - 32));
Marcelocostanzo 0:d93bec0d412f 154 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 155 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 156 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 157
Marcelocostanzo 0:d93bec0d412f 158 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 159 RS = 0;
Marcelocostanzo 0:d93bec0d412f 160 RW = 0;
Marcelocostanzo 0:d93bec0d412f 161 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 162 EN = ON;
Marcelocostanzo 0:d93bec0d412f 163 DB = 0x88;
Marcelocostanzo 0:d93bec0d412f 164 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 165 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 166 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 167 }
Marcelocostanzo 0:d93bec0d412f 168
Marcelocostanzo 0:d93bec0d412f 169 for(int x = 0; x < 16; x++)
Marcelocostanzo 0:d93bec0d412f 170 {
Marcelocostanzo 0:d93bec0d412f 171 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 172 RS = 1;
Marcelocostanzo 0:d93bec0d412f 173 RW = 0;
Marcelocostanzo 0:d93bec0d412f 174 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 175 EN = ON;
Marcelocostanzo 0:d93bec0d412f 176 DB = 0x00;
Marcelocostanzo 0:d93bec0d412f 177 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 178 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 179 wait_us(20);
Marcelocostanzo 0:d93bec0d412f 180 }
Marcelocostanzo 0:d93bec0d412f 181 }
Marcelocostanzo 0:d93bec0d412f 182
Marcelocostanzo 0:d93bec0d412f 183
Marcelocostanzo 0:d93bec0d412f 184 //desenhando uma linha de tamanho T em Y, com X offset
Marcelocostanzo 0:d93bec0d412f 185
Marcelocostanzo 0:d93bec0d412f 186 unsigned char X = 0; // 0 até 7
Marcelocostanzo 0:d93bec0d412f 187 unsigned char Y = 0; // 0 até 31
Marcelocostanzo 0:d93bec0d412f 188 unsigned int T = 5; // 1 até 256
Marcelocostanzo 0:d93bec0d412f 189
Marcelocostanzo 0:d93bec0d412f 190 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 191 RS = 0;
Marcelocostanzo 0:d93bec0d412f 192 RW = 0;
Marcelocostanzo 0:d93bec0d412f 193 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 194 EN = ON;
Marcelocostanzo 0:d93bec0d412f 195 DB = 0x80 | Y;
Marcelocostanzo 0:d93bec0d412f 196 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 197 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 198 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 199
Marcelocostanzo 0:d93bec0d412f 200 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 201 RS = 0;
Marcelocostanzo 0:d93bec0d412f 202 RW = 0;
Marcelocostanzo 0:d93bec0d412f 203 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 204 EN = ON;
Marcelocostanzo 0:d93bec0d412f 205 DB = 0x80 | X;
Marcelocostanzo 0:d93bec0d412f 206 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 207 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 208 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 209
Marcelocostanzo 0:d93bec0d412f 210 for(int i = 0; i < (T / 8); i++)
Marcelocostanzo 0:d93bec0d412f 211 {
Marcelocostanzo 0:d93bec0d412f 212 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 213 RS = 1;
Marcelocostanzo 0:d93bec0d412f 214 RW = 0;
Marcelocostanzo 0:d93bec0d412f 215 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 216 EN = ON;
Marcelocostanzo 0:d93bec0d412f 217 DB = (255);
Marcelocostanzo 0:d93bec0d412f 218 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 219 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 220 wait_us(20);
Marcelocostanzo 0:d93bec0d412f 221 }
Marcelocostanzo 0:d93bec0d412f 222
Marcelocostanzo 0:d93bec0d412f 223 if(T%8 != 0)
Marcelocostanzo 0:d93bec0d412f 224 {
Marcelocostanzo 0:d93bec0d412f 225 int T_rest = T - ((T / 8) * 8);
Marcelocostanzo 0:d93bec0d412f 226 int bus_rest;
Marcelocostanzo 0:d93bec0d412f 227
Marcelocostanzo 0:d93bec0d412f 228 switch (T_rest)
Marcelocostanzo 0:d93bec0d412f 229 {
Marcelocostanzo 0:d93bec0d412f 230 case 1: bus_rest = 0x80; break;
Marcelocostanzo 0:d93bec0d412f 231 case 2: bus_rest = 0xC0; break;
Marcelocostanzo 0:d93bec0d412f 232 case 3: bus_rest = 0xE0; break;
Marcelocostanzo 0:d93bec0d412f 233 case 4: bus_rest = 0xF0; break;
Marcelocostanzo 0:d93bec0d412f 234 case 5: bus_rest = 0xF8; break;
Marcelocostanzo 0:d93bec0d412f 235 case 6: bus_rest = 0xFC; break;
Marcelocostanzo 0:d93bec0d412f 236 case 7: bus_rest = 0xFE; break;
Marcelocostanzo 0:d93bec0d412f 237 }
Marcelocostanzo 0:d93bec0d412f 238 pc.printf("%x\n\r",bus_rest);
Marcelocostanzo 0:d93bec0d412f 239 wait_us(1000);
Marcelocostanzo 0:d93bec0d412f 240 RS = 1;
Marcelocostanzo 0:d93bec0d412f 241 RW = 0;
Marcelocostanzo 0:d93bec0d412f 242 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 243 EN = ON;
Marcelocostanzo 0:d93bec0d412f 244 DB = bus_rest; // tem que ser 254 no exemplo de T 255
Marcelocostanzo 0:d93bec0d412f 245 wait_us(100);
Marcelocostanzo 0:d93bec0d412f 246 EN = OFF;
Marcelocostanzo 0:d93bec0d412f 247 wait_us(20);
Marcelocostanzo 0:d93bec0d412f 248 }
Marcelocostanzo 0:d93bec0d412f 249
Marcelocostanzo 0:d93bec0d412f 250
Marcelocostanzo 0:d93bec0d412f 251 pc.printf("teste 11 \n\r");
Marcelocostanzo 0:d93bec0d412f 252
Marcelocostanzo 0:d93bec0d412f 253 while(1)
Marcelocostanzo 0:d93bec0d412f 254 {
Marcelocostanzo 0:d93bec0d412f 255
Marcelocostanzo 0:d93bec0d412f 256 }
Marcelocostanzo 0:d93bec0d412f 257 }