]>
cvs.zerfleddert.de Git - proxmark3-svn/blob - armsrc/LCD.c
   5 void LCDSend(unsigned int data
) 
   7         // 9th bit set for data, clear for command 
   8         while ((AT91C_BASE_SPI
->SPI_SR 
& AT91C_SPI_TXEMPTY
) == 0);      // wait for the transfer to complete 
   9         // For clarity's sake we pass data with 9th bit clear and commands with 9th 
  10         // bit set since they're implemented as defines, se we need to invert bit 
  11         AT91C_BASE_SPI
->SPI_TDR 
= data
^0x100;                                                   // Send the data/command 
  14 void LCDSetXY(unsigned char x
, unsigned char y
) 
  16         LCDSend(PPASET
);                        // page start/end ram 
  17         LCDSend(y
);                                     // Start Page to display to 
  18         LCDSend(131);                           // End Page to display to 
  20         LCDSend(PCASET
);                        // column start/end ram 
  21         LCDSend(x
);                                     // Start Column to display to 
  22         LCDSend(131);                           // End Column to display to 
  25 void LCDSetPixel(unsigned char x
, unsigned char y
, unsigned char color
) 
  27         LCDSetXY(x
,y
);                          // Set position 
  28         LCDSend(PRAMWR
);                        // Now write the pixel to the display 
  29         LCDSend(color
);                         // Write the data in the specified Color 
  32 void LCDFill (unsigned char xs
,unsigned char ys
,unsigned char width
,unsigned char height
, unsigned char color
) 
  36     for (i
=0;i 
< height
;i
++)    // Number of horizontal lines 
  38                 LCDSetXY(xs
,ys
+i
);              // Goto start of fill area (Top Left) 
  39                 LCDSend(PRAMWR
);                // Write to display 
  41                 for (j
=0;j 
< width
;j
++) // pixels per line 
  46 void LCDString (char *lcd_string
, const char *font_style
,unsigned char x
, unsigned char y
, unsigned char fcolor
, unsigned char bcolor
) 
  49         unsigned char mask
=0, px
, py
, xme
, yme
, offset
; 
  52         data 
= font_style
;                      // point to the start of the font table 
  54         xme 
= *data
;                            // get font x width 
  56         yme 
= *data
;                            // get font y length 
  58         offset 
= *data
;                         // get data bytes per font 
  62                 // point to data in table to be loaded 
  63                 data 
=  (font_style 
+ offset
) + (offset 
* (int)(*lcd_string 
- 32)); 
  65                 for (i
=0;i 
< yme
;i
++) { 
  68                         for (px
=x
; px 
< (x 
+ xme
); px
++) { 
  71                                 if (*data 
& mask
)       LCDSetPixel (px
,py
,fcolor
); 
  72                                 else                            LCDSetPixel (px
,py
,bcolor
); 
  80                 lcd_string
++;                                           // next character in string 
  82         } while(*lcd_string 
!='\0');                    // keep spitting chars out until end of string 
  88         SetupSpi(SPI_LCD_MODE
); 
 103         LCDSend(PSWRESET
);                      // software reset 
 105         LCDSend(PSLEEPOUT
);                     // exit sleep mode 
 106         LCDSend(PBSTRON
);                       // booster on 
 107         LCDSend(PDISPON
);                       // display on 
 108         LCDSend(PNORON
);                        // normal on 
 109         LCDSend(PMADCTL
);                       // rotate display 180 deg 
 112         LCDSend(PCOLMOD
);                       // color mode 
 113         LCDSend(0x02);                          // 8bpp color mode 
 115     LCDSend(PSETCON
);                   // set contrast 
 120         LCDSend(PRAMWR
);                        // Write to display 
 122         while(i
--) LCDSend(WHITE
);