2025年st7735r(st7735r和st7735s)

st7735r(st7735r和st7735s)void LCD CtrlWrite IC unsigned char c nbsp nbsp nbsp nbsp unsigned char i 0 nbsp nbsp nbsp nbsp DDRA BV PA0 BV PA1 BV PA2 BV PA3

大家好,我是讯享网,很高兴认识大家。




  1. void LCD_CtrlWrite_IC(unsigned char c)
  2. {
  3.         unsigned char i=0;
  4.         DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA3) | _BV(PA4);
  5.         CLR_LCD_CS();                                                //片选后指令为拉低
  6.         CLR_LCD_RS();
  7.         for(i=0;i<8;i++)
  8.         {
  9.                 if(c & 0x80) SET_LCD_SDA();
  10.                         else  CLR_LCD_SDA();
  11.                
  12.                 CLR_LCD_SCK();SET_LCD_SCK();
  13.                 c <<= 1;
  14.         }
  15.         SET_LCD_CS();
  16. }
  17. void LCD_DataWrite_IC(unsigned char data)
  18. {
  19.         unsigned char i=0;
  20.         DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA3) | _BV(PA4);
  21.         CLR_LCD_CS();                                        //片选后指令为拉高
  22.         SET_LCD_RS();
  23.         for(i=0;i<8;i++)
  24.         {
  25.                 if(data & 0x80) SET_LCD_SDA();
  26.                         else  CLR_LCD_SDA();
  27.                
  28.                 CLR_LCD_SCK();SET_LCD_SCK();
  29.                 data <<= 1;
  30.         }
  31.         SET_LCD_CS();
  32. }
  33. void LCD_DataWrite(unsigned char LCD_DataH,unsigned char LCD_DataL)
  34. {
  35.         LCD_DataWrite_IC(LCD_DataH);
  36.         LCD_DataWrite_IC(LCD_DataL);
  37. }



  38. void  write_command(unsigned char c)
  39. {
  40.         unsigned char i=0;
  41.         DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA3) | _BV(PA4);
  42.         CLR_LCD_CS();
  43.         CLR_LCD_RS();
  44.         for(i=0;i<8;i++)
  45.         {
  46.                 if(c & 0x80) SET_LCD_SDA();
  47.                         else  CLR_LCD_SDA();
  48.                
  49.                 CLR_LCD_SCK();SET_LCD_SCK();
  50.                 c <<= 1;
  51.         }
  52.         SET_LCD_CS();
  53. }
  54. void  write_data(unsigned char d)
  55. {
  56.         unsigned char i=0;
  57.         DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA3) | _BV(PA4);
  58.         CLR_LCD_CS();
  59.         SET_LCD_RS();
  60.         for(i=0;i<8;i++)
  61.         {
  62.                 if(d & 0x80) SET_LCD_SDA();
  63.                         else  CLR_LCD_SDA();
  64.                
  65.                 CLR_LCD_SCK(); SET_LCD_SCK();
  66.                 d <<= 1;
  67.         }
  68.         SET_LCD_CS();
  69. }

  70. void dsp_single_colour(unsigned char DH,unsigned char DL)
  71. {
  72. unsigned char i,j;
  73. //RamAdressSet();
  74. for (i=0;i<160;i++)
  75.     for (j=0;j<128;j++)
  76.         LCD_DataWrite(DH,DL);
  77. }
  78. void init_lcd18(void)
  79. {
  80.         DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA3) | _BV(PA4);                //PA0-4设置输出
  81.         CLR_LCD_RESET();
  82.         _delay_ms(5);
  83.         SET_LCD_RESET();
  84.         _delay_ms(5);

  85. //——————————————————————//  
  86. //——————-Software Reset——————————-//
  87. //——————————————————————//
  88. write_command(0x01);   //Sofeware setting
  89. _delay_ms(10);
  90. write_command(0x11); //Sleep out
  91. _delay_ms(120); //Delay 120ms
  92. //————————————ST7735S Frame Rate—————————————–//
  93. write_command(0xB1);
  94. write_data(0x01);
  95. write_data(0x2C);
  96. write_data(0x2D);
  97. write_command(0xB2);
  98. write_data(0x01);
  99. write_data(0x2C);
  100. write_data(0x2D);
  101. write_command(0xB3);
  102. write_data(0x01);
  103. write_data(0x2C);
  104. write_data(0x2D);
  105. write_data(0x01);
  106. write_data(0x2C);
  107. write_data(0x2D);
  108.     //————————————End ST7735R Frame Rate—————————————–//
  109.         write_command(0xB4);//Column inversion
  110.         write_data(0x07);
  111. //————————————ST7735R Power Sequence—————————————–//

  112. write_command(0xC0);
  113. write_data(0xA2);
  114. write_data(0x02);
  115. write_data(0x84);
  116. write_command(0xC1);
  117. write_data(0XC5);
  118. write_command(0xC2);
  119. write_data(0x0A);
  120. write_data(0x00);
  121. write_command(0xC3);
  122. write_data(0x8A);
  123. write_data(0x2A);
  124. write_command(0xC4);
  125. write_data(0x8A);
  126. write_data(0xEE);
  127. //———————————End ST7735S Power Sequence————————————-//
  128. write_command(0xC5); //VCOM
  129. write_data(0x1A);
  130. write_command(0x36); //MX, MY, RGB mode
  131. write_data(0xC8);
  132. //————————————ST7735S Gamma Sequence—————————————–//
  133. write_command(0xE0);
  134. write_data(0x02);
  135. write_data(0x1c);
  136. write_data(0x07);
  137. write_data(0x12);
  138. write_data(0x37);
  139. write_data(0x32);
  140. write_data(0x29);
  141. write_data(0x2d);
  142. write_data(0x29);
  143. write_data(0x25);
  144. write_data(0x2b);
  145. write_data(0x39);
  146. write_data(0x00);
  147. write_data(0x01);
  148. write_data(0x03);
  149. write_data(0x10);
  150. write_command(0xE1);
  151. write_data(0x03);
  152. write_data(0x1d);
  153. write_data(0x07);
  154. write_data(0x06);
  155. write_data(0x2e);
  156. write_data(0x2c);
  157. write_data(0x29);
  158. write_data(0x2d);
  159. write_data(0x2e);
  160. write_data(0x2e);
  161. write_data(0x37);
  162. write_data(0x3f);
  163. write_data(0x00);
  164. write_data(0x00);
  165. write_data(0x02);
  166. write_data(0x10);

  167.         write_command(0x2A);
  168.         write_data(0x00);
  169.         write_data(0x02);
  170.         write_data(0x00);
  171.         write_data(0x81);
  172.         
  173.         write_command(0x2B);
  174.         write_data(0x00);
  175.         write_data(0x01);
  176.         write_data(0x00);
  177.         write_data(0xA0);
  178. //————————————End ST7735S Gamma Sequence—————————————–//
  179. write_command(0x3A); //65k mode
  180. write_data(0x05);
  181. write_command(0x29); //Display on
  182. */
  183. }

  184. //===========================================================================

  185. void  RamAdressSet(void)
  186. {
  187.    write_command(0x2A);
  188.    write_data(0x00);
  189.    write_data(0x00);
  190.    write_data(0x00);
  191.    write_data(0x7f);
  192.   
  193.    write_command(0x2B);
  194.    write_data(0x00);
  195.    write_data(0x00);
  196.    write_data(0x00);
  197.    write_data(0x9f);                  
  198. }



  199. void PutPixel(unsigned int x_start,unsigned int y_start,unsigned int color)
  200. {
  201.         LCD_CtrlWrite_IC(0x2a);
  202.         LCD_DataWrite_IC(x_start);
  203.         LCD_DataWrite_IC(0x5f);
  204.         LCD_CtrlWrite_IC(0x2b);
  205.         LCD_DataWrite_IC(y_start+0x34);
  206.         LCD_DataWrite_IC(0x7F);
  207.         LCD_CtrlWrite_IC(0x2c);
  208.         LCD_DataWrite_IC(color>>8);
  209.         LCD_DataWrite_IC(color&0xff);        
  210. }



  211. void RedLine(void)
  212. {
  213.         unsigned char  i=0,j=0;
  214.         i=66;   // 11格灰阶
  215.         for(j=0;j<16;j++)
  216.         {
  217.                 PutPixel(i,j,0xf800);
  218.         }

  219. }


  220. void Output_Pixel(unsigned int x,unsigned int y)
  221. {
  222.     LCD_CtrlWrite_IC(0x2A);  //Column Address Set        
  223.         LCD_DataWrite_IC(x);//xsh
  224.         LCD_DataWrite_IC(x);//xsl         
  225.         LCD_CtrlWrite_IC(0x2B);//Row Address Set            
  226.         LCD_DataWrite_IC(y);//ysl
  227.         LCD_DataWrite_IC(y);//ysl
  228.         LCD_CtrlWrite_IC(0x2c);
  229.         LCD_DataWrite(0xf8,0x00);
  230.     RamAdressSet();
  231. }

  232. void Display_ASCII8X16(unsigned int x0,unsigned int y0,unsigned char s)
  233. {
  234.         int i,j,k,x,y,xx;
  235.         
  236.         unsigned char qm;
  237.         
  238.         long int ulOffset;
  239.         
  240.         char  ywbuf[32],temp[2];

  241.         for(i = 0; i<strlen((char)s);i++)
  242.         {
  243.                 if(((unsigned char)(*(s+i))) >= 161)
  244.                 {
  245.                         temp[0] = *(s+i);
  246.                         temp[1] = ‘0’;
  247.                         return;
  248.                 }
  249.                
  250.                 else
  251.                 {
  252.                         qm = *(s+i);

  253.                         ulOffset = (long int)(qm) * 16;
  254.                         
  255.             for (j = 0; j < 16; j ++)
  256.             {
  257.                                 ywbuf[j]=Zk_ASCII8X16[ulOffset+j];
  258.                    }
  259.             
  260.             for(y = 0;y < 16;y++)
  261.             {
  262.                           for(x=0;x<8;x++)
  263.                            {
  264.                         k=x % 8;
  265.                         
  266.                                           if(ywbuf[y]&(0x80 >> k))
  267.                                            {
  268.                                                   xx=x0+x+i*8;
  269.                                             Output_Pixel(xx,y+y0);
  270.                                           }
  271.                                    }
  272.            }

  273.                 }
  274.         }            
  275. }


  276. void Display_Desc(void)
  277. {
  278.     Display_ASCII8X16(1,52,str1);
  279.     Display_ASCII8X16(1,64,str2);
  280.     Display_ASCII8X16(1,76,str3);
  281.     Display_ASCII8X16(1,88,str4);
  282.     Display_ASCII8X16(1,100,str5);
  283.     Display_ASCII8X16(1,112,str6);
  284. }


讯享网

小讯
上一篇 2025-05-10 15:25
下一篇 2025-04-28 19:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/202209.html