Program with 5510 functions for mbedd, this are not organized in a object model, just functions

Dependencies:   mbed

Committer:
jaga1184
Date:
Fri Mar 18 00:19:35 2011 +0000
Revision:
1:023f6d8981d8
Parent:
0:f3c29d937050
beta,english

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jaga1184 0:f3c29d937050 1 #include "mbed.h"
jaga1184 0:f3c29d937050 2 #include "figures.h"
jaga1184 0:f3c29d937050 3 //#include <pcd8544_drv.hpp>
jaga1184 0:f3c29d937050 4
jaga1184 0:f3c29d937050 5 /*
jaga1184 0:f3c29d937050 6 This Code has extra features
jaga1184 0:f3c29d937050 7 including a XY positioning function on Display
jaga1184 0:f3c29d937050 8 and a Line Draw function on Nokia 3310 LCD
jaga1184 0:f3c29d937050 9 It is modded from the original
jaga1184 0:f3c29d937050 10 http://www.arduino.cc/playground/Code/PCD8544
jaga1184 0:f3c29d937050 11 */
jaga1184 0:f3c29d937050 12 // Mods by Jim Park
jaga1184 0:f3c29d937050 13 // jim(^dOt^)buzz(^aT^)gmail(^dOt^)com
jaga1184 0:f3c29d937050 14 // hope it works for you
jaga1184 0:f3c29d937050 15 DigitalOut PIN_SCE(p26);//p21); // 7 // LCD CS .... Pin 3
jaga1184 0:f3c29d937050 16 DigitalOut PIN_RESET(p27);//p22);// 6 // LCD RST .... Pin 1
jaga1184 0:f3c29d937050 17 DigitalOut PIN_DC(p28);//p23); // 5 // LCD Dat/Com. Pin 5
jaga1184 0:f3c29d937050 18 DigitalOut PIN_SDIN(p29);//p24); // 4 // LCD SPIDat . Pin 6
jaga1184 0:f3c29d937050 19 DigitalOut PIN_SCLK(p30);//p25); // 3 // LCD SPIClk . Pin 4
jaga1184 0:f3c29d937050 20 // LCD Gnd .... Pin 2
jaga1184 0:f3c29d937050 21 // LCD Vcc .... Pin 8
jaga1184 0:f3c29d937050 22 // LCD Vlcd ... Pin 7
jaga1184 0:f3c29d937050 23 DigitalOut PIN_BCKL(p25);//Nokia 5110 backligth
jaga1184 0:f3c29d937050 24
jaga1184 0:f3c29d937050 25
jaga1184 0:f3c29d937050 26 #define LCD_C 0
jaga1184 0:f3c29d937050 27 #define LCD_D 1
jaga1184 0:f3c29d937050 28
jaga1184 0:f3c29d937050 29 #define LCD_X 84
jaga1184 0:f3c29d937050 30 #define LCD_Y 48
jaga1184 0:f3c29d937050 31 #define LCD_CMD 0
jaga1184 0:f3c29d937050 32
jaga1184 0:f3c29d937050 33 #define YMAX 48
jaga1184 0:f3c29d937050 34 #define XMAX 84
jaga1184 0:f3c29d937050 35 int bufferLcd[XMAX][YMAX]={0};
jaga1184 0:f3c29d937050 36
jaga1184 0:f3c29d937050 37 #define byte char
jaga1184 0:f3c29d937050 38 // Function prototype
jaga1184 0:f3c29d937050 39 void LcdWrite(char dc, char data);
jaga1184 0:f3c29d937050 40 void shiftOut(DigitalOut dataPin,DigitalOut clockPin,char bitOrder, char value );
jaga1184 0:f3c29d937050 41 #define MSBFIRST 1
jaga1184 0:f3c29d937050 42 #define LSBFIRST 0
jaga1184 0:f3c29d937050 43
jaga1184 0:f3c29d937050 44 int a = 0;
jaga1184 0:f3c29d937050 45
jaga1184 0:f3c29d937050 46 static const char ASCII[][5] = {
jaga1184 0:f3c29d937050 47 {0x00, 0x00, 0x00, 0x00, 0x00} // 20
jaga1184 0:f3c29d937050 48 ,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
jaga1184 0:f3c29d937050 49 ,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
jaga1184 0:f3c29d937050 50 ,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
jaga1184 0:f3c29d937050 51 ,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
jaga1184 0:f3c29d937050 52 ,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
jaga1184 0:f3c29d937050 53 ,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
jaga1184 0:f3c29d937050 54 ,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
jaga1184 0:f3c29d937050 55 ,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
jaga1184 0:f3c29d937050 56 ,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
jaga1184 0:f3c29d937050 57 ,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
jaga1184 0:f3c29d937050 58 ,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
jaga1184 0:f3c29d937050 59 ,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
jaga1184 0:f3c29d937050 60 ,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
jaga1184 0:f3c29d937050 61 ,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
jaga1184 0:f3c29d937050 62 ,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
jaga1184 0:f3c29d937050 63 ,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
jaga1184 0:f3c29d937050 64 ,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
jaga1184 0:f3c29d937050 65 ,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
jaga1184 0:f3c29d937050 66 ,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
jaga1184 0:f3c29d937050 67 ,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
jaga1184 0:f3c29d937050 68 ,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
jaga1184 0:f3c29d937050 69 ,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
jaga1184 0:f3c29d937050 70 ,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
jaga1184 0:f3c29d937050 71 ,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
jaga1184 0:f3c29d937050 72 ,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
jaga1184 0:f3c29d937050 73 ,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
jaga1184 0:f3c29d937050 74 ,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
jaga1184 0:f3c29d937050 75 ,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
jaga1184 0:f3c29d937050 76 ,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
jaga1184 0:f3c29d937050 77 ,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
jaga1184 0:f3c29d937050 78 ,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
jaga1184 0:f3c29d937050 79 ,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
jaga1184 0:f3c29d937050 80 ,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
jaga1184 0:f3c29d937050 81 ,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
jaga1184 0:f3c29d937050 82 ,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
jaga1184 0:f3c29d937050 83 ,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
jaga1184 0:f3c29d937050 84 ,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
jaga1184 0:f3c29d937050 85 ,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
jaga1184 0:f3c29d937050 86 ,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
jaga1184 0:f3c29d937050 87 ,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
jaga1184 0:f3c29d937050 88 ,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
jaga1184 0:f3c29d937050 89 ,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
jaga1184 0:f3c29d937050 90 ,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
jaga1184 0:f3c29d937050 91 ,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
jaga1184 0:f3c29d937050 92 ,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
jaga1184 0:f3c29d937050 93 ,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
jaga1184 0:f3c29d937050 94 ,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
jaga1184 0:f3c29d937050 95 ,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
jaga1184 0:f3c29d937050 96 ,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
jaga1184 0:f3c29d937050 97 ,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
jaga1184 0:f3c29d937050 98 ,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
jaga1184 0:f3c29d937050 99 ,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
jaga1184 0:f3c29d937050 100 ,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
jaga1184 0:f3c29d937050 101 ,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
jaga1184 0:f3c29d937050 102 ,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
jaga1184 0:f3c29d937050 103 ,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
jaga1184 0:f3c29d937050 104 ,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
jaga1184 0:f3c29d937050 105 ,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
jaga1184 0:f3c29d937050 106 ,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
jaga1184 0:f3c29d937050 107 ,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c &#65533;
jaga1184 0:f3c29d937050 108 ,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
jaga1184 0:f3c29d937050 109 ,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
jaga1184 0:f3c29d937050 110 ,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
jaga1184 0:f3c29d937050 111 ,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
jaga1184 0:f3c29d937050 112 ,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
jaga1184 0:f3c29d937050 113 ,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
jaga1184 0:f3c29d937050 114 ,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
jaga1184 0:f3c29d937050 115 ,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
jaga1184 0:f3c29d937050 116 ,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
jaga1184 0:f3c29d937050 117 ,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
jaga1184 0:f3c29d937050 118 ,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
jaga1184 0:f3c29d937050 119 ,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
jaga1184 0:f3c29d937050 120 ,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
jaga1184 0:f3c29d937050 121 ,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
jaga1184 0:f3c29d937050 122 ,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
jaga1184 0:f3c29d937050 123 ,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
jaga1184 0:f3c29d937050 124 ,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
jaga1184 0:f3c29d937050 125 ,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
jaga1184 0:f3c29d937050 126 ,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
jaga1184 0:f3c29d937050 127 ,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
jaga1184 0:f3c29d937050 128 ,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
jaga1184 0:f3c29d937050 129 ,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
jaga1184 0:f3c29d937050 130 ,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
jaga1184 0:f3c29d937050 131 ,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
jaga1184 0:f3c29d937050 132 ,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
jaga1184 0:f3c29d937050 133 ,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
jaga1184 0:f3c29d937050 134 ,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
jaga1184 0:f3c29d937050 135 ,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
jaga1184 0:f3c29d937050 136 ,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
jaga1184 0:f3c29d937050 137 ,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
jaga1184 0:f3c29d937050 138 ,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
jaga1184 0:f3c29d937050 139 ,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
jaga1184 0:f3c29d937050 140 ,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
jaga1184 0:f3c29d937050 141 ,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e &#8592;
jaga1184 0:f3c29d937050 142 ,{0x00, 0x06, 0x09, 0x09, 0x06} // 7f &#8594;
jaga1184 0:f3c29d937050 143 };
jaga1184 0:f3c29d937050 144
jaga1184 0:f3c29d937050 145
jaga1184 0:f3c29d937050 146 /*************************************************************************/
jaga1184 0:f3c29d937050 147 const char *byte_to_binary
jaga1184 0:f3c29d937050 148 (
jaga1184 0:f3c29d937050 149 int x
jaga1184 0:f3c29d937050 150 )
jaga1184 0:f3c29d937050 151 {
jaga1184 0:f3c29d937050 152 static char b[9];
jaga1184 0:f3c29d937050 153 b[0] = '\0';
jaga1184 0:f3c29d937050 154
jaga1184 0:f3c29d937050 155 int z;
jaga1184 0:f3c29d937050 156 for (z = 256; z > 0; z >>= 1)
jaga1184 0:f3c29d937050 157 {
jaga1184 0:f3c29d937050 158 strcat(b, ((x & z) == z) ? "|" : "0");
jaga1184 0:f3c29d937050 159 }
jaga1184 0:f3c29d937050 160
jaga1184 0:f3c29d937050 161 return b;
jaga1184 0:f3c29d937050 162 }
jaga1184 0:f3c29d937050 163 /**********************************************************************************************/
jaga1184 0:f3c29d937050 164
jaga1184 0:f3c29d937050 165 void LcdCharacter(char character) {
jaga1184 0:f3c29d937050 166 LcdWrite(LCD_D, 0x00);
jaga1184 0:f3c29d937050 167 for (int index = 0; index < 5; index++) {
jaga1184 0:f3c29d937050 168 LcdWrite(LCD_D, ASCII[character - 0x20][index]);
jaga1184 0:f3c29d937050 169 }
jaga1184 0:f3c29d937050 170 LcdWrite(LCD_D, 0x00);
jaga1184 0:f3c29d937050 171 }
jaga1184 0:f3c29d937050 172
jaga1184 0:f3c29d937050 173 void LcdClear(void) {
jaga1184 0:f3c29d937050 174 for (int index = 0; index < LCD_X * LCD_Y / 8; index++) {
jaga1184 0:f3c29d937050 175 LcdWrite(LCD_D, 0x00);
jaga1184 0:f3c29d937050 176 }
jaga1184 0:f3c29d937050 177 }
jaga1184 0:f3c29d937050 178
jaga1184 0:f3c29d937050 179 void LcdInitialise(void) {
jaga1184 0:f3c29d937050 180 //pinMode(PIN_SCE,OUTPUT);
jaga1184 0:f3c29d937050 181 //pinMode(PIN_RESET, OUTPUT);
jaga1184 0:f3c29d937050 182 //pinMode(PIN_DC, OUTPUT);
jaga1184 0:f3c29d937050 183 //pinMode(PIN_SDIN, OUTPUT);
jaga1184 0:f3c29d937050 184 //pinMode(PIN_SCLK, OUTPUT);
jaga1184 0:f3c29d937050 185
jaga1184 0:f3c29d937050 186 PIN_RESET=0;
jaga1184 0:f3c29d937050 187 //digitalWrite(PIN_RESET, LOW);
jaga1184 0:f3c29d937050 188
jaga1184 0:f3c29d937050 189 // delay(1);
jaga1184 0:f3c29d937050 190 // wait(0.001);
jaga1184 0:f3c29d937050 191 PIN_RESET=1;
jaga1184 0:f3c29d937050 192 //digitalWrite(PIN_RESET, HIGH);
jaga1184 0:f3c29d937050 193
jaga1184 0:f3c29d937050 194 LcdWrite( LCD_CMD, 0x21 ); // LCD Extended Commands.
jaga1184 0:f3c29d937050 195 LcdWrite( LCD_CMD, 0xB0 ); // Set LCD Vop (Contrast). //B1 for normal clear background, b2 to bf for dark background
jaga1184 0:f3c29d937050 196 LcdWrite( LCD_CMD, 0x04 ); // Set Temp coefficent. //0x04
jaga1184 0:f3c29d937050 197 LcdWrite( LCD_CMD, 0x14 ); // LCD bias mode 1:48. //0x13
jaga1184 0:f3c29d937050 198 LcdWrite( LCD_CMD, 0x0C ); // LCD in normal mode. 0x0d for inverse
jaga1184 0:f3c29d937050 199 LcdWrite(LCD_C, 0x20);
jaga1184 0:f3c29d937050 200 LcdWrite(LCD_C, 0x0C);
jaga1184 0:f3c29d937050 201 }
jaga1184 0:f3c29d937050 202
jaga1184 0:f3c29d937050 203 void LcdString(char *characters) {
jaga1184 0:f3c29d937050 204 while (*characters) {
jaga1184 0:f3c29d937050 205 LcdCharacter(*characters++);
jaga1184 0:f3c29d937050 206 }
jaga1184 0:f3c29d937050 207 }
jaga1184 0:f3c29d937050 208
jaga1184 0:f3c29d937050 209 void LcdWrite(byte dc, byte data) {
jaga1184 0:f3c29d937050 210 PIN_DC=dc;
jaga1184 0:f3c29d937050 211 PIN_SCE=0;
jaga1184 0:f3c29d937050 212 shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
jaga1184 0:f3c29d937050 213 //->wait(0.001);
jaga1184 0:f3c29d937050 214 PIN_SCE=1;
jaga1184 0:f3c29d937050 215 /*
jaga1184 0:f3c29d937050 216 digitalWrite(PIN_DC, dc);
jaga1184 0:f3c29d937050 217 digitalWrite(PIN_SCE, LOW);
jaga1184 0:f3c29d937050 218 shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
jaga1184 0:f3c29d937050 219 digitalWrite(PIN_SCE, HIGH);
jaga1184 0:f3c29d937050 220 */
jaga1184 0:f3c29d937050 221 }
jaga1184 0:f3c29d937050 222
jaga1184 0:f3c29d937050 223 // gotoXY routine to position cursor
jaga1184 0:f3c29d937050 224 // x - range: 0 to 84
jaga1184 0:f3c29d937050 225 // y - range: 0 to 5
jaga1184 0:f3c29d937050 226
jaga1184 0:f3c29d937050 227 void gotoXY(int x, int y) {
jaga1184 0:f3c29d937050 228 LcdWrite( 0, 0x80 | x); // Column.
jaga1184 0:f3c29d937050 229 LcdWrite( 0, 0x40 | y); // Row.
jaga1184 0:f3c29d937050 230
jaga1184 0:f3c29d937050 231 }
jaga1184 0:f3c29d937050 232
jaga1184 0:f3c29d937050 233
jaga1184 0:f3c29d937050 234
jaga1184 0:f3c29d937050 235 void drawLine(int x0,int y0,//Initial Point
jaga1184 0:f3c29d937050 236 int x1,int y1)//Final point
jaga1184 0:f3c29d937050 237 {
jaga1184 0:f3c29d937050 238 int dy = y1 - y0;
jaga1184 0:f3c29d937050 239 int dx = x1 - x0;
jaga1184 0:f3c29d937050 240 int stepx, stepy;
jaga1184 0:f3c29d937050 241 if (dy < 0) { dy = -dy; stepy = -1; } else { stepy = 1; }
jaga1184 0:f3c29d937050 242 if (dx < 0) { dx = -dx; stepx = -1; } else { stepx = 1; }
jaga1184 0:f3c29d937050 243 dy <<= 1; // dy is now 2*dy
jaga1184 0:f3c29d937050 244 dx <<= 1; // dx is now 2*dx
jaga1184 0:f3c29d937050 245 bufferLcd[x0][y0]=1;
jaga1184 0:f3c29d937050 246 // printf("Ini X0,y0= %2u ,%2u\n", x0,y0);
jaga1184 0:f3c29d937050 247 if (dx > dy) {
jaga1184 0:f3c29d937050 248 int fraction = dy - (dx >> 1);// same as 2*dy - dx
jaga1184 0:f3c29d937050 249 while (x0 != x1) {
jaga1184 0:f3c29d937050 250 if (fraction >= 0) {
jaga1184 0:f3c29d937050 251 y0 += stepy;
jaga1184 0:f3c29d937050 252 fraction -= dx; // same as fraction -= 2*dx
jaga1184 0:f3c29d937050 253 }
jaga1184 0:f3c29d937050 254 x0 += stepx;
jaga1184 0:f3c29d937050 255 fraction += dy; // same as fraction -= 2*dy
jaga1184 0:f3c29d937050 256 bufferLcd[x0][y0]=1;
jaga1184 0:f3c29d937050 257 // printf(" X0,y0= %2u ,%2u\n", x0,y0);
jaga1184 0:f3c29d937050 258 }
jaga1184 0:f3c29d937050 259 } else {
jaga1184 0:f3c29d937050 260 int fraction = dx - (dy >> 1);
jaga1184 0:f3c29d937050 261 while (y0 != y1) {
jaga1184 0:f3c29d937050 262 if (fraction >= 0) {
jaga1184 0:f3c29d937050 263 x0 += stepx;
jaga1184 0:f3c29d937050 264 fraction -= dy;
jaga1184 0:f3c29d937050 265 }
jaga1184 0:f3c29d937050 266 y0 += stepy;
jaga1184 0:f3c29d937050 267 fraction += dx;
jaga1184 0:f3c29d937050 268 bufferLcd[x0][y0]=1;
jaga1184 0:f3c29d937050 269 // printf(" X0,y0= %2u ,%2u\n", x0,y0);
jaga1184 0:f3c29d937050 270 }
jaga1184 0:f3c29d937050 271 }
jaga1184 0:f3c29d937050 272
jaga1184 0:f3c29d937050 273 // printf("<------- ------->\n");
jaga1184 0:f3c29d937050 274
jaga1184 0:f3c29d937050 275 }
jaga1184 0:f3c29d937050 276
jaga1184 0:f3c29d937050 277 void updateLcd(void) {//Update with data from Buffer(Use drawPoint)
jaga1184 0:f3c29d937050 278 int blockVal;
jaga1184 0:f3c29d937050 279 for(int x=0;x<XMAX;x++) { //For every value of x
jaga1184 0:f3c29d937050 280 for(int block=0;block<6;block++) {//For everyone of the 6 block in y.
jaga1184 0:f3c29d937050 281 blockVal=0;//Initialise to zero value of hte block
jaga1184 0:f3c29d937050 282 for(int i=0;i<8;i++) {//For every block�s bit
jaga1184 0:f3c29d937050 283 blockVal|=(bufferLcd[x][(block*8)+i])<<i;//Current block�s bit value is pushed
jaga1184 0:f3c29d937050 284 }
jaga1184 0:f3c29d937050 285 //The point is drawed
jaga1184 0:f3c29d937050 286 gotoXY (x,block);
jaga1184 0:f3c29d937050 287 LcdWrite (1,blockVal);
jaga1184 0:f3c29d937050 288 //wait(0.1);
jaga1184 0:f3c29d937050 289 }
jaga1184 0:f3c29d937050 290 }
jaga1184 0:f3c29d937050 291 }
jaga1184 0:f3c29d937050 292
jaga1184 0:f3c29d937050 293 void clearLcdBuff() { //Clear the entire buffer (Use drawPoint)
jaga1184 0:f3c29d937050 294
jaga1184 0:f3c29d937050 295 for(int i=0;i<XMAX;i++) {
jaga1184 0:f3c29d937050 296 for(int j=0;j<YMAX;j++) {
jaga1184 0:f3c29d937050 297 bufferLcd[i][j]=0;
jaga1184 0:f3c29d937050 298
jaga1184 0:f3c29d937050 299 }
jaga1184 0:f3c29d937050 300 }
jaga1184 0:f3c29d937050 301 /*int blockVal;
jaga1184 0:f3c29d937050 302 for(int x=0;x<XMAX;x++) {
jaga1184 0:f3c29d937050 303 for(int block=0;block<5;block++) {
jaga1184 0:f3c29d937050 304 blockVal=0;
jaga1184 0:f3c29d937050 305
jaga1184 0:f3c29d937050 306 //The point is drawed
jaga1184 0:f3c29d937050 307 gotoXY (x,block);
jaga1184 0:f3c29d937050 308 LcdWrite (1,blockVal);
jaga1184 0:f3c29d937050 309 }
jaga1184 0:f3c29d937050 310 }
jaga1184 0:f3c29d937050 311 */
jaga1184 0:f3c29d937050 312 }
jaga1184 0:f3c29d937050 313
jaga1184 0:f3c29d937050 314 void drawPoint(int X, int Y) { //drawing point using values 0->83 in X and 0->47 in Y [READ BLOCK THEN add/Modify NEW POINT]
jaga1184 0:f3c29d937050 315 /*int blck,blckPos,buffY;
jaga1184 0:f3c29d937050 316 //Selection of y block(0->5)
jaga1184 0:f3c29d937050 317 blck=(int)(floor((y_dbl/8))); //Determining the block
jaga1184 0:f3c29d937050 318 blckPos=(int)(y%8);//Calculating position in block
jaga1184 0:f3c29d937050 319 buffY|=1<<blckPos;
jaga1184 0:f3c29d937050 320 */
jaga1184 0:f3c29d937050 321 //The point is stored
jaga1184 0:f3c29d937050 322 bufferLcd[X][Y]=1;
jaga1184 0:f3c29d937050 323
jaga1184 0:f3c29d937050 324 }
jaga1184 0:f3c29d937050 325 void drawPoint_inst(int x, int y) { //drawing point using values 0->83 in X and 0->47 in Y [READ BLOCK THEN add/Modify NEW POINT]
jaga1184 0:f3c29d937050 326 int buf_y=0,blck,blckPos;
jaga1184 0:f3c29d937050 327 double y_dbl;
jaga1184 0:f3c29d937050 328 y_dbl=(double)(y);
jaga1184 0:f3c29d937050 329 //Selection of y block(0->5)
jaga1184 0:f3c29d937050 330 blck=(int)(floor((y_dbl/8))); //Determining the block
jaga1184 0:f3c29d937050 331 blckPos=(int)(y%8);//Calculating position in block
jaga1184 0:f3c29d937050 332 buf_y|=1<<blckPos;
jaga1184 0:f3c29d937050 333
jaga1184 0:f3c29d937050 334 //The point is stored
jaga1184 0:f3c29d937050 335 gotoXY (x,blck);
jaga1184 0:f3c29d937050 336 LcdWrite (1,buf_y);
jaga1184 0:f3c29d937050 337
jaga1184 0:f3c29d937050 338 }
jaga1184 0:f3c29d937050 339 /*
jaga1184 0:f3c29d937050 340 int roundVal(float value ) {//Round point in line
jaga1184 0:f3c29d937050 341 int y;
jaga1184 0:f3c29d937050 342 if(abs(value-ceil(value))>=abs(value-floor(value))) {
jaga1184 0:f3c29d937050 343 y=(int)(floor(value));
jaga1184 0:f3c29d937050 344 }
jaga1184 0:f3c29d937050 345 else {
jaga1184 0:f3c29d937050 346 y=(int)(ceil(value));
jaga1184 0:f3c29d937050 347 }
jaga1184 0:f3c29d937050 348
jaga1184 0:f3c29d937050 349 return y;
jaga1184 0:f3c29d937050 350 }
jaga1184 0:f3c29d937050 351 */
jaga1184 0:f3c29d937050 352 void setup(void) {
jaga1184 0:f3c29d937050 353
jaga1184 0:f3c29d937050 354 LcdInitialise();
jaga1184 0:f3c29d937050 355 LcdClear();
jaga1184 0:f3c29d937050 356
jaga1184 0:f3c29d937050 357 }
jaga1184 0:f3c29d937050 358
jaga1184 0:f3c29d937050 359 int main(void) {
jaga1184 0:f3c29d937050 360 // Display some simple character animation
jaga1184 0:f3c29d937050 361 //
jaga1184 0:f3c29d937050 362 int a,b;
jaga1184 0:f3c29d937050 363 char Str[15];
jaga1184 0:f3c29d937050 364 int count=0;
jaga1184 0:f3c29d937050 365
jaga1184 0:f3c29d937050 366
jaga1184 0:f3c29d937050 367 setup();
jaga1184 0:f3c29d937050 368 //wait(0.1);
jaga1184 0:f3c29d937050 369 PIN_BCKL=0;
jaga1184 0:f3c29d937050 370 wait(0.5);
jaga1184 0:f3c29d937050 371 PIN_BCKL=1;
jaga1184 0:f3c29d937050 372 while(1) {
jaga1184 0:f3c29d937050 373 printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
jaga1184 0:f3c29d937050 374 for(int a=0;a<504;a++) {
jaga1184 0:f3c29d937050 375 if((a%84)==0)
jaga1184 1:023f6d8981d8 376 printf("Last frame\n");
jaga1184 0:f3c29d937050 377 printf("%3u:: %s\n",a,byte_to_binary(MCertified2[a]));
jaga1184 0:f3c29d937050 378 }
jaga1184 0:f3c29d937050 379 printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
jaga1184 0:f3c29d937050 380 clearLcdBuff();
jaga1184 0:f3c29d937050 381 printf("Start---------\n");
jaga1184 0:f3c29d937050 382 for (int index3 = 0; index3 < 6; index3++) {
jaga1184 0:f3c29d937050 383 for( int index1= 0; index1 <8; index1++) {
jaga1184 0:f3c29d937050 384 for( int index2= 0; index2 < 84; index2++) {
jaga1184 0:f3c29d937050 385 if((MCertified[(index3*84)+index2]&(1<<index1))!=0) {
jaga1184 0:f3c29d937050 386 #ifdef FastLcd
jaga1184 0:f3c29d937050 387 bufferLcd[index2][(index3*8)+index1]=1;//(7-index1)]= 1;
jaga1184 0:f3c29d937050 388 #endif
jaga1184 0:f3c29d937050 389 #ifdef Bitmap2Lcd
jaga1184 0:f3c29d937050 390 bufferLcd[index2][(index3*8)+(7-index1)]= 1;
jaga1184 0:f3c29d937050 391 #endif
jaga1184 0:f3c29d937050 392 printf("|");
jaga1184 0:f3c29d937050 393 }
jaga1184 0:f3c29d937050 394 else
jaga1184 0:f3c29d937050 395 printf(" ");
jaga1184 0:f3c29d937050 396 }
jaga1184 0:f3c29d937050 397 printf("\n");
jaga1184 0:f3c29d937050 398 }
jaga1184 0:f3c29d937050 399 }
jaga1184 0:f3c29d937050 400 printf("\End---------\n");
jaga1184 0:f3c29d937050 401 updateLcd();
jaga1184 0:f3c29d937050 402 wait(0.5);
jaga1184 0:f3c29d937050 403 }
jaga1184 0:f3c29d937050 404 while (1) {
jaga1184 0:f3c29d937050 405 //gotoXY(0,0);
jaga1184 0:f3c29d937050 406 count++;
jaga1184 0:f3c29d937050 407 //LcdString("Hello there esta es una prueba de lcd ");
jaga1184 0:f3c29d937050 408
jaga1184 0:f3c29d937050 409 //drawLine(1,1,count,47);
jaga1184 0:f3c29d937050 410 clearLcdBuff();
jaga1184 0:f3c29d937050 411 /* drawLine(0,0,83,0);
jaga1184 0:f3c29d937050 412 drawLine(83,0,83,47);
jaga1184 0:f3c29d937050 413 drawLine(83,47,0,47);
jaga1184 0:f3c29d937050 414 drawLine(0,47,0,0);
jaga1184 0:f3c29d937050 415 */
jaga1184 0:f3c29d937050 416 drawLine(0,0,count,47);
jaga1184 0:f3c29d937050 417 updateLcd();
jaga1184 0:f3c29d937050 418 wait(0.15);
jaga1184 0:f3c29d937050 419 LcdClear();
jaga1184 0:f3c29d937050 420 if (count==83)
jaga1184 0:f3c29d937050 421 count=0;
jaga1184 0:f3c29d937050 422 }
jaga1184 0:f3c29d937050 423 // Draw a Box
jaga1184 0:f3c29d937050 424 // for(b=1000; b>0; b--){
jaga1184 0:f3c29d937050 425 // drawLine();
jaga1184 0:f3c29d937050 426 // for(a=0; a<=5 ; a++){
jaga1184 0:f3c29d937050 427 // gotoXY(4,1);
jaga1184 0:f3c29d937050 428 // Put text in Box
jaga1184 0:f3c29d937050 429 LcdString("TestDisplay");
jaga1184 0:f3c29d937050 430 gotoXY(24,3);
jaga1184 0:f3c29d937050 431 LcdCharacter('H');
jaga1184 0:f3c29d937050 432 LcdCharacter('E');
jaga1184 0:f3c29d937050 433 LcdCharacter('L');
jaga1184 0:f3c29d937050 434 LcdCharacter('L');
jaga1184 0:f3c29d937050 435 LcdCharacter('O');
jaga1184 0:f3c29d937050 436 LcdCharacter(' ');
jaga1184 0:f3c29d937050 437 LcdCharacter('=');
jaga1184 0:f3c29d937050 438 // Draw + at this position
jaga1184 0:f3c29d937050 439 gotoXY(10,3);
jaga1184 0:f3c29d937050 440 LcdCharacter('=');
jaga1184 0:f3c29d937050 441 wait(0.5);
jaga1184 0:f3c29d937050 442 gotoXY(24,3);
jaga1184 0:f3c29d937050 443 LcdCharacter('h');
jaga1184 0:f3c29d937050 444 LcdCharacter('e');
jaga1184 0:f3c29d937050 445 LcdCharacter('l');
jaga1184 0:f3c29d937050 446 LcdCharacter('l');
jaga1184 0:f3c29d937050 447 LcdCharacter('o');
jaga1184 0:f3c29d937050 448 LcdCharacter(' ');
jaga1184 0:f3c29d937050 449 LcdCharacter('-');
jaga1184 0:f3c29d937050 450 // Draw - at this position
jaga1184 0:f3c29d937050 451 gotoXY(10,3);
jaga1184 0:f3c29d937050 452 LcdCharacter('-');
jaga1184 0:f3c29d937050 453 wait(0.5);
jaga1184 0:f3c29d937050 454 // }
jaga1184 0:f3c29d937050 455 // }
jaga1184 0:f3c29d937050 456
jaga1184 0:f3c29d937050 457 while (1);
jaga1184 0:f3c29d937050 458 return 0;
jaga1184 0:f3c29d937050 459 }
jaga1184 0:f3c29d937050 460
jaga1184 0:f3c29d937050 461 /*
jaga1184 0:f3c29d937050 462 LYBRARIES
jaga1184 0:f3c29d937050 463 */
jaga1184 0:f3c29d937050 464 //shiftOut(dataPin, clockPin, bitOrder, value)
jaga1184 0:f3c29d937050 465 void shiftOut(DigitalOut dataPin,DigitalOut clockPin,char bitOrder, char value ) {
jaga1184 0:f3c29d937050 466 int i;
jaga1184 0:f3c29d937050 467 clockPin=0;
jaga1184 0:f3c29d937050 468 if (bitOrder==LSBFIRST) {
jaga1184 0:f3c29d937050 469 for (i=0;i<=7;i++) {
jaga1184 0:f3c29d937050 470 //dataPin=value&(1>>i);
jaga1184 0:f3c29d937050 471 dataPin=value&(1);
jaga1184 0:f3c29d937050 472 value=value>>1;
jaga1184 0:f3c29d937050 473 clockPin=1;
jaga1184 0:f3c29d937050 474 //->wait(0.0001);
jaga1184 0:f3c29d937050 475 clockPin=0;
jaga1184 0:f3c29d937050 476 }
jaga1184 0:f3c29d937050 477 } else {
jaga1184 0:f3c29d937050 478 for (i=7;i>=0;i--) {
jaga1184 0:f3c29d937050 479 //dataPin=value&(1<<i);
jaga1184 0:f3c29d937050 480 dataPin=value&(1<<7);
jaga1184 0:f3c29d937050 481 value=value<<1;
jaga1184 0:f3c29d937050 482 clockPin=1;
jaga1184 0:f3c29d937050 483 //->wait(0.0001);
jaga1184 0:f3c29d937050 484 clockPin=0;
jaga1184 0:f3c29d937050 485 }
jaga1184 0:f3c29d937050 486 }
jaga1184 0:f3c29d937050 487
jaga1184 0:f3c29d937050 488 }
jaga1184 0:f3c29d937050 489