本帖最后由 TLLED 于 2018-10-27 18:33 编辑
折腾一下午,把LCD 12864驱动成, LCD模块没有资料,程序分享个大家。
一、硬件部分:
手工搭建硬件电路
1、显示模块焊接:
2、 焊接完成
3、显示效果:
4、整体连接图
二、软件部分:
1、ST7565驱动部分程序代码:
- void St7565_Port(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- }
- void delay(uint16_t ms)
- {
- uint8_t j;
- while(ms--)
- for(j=0;j<=20;j++);
- }
-
-
-
-
- /************Serial*************/
-
- void St7565_WriteCmd(uint8_t com)
- {
- uint8_t i,j;
- lcd_cs_low();
- lcd_a0_low();
- lcd_sck_low();
-
- for(i=0;i<8;i++)
- {
- j=com;
- lcd_sck_low();
- if( (com&0x80)==0x80)
- {
- lcd_sda_high();
- }
- else
- {
- lcd_sda_low();
- }
- lcd_sck_high();
- com=j<<1;
- }
- lcd_cs_high();
- lcd_a0_high();
- }
-
-
- void St7565_WriteDat(uint8_t dat)
- {
- uint8_t i,j;
- lcd_cs_low(); //CS=0
- lcd_a0_high(); //A0=1
- lcd_sck_low();
- for(i=0;i<8;i++)
- {
- j=dat;
- lcd_sck_low();
- if( (dat&0x80)==0x80 )
- {
- lcd_sda_high();
- }
- else
- {
- lcd_sda_low();
- }
- lcd_sck_high();
- dat=j<<1;
- }
- lcd_cs_high();
- lcd_a0_low();
- }
- void ClearDisplay()
- {
- uint8_t i,j;
- for(i=0;i<8;i++)
- {
- St7565_WriteCmd(0xB0+i); // (Page = 0xB0)//???????
- St7565_WriteCmd(0x10);
- St7565_WriteCmd(0x00);
- for(j=0;j<132;j++) //????????
- {
- St7565_WriteDat(0x00);
- }
- }
- }
- void Setadd(uint8_t xl,uint8_t yl)
- { uint8_t i;
- i=xl&0x0f;
- xl=(xl>>4)+0x10;
-
- St7565_WriteCmd(0xb0+yl);
- St7565_WriteCmd(xl);
- St7565_WriteCmd(i);
- }
- /*******************ÏÔʾ8*16 ASCIIÂë****************/
- void LCD_P8x16Str(unsigned char x,unsigned char y,unsigned char ch[])
- {
- unsigned char c=0,i=0,j=0;
- while (ch[j]!='\0')
- {
- c =ch[j]-32;
- if(x>0x7f)
- {
- x=0;
- y++;
- }
- Setadd(x,y*2);
- for(i=0;i<8;i++)
- {
- St7565_WriteDat(F8X16[c*16+i]);//Delay(10);
- }
- Setadd(x,y*2+1);
- for(i=0;i<8;i++)
- {
- St7565_WriteDat(F8X16[c*16+i+8]); //Delay(10);
- }
- x+=8;
- j++;
- }
-
- }
- void Init_St7565(void)
- {
- St7565_Port();
- lcd_rst_low();
- delay(200);
- lcd_rst_high();
- delay(200);
-
- St7565_WriteCmd(0xe2);//internal reset
- St7565_WriteCmd(0xA3);//Bais set 1/9 bais
- St7565_WriteCmd(0xA0);//ADC select 0xa0 normal 0xA1 reverse
- St7565_WriteCmd(0xc8);//com output scan direction??com??????? 0xc0??????0xC8???¾???
- /****Select internal resistor ratio****/
- St7565_WriteCmd(0x2c);//????????????
- St7565_WriteCmd(0x2e);//????????????2um
- St7565_WriteCmd(0x2F);//
- /**************************************/
-
- St7565_WriteCmd(0x81);//???g????
- St7565_WriteCmd(0x19);//????????J?????? ?????0x00-0x3f
- St7565_WriteCmd(0x24);//????????J?????? ?????0x21-0x27 ?????????????U??????U??
-
- St7565_WriteCmd(0xAF);//display lcd on
- St7565_WriteCmd(0x40);//display start addr
-
- ClearDisplay();
-
- LCD_P8x16Str(0,0,"www.stmcu.org.cn");
- LCD_P8x16Str(0,1,"LCD ID:ST7565");
- LCD_P8x16Str(0,2,"MCU:STM32F103RC");
- LCD_P8x16Str(0,3,"STMCU ID:TLLED");
- }
复制代码 2、软件包:
ST7565 STM32.rar
(508.24 KB, 下载次数: 683)
|
这个屏的手册我没有找到,找到的管脚的定义,和ST7565芯片的资料,通过查阅芯片的资料来控制这个显示屏
SPI驱动方式试过,并口方式还未试过。
ST7565.pdf
2018-10-30 14:15 上传
点击文件名下载附件
468.53 KB, 下载次数: 55
ST7567.pdf
2018-10-30 14:15 上传
点击文件名下载附件
715.09 KB, 下载次数: 25
点评
在网上买到这个模块了吗
买了30块
买的多,可以做个板子,当模块使用