你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103RC驱动12864-ST7565  

[复制链接]
TLLED 发布时间:2018-10-27 18:34
本帖最后由 TLLED 于 2018-10-27 18:33 编辑

    折腾一下午,把LCD 12864驱动成, LCD模块没有资料,程序分享个大家。                                                                                                      
    一、硬件部分:
    手工搭建硬件电路
    1、显示模块焊接:

    1.jpg

    2、 焊接完成
    2.jpg
    3.jpg
    3、显示效果:
    4.jpg   
    4、整体连接图
    5.jpg
    二、软件部分:
    1、ST7565驱动部分程序代码:
  1. void St7565_Port(void)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStructure;
  4.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  , ENABLE);        
  5.         
  6.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;                                       
  7.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  8.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                          
  9.   GPIO_Init(GPIOB, &GPIO_InitStructure);        
  10. }

  11. void delay(uint16_t ms)   
  12. {      
  13.     uint8_t j;   
  14.     while(ms--)   
  15.       for(j=0;j<=20;j++);                           
  16. }         
  17.       
  18.    
  19.    
  20.    
  21. /************Serial*************/   
  22.    
  23. void St7565_WriteCmd(uint8_t com)   
  24. {   
  25.         uint8_t i,j;   
  26.         lcd_cs_low();
  27.         lcd_a0_low();
  28.         lcd_sck_low();
  29.         
  30.         for(i=0;i<8;i++)   
  31.         {   
  32.                 j=com;   
  33.                 lcd_sck_low();
  34.                 if( (com&0x80)==0x80)
  35.                 {
  36.                         lcd_sda_high();
  37.                 }
  38.                 else
  39.                 {
  40.                         lcd_sda_low();
  41.                 }
  42.                 lcd_sck_high();      
  43.                 com=j<<1;   
  44.         }  
  45.         lcd_cs_high();
  46.         lcd_a0_high();   
  47. }   
  48.    
  49.    
  50. void St7565_WriteDat(uint8_t dat)   
  51. {   
  52.         uint8_t i,j;
  53.         lcd_cs_low();   //CS=0
  54.         lcd_a0_high();        //A0=1
  55.         lcd_sck_low();  
  56.         for(i=0;i<8;i++)   
  57.         {   
  58.                 j=dat;   
  59.                 lcd_sck_low();
  60.                 if( (dat&0x80)==0x80 )
  61.                 {
  62.                         lcd_sda_high();
  63.                 }
  64.                 else
  65.                 {
  66.                         lcd_sda_low();
  67.                 }
  68.                 lcd_sck_high();      
  69.                 dat=j<<1;   
  70.         }
  71.   lcd_cs_high();
  72.         lcd_a0_low();
  73. }

  74. void ClearDisplay()   
  75. {   
  76.         uint8_t  i,j;   
  77.         for(i=0;i<8;i++)      
  78.         {   
  79.      St7565_WriteCmd(0xB0+i);               // (Page = 0xB0)//???????   
  80.      St7565_WriteCmd(0x10);   
  81.      St7565_WriteCmd(0x00);      
  82.                 for(j=0;j<132;j++)            //????????   
  83.                 {   
  84.                         St7565_WriteDat(0x00);   
  85.                 }   
  86.         }   
  87. }

  88. void Setadd(uint8_t xl,uint8_t yl)   
  89. {    uint8_t i;   
  90.      i=xl&0x0f;   
  91.      xl=(xl>>4)+0x10;   
  92.    
  93.      St7565_WriteCmd(0xb0+yl);        
  94.      St7565_WriteCmd(xl);   
  95.      St7565_WriteCmd(i);   
  96. }

  97. /*******************ÏÔʾ8*16 ASCIIÂë****************/
  98. void LCD_P8x16Str(unsigned char x,unsigned char y,unsigned char ch[])
  99. {
  100.         unsigned char c=0,i=0,j=0;
  101.         while (ch[j]!='\0')
  102.         {   
  103.                 c =ch[j]-32;
  104.                 if(x>0x7f)           
  105.     {   
  106.        x=0;   
  107.        y++;   
  108.                 }
  109.                 Setadd(x,y*2);
  110.                 for(i=0;i<8;i++)
  111.                 {
  112.                         St7565_WriteDat(F8X16[c*16+i]);//Delay(10);
  113.                 }            
  114.                 Setadd(x,y*2+1);
  115.                 for(i=0;i<8;i++)
  116.                 {
  117.                         St7565_WriteDat(F8X16[c*16+i+8]);  //Delay(10);
  118.                 }
  119.                 x+=8;
  120.                 j++;
  121.         }
  122.         
  123. }

  124. void Init_St7565(void)
  125. {
  126.         St7565_Port();  
  127.         lcd_rst_low();
  128.         delay(200);
  129.   lcd_rst_high();  
  130.         delay(200);   
  131.                               
  132.         St7565_WriteCmd(0xe2);//internal reset         
  133.         St7565_WriteCmd(0xA3);//Bais set     1/9 bais   
  134.         St7565_WriteCmd(0xA0);//ADC select 0xa0 normal 0xA1 reverse  
  135.         St7565_WriteCmd(0xc8);//com output scan direction??com??????? 0xc0??????0xC8???¾???   
  136. /****Select internal resistor ratio****/   
  137.         St7565_WriteCmd(0x2c);//????????????   
  138.         St7565_WriteCmd(0x2e);//????????????2um   
  139.         St7565_WriteCmd(0x2F);//   
  140. /**************************************/   
  141.    
  142.         St7565_WriteCmd(0x81);//???g????   
  143.         St7565_WriteCmd(0x19);//????????J?????? ?????0x00-0x3f   
  144.   St7565_WriteCmd(0x24);//????????J?????? ?????0x21-0x27 ?????????????U??????U??   
  145.    
  146.   St7565_WriteCmd(0xAF);//display lcd on            
  147.   St7565_WriteCmd(0x40);//display start addr
  148.       
  149.         ClearDisplay();
  150.         
  151.         LCD_P8x16Str(0,0,"www.stmcu.org.cn");
  152.         LCD_P8x16Str(0,1,"LCD ID:ST7565");
  153.         LCD_P8x16Str(0,2,"MCU:STM32F103RC");
  154.         LCD_P8x16Str(0,3,"STMCU ID:TLLED");
  155. }
复制代码
       2、软件包:      
          ST7565 STM32.rar (508.24 KB, 下载次数: 485)

点评

有资料吗兄弟?  发表于 2018-10-30 09:18
收藏 3 评论34 发布时间:2018-10-27 18:34

举报

34个回答
hejun1203 回答时间:2018-10-28 09:13:10
Inc_brza 回答时间:2018-10-28 21:59:26
焊工不错
whtt 回答时间:2018-10-29 14:40:08
这个屏的管脚定义有吗?有资料没?发来看看

点评

我整理的资料发到楼层了, 你可以参考下  发表于 2018-10-30 14:18
zts329547875 回答时间:2018-10-29 17:50:26
弄来玩玩
TLLED 回答时间:2018-10-30 13:53:55
whtt 发表于 2018-10-29 14:40
这个屏的管脚定义有吗?有资料没?发来看看

这个屏的手册我没有找到,找到的管脚的定义,和ST7565芯片的资料,通过查阅芯片的资料来控制这个显示屏
TLLED 回答时间:2018-10-30 14:16:52
whtt 发表于 2018-10-29 14:40
这个屏的管脚定义有吗?有资料没?发来看看

    SPI驱动方式试过,并口方式还未试过。

lcm.jpg

ST7565.pdf

下载

468.53 KB, 下载次数: 35

ST7567.pdf

下载

715.09 KB, 下载次数: 15

whtt 回答时间:2018-10-30 15:12:32
强,我也买几个玩玩
TLLED 回答时间:2018-10-30 15:53:07
whtt 发表于 2018-10-30 15:12
强,我也买几个玩玩

在网上买到这个模块了吗
whtt 回答时间:2018-10-31 14:22:10
TLLED 发表于 2018-10-30 15:53
在网上买到这个模块了吗

买了30块
123下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版