基于stm32的lcd12864串行
时间: 2023-08-28 20:07:54 浏览: 110
如果你想在STM32上使用LCD 12864,你可以使用串行通信协议来控制LCD。这里有几个步骤:
1.选择合适的STM32单片机,并为其设置正确的时钟和引脚。
2.连接LCD 12864并按照其数据手册上的说明来连接STM32的引脚。
3.编写STM32的固件程序,并使用串口通信协议来控制LCD。你可以使用SPI或I2C等通信协议,具体取决于你使用的硬件。
下面是一个使用SPI通信协议的示例代码,你可以根据自己的需要进行修改:
```c
#include "stm32f10x.h"
#include "stm32f10x_spi.h"
#define SPI_PORT GPIOA
#define SPI_PIN_SCK GPIO_Pin_5
#define SPI_PIN_MOSI GPIO_Pin_7
#define SPI_PIN_CS GPIO_Pin_4
void SPI_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);
GPIO_InitStructure.GPIO_Pin = SPI_PIN_SCK | SPI_PIN_MOSI;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SPI_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SPI_PIN_CS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_PORT, &GPIO_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
}
void SPI_Send(uint8_t data)
{
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1, data);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
SPI_I2S_ReceiveData(SPI1);
}
void LCD12864_Init(void)
{
GPIO_SetBits(SPI_PORT, SPI_PIN_CS);
SPI_Send(0xF8); //传输“启动位”
SPI_Send(0x30); //设置8位数据、2行显示、5x7像素
SPI_Send(0x0C); //开启显示、光标关闭、光标闪烁关闭
SPI_Send(0x01); //清屏
SPI_Send(0x06); //文字向右滚动
}
int main(void)
{
SPI_Init();
LCD12864_Init();
while (1)
{
}
}
```
上面的代码中,我们使用SPI通信协议来控制LCD 12864。我们首先初始化SPI,然后发送命令来控制LCD的显示。你可以根据自己的需要来修改代码,例如修改显示的文字、图形等。