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

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, 下载次数: 683)

点评

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

举报

37个回答
王成-2031247 回答时间:2019-9-5 01:06:58
楼主,用了这个驱动,但没点亮,量单片机端口是受控的,我的屏是ST7565R串行的,定义跟楼主你的一样,就是这个尾缀R不确定是不是有区别,还有我用的单片机是STM32F0的,应该不是单片机的问题,我看你的代码里只有rst那里用到了延时。
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, 下载次数: 55

ST7567.pdf

下载

715.09 KB, 下载次数: 25

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

点评

我整理的资料发到楼层了, 你可以参考下  发表于 2018-10-30 14:18
西点钟灵毓秀 回答时间:2018-10-29 17:50:26
弄来玩玩
涛哥2035 回答时间:2018-10-30 15:12:32
强,我也买几个玩玩
TLLED 回答时间:2018-10-30 15:53:07
whtt 发表于 2018-10-30 15:12
强,我也买几个玩玩

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

买了30块
TLLED 回答时间:2018-10-31 14:34:00
可以,我买了几片,只是玩玩
TLLED 回答时间:2018-10-31 14:35:17

买的多,可以做个板子,当模块使用
tom3721 回答时间:2018-11-2 12:04:16
楼主辛苦了。。。
lvsichen 回答时间:2019-1-15 10:42:28
标记
earnest 回答时间:2019-5-27 11:14:11
感谢楼主!
123下一页

所属标签

相似分享

官网相关资源

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