久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2146|回復(fù): 0
收起左側(cè)

單片機程序 16灰階LCM270X160分辨率FSTN液晶顯示屏LCD,ST7586S驅(qū)動,6800接口

[復(fù)制鏈接]
ID:324463 發(fā)表于 2022-11-2 22:52 | 顯示全部樓層 |閱讀模式
16灰階LCM 270X160分辨率FSTN液晶顯示屏LCD,ST7586S驅(qū)動,6800接口,單塊屏3.5英寸,7寸LCM單色屏,可以黑白,4灰階,16灰階

外形尺寸:170mmx62mm
玻璃尺寸:167mmx60mm
FPC軟排線長度:23mm
單塊玻璃尺寸:83.3mmx60mm
兩塊玻璃對角線尺寸:178mm

7寸LCM單色屏,F(xiàn)STN屏,雙屏顯示,單塊屏3.5英寸,3.5寸 LCD,270*160分辨率FSTN顯示屏,ST7586S驅(qū)動,6800接口 10800個

LCD4310021001185001DED   ,D18110008,14966-LED-C-A173-20181106 ROHS
GWMS14966 CSM14966D CSM14966D(R)汕頭超聲液晶顯示屏 LCD LCM
3.5寸液晶顯示屏,270160 LCD 270X160 LCM 270*160顯示屏 3.5英寸屏幕
270X160 高點陣,大尺寸液晶顯示屏,雙屏顯示,單個屏幕3.5英寸,ST7586S,COG液晶模塊 LCM LCD 單色屏 STN 6800接口
1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

10.jpg

11.jpg

20.jpg

21.jpg

22.jpg

23.jpg

30.jpg

31.jpg

32.jpg

33.jpg

34.jpg

35.jpg

36.jpg

STM32單片機源程序如下:
  1. #include "S6B0724_i68.h"
  2. //#include <stdlib.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include "delay.h"
  6. #include "picture.h"
  7. #include "font5x8.h"

  8. #define LCD_WIDTH 270
  9. #define LCD_PAGE  20

  10. //#define LCD_PORT GPIOB

  11. #define CS1_CLR  GPIO_ResetBits(GPIOC, GPIO_Pin_6)
  12. #define CS1_SET  GPIO_SetBits(GPIOC, GPIO_Pin_6)

  13. #define DC1_CLR  GPIO_ResetBits(GPIOC, GPIO_Pin_7)
  14. #define DC1_SET  GPIO_SetBits(GPIOC, GPIO_Pin_7)

  15. #define RW1_CLR  GPIO_ResetBits(GPIOC, GPIO_Pin_8)
  16. #define RW1_SET  GPIO_SetBits(GPIOC, GPIO_Pin_8)

  17. #define EN1_CLR  GPIO_ResetBits(GPIOC, GPIO_Pin_9)
  18. #define EN1_SET  GPIO_SetBits(GPIOC, GPIO_Pin_9)

  19. #define RST1_CLR  GPIO_ResetBits(GPIOC, GPIO_Pin_10)
  20. #define RST1_SET  GPIO_SetBits(GPIOC, GPIO_Pin_10)

  21. #define CS2_CLR  GPIO_ResetBits(GPIOA, GPIO_Pin_2)
  22. #define CS2_SET  GPIO_SetBits(GPIOA, GPIO_Pin_2)

  23. #define DC2_CLR  GPIO_ResetBits(GPIOA, GPIO_Pin_4)
  24. #define DC2_SET  GPIO_SetBits(GPIOA, GPIO_Pin_4)

  25. #define RW2_CLR  GPIO_ResetBits(GPIOA, GPIO_Pin_5)
  26. #define RW2_SET  GPIO_SetBits(GPIOA, GPIO_Pin_5)

  27. #define EN2_CLR  GPIO_ResetBits(GPIOA, GPIO_Pin_6)
  28. #define EN2_SET  GPIO_SetBits(GPIOA, GPIO_Pin_6)

  29. #define RST2_CLR  GPIO_ResetBits(GPIOA, GPIO_Pin_3)
  30. #define RST2_SET  GPIO_SetBits(GPIOA, GPIO_Pin_3)

  31. uint8_t buffer[270*20];

  32. void lcd_gpio_config(void)
  33. {
  34.         GPIO_InitTypeDef GPIO_InitStructure;
  35.        
  36.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE );
  37.     GPIO_PinRemapConfig( GPIO_Remap_SWJ_JTAGDisable, ENABLE );

  38.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  39.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  40.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6;
  41.         GPIO_Init(GPIOA, &GPIO_InitStructure);

  42.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
  43.         GPIO_Init(GPIOC, &GPIO_InitStructure);

  44.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  45.         GPIO_Init(GPIOB, &GPIO_InitStructure);
  46. }

  47. void lcd_send_cmd1(unsigned int cmd)
  48. {
  49.         CS1_CLR;
  50.     DC1_CLR;
  51.     RW1_CLR;
  52.        
  53.     GPIOB->ODR= (GPIOB->ODR & 0xFF) | ((cmd & 0xFF) << 8);

  54.     EN1_SET;
  55.     EN1_CLR;
  56.         CS1_SET;
  57. }

  58. void lcd_send_data1(unsigned int dat)
  59. {
  60.         CS1_CLR;
  61.     DC1_SET;

  62.     RW1_CLR;
  63.        
  64.     GPIOB->ODR= (GPIOB->ODR & 0xFF) | ((dat & 0xFF) << 8);

  65.     EN1_SET;
  66.     EN1_CLR;
  67.         CS1_SET;
  68. }

  69. void lcd_reset1(void)
  70. {
  71.         RST1_CLR;
  72.         delay_ms(10);        //keep low, min 1ms
  73.         RST1_SET;
  74.         delay_ms(120);        //keep high, min 5ms
  75. }

  76. void lcd_send_cmd2(unsigned int cmd)
  77. {
  78.         CS2_CLR;
  79.     DC2_CLR;

  80.     RW2_CLR;
  81.        
  82.     GPIOB->ODR= (GPIOB->ODR & 0xFF00) | (cmd & 0xFF);

  83.     EN2_SET;
  84.     EN2_CLR;
  85.         CS2_SET;
  86. }

  87. void lcd_send_data2(unsigned int dat)
  88. {
  89.         CS2_CLR;
  90.     DC2_SET;

  91.     RW2_CLR;
  92.        
  93.     GPIOB->ODR= (GPIOB->ODR & 0xFF00) | (dat & 0xFF);

  94.     EN2_SET;
  95.     EN2_CLR;
  96.         CS2_SET;
  97. }

  98. void lcd_reset2(void)
  99. {
  100.         RST2_CLR;
  101.         delay_ms(10);        //keep low, min 1ms
  102.         RST2_SET;
  103.         delay_ms(120);        //keep high, min 5ms
  104. }

  105. void lcd_send_cmd(unsigned int cmd)
  106. {
  107.         lcd_send_cmd1(cmd);
  108.         lcd_send_cmd2(cmd);
  109. }

  110. void lcd_send_data(unsigned int dat)
  111. {
  112.         lcd_send_data1(dat);
  113.         lcd_send_data2(dat);
  114. }

  115. void lcd_reset(void)
  116. {
  117.         lcd_reset1(); lcd_reset2();
  118. }

  119. void lcd_init_registers(void)
  120. {
  121.         //lcd_send_cmd(0x01);        //soft reset
  122.         //delay_ms(120);

  123.         lcd_send_cmd(0x11);                //sleep out
  124.         lcd_send_cmd(0x28);                //display off
  125.         delay_ms(25);
  126.        
  127.         lcd_send_cmd(0xC0);
  128.         lcd_send_data(0x50);
  129.         lcd_send_data(0x01);
  130.        
  131.         lcd_send_cmd(0xC3);
  132.         lcd_send_data(0x00);
  133.        
  134.         lcd_send_cmd(0xC4);
  135.         lcd_send_data(0x07);
  136.        
  137.         lcd_send_cmd(0xD0);
  138.         lcd_send_data(0x1D);
  139.        
  140.         lcd_send_cmd(0xB3);
  141.         lcd_send_data(0x00);
  142.        
  143.         lcd_send_cmd(0xB5);
  144.         lcd_send_data(0x00);
  145.        
  146.         lcd_send_cmd(0x39);        //mono mode
  147.        
  148.         lcd_send_cmd(0x3A);
  149.         lcd_send_data(0x02);
  150.        
  151.         lcd_send_cmd(0x36);
  152.         lcd_send_data(0x00);        // COM:C159->C0   SEG: SEG383->SEG0
  153.        
  154.         lcd_send_cmd(0xB1);
  155.         lcd_send_data(0x00);
  156.        
  157.         lcd_send_cmd(0xB0);        //duty
  158.         lcd_send_data(0x9F);

  159.         lcd_send_cmd(0x20);

  160.         lcd_send_cmd(0x2A); // Column Address Setting
  161.         lcd_send_data(0x00); // COL0 -> COL127
  162.         lcd_send_data(0x13); //
  163.         lcd_send_data(0x00); //
  164.         lcd_send_data(0x6C); // 80*3=240 pixels

  165.         lcd_send_cmd(0x2B); // Row Address Setting
  166.         lcd_send_data(0x00); // ROW0 -> ROW159
  167.         lcd_send_data(0x00); //
  168.         lcd_send_data(0x00); //
  169.         lcd_send_data(0x9F); // 160 pixels
  170.   
  171.         lcd_send_cmd(0x29);
  172. }

  173. uint8_t offsets[] = {6, 3, 0};

  174. void lcd_update(void)
  175. {
  176.         lcd_send_cmd(0x2A); // Column Address Setting
  177.         lcd_send_data(0x00);
  178.         lcd_send_data(0x13);
  179.         lcd_send_data(0x00);
  180.         lcd_send_data(0x6C);
  181.        
  182.         lcd_send_cmd(0x2B); // Row Address Setting
  183.         lcd_send_data(0x00);
  184.         lcd_send_data(0x00);
  185.         lcd_send_data(0x00);
  186.         lcd_send_data(0x9F);
  187.        
  188.         lcd_send_cmd(0x2C);
  189.        
  190.         uint8_t temp;
  191.        
  192.         for(uint16_t j=0; j< 160; j++)
  193.         {
  194.                 for(uint16_t i=0; i< 90; i++)
  195.                 {
  196.                         temp = 0x00;
  197.                         for(uint16_t z=0; z< 3; z++)
  198.                         {
  199.                                 temp |= ((buffer[j/8 * 270 + i*3 + z] >> (j % 8) & 0x01) ? 0x03 : 0x00) << offsets[z];
  200.                         }
  201.                        
  202.                         lcd_send_data(temp);
  203.                 }
  204.         }
  205. }

  206. void lcd_write_buffer(int x, int p, int cx, int pc, const uint8_t *data)
  207. {               
  208.         for(int j=0; j< pc; j++)
  209.         {
  210.                 for(int i = 0; i< cx; i++)
  211.                 {
  212.                         buffer[(p + j)*270 + x + i] = data[j*cx + i];
  213.                 }
  214.         }
  215. }

  216. void lcd_set_buffer(int x, int p, uint8_t data)
  217. {
  218.         buffer[p*270 + x] = data;
  219. }

  220. void lcd_init(void)
  221. {
  222.     lcd_gpio_config();
  223.     lcd_reset();
  224.         lcd_init_registers();
  225.        
  226.         memset(buffer, 0x00, sizeof buffer);
  227. }

  228. void lcd_graphic_test(void)
  229. {
  230.         int i, j;
  231.        
  232.         //display chess pattern
  233.         for(j=0; j< LCD_PAGE; j++)
  234.         {
  235.                 for(i=0; i< LCD_WIDTH; i++)
  236.                 {
  237.                         lcd_set_buffer(i, j, (i/4)%2 ? 0xF0 : 0x0F);
  238.                 }
  239.         }
  240.         lcd_update();
  241.         delay_ms(1000);
  242.        
  243.         //all black.
  244.         for(j=0; j< LCD_PAGE; j++)
  245.         {
  246.                 for(i=0; i< LCD_WIDTH; i++)
  247.                 {
  248.                         lcd_set_buffer(i, j, 0xFF);
  249.                 }
  250.         }
  251.         lcd_update();
  252.         delay_ms(1000);
  253.        
  254.         //all white.
  255.         for(j=0; j< LCD_PAGE; j++)
  256.         {
  257.                 for(i=0; i< LCD_WIDTH; i++)
  258.                 {
  259.                         lcd_set_buffer(i, j, 0x00);
  260.                 }
  261.         }
  262.         lcd_update();
  263.         delay_ms(1000);

  264.         int nCharIndex = 0;
  265.         for(int i=0; i< 20; i++)
  266.         {
  267.                 for(int j=0; j< 270; j++)
  268.                 {
  269.                         nCharIndex = (i*45 + j/6) % 96;
  270.                         buffer[i*270 + j] = (j%6 != 5) ? FONT5x8[nCharIndex][j%6] : 0x00;
  271.                 }
  272.         }
  273.         lcd_update();
  274.         delay_ms(1000);
  275.        
  276.         memset(buffer, 0x00, sizeof buffer);
  277.         lcd_write_buffer(20, 0, 228, 20, DEMO);
  278.         lcd_update();
  279.         delay_ms(1000);
  280.        
  281.         memset(buffer, 0x00, sizeof buffer);
  282.         lcd_write_buffer(10, 1, 64, 8, Doraemon);
  283.         lcd_update();
  284.         delay_ms(1000);
  285. }
