Code Tidy - Pastebin

New     Fork     Embed     View raw     Report

lcd-pde - cpp

Embed

You can embed this paste into a blog or website with this code:

<iframe class="codetidy" type="text/html" width="100%" src="http://codetidy.com/paste/embed/911" frameborder="0"></iframe>

Add comment

Captcha
  1. int pixels[85][6] = {?
  2.   {?
  3.     0  }?
  4. };?
  5. static const byte ASCII[][5] =?
  6. {?
  7.   {?
  8.     0x00, 0x00, 0x00, 0x00, 0x00  } // 20  ?
  9.   ,{?
  10.     0x00, 0x00, 0x5f, 0x00, 0x00  } // 21 !?
  11.   ,{?
  12.     0x00, 0x07, 0x00, 0x07, 0x00  } // 22 "?
  13.   ,{?
  14.     0x14, 0x7f, 0x14, 0x7f, 0x14  } // 23 #?
  15.   ,{?
  16.     0x24, 0x2a, 0x7f, 0x2a, 0x12  } // 24 $?
  17.   ,{?
  18.     0x23, 0x13, 0x08, 0x64, 0x62  } // 25 %?
  19.   ,{?
  20.     0x36, 0x49, 0x55, 0x22, 0x50  } // 26 &?
  21.   ,{?
  22.     0x00, 0x05, 0x03, 0x00, 0x00  } // 27 '?
  23.   ,{?
  24.     0x00, 0x1c, 0x22, 0x41, 0x00  } // 28 (?
  25.   ,{?
  26.     0x00, 0x41, 0x22, 0x1c, 0x00  } // 29 )?
  27.   ,{?
  28.     0x14, 0x08, 0x3e, 0x08, 0x14  } // 2a *?
  29.   ,{?
  30.     0x08, 0x08, 0x3e, 0x08, 0x08  } // 2b +?
  31.   ,{?
  32.     0x00, 0x50, 0x30, 0x00, 0x00  } // 2c ,?
  33.   ,{?
  34.     0x08, 0x08, 0x08, 0x08, 0x08  } // 2d -?
  35.   ,{?
  36.     0x00, 0x60, 0x60, 0x00, 0x00  } // 2e .?
  37.   ,{?
  38.     0x20, 0x10, 0x08, 0x04, 0x02  } // 2f /?
  39.   ,{?
  40.     0x3e, 0x51, 0x49, 0x45, 0x3e  } // 30 0?
  41.   ,{?
  42.     0x00, 0x42, 0x7f, 0x40, 0x00  } // 31 1?
  43.   ,{?
  44.     0x42, 0x61, 0x51, 0x49, 0x46  } // 32 2?
  45.   ,{?
  46.     0x21, 0x41, 0x45, 0x4b, 0x31  } // 33 3?
  47.   ,{?
  48.     0x18, 0x14, 0x12, 0x7f, 0x10  } // 34 4?
  49.   ,{?
  50.     0x27, 0x45, 0x45, 0x45, 0x39  } // 35 5?
  51.   ,{?
  52.     0x3c, 0x4a, 0x49, 0x49, 0x30  } // 36 6?
  53.   ,{?
  54.     0x01, 0x71, 0x09, 0x05, 0x03  } // 37 7?
  55.   ,{?
  56.     0x36, 0x49, 0x49, 0x49, 0x36  } // 38 8?
  57.   ,{?
  58.     0x06, 0x49, 0x49, 0x29, 0x1e  } // 39 9?
  59.   ,{?
  60.     0x00, 0x36, 0x36, 0x00, 0x00  } // 3a :?
  61.   ,{?
  62.     0x00, 0x56, 0x36, 0x00, 0x00  } // 3b ;?
  63.   ,{?
  64.     0x08, 0x14, 0x22, 0x41, 0x00  } // 3c <?
  65.   ,{?
  66.     0x14, 0x14, 0x14, 0x14, 0x14  } // 3d =?
  67.   ,{?
  68.     0x00, 0x41, 0x22, 0x14, 0x08  } // 3e >?
  69.   ,{?
  70.     0x02, 0x01, 0x51, 0x09, 0x06  } // 3f ??
  71.   ,{?
  72.     0x32, 0x49, 0x79, 0x41, 0x3e  } // 40 @?
  73.   ,{?
  74.     0x7e, 0x11, 0x11, 0x11, 0x7e  } // 41 A?
  75.   ,{?
  76.     0x7f, 0x49, 0x49, 0x49, 0x36  } // 42 B?
  77.   ,{?
  78.     0x3e, 0x41, 0x41, 0x41, 0x22  } // 43 C?
  79.   ,{?
  80.     0x7f, 0x41, 0x41, 0x22, 0x1c  } // 44 D?
  81.   ,{?
  82.     0x7f, 0x49, 0x49, 0x49, 0x41  } // 45 E?
  83.   ,{?
  84.     0x7f, 0x09, 0x09, 0x09, 0x01  } // 46 F?
  85.   ,{?
  86.     0x3e, 0x41, 0x49, 0x49, 0x7a  } // 47 G?
  87.   ,{?
  88.     0x7f, 0x08, 0x08, 0x08, 0x7f  } // 48 H?
  89.   ,{?
  90.     0x00, 0x41, 0x7f, 0x41, 0x00  } // 49 I?
  91.   ,{?
  92.     0x20, 0x40, 0x41, 0x3f, 0x01  } // 4a J?
  93.   ,{?
  94.     0x7f, 0x08, 0x14, 0x22, 0x41  } // 4b K?
  95.   ,{?
  96.     0x7f, 0x40, 0x40, 0x40, 0x40  } // 4c L?
  97.   ,{?
  98.     0x7f, 0x02, 0x0c, 0x02, 0x7f  } // 4d M?
  99.   ,{?
  100.     0x7f, 0x04, 0x08, 0x10, 0x7f  } // 4e N?
  101.   ,{?
  102.     0x3e, 0x41, 0x41, 0x41, 0x3e  } // 4f O?
  103.   ,{?
  104.     0x7f, 0x09, 0x09, 0x09, 0x06  } // 50 P?
  105.   ,{?
  106.     0x3e, 0x41, 0x51, 0x21, 0x5e  } // 51 Q?
  107.   ,{?
  108.     0x7f, 0x09, 0x19, 0x29, 0x46  } // 52 R?
  109.   ,{?
  110.     0x46, 0x49, 0x49, 0x49, 0x31  } // 53 S?
  111.   ,{?
  112.     0x01, 0x01, 0x7f, 0x01, 0x01  } // 54 T?
  113.   ,{?
  114.     0x3f, 0x40, 0x40, 0x40, 0x3f  } // 55 U?
  115.   ,{?
  116.     0x1f, 0x20, 0x40, 0x20, 0x1f  } // 56 V?
  117.   ,{?
  118.     0x3f, 0x40, 0x38, 0x40, 0x3f  } // 57 W?
  119.   ,{?
  120.     0x63, 0x14, 0x08, 0x14, 0x63  } // 58 X?
  121.   ,{?
  122.     0x07, 0x08, 0x70, 0x08, 0x07  } // 59 Y?
  123.   ,{?
  124.     0x61, 0x51, 0x49, 0x45, 0x43  } // 5a Z?
  125.   ,{?
  126.     0x00, 0x7f, 0x41, 0x41, 0x00  } // 5b [?
  127.   ,{?
  128.     0x02, 0x04, 0x08, 0x10, 0x20  } // 5c ¥?
  129.   ,{?
  130.     0x00, 0x41, 0x41, 0x7f, 0x00  } // 5d ]?
  131.   ,{?
  132.     0x04, 0x02, 0x01, 0x02, 0x04  } // 5e ^?
  133.   ,{?
  134.     0x40, 0x40, 0x40, 0x40, 0x40  } // 5f _?
  135.   ,{?
  136.     0x00, 0x01, 0x02, 0x04, 0x00  } // 60 `?
  137.   ,{?
  138.     0x20, 0x54, 0x54, 0x54, 0x78  } // 61 a?
  139.   ,{?
  140.     0x7f, 0x48, 0x44, 0x44, 0x38  } // 62 b?
  141.   ,{?
  142.     0x38, 0x44, 0x44, 0x44, 0x20  } // 63 c?
  143.   ,{?
  144.     0x38, 0x44, 0x44, 0x48, 0x7f  } // 64 d?
  145.   ,{?
  146.     0x38, 0x54, 0x54, 0x54, 0x18  } // 65 e?
  147.   ,{?
  148.     0x08, 0x7e, 0x09, 0x01, 0x02  } // 66 f?
  149.   ,{?
  150.     0x0c, 0x52, 0x52, 0x52, 0x3e  } // 67 g?
  151.   ,{?
  152.     0x7f, 0x08, 0x04, 0x04, 0x78  } // 68 h?
  153.   ,{?
  154.     0x00, 0x44, 0x7d, 0x40, 0x00  } // 69 i?
  155.   ,{?
  156.     0x20, 0x40, 0x44, 0x3d, 0x00  } // 6a j ?
  157.   ,{?
  158.     0x7f, 0x10, 0x28, 0x44, 0x00  } // 6b k?
  159.   ,{?
  160.     0x00, 0x41, 0x7f, 0x40, 0x00  } // 6c l?
  161.   ,{?
  162.     0x7c, 0x04, 0x18, 0x04, 0x78  } // 6d m?
  163.   ,{?
  164.     0x7c, 0x08, 0x04, 0x04, 0x78  } // 6e n?
  165.   ,{?
  166.     0x38, 0x44, 0x44, 0x44, 0x38  } // 6f o?
  167.   ,{?
  168.     0x7c, 0x14, 0x14, 0x14, 0x08  } // 70 p?
  169.   ,{?
  170.     0x08, 0x14, 0x14, 0x18, 0x7c  } // 71 q?
  171.   ,{?
  172.     0x7c, 0x08, 0x04, 0x04, 0x08  } // 72 r?
  173.   ,{?
  174.     0x48, 0x54, 0x54, 0x54, 0x20  } // 73 s?
  175.   ,{?
  176.     0x04, 0x3f, 0x44, 0x40, 0x20  } // 74 t?
  177.   ,{?
  178.     0x3c, 0x40, 0x40, 0x20, 0x7c  } // 75 u?
  179.   ,{?
  180.     0x1c, 0x20, 0x40, 0x20, 0x1c  } // 76 v?
  181.   ,{?
  182.     0x3c, 0x40, 0x30, 0x40, 0x3c  } // 77 w?
  183.   ,{?
  184.     0x44, 0x28, 0x10, 0x28, 0x44  } // 78 x?
  185.   ,{?
  186.     0x0c, 0x50, 0x50, 0x50, 0x3c  } // 79 y?
  187.   ,{?
  188.     0x44, 0x64, 0x54, 0x4c, 0x44  } // 7a z?
  189.   ,{?
  190.     0x00, 0x08, 0x36, 0x41, 0x00  } // 7b {?
  191.   ,{?
  192.     0x00, 0x00, 0x7f, 0x00, 0x00  } // 7c |?
  193.   ,{?
  194.     0x00, 0x41, 0x36, 0x08, 0x00  } // 7d }?
  195.   ,{?
  196.     0x10, 0x08, 0x08, 0x10, 0x08  } // 7e ??
  197.   ,{?
  198.     0x00, 0x06, 0x09, 0x09, 0x06  } // 7f ??
  199. };?
  200.  ?
  201.  ?
  202.  ?
  203.  ?
  204. /////////////////////////////////////////////////////////////////?
  205. // LCD Functions?
  206. /////////////////////////////////////////////////////////////////?
  207. void LcdWrite(byte dc, byte data)?
  208. {?
  209.  ?
  210.   bitWrite(PORTD, PIN_DC, dc) ; ?
  211.   bitWrite(PORTD, PIN_SCE, 0) ; ?
  212.   shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);?
  213.   bitWrite(PORTD, PIN_SCE, 1) ; ?
  214.  ?
  215. }?
  216.  ?
  217. void LcdClear(void)?
  218. {?
  219.   for (int index = 0; index < LCD_X * LCD_Y / 8; index++)?
  220.   {?
  221.     LcdWrite(LCD_D, 0x00);?
  222.   }?
  223. }?
  224. void LcdInitialise(void)?
  225. {?
  226.  ?
  227.   pinMode(PIN_RESET, OUTPUT);?
  228.   pinMode(PIN_DC,    OUTPUT);?
  229.   pinMode(PIN_SDIN,  OUTPUT);?
  230.   pinMode(PIN_SCLK,  OUTPUT);?
  231.   pinMode(PIN_SCE, OUTPUT);?
  232.   digitalWrite(PIN_RESET, LOW);?
  233.   // delay(1);?
  234.   digitalWrite(PIN_RESET, HIGH);?
  235.  ?
  236.   LcdWrite( LCD_CMD, 0x21 );  // LCD Extended Commands.?
  237.   LcdWrite( LCD_CMD, 0xB0 );  // Set LCD Vop (Contrast). //B1?
  238.   LcdWrite( LCD_CMD, 0x04 );  // Set Temp coefficent. //0x04?
  239.   LcdWrite( LCD_CMD, 0x14 );  // LCD bias mode 1:48. //0x13?
  240.   LcdWrite( LCD_CMD, 0x0C );  // LCD in normal mode. 0x0d for inverse?
  241.   LcdWrite(LCD_C, 0x20);?
  242.   LcdWrite(LCD_C, 0x0C);?
  243. }?
  244. void drawLine(unsigned int x, unsigned int y, int mode){?
  245.   y = y + bottom;?
  246.   for(int j= bottom; j<y; j++)?
  247.   {?
  248.     setPixel(x, j, mode);?
  249.   }     ?
  250. }?
  251. void setPixel(int x, int y, int d) {?
  252.   if (x > 84 || y > 48) { ?
  253.     return; ?
  254.   }?
  255.   // The LCD has 6 rows, with 8 pixels per  row.?
  256.   // 'y_mod' is the row that the pixel is in.?
  257.   // 'y_pix' is the pixel in that row we want to enable/disable?
  258.   int y_mod = (int)(y >> 3);    // >>3 divides by 8?
  259.   int y_pix = (y-(y_mod << 3));// <<3 multiplies by 8?
  260.   int val = 1 << y_pix;?
  261.  ?
  262.   /// We have to keep track of which pixels are on/off in order to?
  263.   // write the correct character out to the LCD.?
  264.   if (d){?
  265.     pixels[x][y_mod] |= val;?
  266.   } ?
  267.   else {?
  268.     pixels[x][y_mod] &= ~val;?
  269.   }?
  270.  ?
  271.   // Write the updated pixel out to the LCD?
  272.   // TODO Check if the pixel is already in the state requested,?
  273.   //      if so, don't write to LCD.?
  274.   gotoXY(x,y_mod);?
  275.   LcdWrite (1,pixels[x][y_mod]);?
  276. }?
  277.  ?
  278. // gotoXY routine to position cursor?
  279. // x - range: 0 to 84?
  280. // y - range: 0 to 5?
  281. void gotoXY(int x, int y) {?
  282.   LcdWrite( 0, 0x80 | x);  // Column.?
  283.   LcdWrite( 0, 0x40 | y);  // Row.      ?
  284. }?
  285.  ?
  286. byte rev_bits ( byte val )?
  287. {?
  288.   byte ret = 0;?
  289.   byte n_bits = 8;?
  290.  ?
  291.   for ( unsigned i = 0; i < n_bits; ++i ) {?
  292.     ret = ( ret << 1 ) | ( val & 1 );?
  293.     val >>= 1;?
  294.   }?
  295.  ?
  296.   return ret;?
  297. }?
  298.  ?
  299.  ?
  300. void LcdCharacter(char character)?
  301. {?
  302.   LcdWrite(LCD_D, 0x00);?
  303.   for (int index = 5; index > -1; index=index-1)?
  304.   {?
  305.     LcdWrite(LCD_D, rev_bits(ASCII[character - 0x20][index]));?
  306.   }?
  307.   LcdWrite(LCD_D, 0x00);?
  308. }?
© 2011 Code Tidy