Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. /* The below source code is from the LCD manufacturer, when he has no
  2. idea about Arduino, this is translated from code he gave me for AVR
  3. - I assume "sbit" is just Arduino GPIO settings, so I changed them
  4. here accordingly - but I am not sure if it is the correct settings I
  5. shall use for the LCD screen via Arduino
  6. */
  7.  
  8. #include "stdio.h"
  9. #include "stdlib.h"
  10.  
  11. //sbit RST = P3^1;
  12. //sbit CD = P3^0;
  13. //sbit SCK = P1^0; //WRB=WR0
  14. //sbit SDA = P1^1; //RDB=WR1
  15. //sbit CS = P3^2;
  16.  
  17. void writei(unsigned char Cbyte)
  18. {
  19. unsigned char i;
  20. digitalWrite(11, LOW); //CS=0;
  21. digitalWrite(12, LOW); //CD=0;
  22. for(i=0;i<8;i++) {
  23. digitalWrite(SCK, LOW); // SCK=0;
  24. digitalWrite(SDA, Cbyte&0x80?HIGH:LOW); // SDA=Cbyte&0x80?1:0;
  25. digitalWrite(SCK, HIGH); // SCK=1;
  26. Cbyte=Cbyte<<1;
  27. }
  28. digitalWrite(11, HIGH); // CS=1;
  29. }
  30.  
  31. void writed(unsigned char Dbyte) {
  32. unsigned char i;
  33. digitalWrite(11, LOW); //CS=0;
  34. digitalWrite(12, HIGH); //CD=1;
  35. for(i=0;i<8;i++) {
  36. digitalWrite(SCK, LOW); // SCK=0;
  37. digitalWrite(SDA, Dbyte&0x80?HIGH:LOW); // SDA=Dbyte&0x80?1:0;
  38. digitalWrite(SCK, HIGH); // SCK=1;
  39.  
  40. Dbyte=Dbyte<<1;
  41. }
  42. digitalWrite(11, HIGH); // CS=1;
  43. }
  44.  
  45. void DelayMS(unsigned int MS)
  46. {
  47. unsigned char us,usn;
  48. while(MS!=0)
  49. {
  50. usn=2;
  51. while(usn!=0) { us=0xf6; while(us!=0){us--;}; usn--; }
  52. MS--;
  53. }
  54. }
  55.  
  56. void LCD_INIT(void) {
  57.  
  58. //writei(0xe3);//system reset
  59. digitalWrite(13, LOW); // RST=0;
  60. DelayMS(10); //1ms
  61.  
  62. digitalWrite(13, HIGH); // RST=1;
  63. DelayMS(500);//Delay more than 150ms.
  64.  
  65. writei(0xe1);//system reset
  66. writed(0xe2);
  67.  
  68. DelayMS(2);
  69. writei(0x04);//set column Address
  70. writed(0x00);//
  71.  
  72. //writei(0x2f);// internal VLCD
  73. //writei(0x26);// TC
  74. writei(0xEb);//set bias=1/12
  75. writei(0x81);//set vop
  76. writed(90);// pm=106 Set VLCD=15V
  77.  
  78. writei(0xb8);//屏蔽MTP
  79. writed(0x00);
  80.  
  81. writei(0xC4);//set lcd mapping control
  82. //writei(0x00); //MY MX 0
  83.  
  84. writei(0xA3);//set line rate 20klps
  85. writei(0x95); // PT0 1B P P
  86. //writei(90);
  87.  
  88. writei(0xf1); //set com end
  89. writed(159); //set com end 240*128
  90.  
  91. writei(0xC2);
  92. writei(0x31); //APC
  93. writed(0X91); // 1/0: sys_LRM_EN disable
  94. writei(0xc9);
  95. writed(0xad); // display
  96. }
  97. void setWindowsProgame() //com36--160 seg51--205
  98. {
  99. writei(0x04); //colum
  100. writed(0x00);
  101. writei(0x60); //page
  102. writei(0x70);
  103. writei(0xf4);
  104. writed(0); //startx
  105. writei(0xf6);
  106. writed(239); //endx
  107. writei(0xf5);
  108. writed(0); //
  109. writei(0xf7);
  110. writed(15); //endy PANGE 16页
  111. writei(0xf9); //窗口功能开
  112. writei(0xC4);//set lcd mapping control
  113. }
  114. void display_black(void)
  115. {
  116. int i,j,k;
  117. setWindowsProgame();
  118. for(i=0;i<240;i++) {
  119. for(j=0;j<18;j++) { writei(0x01); writed(0xff); }
  120. }
  121. }
  122. void display_wirte ()
  123. {
  124. int i,j,k;
  125. setWindowsProgame();
  126. for(i=0;i<240;i++) {
  127. for(j=0;j<18;j++) { writei(0x01); writed(0x00); }
  128. }
  129. }
  130. void display_pic()
  131. {
  132. int i,j,K;
  133. char d;
  134. setWindowsProgame();
  135. i=0;
  136. K=0;
  137. for(i=0;i<240*16;i++) //240*144
  138. {
  139. writei(0x01);
  140. d=0xff; //d=PIC[K++];
  141. writed(d);
  142. }
  143. }
  144.  
  145. void setup() {
  146. // IO declaration: (GPIO setup)
  147. pinMode(12, OUTPUT); // CD
  148. pinMode(13, OUTPUT); // RST (RW)
  149. pinMode(11, OUTPUT); // CS
  150. pinMode(SCK, OUTPUT);
  151. pinMode(SDA, OUTPUT);
  152. LCD_INIT();
  153. }
  154.  
  155. void loop(){
  156. display_pic(); // Fill-up the screen in black
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement