蓝桥嵌入式之 LCD使用

工程可见github<传送门>


比赛时关于LCD驱动文件都已经准备好,只需要会调用即可,这篇博文主要来熟悉下LCD的常用函数。

复制考场文件夹中嵌入式设计与开发项目加密资料\嵌入式设计与开发\液晶驱动参考例程下的蓝桥嵌入式之 LCD使用_第1张图片
到自己的工程目录下。

一、主要代码

main.c

/*******************************************************************************
* 文件名:main.c
* 描  述:
* 作  者:CLAY
* 版本号:v1.0.0
* 日  期: 2019年1月24日
* 备  注:按键B1切换LED1状态并且蜂鸣器鸣叫0.1s
*         按键B2按下发生长鸣;按键B3停止鸣叫
*******************************************************************************
*/

#include "stm32f10x.h"
#include "led.h"
#include "key.h"
#include "timer.h"
#include "beep.h"
#include "lcd.h"
#include "stdio.h"


int main(void)
{
	
	u8 str[25];
	u8 temp = 30;
	float AO = 3.845;
	
	STM3210B_LCD_Init();
	LCD_Clear(Blue);
	LEDInit();
	KeyInit();
	BeepInit();
	TIM2Init(2000, 72);//定时2ms
	
	
	LCD_DisplayStringLine(Line3,(u8*) "qwertyuioplkjhgfdsazxcvb");
	sprintf((char*)str,"temp=%d   A0=%.1f  ",temp, AO);
	LCD_DisplayStringLine(Line8,str);
	
	while(1)
	{	
		KeyDriver();
	}
}

void KeyAction(int code)
{
	if(code == 1)//按下B1,切换灯状态,蜂鸣器鸣叫0.1s
	{
		GPIOC->ODR ^= (1<<8);//PC8不断取反
		GPIOD->ODR |= (1<<2);//PD2置1,使能573锁存器
		GPIOD->ODR &= ~(1<<2);//PD2清0,关闭573锁存器
		Beep(100);
	}
	else if(code == 2)
	{
		Beep(-1);
	}
	else if(code == 3)
	{
		Beep(0);
	}
}



二、代码讲解

1、虽然子函数很多,但是对于比赛来言常用到的几个函数如下
蓝桥嵌入式之 LCD使用_第2张图片

void STM3210B_LCD_Init(void);         // LCD液晶初始化
void LCD_SetTextColor(vu16 Color);      //改变字体颜色
void LCD_ClearLine(u8 Line);            // 清除行
void LCD_DisplayStringLine(u8 Line, u8 *ptr);   // 行显示字符串

颜色相关变量
蓝桥嵌入式之 LCD使用_第3张图片
行相关变量
蓝桥嵌入式之 LCD使用_第4张图片

该LCD显示字符是按行显示的,总共可以显示10行字符(Line0~Line9),并且每一行可以显示20个字符。

2、显示字符到LCD上的两种方法:
①、要显示的字符是字符串,直接
LCD_DisplayStringLine(Line3,(u8*) " str ");

②、要显示数字呢?

思路也就很简单,就是把它变为字符串,有没有现成的函数可以调用呢?当然有!
那就是sprintf,之前也有写过相关文章,可作为参考:

sprintf实现浮点数快速转化为字符串

sprintf的深入

运用到此处,可通过一个例子体会,别忘了头文件#include

#include 
...

u8 str[25];

u8 temp = 30;
float AO = 3.845;
 
sprintf((char*)str,"temp=%d   A0=%.1f  ",temp, AO);
LCD_DisplayStringLine(Line8,string);

...

你可能感兴趣的:(蓝桥杯之嵌入式)