前言
LCD作为蓝桥杯比赛中一个必不可少的部分,
这里我们将通过LCD的 1.显示字符串 2.显示变量
由于比赛资源包中的LCD函数已经编写完成,我们只要学会调用lcd.h中的函数就可以了。
/*----- High layer function -----*/
void STM3210B_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);
在比赛中常用的函数:
void STM3210B_LCD_Init(void); //LCD的初始化
void LCD_SetTextColor(vu16 Color); //LCD字体的颜色
void LCD_SetBackColor(vu16 Color); //LCD背景板的颜色
void LCD_ClearLine(u8 Line); // 清除行
void LCD_DisplayStringLine(u8 Line, u8 *ptr); // 行显示字符串
一、显示字符串:
LCD的行显示总共有10行(line0~line9,每一行当中可以显示20个字符
例子为:
#include "stm32f10x.h"
#include "lcd.h"
#include "led.h"
#include "key.h"
u32 TimingDelay = 0;
void Delay_Ms(u32 nTime);
void Display(u8 mean);
int main(void)
{
u8 str[20];
u8 n=1;
float m=3.14;
SysTick_Config(SystemCoreClock/1000);
STM3210B_LCD_Init(); //1
LCD_Clear(Black);
LCD_SetBackColor(Black); //2
LCD_SetTextColor(White); //3
LCD_DisplayStringLine(Line4,(unsigned char *)" HELLO WORLD ");
while(1);
}
void Delay_Ms(u32 nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
LCD_DisplayStringLine(Line4,(unsigned char *)"?????? HELLO WORLD?????? ");?? 为显示字符串的函数<line4为第四行>
二、显示变量:
由于不能单独使用LCD_DisplayStringLine()函数显示变量,我们要引入头文件"stdio.h"使用sprintf函数。
例子:
#include "stm32f10x.h"
#include "lcd.h"
#include "led.h"
#include "key.h"
#include "stdio.h"
u32 TimingDelay = 0;
void Delay_Ms(u32 nTime);
void Display(u8 mean);
int main(void)
{
u8 str[20];
u8 n=1;
float pi=3.14;
SysTick_Config(SystemCoreClock/1000);
STM3210B_LCD_Init();
LCD_Clear(Black);
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
Delay_Ms(200);
while(1)
{
sprintf((char*)str,"n=%d : pi=%lf",n,pi);
LCD_SetBackColor(Black);
LCD_DisplayStringLine(Line2,str);
n++;
Delay_Ms(500);
}
}
void Delay_Ms(u32 nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
注意:要先声明"stdio.h"的头文件
? ? ? ? ? LCD与LED之间存在冲突,本文就不展开讲解。
|