STM32F103驱动GT12232液晶
时间: 2023-10-10 13:06:48 浏览: 84
要驱动GT12232液晶,你需要连接以下引脚:
液晶引脚 | STM32F103引脚
------------ | -------------
VSS | GND
VDD | 5V
V0 | 通过一个电位器连接到GND和5V之间,用于控制液晶对比度
RS | PA6
RW | PA7
E | PA5
DB0 | 不接
DB1 | 不接
DB2 | 不接
DB3 | 不接
DB4 | PA0
DB5 | PA1
DB6 | PA2
DB7 | PA3
CS1 | PB0
CS2 | PB1
RST | PB10
其中,CS1和CS2可以分别控制左右两个区域的显示。
以下是一个简单的GT12232液晶驱动程序的示例代码:
```c
#include "stm32f10x.h"
#define RS_PIN GPIO_Pin_6
#define RW_PIN GPIO_Pin_7
#define E_PIN GPIO_Pin_5
#define DB4_PIN GPIO_Pin_0
#define DB5_PIN GPIO_Pin_1
#define DB6_PIN GPIO_Pin_2
#define DB7_PIN GPIO_Pin_3
#define CS1_PIN GPIO_Pin_0
#define CS2_PIN GPIO_Pin_1
#define RST_PIN GPIO_Pin_10
void GT12232_Init(void);
void GT12232_WriteCommand(uint8_t cmd);
void GT12232_WriteData(uint8_t data);
void GT12232_SetPos(uint8_t x, uint8_t y);
void GT12232_Clear(void);
void GT12232_PrintChar(char c);
void GT12232_PrintString(char *str);
int main(void)
{
GT12232_Init();
GT12232_PrintString("Hello, GT12232!");
while (1)
{
}
}
void GT12232_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
// 数据线和控制线设置为输出模式
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin = RS_PIN | RW_PIN | E_PIN | DB4_PIN | DB5_PIN | DB6_PIN | DB7_PIN;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = CS1_PIN | CS2_PIN | RST_PIN;
GPIO_Init(GPIOB, &GPIO_InitStruct);
// 初始化液晶
GPIO_SetBits(GPIOB, RST_PIN);
GPIO_ResetBits(GPIOA, RS_PIN | RW_PIN | E_PIN | DB4_PIN | DB5_PIN | DB6_PIN | DB7_PIN);
GPIO_ResetBits(GPIOB, CS1_PIN | CS2_PIN);
// 等待液晶准备就绪
delay_ms(20);
// 先使能右半部分区域,写入初始化命令
GPIO_ResetBits(GPIOB, CS2_PIN);
GT12232_WriteCommand(0x30);
GT12232_WriteCommand(0x0C);
GT12232_WriteCommand(0x01);
GT12232_WriteCommand(0x06);
GT12232_WriteCommand(0x02);
GT12232_WriteCommand(0x01);
delay_ms(5);
// 再使能左半部分区域,写入初始化命令
GPIO_ResetBits(GPIOB, CS1_PIN);
GT12232_WriteCommand(0x30);
GT12232_WriteCommand(0x0C);
GT12232_WriteCommand(0x01);
GT12232_WriteCommand(0x06);
GT12232_WriteCommand(0x02);
GT12232_WriteCommand(0x01);
delay_ms(5);
// 清屏
GT12232_Clear();
}
void GT12232_WriteCommand(uint8_t cmd)
{
GPIO_ResetBits(GPIOA, RS_PIN | RW_PIN);
GPIO_Write(GPIOA, (cmd & 0xF0) | 0x04);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_SetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_Write(GPIOA, (cmd << 4) | 0x04);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_SetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
}
void GT12232_WriteData(uint8_t data)
{
GPIO_SetBits(GPIOA, RS_PIN);
GPIO_ResetBits(GPIOA, RW_PIN);
GPIO_Write(GPIOA, (data & 0xF0) | 0x04);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_SetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_Write(GPIOA, (data << 4) | 0x04);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_SetBits(GPIOA, E_PIN);
delay_us(1);
GPIO_ResetBits(GPIOA, E_PIN);
}
void GT12232_SetPos(uint8_t x, uint8_t y)
{
if (x < 64)
{
GPIO_ResetBits(GPIOB, CS1_PIN);
GPIO_SetBits(GPIOB, CS2_PIN);
GT12232_WriteCommand(0x80 | (y % 16));
GT12232_WriteCommand(0x80 | x);
}
else
{
GPIO_SetBits(GPIOB, CS1_PIN);
GPIO_ResetBits(GPIOB, CS2_PIN);
GT12232_WriteCommand(0x80 | (y % 16));
GT12232_WriteCommand(0x80 | (x - 64));
}
}
void GT12232_Clear(void)
{
uint8_t i, j;
for (i = 0; i < 8; i++)
{
GT12232_SetPos(0, i);
for (j = 0; j < 64; j++)
{
GT12232_WriteData(0x00);
}
}
}
void GT12232_PrintChar(char c)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
GT12232_WriteData(Font_8x8[(c - 32) * 8 + i]);
}
}
void GT12232_PrintString(char *str)
{
while (*str)
{
GT12232_PrintChar(*str++);
}
}
```
其中,`Font_8x8`是一个8x8的ASCII字体数组,你可以在网上找到,或者自己制作。在 `GT12232_Init()` 函数中,我们通过一系列的初始化命令来设置液晶的工作模式、光标移动方向、光标闪烁等。在 `GT12232_PrintChar()` 和 `GT12232_PrintString()` 函数中,我们通过 `Font_8x8` 数组来输出字符。
这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。
阅读全文
相关推荐
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)