Sz_Insper / Mbed 2 deprecated ST7920_TEST_lines_sem_lib_v3_vertical

Dependencies:   mbed

Committer:
Marcelocostanzo
Date:
Wed Nov 06 10:57:13 2019 +0000
Revision:
0:7617a8b3a4a7
ST7920 vertical line

Who changed what in which revision?

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