折腾了半天,点亮了,唯一的缺点是对比度太低了,基本看不清,但是程序是OK的。
希望对大家有用:
1.初始化驱动的IO口:
- /*
- PB11: RS
- PB10: RW
- PB1 : CS2
- PB0 : CS1
- PB4 : RST
- PB5 : EN
- */
- #define GXM25632_KS0108_CSA_LOW (GPIO_ResetBits(GPIOB,GPIO_Pin_0))
- #define GXM25632_KS0108_CSA_HIGH (GPIO_SetBits(GPIOB,GPIO_Pin_0))
- #define GXM25632_KS0108_CSB_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_1)
- #define GXM25632_KS0108_CSB_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_1)
- #define GXM25632_KS0108_RS_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_11)
- #define GXM25632_KS0108_RS_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_11)
- #define GXM25632_KS0108_RW_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_10)
- #define GXM25632_KS0108_RW_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_10)
- #define GXM25632_KS0108_EN_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_5)
- #define GXM25632_KS0108_EN_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_5)
- #define GXM25632_KS0108_RST_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_4)
- #define GXM25632_KS0108_RST_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_4)
复制代码
在C文件中初始化:
- void GXM25632_GPIO_int(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_10|GPIO_Pin_11;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_10|GPIO_Pin_11);
-
- }
复制代码
然后就可以初始化液晶了哦~
按照一下顺序是OK的:
- void GXM25632_KS0108_int(void)
- {
- GXM25632_GPIO_int();
- GXM25632_KS0108_CSA_LOW;
- GXM25632_KS0108_CSB_LOW;
- GXM25632_KS0108_CSA_HIGH;
- GXM25632_KS0108_CSB_LOW;
- GXM25632_KS0108_WriteCMD(0X00); // left screen write
- GXM25632_KS0108_CSA_LOW;
- GXM25632_KS0108_CSB_HIGH;
- GXM25632_KS0108_WriteCMD(0X00); // right screen write
- //on display
- GXM25632_KS0108_CSA_HIGH;
- GXM25632_KS0108_CSB_LOW;
- GXM25632_KS0108_WriteCMD(0x3f); // middle screen write
- GXM25632_KS0108_CSA_LOW;
- GXM25632_KS0108_CSB_HIGH;
- GXM25632_KS0108_WriteCMD(0X3f); // right screen write
- //set start address
- GXM25632_KS0108_CSA_HIGH;
- GXM25632_KS0108_CSB_LOW;
- GXM25632_KS0108_WriteCMD(0Xc0); // middle screen write
- GXM25632_KS0108_CSA_LOW;
- GXM25632_KS0108_CSB_HIGH;
- GXM25632_KS0108_WriteCMD(0Xc0); // right screen write
- // write display snap
- GXM25632_KS0108_CSA_HIGH;
- GXM25632_KS0108_CSB_LOW;
- GXM25632_KS0108_WriteCMD(0Xb8); // middle screen write
- GXM25632_KS0108_CSA_LOW;
- GXM25632_KS0108_CSB_HIGH;
- GXM25632_KS0108_WriteCMD(0Xb8); // right screen write
- //set seg register
- GXM25632_KS0108_CSA_HIGH;
- GXM25632_KS0108_CSB_LOW;
- GXM25632_KS0108_WriteCMD(0X40); // middle screen write
- GXM25632_KS0108_CSA_LOW;
- GXM25632_KS0108_CSB_HIGH;
- GXM25632_KS0108_WriteCMD(0X40); // right screen write
- }
复制代码
以上函数还调用的写CMD和写data子函数:
- void GXM25632_KS0108_delay(uint xms)
- {
- uint i,j,m;
- for(i=0;i
- {
- for(j=0;j<280;j++)
- {
- // for(m=0;m<125;m++);
- }
- }
- }
- void GXM25632_KS0108_WriteCMD(uchar command)
- {
- GXM25632_KS0108_RS_LOW ;
- GXM25632_KS0108_delay(2);
- GXM25632_KS0108_RW_HIGH;
- GXM25632_KS0108_delay(4);
- GXM25632_KS0108_RW_LOW;
- //u16 temp = GPIO_ReadOutputData(GPIOA);
-
- GPIO_Write(GPIOA, command); /*保持高8位不变 temp|*/
- GXM25632_KS0108_EN_HIGH;
- GXM25632_KS0108_delay(1);
- GXM25632_KS0108_EN_LOW;
- }
- void GXM25632_KS0108_WriteDATA(uchar data_buffer)
- {
- GXM25632_KS0108_RS_LOW ;
- GXM25632_KS0108_RW_HIGH;
- GXM25632_KS0108_RW_LOW;
- GXM25632_KS0108_RS_HIGH;
- // u16 temp = GPIO_ReadOutputData(GPIOA);
- GPIO_Write(GPIOA, data_buffer); /*保持高8位不变*/
-
- GXM25632_KS0108_EN_HIGH;
- GXM25632_KS0108_delay(1);
- GXM25632_KS0108_EN_LOW;
- }
复制代码
有了以上这几个函数,液晶就ok了!
有网友知道对比度怎么搞吗?欢迎回帖谢谢~
0
|
|
|
|
你的3.3V能显示,很好!我的那块3.3V没有任何显示,升到4.xV才开始有显示,5V显示正常。
|
|
|
|
|
对比度,加可调电阻
|
|
|
|
|
有道理,我也摸出经验来了,4.2V电压比较好,5V对比度太高了呢
|
|
|
|
|