stm32f103zet6LCD12864第一一行,第二行,第三行,第四行取消反白例程
时间: 2023-07-14 21:05:27 浏览: 111
STM32驱动12864点阵LCD,多级菜单实例,完整源码+采用STM32F103
5星 · 资源好评率100%
以下是一个在STM32F103ZET6微控制器上使用LCD12864取消每一行反白显示的示例代码:
```c
#include "stm32f10x.h"
#include "delay.h" // 自定义的延时函数头文件
// LCD 控制引脚定义
#define LCD_RS_PIN GPIO_Pin_0
#define LCD_RW_PIN GPIO_Pin_1
#define LCD_EN_PIN GPIO_Pin_2
#define LCD_DATA_PIN GPIO_Pin_3
// 函数声明
void LCD_Init(void);
void LCD_WriteCommand(uint8_t command);
void LCD_WriteData(uint8_t data);
void LCD_Clear(void);
void LCD_SetCursor(uint8_t row, uint8_t col);
void LCD_DisableInverse(void);
int main(void)
{
// 初始化LCD
LCD_Init();
// 取消每一行的反白显示
LCD_DisableInverse();
while (1)
{
// 主循环
}
}
// LCD初始化函数
void LCD_Init(void)
{
// 初始化GPIO和相关时钟
// ...
// 初始化LCD
// ...
// 设置初始光标位置
LCD_SetCursor(0, 0);
}
// 发送命令到LCD
void LCD_WriteCommand(uint8_t command)
{
// 设置RS和RW引脚为写模式
// ...
// 设置数据引脚为命令模式
// ...
// 发送命令到LCD
// ...
}
// 发送数据到LCD
void LCD_WriteData(uint8_t data)
{
// 设置RS和RW引脚为写模式
// ...
// 设置数据引脚为数据模式
// ...
// 发送数据到LCD
// ...
}
// 清屏
void LCD_Clear(void)
{
// 发送清屏命令
LCD_WriteCommand(0x01);
// 延时一段时间等待清屏完成
Delay_ms(2);
}
// 设置光标位置
void LCD_SetCursor(uint8_t row, uint8_t col)
{
// 计算光标位置
uint8_t position = col;
if (row == 1)
{
position += 0x40;
}
else if (row == 2)
{
position += 0x10;
}
else if (row == 3)
{
position += 0x50;
}
else if (row == 4)
{
position += 0x20;
}
// 发送设置光标命令
LCD_WriteCommand(0x80 | position);
}
// 取消反白显示
void LCD_DisableInverse(void)
{
// 取消第一行反白显示
LCD_SetCursor(1, 0);
LCD_WriteCommand(0xA6);
// 取消第二行反白显示
LCD_SetCursor(2, 0);
LCD_WriteCommand(0xA6);
// 取消第三行反白显示
LCD_SetCursor(3, 0);
LCD_WriteCommand(0xA6);
// 取消第四行反白显示
LCD_SetCursor(4, 0);
LCD_WriteCommand(0xA6);
}
```
请注意,以上代码只是一个示例,具体的实现细节可能会因您所使用的LCD控制器和驱动程序而有所不同。您需要根据您的具体硬件和软件环境进行适当的修改和调整。此外,您还需要根据您的系统配置设置GPIO引脚和相关时钟。
阅读全文