Dependencies: EthernetNetIf NTPClient_NetServices mbed
dotmatrix.c@0:f49394bec833, 2011-12-11 (annotated)
- Committer:
- suupen
- Date:
- Sun Dec 11 00:24:18 2011 +0000
- Revision:
- 0:f49394bec833
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 0:f49394bec833 | 1 | /***************************************************** |
suupen | 0:f49394bec833 | 2 | * dot matrix led drive |
suupen | 0:f49394bec833 | 3 | * |
suupen | 0:f49394bec833 | 4 | * Display : LT5016M1(16*16 dot matrix LED red&green led) http://akizukidenshi.com/catalog/g/gI-00039/ |
suupen | 0:f49394bec833 | 5 | * LED Driver : TLC5940 http://focus.ti.com/lit/ds/slvs515c/slvs515c.pdf |
suupen | 0:f49394bec833 | 6 | * |
suupen | 0:f49394bec833 | 7 | * V0.0 : 110529A_dotMatrixClock.zip |
suupen | 0:f49394bec833 | 8 | * V0.1 : 110601A_demo.zip |
suupen | 0:f49394bec833 | 9 | * fuyo code sakujo (dosa ha V0.0 to onazi) |
suupen | 0:f49394bec833 | 10 | *****************************************************/ |
suupen | 0:f49394bec833 | 11 | #define _DOTMATRIX_C |
suupen | 0:f49394bec833 | 12 | |
suupen | 0:f49394bec833 | 13 | #define DBG |
suupen | 0:f49394bec833 | 14 | |
suupen | 0:f49394bec833 | 15 | #include "Types.h" |
suupen | 0:f49394bec833 | 16 | #include "mbed.h" |
suupen | 0:f49394bec833 | 17 | #include "dotmatrix.h" |
suupen | 0:f49394bec833 | 18 | #include "display.h" |
suupen | 0:f49394bec833 | 19 | #ifdef DBG |
suupen | 0:f49394bec833 | 20 | #include "TLC5940.h" |
suupen | 0:f49394bec833 | 21 | #endif //DBG |
suupen | 0:f49394bec833 | 22 | |
suupen | 0:f49394bec833 | 23 | static uint16_t DT_grayData[100]; //100kaicho data wo TLC5940 no grayData(4096kaicho)ni henkan suru data table |
suupen | 0:f49394bec833 | 24 | |
suupen | 0:f49394bec833 | 25 | /******************************Function declaration***************************/ |
suupen | 0:f49394bec833 | 26 | #ifndef DBG |
suupen | 0:f49394bec833 | 27 | static void tlc5940DotCorrection(void); |
suupen | 0:f49394bec833 | 28 | static void tlc5940SpiInitalize(void); |
suupen | 0:f49394bec833 | 29 | static void tlc5940GrayDataClear(void); |
suupen | 0:f49394bec833 | 30 | #endif //DBG |
suupen | 0:f49394bec833 | 31 | static void tlc5940GrayDataDisplayAndSend(int8_t rowNo); |
suupen | 0:f49394bec833 | 32 | static void dotmatrix_displayDataTransform(void); |
suupen | 0:f49394bec833 | 33 | |
suupen | 0:f49394bec833 | 34 | /*****************************Macro definition********************************/ |
suupen | 0:f49394bec833 | 35 | #ifdef DBG |
suupen | 0:f49394bec833 | 36 | TLC5940 tlc5940(p5, p6, p7, p19, p22, p21, 2); |
suupen | 0:f49394bec833 | 37 | #else //~DBG |
suupen | 0:f49394bec833 | 38 | // TLC5940 control |
suupen | 0:f49394bec833 | 39 | SPI spi(p5, p6, p7); //SIN (p6), SCLK,GSCLK(p7) |
suupen | 0:f49394bec833 | 40 | |
suupen | 0:f49394bec833 | 41 | DigitalOut XLAT(p19); |
suupen | 0:f49394bec833 | 42 | DigitalOut BLANK(p22); |
suupen | 0:f49394bec833 | 43 | DigitalOut VPRG(p21); |
suupen | 0:f49394bec833 | 44 | #endif // DBG |
suupen | 0:f49394bec833 | 45 | |
suupen | 0:f49394bec833 | 46 | // TD62783APG (dot matrix ROW1 - ROW16 drive) |
suupen | 0:f49394bec833 | 47 | DigitalOut ROW1(p16); |
suupen | 0:f49394bec833 | 48 | DigitalOut ROW2(p15); |
suupen | 0:f49394bec833 | 49 | DigitalOut ROW3(p14); |
suupen | 0:f49394bec833 | 50 | DigitalOut ROW4(p13); |
suupen | 0:f49394bec833 | 51 | DigitalOut ROW5(p12); |
suupen | 0:f49394bec833 | 52 | DigitalOut ROW6(p11); |
suupen | 0:f49394bec833 | 53 | DigitalOut ROW7(p10); |
suupen | 0:f49394bec833 | 54 | DigitalOut ROW8(p9); |
suupen | 0:f49394bec833 | 55 | |
suupen | 0:f49394bec833 | 56 | DigitalOut ROW9(p23); |
suupen | 0:f49394bec833 | 57 | DigitalOut ROW10(p24); |
suupen | 0:f49394bec833 | 58 | DigitalOut ROW11(p25); |
suupen | 0:f49394bec833 | 59 | DigitalOut ROW12(p26); |
suupen | 0:f49394bec833 | 60 | DigitalOut ROW13(p27); |
suupen | 0:f49394bec833 | 61 | DigitalOut ROW14(p28); |
suupen | 0:f49394bec833 | 62 | DigitalOut ROW15(p29); |
suupen | 0:f49394bec833 | 63 | DigitalOut ROW16(p30); |
suupen | 0:f49394bec833 | 64 | |
suupen | 0:f49394bec833 | 65 | #define Z_ROWMIN (0) |
suupen | 0:f49394bec833 | 66 | #define Z_ROWMAX (15) // ROW Max (ROWNo = 0 to 15) |
suupen | 0:f49394bec833 | 67 | |
suupen | 0:f49394bec833 | 68 | /*****************************Global variable*********************************/ |
suupen | 0:f49394bec833 | 69 | // dot matrix led grayscale data |
suupen | 0:f49394bec833 | 70 | uint16_t D_dotDisplay[2][16][16]; |
suupen | 0:f49394bec833 | 71 | /* |
suupen | 0:f49394bec833 | 72 | [color][x][y]: |
suupen | 0:f49394bec833 | 73 | color 0:red data 1:green data |
suupen | 0:f49394bec833 | 74 | x : 0 - 15 |
suupen | 0:f49394bec833 | 75 | y : 0 - 15 |
suupen | 0:f49394bec833 | 76 | |
suupen | 0:f49394bec833 | 77 | data : 0 - 4095 |
suupen | 0:f49394bec833 | 78 | */ |
suupen | 0:f49394bec833 | 79 | |
suupen | 0:f49394bec833 | 80 | |
suupen | 0:f49394bec833 | 81 | |
suupen | 0:f49394bec833 | 82 | |
suupen | 0:f49394bec833 | 83 | |
suupen | 0:f49394bec833 | 84 | /****************************************************************************** |
suupen | 0:f49394bec833 | 85 | Name : dot matrix output |
suupen | 0:f49394bec833 | 86 | Parameters : none |
suupen | 0:f49394bec833 | 87 | Returns : nothing |
suupen | 0:f49394bec833 | 88 | Description: extren call |
suupen | 0:f49394bec833 | 89 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 90 | void dotmatrix_output(void) { |
suupen | 0:f49394bec833 | 91 | static int8_t cnt = Z_ROWMAX; |
suupen | 0:f49394bec833 | 92 | |
suupen | 0:f49394bec833 | 93 | |
suupen | 0:f49394bec833 | 94 | |
suupen | 0:f49394bec833 | 95 | if (++cnt > Z_ROWMAX) { |
suupen | 0:f49394bec833 | 96 | F_kakikae = 1; |
suupen | 0:f49394bec833 | 97 | cnt = Z_ROWMIN; |
suupen | 0:f49394bec833 | 98 | dotmatrix_displayDataTransform(); // hyoji data henkan |
suupen | 0:f49394bec833 | 99 | F_kakikae = 0; |
suupen | 0:f49394bec833 | 100 | } |
suupen | 0:f49394bec833 | 101 | |
suupen | 0:f49394bec833 | 102 | // ROW All Off |
suupen | 0:f49394bec833 | 103 | ROW1 = 0; |
suupen | 0:f49394bec833 | 104 | ROW2 = 0; |
suupen | 0:f49394bec833 | 105 | ROW3 = 0; |
suupen | 0:f49394bec833 | 106 | ROW4 = 0; |
suupen | 0:f49394bec833 | 107 | ROW5 = 0; |
suupen | 0:f49394bec833 | 108 | ROW6 = 0; |
suupen | 0:f49394bec833 | 109 | ROW7 = 0; |
suupen | 0:f49394bec833 | 110 | ROW8 = 0; |
suupen | 0:f49394bec833 | 111 | ROW9 = 0; |
suupen | 0:f49394bec833 | 112 | ROW10 = 0; |
suupen | 0:f49394bec833 | 113 | ROW11 = 0; |
suupen | 0:f49394bec833 | 114 | ROW12 = 0; |
suupen | 0:f49394bec833 | 115 | ROW13 = 0; |
suupen | 0:f49394bec833 | 116 | ROW14 = 0; |
suupen | 0:f49394bec833 | 117 | ROW15 = 0; |
suupen | 0:f49394bec833 | 118 | ROW16 = 0; |
suupen | 0:f49394bec833 | 119 | |
suupen | 0:f49394bec833 | 120 | |
suupen | 0:f49394bec833 | 121 | |
suupen | 0:f49394bec833 | 122 | |
suupen | 0:f49394bec833 | 123 | // ROW out |
suupen | 0:f49394bec833 | 124 | switch (cnt) { |
suupen | 0:f49394bec833 | 125 | case 0: |
suupen | 0:f49394bec833 | 126 | ROW1 = 1; |
suupen | 0:f49394bec833 | 127 | break; |
suupen | 0:f49394bec833 | 128 | case 1: |
suupen | 0:f49394bec833 | 129 | ROW2 = 1; |
suupen | 0:f49394bec833 | 130 | break; |
suupen | 0:f49394bec833 | 131 | case 2: |
suupen | 0:f49394bec833 | 132 | ROW3 = 1; |
suupen | 0:f49394bec833 | 133 | break; |
suupen | 0:f49394bec833 | 134 | case 3: |
suupen | 0:f49394bec833 | 135 | ROW4 = 1; |
suupen | 0:f49394bec833 | 136 | break; |
suupen | 0:f49394bec833 | 137 | case 4: |
suupen | 0:f49394bec833 | 138 | ROW5 = 1; |
suupen | 0:f49394bec833 | 139 | break; |
suupen | 0:f49394bec833 | 140 | case 5: |
suupen | 0:f49394bec833 | 141 | ROW6 = 1; |
suupen | 0:f49394bec833 | 142 | break; |
suupen | 0:f49394bec833 | 143 | case 6: |
suupen | 0:f49394bec833 | 144 | ROW7 = 1; |
suupen | 0:f49394bec833 | 145 | break; |
suupen | 0:f49394bec833 | 146 | case 7: |
suupen | 0:f49394bec833 | 147 | ROW8 = 1; |
suupen | 0:f49394bec833 | 148 | break; |
suupen | 0:f49394bec833 | 149 | case 8: |
suupen | 0:f49394bec833 | 150 | ROW9 = 1; |
suupen | 0:f49394bec833 | 151 | break; |
suupen | 0:f49394bec833 | 152 | case 9: |
suupen | 0:f49394bec833 | 153 | ROW10 = 1; |
suupen | 0:f49394bec833 | 154 | break; |
suupen | 0:f49394bec833 | 155 | case 10: |
suupen | 0:f49394bec833 | 156 | ROW11 = 1; |
suupen | 0:f49394bec833 | 157 | break; |
suupen | 0:f49394bec833 | 158 | case 11: |
suupen | 0:f49394bec833 | 159 | ROW12 = 1; |
suupen | 0:f49394bec833 | 160 | break; |
suupen | 0:f49394bec833 | 161 | case 12: |
suupen | 0:f49394bec833 | 162 | ROW13 = 1; |
suupen | 0:f49394bec833 | 163 | break; |
suupen | 0:f49394bec833 | 164 | case 13: |
suupen | 0:f49394bec833 | 165 | ROW14 = 1; |
suupen | 0:f49394bec833 | 166 | break; |
suupen | 0:f49394bec833 | 167 | case 14: |
suupen | 0:f49394bec833 | 168 | ROW15 = 1; |
suupen | 0:f49394bec833 | 169 | break; |
suupen | 0:f49394bec833 | 170 | case 15: |
suupen | 0:f49394bec833 | 171 | ROW16 = 1; |
suupen | 0:f49394bec833 | 172 | break; |
suupen | 0:f49394bec833 | 173 | default: |
suupen | 0:f49394bec833 | 174 | cnt = 0; |
suupen | 0:f49394bec833 | 175 | break; |
suupen | 0:f49394bec833 | 176 | } |
suupen | 0:f49394bec833 | 177 | |
suupen | 0:f49394bec833 | 178 | // display data set |
suupen | 0:f49394bec833 | 179 | // ROW = Hi no atoni Column output |
suupen | 0:f49394bec833 | 180 | tlc5940GrayDataDisplayAndSend(cnt); |
suupen | 0:f49394bec833 | 181 | |
suupen | 0:f49394bec833 | 182 | } |
suupen | 0:f49394bec833 | 183 | |
suupen | 0:f49394bec833 | 184 | /****************************************************************************** |
suupen | 0:f49394bec833 | 185 | Name : TLC5940 initalize |
suupen | 0:f49394bec833 | 186 | Parameters : none |
suupen | 0:f49394bec833 | 187 | Returns : nothing |
suupen | 0:f49394bec833 | 188 | Description: extren call |
suupen | 0:f49394bec833 | 189 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 190 | void dotmatrix_initialize(void){ |
suupen | 0:f49394bec833 | 191 | #ifndef DBG |
suupen | 0:f49394bec833 | 192 | tlc5940DotCorrection(); |
suupen | 0:f49394bec833 | 193 | tlc5940SpiInitalize(); |
suupen | 0:f49394bec833 | 194 | tlc5940GrayDataClear(); |
suupen | 0:f49394bec833 | 195 | #endif // DBG |
suupen | 0:f49394bec833 | 196 | } |
suupen | 0:f49394bec833 | 197 | |
suupen | 0:f49394bec833 | 198 | /****************************************************************************** |
suupen | 0:f49394bec833 | 199 | Name : Display data set demo initialize |
suupen | 0:f49394bec833 | 200 | Parameters : none |
suupen | 0:f49394bec833 | 201 | Returns : nothing |
suupen | 0:f49394bec833 | 202 | Description: extren call |
suupen | 0:f49394bec833 | 203 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 204 | void dotmatrix_demoInitialize(void) { |
suupen | 0:f49394bec833 | 205 | for(int8_t y = 0; y < 16; y++){ |
suupen | 0:f49394bec833 | 206 | for(int8_t x = 0; x < 16; x++){ |
suupen | 0:f49394bec833 | 207 | D_dotDisplay[0][x][y] = (4095 * x) / 15; |
suupen | 0:f49394bec833 | 208 | D_dotDisplay[1][x][y] = (4095 * y) / 15; |
suupen | 0:f49394bec833 | 209 | } |
suupen | 0:f49394bec833 | 210 | } |
suupen | 0:f49394bec833 | 211 | } |
suupen | 0:f49394bec833 | 212 | /****************************************************************************** |
suupen | 0:f49394bec833 | 213 | Name : Display data set demo |
suupen | 0:f49394bec833 | 214 | Parameters : none |
suupen | 0:f49394bec833 | 215 | Returns : nothing |
suupen | 0:f49394bec833 | 216 | Description: extren call |
suupen | 0:f49394bec833 | 217 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 218 | void dotmatrix_demo(void) { |
suupen | 0:f49394bec833 | 219 | |
suupen | 0:f49394bec833 | 220 | static int8_t x = 0; |
suupen | 0:f49394bec833 | 221 | static int8_t y = 0; |
suupen | 0:f49394bec833 | 222 | |
suupen | 0:f49394bec833 | 223 | for(x = 0; x < 16; x++){ |
suupen | 0:f49394bec833 | 224 | for(y = 0; y < 16; y++){ |
suupen | 0:f49394bec833 | 225 | D_dotDisplay[0][x][y] += 3; |
suupen | 0:f49394bec833 | 226 | D_dotDisplay[1][x][y] += 3; |
suupen | 0:f49394bec833 | 227 | } |
suupen | 0:f49394bec833 | 228 | } |
suupen | 0:f49394bec833 | 229 | } |
suupen | 0:f49394bec833 | 230 | |
suupen | 0:f49394bec833 | 231 | #ifndef DBG |
suupen | 0:f49394bec833 | 232 | /****************************************************************************** |
suupen | 0:f49394bec833 | 233 | Name : TLC5940 dot correction initalize |
suupen | 0:f49394bec833 | 234 | Parameters : none |
suupen | 0:f49394bec833 | 235 | Returns : nothing |
suupen | 0:f49394bec833 | 236 | Description: |
suupen | 0:f49394bec833 | 237 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 238 | static void tlc5940DotCorrection(void) { |
suupen | 0:f49394bec833 | 239 | VPRG = 1; |
suupen | 0:f49394bec833 | 240 | spi.format(6,0); |
suupen | 0:f49394bec833 | 241 | spi.frequency(30000000); |
suupen | 0:f49394bec833 | 242 | |
suupen | 0:f49394bec833 | 243 | |
suupen | 0:f49394bec833 | 244 | // VPRG = 1; |
suupen | 0:f49394bec833 | 245 | |
suupen | 0:f49394bec833 | 246 | for (int i = 0; i < (16 * 2); i++) { |
suupen | 0:f49394bec833 | 247 | int whoami = spi.write(63); |
suupen | 0:f49394bec833 | 248 | } |
suupen | 0:f49394bec833 | 249 | |
suupen | 0:f49394bec833 | 250 | XLAT = 1; |
suupen | 0:f49394bec833 | 251 | XLAT = 0; |
suupen | 0:f49394bec833 | 252 | } |
suupen | 0:f49394bec833 | 253 | #endif //DBG |
suupen | 0:f49394bec833 | 254 | |
suupen | 0:f49394bec833 | 255 | #ifndef DBG |
suupen | 0:f49394bec833 | 256 | /****************************************************************************** |
suupen | 0:f49394bec833 | 257 | Name : SPI Initalize (for TLC5960 control) |
suupen | 0:f49394bec833 | 258 | Parameters : none |
suupen | 0:f49394bec833 | 259 | Returns : nothing |
suupen | 0:f49394bec833 | 260 | Description: |
suupen | 0:f49394bec833 | 261 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 262 | static void tlc5940SpiInitalize(void) { |
suupen | 0:f49394bec833 | 263 | spi.format(12,0); |
suupen | 0:f49394bec833 | 264 | spi.frequency(30000000); |
suupen | 0:f49394bec833 | 265 | |
suupen | 0:f49394bec833 | 266 | VPRG = 0; |
suupen | 0:f49394bec833 | 267 | } |
suupen | 0:f49394bec833 | 268 | #endif //DBG |
suupen | 0:f49394bec833 | 269 | |
suupen | 0:f49394bec833 | 270 | #ifndef DBG |
suupen | 0:f49394bec833 | 271 | /****************************************************************************** |
suupen | 0:f49394bec833 | 272 | Name : TLC5940 Gray Data clear |
suupen | 0:f49394bec833 | 273 | Parameters : none |
suupen | 0:f49394bec833 | 274 | Returns : nothing |
suupen | 0:f49394bec833 | 275 | Description: |
suupen | 0:f49394bec833 | 276 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 277 | static void tlc5940GrayDataClear(void) { |
suupen | 0:f49394bec833 | 278 | |
suupen | 0:f49394bec833 | 279 | VPRG = 0; |
suupen | 0:f49394bec833 | 280 | |
suupen | 0:f49394bec833 | 281 | for (int i = 0; i < (16 * 2); i++) { |
suupen | 0:f49394bec833 | 282 | int whoami = spi.write(0); |
suupen | 0:f49394bec833 | 283 | } |
suupen | 0:f49394bec833 | 284 | |
suupen | 0:f49394bec833 | 285 | XLAT = 1; |
suupen | 0:f49394bec833 | 286 | XLAT = 0; |
suupen | 0:f49394bec833 | 287 | } |
suupen | 0:f49394bec833 | 288 | #endif //DBG |
suupen | 0:f49394bec833 | 289 | |
suupen | 0:f49394bec833 | 290 | /****************************************************************************** |
suupen | 0:f49394bec833 | 291 | Name : TLC5940 Gray Data Display & next data send |
suupen | 0:f49394bec833 | 292 | Parameters : rowNo 0 - 15 |
suupen | 0:f49394bec833 | 293 | Returns : nothing |
suupen | 0:f49394bec833 | 294 | Description: |
suupen | 0:f49394bec833 | 295 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 296 | #ifdef DBG |
suupen | 0:f49394bec833 | 297 | static void tlc5940GrayDataDisplayAndSend(int8_t rowNo){ |
suupen | 0:f49394bec833 | 298 | |
suupen | 0:f49394bec833 | 299 | uint8_t x; |
suupen | 0:f49394bec833 | 300 | int8_t sendRowNo = rowNo + 1; |
suupen | 0:f49394bec833 | 301 | uint16_t D_gray[2][16]; |
suupen | 0:f49394bec833 | 302 | |
suupen | 0:f49394bec833 | 303 | if(sendRowNo > 15){sendRowNo = 0;} |
suupen | 0:f49394bec833 | 304 | // green data send |
suupen | 0:f49394bec833 | 305 | for(x = 0; x < 16; x++){ |
suupen | 0:f49394bec833 | 306 | D_gray[1][x] = D_dotDisplay[1][x][sendRowNo]; |
suupen | 0:f49394bec833 | 307 | } |
suupen | 0:f49394bec833 | 308 | // red data send |
suupen | 0:f49394bec833 | 309 | for(x = 0; x < 16; x++){ |
suupen | 0:f49394bec833 | 310 | D_gray[0][x] = D_dotDisplay[0][15 - x][sendRowNo]; |
suupen | 0:f49394bec833 | 311 | } |
suupen | 0:f49394bec833 | 312 | |
suupen | 0:f49394bec833 | 313 | tlc5940.grayDataSetAndDisplay((uint16_t*)D_gray); |
suupen | 0:f49394bec833 | 314 | |
suupen | 0:f49394bec833 | 315 | } |
suupen | 0:f49394bec833 | 316 | #else //~DBG |
suupen | 0:f49394bec833 | 317 | static void tlc5940GrayDataDisplayAndSend(int8_t rowNo){ |
suupen | 0:f49394bec833 | 318 | |
suupen | 0:f49394bec833 | 319 | int8_t sendRowNo = rowNo + 1; |
suupen | 0:f49394bec833 | 320 | |
suupen | 0:f49394bec833 | 321 | int8_t x; // display data no x 0 - 15 |
suupen | 0:f49394bec833 | 322 | |
suupen | 0:f49394bec833 | 323 | #define Z_GSCLKNUM (340) // GRAYSCALE PWM sousin yo clock 4096(PWM) / 12bit(sousin) = 341 |
suupen | 0:f49394bec833 | 324 | #define Z_GRAYDATA (16 * 2) |
suupen | 0:f49394bec833 | 325 | |
suupen | 0:f49394bec833 | 326 | |
suupen | 0:f49394bec833 | 327 | BLANK = 1; |
suupen | 0:f49394bec833 | 328 | BLANK = 0; |
suupen | 0:f49394bec833 | 329 | |
suupen | 0:f49394bec833 | 330 | |
suupen | 0:f49394bec833 | 331 | |
suupen | 0:f49394bec833 | 332 | |
suupen | 0:f49394bec833 | 333 | VPRG = 0; |
suupen | 0:f49394bec833 | 334 | |
suupen | 0:f49394bec833 | 335 | if(sendRowNo > 15){sendRowNo = 0;} |
suupen | 0:f49394bec833 | 336 | |
suupen | 0:f49394bec833 | 337 | for(int i = 0; i < (Z_GSCLKNUM - Z_GRAYDATA); i++){ |
suupen | 0:f49394bec833 | 338 | // grayscale pwm clock only |
suupen | 0:f49394bec833 | 339 | spi.write(0); |
suupen | 0:f49394bec833 | 340 | } |
suupen | 0:f49394bec833 | 341 | |
suupen | 0:f49394bec833 | 342 | // grayscale pwm clock & color data clock |
suupen | 0:f49394bec833 | 343 | // green data send |
suupen | 0:f49394bec833 | 344 | for(x = 0; x < 16; x++){ |
suupen | 0:f49394bec833 | 345 | spi.write(D_dotDisplay[1][15 - x][sendRowNo]); |
suupen | 0:f49394bec833 | 346 | } |
suupen | 0:f49394bec833 | 347 | // red data send |
suupen | 0:f49394bec833 | 348 | for(x = 0; x < 16; x++){ |
suupen | 0:f49394bec833 | 349 | spi.write(D_dotDisplay[0][x][sendRowNo]); |
suupen | 0:f49394bec833 | 350 | } |
suupen | 0:f49394bec833 | 351 | |
suupen | 0:f49394bec833 | 352 | XLAT = 1; |
suupen | 0:f49394bec833 | 353 | XLAT = 0; |
suupen | 0:f49394bec833 | 354 | } |
suupen | 0:f49394bec833 | 355 | #endif //DBG |
suupen | 0:f49394bec833 | 356 | |
suupen | 0:f49394bec833 | 357 | |
suupen | 0:f49394bec833 | 358 | /****************************************************************************** |
suupen | 0:f49394bec833 | 359 | Name : display data kaicho wo TLC5940 Gray Data ni henkan suru data table ti no sakusei |
suupen | 0:f49394bec833 | 360 | Parameters : none |
suupen | 0:f49394bec833 | 361 | Returns : nothing |
suupen | 0:f49394bec833 | 362 | Description: |
suupen | 0:f49394bec833 | 363 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 364 | void dotmatrix_grayDataKansan(void){ |
suupen | 0:f49394bec833 | 365 | |
suupen | 0:f49394bec833 | 366 | for(uint32_t i = 0; i < 100; i++){ |
suupen | 0:f49394bec833 | 367 | DT_grayData[i] = (uint16_t)((i * i * 10) / 40); |
suupen | 0:f49394bec833 | 368 | } |
suupen | 0:f49394bec833 | 369 | } |
suupen | 0:f49394bec833 | 370 | |
suupen | 0:f49394bec833 | 371 | /****************************************************************************** |
suupen | 0:f49394bec833 | 372 | Name : display data transform to TLC5940 Gray Data |
suupen | 0:f49394bec833 | 373 | Parameters : none |
suupen | 0:f49394bec833 | 374 | Returns : nothing |
suupen | 0:f49394bec833 | 375 | Description: |
suupen | 0:f49394bec833 | 376 | ******************************************************************************/ |
suupen | 0:f49394bec833 | 377 | static void dotmatrix_displayDataTransform(void){ |
suupen | 0:f49394bec833 | 378 | |
suupen | 0:f49394bec833 | 379 | // D_display[][][] no 15grayScaleData wo 4096grayScale Data ni henkan |
suupen | 0:f49394bec833 | 380 | for(uint8_t x = 0; x < 16; x++){ |
suupen | 0:f49394bec833 | 381 | for(uint8_t y = 0; y < 16; y++){ |
suupen | 0:f49394bec833 | 382 | D_dotDisplay[Z_dotGreen][x][y] = DT_grayData[B_display[Z_green][x][y]]; |
suupen | 0:f49394bec833 | 383 | D_dotDisplay[ Z_dotRed][x][y] = DT_grayData[B_display[ Z_red][x][y]]; |
suupen | 0:f49394bec833 | 384 | } |
suupen | 0:f49394bec833 | 385 | } |
suupen | 0:f49394bec833 | 386 | } |