Guest User

LS020 LCD

a guest
Jun 12th, 2012
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.50 KB | None | 0 0
  1. #include <SPI.h>
  2.  
  3. const byte CS = 7;
  4. const byte DTA = 11;
  5. const byte CLK = 13;
  6. const byte RS = 9;
  7. const byte RESET = 8;
  8. int sensorValue = 0;
  9.  
  10. unsigned int init_1[20]=
  11. {
  12.   0xEF, 0x00, 0xEE, 0x04, 0x1B, 0x04, 0xFE, 0xFE,
  13.   0xFE, 0xFE, 0xEF, 0x90, 0x4A, 0x04, 0x7F, 0x3F,
  14.   0xEE, 0x04, 0x43, 0x06};
  15.  
  16. unsigned int init_2[40]=
  17. {
  18.   0xEF, 0x90, 0x09, 0x83, 0x08, 0x00, 0x0B, 0xAF,
  19.   0x0A, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
  20.   0xEF, 0x00, 0xEE, 0x0C, 0xEF, 0x90, 0x00, 0x80,
  21.   0xEF, 0xB0, 0x49, 0x02, 0xEF, 0x00, 0x7F, 0x01,
  22.   0xE1, 0x81, 0xE2, 0x02, 0xE2, 0x76, 0xE1, 0x83};
  23.  
  24. unsigned int init_3[6]=
  25. {
  26.   0x80, 0x01, 0xEF, 0x90, 0x00, 0x00};
  27.  
  28. unsigned int off_sequence[52]=
  29. {
  30.   0xEF, 0x00, 0x7E, 0x04, 0xEF, 0xB0, 0x5A, 0x48,
  31.   0xEF, 0x00, 0x7F, 0x01, 0xEF, 0xB0, 0x64, 0xFF,
  32.   0x65, 0x00, 0xEF, 0x00, 0x7F, 0x01, 0xE2, 0x62,
  33.   0xE2, 0x02, 0xEF, 0xB0, 0xBC, 0x02, 0xEF, 0x00,
  34.   0x7F, 0x01, 0xE2, 0x00, 0x80, 0x00, 0xE2, 0x04,
  35.   0xE2, 0x00, 0xE1, 0x00, 0xEF, 0xB0, 0xBC, 0x00,
  36.   0xEF, 0x00, 0x7F, 0x01};
  37.  
  38. void initialization() {
  39.   digitalWrite(RESET, LOW);
  40.   digitalWrite(CS, HIGH);
  41.   digitalWrite(RS, HIGH);
  42.   delay(3);
  43.   digitalWrite(RESET, HIGH);
  44.   delay(1);
  45.   digitalWrite(CS, LOW);
  46.  
  47.   for(int i = 0; i < 4; i++)
  48.   {
  49.     SPI.transfer(0xFD); // send pre-init code
  50.   }
  51.  
  52.   for(int i = 0; i < 20; i++)
  53.   {
  54.     SPI.transfer(init_1[i]); // send first init table
  55.   }
  56.  
  57.   delay(7); // wait 7 ms
  58.  
  59.   for(int i = 0; i < 40; i++)
  60.   {
  61.     SPI.transfer(init_2[i]);
  62.   }
  63.  
  64.   delay(50);
  65.  
  66.   for(int i = 0; i < 6; i++)
  67.   {
  68.     SPI.transfer(init_3[i]);
  69.   }
  70.  
  71.   digitalWrite(CS, HIGH);
  72. }
  73.  
  74. void power_off() {
  75.   digitalWrite(RESET, LOW);
  76.   digitalWrite(CS, HIGH);
  77.   digitalWrite(RS, HIGH);
  78.   delay(3);
  79.   digitalWrite(RESET, HIGH);
  80.   delay(1);
  81.   digitalWrite(CS, LOW);
  82.  
  83.   for(int i = 0; i < 52; i++)
  84.   {
  85.     SPI.transfer(off_sequence[i]);
  86.   }
  87.  
  88.   digitalWrite(CS, HIGH);
  89. }
  90.  
  91. void cmd_send(int cmd) {
  92.   digitalWrite(RS, HIGH);
  93.   digitalWrite(CS, LOW);
  94.   SPI.transfer(cmd);
  95.   digitalWrite(CS, HIGH);
  96. }
  97.  
  98. void data_send(int data) {
  99.   digitalWrite(RS, LOW);
  100.   digitalWrite(CS, LOW);
  101.   SPI.transfer(data);
  102.   digitalWrite(CS, HIGH);
  103. }
  104.  
  105. void display_off() {
  106.   cmd_send(0xEF90);
  107.   cmd_send(0x0040);
  108. }
  109.  
  110. void display_on() {
  111.   cmd_send(0xEF90);
  112.   cmd_send(0x0000);
  113. }
  114.  
  115. void _8bit_mode() {
  116.   cmd_send(0xE840);
  117. }
  118.  
  119. void _16bit_mode() {
  120.   cmd_send(0xEF90);
  121.   cmd_send(0xE80F);
  122. }
  123.  
  124. void _65k_color_mode() {
  125.   cmd_send(0x0400);
  126.   cmd_send(0x0000);
  127. }
  128.  
  129. void set_window(int x1, int y1, int x2, int y2) {
  130.   cmd_send(0x0500);
  131.   cmd_send(0x0A00+x1);
  132.   cmd_send(0x0B00+x2);
  133.   cmd_send(0x0800+y1);
  134.   cmd_send(0x0900+y2);
  135. }
  136.  
  137. void rectangle(int x1, int y1, int x2, int y2, int color) {
  138.   set_window(x1,y1,x2,y2);
  139.   for(int y = y1; y <= y2; y++)
  140.   {
  141.     for(int x = x1; x <= x2; x++)
  142.     {
  143.       data_send(color);
  144.     }
  145.   }
  146. }
  147.  
  148. void scroll() {
  149.   cmd_send(0xEF90);
  150.   cmd_send(0x11A5);
  151. }
  152.  
  153. void clrscr() {
  154.   cmd_send(0xEF90);
  155.   cmd_send(0x0500);
  156.   cmd_send(0x0600);
  157.   cmd_send(0x0700);
  158.  
  159.   for(int i = 0; i < 132*176; i++)
  160.     data_send(0xFF);
  161. }
  162.  
  163. void fill_screen(int color) {
  164.   cmd_send(0xEF90);
  165.   cmd_send(0x0504);
  166.   cmd_send(0x0600);
  167.   cmd_send(0x0700);
  168.  
  169.   for(int i = 0; i < 132*176; i++)
  170.     data_send(color);
  171. }
  172.  
  173. void setup() {
  174.   pinMode(CS, OUTPUT);
  175.   pinMode(RS, OUTPUT);
  176.   pinMode(RESET, OUTPUT);
  177.   SPI.setBitOrder(MSBFIRST);
  178.   SPI.setClockDivider(SPI_CLOCK_DIV8);
  179.   SPI.begin();
  180.   initialization();
  181.   fill_screen(120);
  182. }
  183.  
  184. void loop() {
  185.  
  186. }
Advertisement
Add Comment
Please, Sign In to add comment