Advertisement
Guest User

Untitled

a guest
Jan 10th, 2020
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.40 KB | None | 0 0
  1. /* Table ascii, 5 pixels de large par 8 pixels de haut */
  2. const char asciiTable[] PROGMEM =
  3. {
  4.    0x00, 0x00, 0x00, 0x00, 0x00 // 20
  5.   ,0x00, 0x00, 0x5f, 0x00, 0x00 // 21 !
  6.   ,0x00, 0x07, 0x00, 0x07, 0x00 // 22 "
  7.   ,0x14, 0x7f, 0x14, 0x7f, 0x14 // 23 #
  8.   ,0x24, 0x2a, 0x7f, 0x2a, 0x12 // 24 $
  9.   ,0x23, 0x13, 0x08, 0x64, 0x62 // 25 %
  10.   ,0x36, 0x49, 0x55, 0x22, 0x50 // 26 &
  11.   ,0x00, 0x05, 0x03, 0x00, 0x00 // 27 '
  12.   ,0x00, 0x1c, 0x22, 0x41, 0x00 // 28 (
  13.   ,0x00, 0x41, 0x22, 0x1c, 0x00 // 29 )
  14.   ,0x14, 0x08, 0x3e, 0x08, 0x14 // 2a *
  15.   ,0x08, 0x08, 0x3e, 0x08, 0x08 // 2b +
  16.   ,0x00, 0x50, 0x30, 0x00, 0x00 // 2c ,
  17.   ,0x08, 0x08, 0x08, 0x08, 0x08 // 2d -
  18.   ,0x00, 0x60, 0x60, 0x00, 0x00 // 2e .
  19.   ,0x20, 0x10, 0x08, 0x04, 0x02 // 2f /
  20.   ,0x3e, 0x51, 0x49, 0x45, 0x3e // 30 0
  21.   ,0x00, 0x42, 0x7f, 0x40, 0x00 // 31 1
  22.   ,0x42, 0x61, 0x51, 0x49, 0x46 // 32 2
  23.   ,0x21, 0x41, 0x45, 0x4b, 0x31 // 33 3
  24.   ,0x18, 0x14, 0x12, 0x7f, 0x10 // 34 4
  25.   ,0x27, 0x45, 0x45, 0x45, 0x39 // 35 5
  26.   ,0x3c, 0x4a, 0x49, 0x49, 0x30 // 36 6
  27.   ,0x01, 0x71, 0x09, 0x05, 0x03 // 37 7
  28.   ,0x36, 0x49, 0x49, 0x49, 0x36 // 38 8
  29.   ,0x06, 0x49, 0x49, 0x29, 0x1e // 39 9
  30.   ,0x00, 0x36, 0x36, 0x00, 0x00 // 3a :
  31.   ,0x00, 0x56, 0x36, 0x00, 0x00 // 3b ;
  32.   ,0x08, 0x14, 0x22, 0x41, 0x00 // 3c <
  33.   ,0x14, 0x14, 0x14, 0x14, 0x14 // 3d =
  34.   ,0x00, 0x41, 0x22, 0x14, 0x08 // 3e >
  35.   ,0x02, 0x01, 0x51, 0x09, 0x06 // 3f ?
  36.   ,0x32, 0x49, 0x79, 0x41, 0x3e // 40 @
  37.   ,0x7e, 0x11, 0x11, 0x11, 0x7e // 41 A
  38.   ,0x7f, 0x49, 0x49, 0x49, 0x36 // 42 B
  39.   ,0x3e, 0x41, 0x41, 0x41, 0x22 // 43 C
  40.   ,0x7f, 0x41, 0x41, 0x22, 0x1c // 44 D
  41.   ,0x7f, 0x49, 0x49, 0x49, 0x41 // 45 E
  42.   ,0x7f, 0x09, 0x09, 0x09, 0x01 // 46 F
  43.   ,0x3e, 0x41, 0x49, 0x49, 0x7a // 47 G
  44.   ,0x7f, 0x08, 0x08, 0x08, 0x7f // 48 H
  45.   ,0x00, 0x41, 0x7f, 0x41, 0x00 // 49 I
  46.   ,0x20, 0x40, 0x41, 0x3f, 0x01 // 4a J
  47.   ,0x7f, 0x08, 0x14, 0x22, 0x41 // 4b K
  48.   ,0x7f, 0x40, 0x40, 0x40, 0x40 // 4c L
  49.   ,0x7f, 0x02, 0x0c, 0x02, 0x7f // 4d M
  50.   ,0x7f, 0x04, 0x08, 0x10, 0x7f // 4e N
  51.   ,0x3e, 0x41, 0x41, 0x41, 0x3e // 4f O
  52.   ,0x7f, 0x09, 0x09, 0x09, 0x06 // 50 P
  53.   ,0x3e, 0x41, 0x51, 0x21, 0x5e // 51 Q
  54.   ,0x7f, 0x09, 0x19, 0x29, 0x46 // 52 R
  55.   ,0x46, 0x49, 0x49, 0x49, 0x31 // 53 S
  56.   ,0x01, 0x01, 0x7f, 0x01, 0x01 // 54 T
  57.   ,0x3f, 0x40, 0x40, 0x40, 0x3f // 55 U
  58.   ,0x1f, 0x20, 0x40, 0x20, 0x1f // 56 V
  59.   ,0x3f, 0x40, 0x38, 0x40, 0x3f // 57 W
  60.   ,0x63, 0x14, 0x08, 0x14, 0x63 // 58 X
  61.   ,0x07, 0x08, 0x70, 0x08, 0x07 // 59 Y
  62.   ,0x61, 0x51, 0x49, 0x45, 0x43 // 5a Z
  63.   ,0x00, 0x7f, 0x41, 0x41, 0x00 // 5b [
  64.   ,0x02, 0x04, 0x08, 0x10, 0x20 // 5c backslash
  65.   ,0x00, 0x41, 0x41, 0x7f, 0x00 // 5d ]
  66.   ,0x04, 0x02, 0x01, 0x02, 0x04 // 5e ^
  67.   ,0x40, 0x40, 0x40, 0x40, 0x40 // 5f _
  68.   ,0x00, 0x01, 0x02, 0x04, 0x00 // 60 `
  69.   ,0x20, 0x54, 0x54, 0x54, 0x78 // 61 a
  70.   ,0x7f, 0x48, 0x44, 0x44, 0x38 // 62 b
  71.   ,0x38, 0x44, 0x44, 0x44, 0x20 // 63 c
  72.   ,0x38, 0x44, 0x44, 0x48, 0x7f // 64 d
  73.   ,0x38, 0x54, 0x54, 0x54, 0x18 // 65 e
  74.   ,0x08, 0x7e, 0x09, 0x01, 0x02 // 66 f
  75.   ,0x0c, 0x52, 0x52, 0x52, 0x3e // 67 g
  76.   ,0x7f, 0x08, 0x04, 0x04, 0x78 // 68 h
  77.   ,0x00, 0x44, 0x7d, 0x40, 0x00 // 69 i
  78.   ,0x20, 0x40, 0x44, 0x3d, 0x00 // 6a j
  79.   ,0x7f, 0x10, 0x28, 0x44, 0x00 // 6b k
  80.   ,0x00, 0x41, 0x7f, 0x40, 0x00 // 6c l
  81.   ,0x7c, 0x04, 0x18, 0x04, 0x78 // 6d m
  82.   ,0x7c, 0x08, 0x04, 0x04, 0x78 // 6e n
  83.   ,0x38, 0x44, 0x44, 0x44, 0x38 // 6f o
  84.   ,0x7c, 0x14, 0x14, 0x14, 0x08 // 70 p
  85.   ,0x08, 0x14, 0x14, 0x18, 0x7c // 71 q
  86.   ,0x7c, 0x08, 0x04, 0x04, 0x08 // 72 r
  87.   ,0x48, 0x54, 0x54, 0x54, 0x20 // 73 s
  88.   ,0x04, 0x3f, 0x44, 0x40, 0x20 // 74 t
  89.   ,0x3c, 0x40, 0x40, 0x20, 0x7c // 75 u
  90.   ,0x1c, 0x20, 0x40, 0x20, 0x1c // 76 v
  91.   ,0x3c, 0x40, 0x30, 0x40, 0x3c // 77 w
  92.   ,0x44, 0x28, 0x10, 0x28, 0x44 // 78 x
  93.   ,0x0c, 0x50, 0x50, 0x50, 0x3c // 79 y
  94.   ,0x44, 0x64, 0x54, 0x4c, 0x44 // 7a z
  95.   ,0x00, 0x08, 0x36, 0x41, 0x00 // 7b {
  96.   ,0x00, 0x00, 0x7f, 0x00, 0x00 // 7c |
  97.   ,0x00, 0x41, 0x36, 0x08, 0x00 // 7d }
  98.   ,0x10, 0x08, 0x08, 0x10, 0x08 // 7e ~
  99.   ,0x78, 0x46, 0x41, 0x46, 0x78 // 7f DEL
  100. };
  101.  
  102.  
  103. /** PCD8544 Commandset ################################################################ */
  104.  
  105. /* General commands */
  106. #define PCD8544_POWERDOWN           0x04
  107. #define PCD8544_ENTRYMODE           0x02
  108. #define PCD8544_EXTENDEDINSTRUCTION 0x21
  109. #define PCD8544_DISPLAYBLANK        0x00
  110. #define PCD8544_DISPLAYNORMAL       0x04
  111. #define PCD8544_DISPLAYALLON        0x01
  112. #define PCD8544_DISPLAYINVERTED     0x05
  113.  
  114. /* Normal instruction set */
  115. #define PCD8544_FUNCTIONSET         0x20
  116. #define PCD8544_DISPLAYCONTROL      0x0C
  117. #define PCD8544_SETYADDR            0x40
  118. #define PCD8544_SETXADDR            0x80
  119.  
  120. /* Extended instruction set */
  121. #define PCD8544_SETTEMP             0x04
  122. #define PCD8544_SETBIAS             0x14
  123. #define PCD8544_SETVOP              0x80
  124.  
  125.  
  126. /** Macro setting ################################################################ */
  127.  
  128. /* Definition des broches du lcd */
  129. #define PIN_CE      PORTD7  /* Broche d'activation pour synchronisé les données */
  130. #define PIN_RESET   PORTD6  /* Broche pour réinitialisé l'écran */
  131. #define PIN_DC      PORTD5  /* Broche pour sélectionner l'envoie d'une commande ou d'une donnée */
  132. #define PIN_DIN     PORTD4  /* Broche Pour reçevoir la commande ou la donnée */
  133. #define PIN_CLK     PORTD3  /* Broche pour le signal d'horloge */
  134.  
  135. /* La broche DC permet de dire à l'écran si on envoi une commande ou une donnée */
  136. #define LCD_COMMAND     0
  137. #define LCD_DATA        1
  138.  
  139. /* Défini ici la hauteur / largeur de l'écran en pixel */
  140. #define LCD_WIDTH   84
  141. #define LCD_HEIGH   48
  142. #define LCD_BUFFER  LCD_WIDTH * LCD_HEIGH / 8
  143.  
  144. /* Taille des caractères de la tables ascii */
  145. #define WIDTH_FONT  5
  146. #define HEIGH_FONT  8
  147.  
  148.  
  149. /** Structures ################################################################ */
  150.  
  151. typedef struct Coordonnees
  152. {
  153.     int8_t x;
  154.     int8_t y;
  155.  
  156. }Coordonnees;
  157.  
  158. typedef struct Dimensions
  159. {
  160.     uint8_t w;
  161.     uint8_t h;
  162.  
  163. }Dimensions;
  164.  
  165.  
  166. /** Global variables ################################################################ */
  167.  
  168. uint8_t lcdBuf[LCD_BUFFER] = {0};
  169.  
  170.  
  171. /** Prototype function ################################################################ */
  172.  
  173. /* Private */
  174. static void LCD_SendData(const uint8_t, const uint8_t);
  175.  
  176.  
  177. /* Extern */
  178. void LCD_InitLCD(void);
  179. void LCD_Udapte(void);
  180. void LCD_Clear(void);
  181. void LCD_DrawChar(const char*, Coordonnees*);
  182. void LCD_Print(const char*, Coordonnees*);
  183. void LCD_DrawBitmap(const uint8_t*, Coordonnees*, Dimensions*);
  184.  
  185. uint8_t LCD_SetPixel(Coordonnees*, const uint8_t);
  186. uint8_t LCD_GetPixel(Coordonnees*);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement