目录
无理论
由于赛方已经提前准备了相关的lcd模块的.c文件与头文件
所以我们不需要知晓lcd的原理 直接加入准备好的lcd文件就可以直接使用lcd功能
增加lcd.c
在目录 赛点资源数据包ES_2022\赛点资源数据包ES\2-新版竞赛平台\5-液晶驱动参考程序\HAL_06_LCD\Src
找到lcd.c
复制到当前工程src目录下 平且将相应的头文件复制到inc目录下
要想使用lcd.h声明的函数 要在main.c下引用该头文件
LCD配置
#include <stdio.h>
#include <string.h>
#include "main.h"
#include "lcd.h"
__IO uint32_t uwTick_lcd;
void lcd_proc(void);
int main(void)
{
LCD_Init();
LCD_Clear(Blue);
LCD_SetBackColor(Blue);
LCD_SetTextColor(White); //初始化相关配置
while (1)
{
lcd_proc();
}
}
void lcd_proc(void)
{
if((uwTick-uwTick_lcd)<100) return;
uwTick_lcd = uwTick;
//用sprintf可以打印变量
sprintf(&LCD_string[0],"welcome use LCD");
LCD_DisplayStringLine(Line0,(uint8_t *)LCD_string);//借用line改变行数
}
在lcd.c添加变量LCD_string的声明 在lcd.h扩展出去
lcd.c添加char LCD_string[21];
lcd.h添加extern char LCD_string[21];
查看lcd.h 可使用的相关函数 可以跟过去查看函数功能
void LCD_Init(void);
void LCD_SetTextColor(vu16 Color);
void LCD_SetBackColor(vu16 Color);
void LCD_ClearLine(u8 Line);
void LCD_Clear(u16 Color);
void LCD_SetCursor(u8 Xpos, u16 Ypos);
void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c);
void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);
void LCD_DisplayStringLine(u8 Line, u8 *ptr);
void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width);
void LCD_WindowModeDisable(void);
void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction);
void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width);
void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius);
void LCD_DrawMonoPict(uc32 *Pict);
void LCD_WriteBMP(u32 BmpAddress);
void LCD_DrawBMP(u32 BmpAddress);
void LCD_DrawPicture(const u8* picture);
/*----- Medium layer function -----*/
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue);
u16 LCD_ReadReg(u8 LCD_Reg);
void LCD_WriteRAM_Prepare(void);
void LCD_WriteRAM(u16 RGB_Code);
u16 LCD_ReadRAM(void);
void LCD_PowerOn(void);
void LCD_DisplayOn(void);
void LCD_DisplayOff(void);
/*----- Low layer function -----*/
void LCD_CtrlLinesConfig(void);
void LCD_BusIn(void);
void LCD_BusOut(void);
LCD小练习
B1按键实现lcd屏幕切换
标志位?、、异或?
LCD与按键的搭配使用
现实现 歌曲菜单 B3键下选歌曲 B2键上选歌曲 选中的那一行高亮显示。
void lcd_fun(void)
{
static char song[10][10]={"abc","bcd","cde","def","ef"};
if(uwTick-uwTick_lcd<200) return;
uwTick_lcd=uwTick;
sprintf((char *)&uart_string[0]," Musics menu");
LCD_DisplayStringLine(Line1,(unsigned char *)&uart_string[0]);
sprintf((char *)&uart_string[0], " Music select: %s ",(char *)&song[0]);
if(Song_State == 1) LCD_SetBackColor(Green);
LCD_DisplayStringLine(Line4, (unsigned char *)&uart_string[0]);
LCD_SetBackColor(White);
sprintf((char *)&uart_string[0], " Music select: %s ",(char *)&song[1]);
if(Song_State == 2) LCD_SetBackColor(Green);
LCD_DisplayStringLine(Line5, (unsigned char *)&uart_string[0]);
LCD_SetBackColor(White);
sprintf((char *)&uart_string[0], " Music select: %s ",(char *)&song[2]);
if(Song_State == 3) LCD_SetBackColor(Green);
LCD_DisplayStringLine(Line6, (unsigned char *)&uart_string[0]);
LCD_SetBackColor(White);
sprintf((char *)&uart_string[0], " Music select: %s ",(char *)&song[3]);
if(Song_State == 4) LCD_SetBackColor(Green);
LCD_DisplayStringLine(Line7, (unsigned char *)&uart_string[0]);
LCD_SetBackColor(White);
}
void key_song(void)
{
if(uwTick-uwTick_time<100) return;
uwTick_time=uwTick;
unsigned char key_down=key_down_fun();
if(key_down == B2)
{
Song_State--;
if(Song_State == 0) Song_State=4;
}
if(key_down == B3)
{
Song_State++;
if(Song_State == 5) Song_State=1;
}
}