復(fù)制代碼
下載:
STM32單片機LCD270160代碼與英文pdf.7z (865.37 KB, 下載次數(shù): 20)




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲做受高潮无遮挡 | 免费黄网站在线观看 | 亚洲一区不卡 | 国产黄色免费视频 | 在线不卡一区二区 | 国产成人高清 | 黄色裸体视频 | a天堂视频| 亚洲我射av | 成人91看片| 国产精品久久久久久中文字 | 黄色高潮视频 | 免费a网站 | 欧美在线免费观看 | 日韩欧美在线一区 | 黄色免费大片 | 久久精品一区二区三区四区五区 | 一级片欧美 | 亚洲日本中文字幕 | 99一区二区三区 | 黄色小视频免费观看 | 亚洲最新视频 | 五月天婷婷综合 | 日韩免费毛片 | 中文字幕免费在线看线人动作大片 | 日本在线看片 | av免费观看网站 | 在线观看日本 | 亚洲精品中文字幕乱码三区91 | 欧美久久久久久久久久 | 亚洲天堂av网 | 女人久久久 | 美女久久久久久 | аⅴ资源新版在线天堂 | 中文字幕永久 | 高潮毛片又色又爽免费 | 久久亚洲国产 | 国产第五页 | 日韩国产精品一区二区 | 日本高清www | 久久亚洲免费视频 |