工程可见github<传送门>
比赛时关于LCD驱动文件都已经准备好,只需要会调用即可,这篇博文主要来熟悉下LCD的常用函数。
复制考场文件夹中嵌入式设计与开发项目加密资料\嵌入式设计与开发\液晶驱动参考例程
下的
到自己的工程目录下。
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);
}
}
void STM3210B_LCD_Init(void); // LCD液晶初始化
void LCD_SetTextColor(vu16 Color); //改变字体颜色
void LCD_ClearLine(u8 Line); // 清除行
void LCD_DisplayStringLine(u8 Line, u8 *ptr); // 行显示字符串
该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);
...