你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32G4之LCD的使用

[复制链接]
STMCU小助手 发布时间:2022-7-6 14:46
一、LCD基本介绍$ B& J4 ~2 w: P! |6 J' Y
液晶显示屏原理:液晶显示原理
1 V1 |0 q, X) `7 u1 E
' F8 J, b6 `2 v* }% F5 I+ JLCD原理图:
, g. I' ^" g$ n' |
: @' [. S7 f+ C6 w; {3 v @{FTU{_O82)[3$RT%L{7%WM.png 9 m2 v/ R/ M% X( u. P2 L

5 J" ?4 S/ V2 G7 N2 o官方会给出LCD的配置的,了解一下就行了* d) d9 e/ G# Q9 [

/ b; y6 N) r" y5 u2 ~5 q注意:屏幕的原点是竖着放着时的左上方
6 j( U3 C  |" n& s8 G# B( t! {$ m9 ~; ?9 j# w
GHQ9LL6VUZEG4%HM5O_)7AQ.png
6 D4 Y9 v; Y- S$ R3 U- ?$ D) o3 w' O! ]2 U+ x' g
在每次LCD初始化后一定要先清屏在进行其他设置,并且LCD的初始化一定要放在系统初始化之后。6 `# d& b. h) h: }( u5 x' u* C

9 P5 X3 L' L- Y1 o: @一般模板:
  1. .....
    6 r" S- y5 B. X- Y0 P: _7 Q
  2. LCD_Init();      // LCD最后初始化+ M7 Z' ^; h( Z( u& C: b3 O- ~% g
  3. LCD_Clear(White); // 白色清屏6 L. J4 ]1 E9 ?, K
  4. LCD_SetBackColor(White);  // 设置字体的背景
    ) F, z+ r" i: `
  5. LCD_SetTextColor(Red); // 设置字体的颜色  q8 r& q' s! Z& Z
复制代码
- R  b8 O4 R8 \6 I! ~( A/ M$ E
二、函数介绍6 ?4 P, E* ~/ J' ]  o
1.颜色设置函数
+ b3 b+ h, S3 `, A0 w8 \void LCD_Clear(u16 Color); // 设置清屏颜色7 G$ S+ Z8 P- F+ Z& L( C; ?
void LCD_SetTextColor(vu16 Color); // 设置字体颜色+ G6 {2 K2 W+ G% g7 V# p
void LCD_SetBackColor(vu16 Color); // 设置背景颜色
% `1 h, }( d% S9 {+ o% K- ~8 D! P
4 d' ]4 w9 l- W1 D; e4 S! hLCD_SetTextColor()是设置字体颜色,但是作用效果仅对后面的显示有效
) o/ z, k& c, i1 n1 V& r, m8 S: W/ W
LCD_SetBackColor()是设置背景颜色,作用效果也仅对后面的显示有效,并且设置的区域是字体的显示区域,其他区域会也清屏时的颜色显示
6 ~2 F9 y, ]1 I- j! Y) s
  1. LCD_SetBackColor(Red);
    # J; ?4 u' w! ~0 S- s& m, L
  2.         LCD_SetTextColor(White);
    " D" K5 }$ Z2 U, E; J
  3.         LCD_DisplayStringLine(Line2,"White");
    : M- Y: L$ a0 E8 _2 c
  4.         & n4 i* M6 w/ v9 f
  5.         LCD_SetBackColor(Blue);) r9 E5 O0 t$ u
  6.         LCD_SetTextColor(Green);
    5 I; S4 ^4 ?5 P
  7.         LCD_DisplayStringLine(Line5,"Green");
复制代码
+ k6 N  Z$ z; Y/ ?7 D% p9 Z& V
; ?% h0 L% k: k; c
显示结果:- w, d" J) a8 F- o5 E

: @; R% _. c% h( X' g {GK{OHYBMT8GDYV2L0UN$K8.png
8 ~+ e- R6 X7 m% U4 [1 ^0 J* N/ h1 d
2.字符显示函数
( _9 ?( Q1 b& x( n  r7 ~( M4 T; _3 Dvoid LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii); //任何位置显示字符$ R% Q# F% b6 d- ~
void LCD_DisplayStringLine(u8 Line, u8 *ptr); //行显示字符
8 p5 F: F( b9 \2 F+ G, k7 F6 u0 v4 r3 b9 \3 V7 k9 w
显示屏为320*240,LCD_DisplayStringLine这个函数根据参数可知,是按行来显示的,显示屏共有Lin0~Lin9,每行可以显示20个字符
3 p2 W2 O( G5 @0 E! y9 y3 g
; t" B3 A9 q  t! _# g: ?注意:Line一般传入参数Line0-9, 若传入数字则是以像素为单位
- O/ J  V. {9 A* h
& r5 W* Z. l: r! t7 Y若用于显示变量,这种方法需要使用到sprintf()函数(添加头文件stdio.h")
0 p2 c; n+ e/ H
  x% k' a* v) w7 {5 r" M7 W我们要定义一个字符数组,用来存放需要显示的字符串(LCD一行只能显示20个字符,所以数组大小定为21),sprintf()函数的作用就是将指定的字符串存入数组中
3 X. I3 v# f( {7 ~# F
' N5 w  O# z5 l5 }: {$ x& c/ V头文件:stdio.h
! n9 ~$ a& k; M( s, L& o1 f函数功能:,格式化字符串,将格式化的数据写入字符串中。7 T1 W+ h* \, t: i+ C1 q
函数原型:int sprintf(char *buffer, const char *format, [argument]…)2 S' H3 B8 w+ ~, q$ O9 B4 o; i
参数:
" }  L  C- H. o% A(1)buffer:是char类型的指针,指向写入的字符串指针;
: z, Q9 V- K% o# k(2)format:格式化字符串,即在程序中想要的格式;
" z7 G$ x6 u. o! |! v2 U  }2 Z(3)argument:可选参数,可以为任意类型的数据;
! t8 g! n6 g* f, I6 J函数返回值:buffer指向的字符串的长度;  M/ K* I3 G; }) r9 h, v5 O

3 \. K7 c/ ^0 x; Z9 c/ S
  1. char buffer[80];
    5 _3 Y$ m/ x! {
  2. // 将An approximation of Pi is 3.1415存入buffer数组里面
    ( x, F) j: Z4 T( K; x5 V! y6 w* k
  3. sprintf(buffer, "An approximation of Pi is %f/n", 3.1415);
    6 [$ [5 r( n7 W0 j3 f3 Q" t

  4. ) I( n" O3 k8 {4 X
复制代码
; y. D6 c/ T0 c" q
对于LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);; ?  L1 @9 y# Y0 O" U- P3 L: `
前两个参数是行数和列数,由于官方没有给出每一列的宏定义,所以需要我们自己推一下。这里列选择需要了解一下lcd的分辨率- ~! V4 l) @2 M  U: H& C

6 v9 U" P) p# `, `9 a9 f在官方给的参考资料里面介绍了分辨率是240RGBx320,我们知道lcd一共分为10行,20列,所以一个字符的高实际上是24*16,可以看到lcd.h宏定义里面每一行之间的差值就是24,那么每一列之间的差值就是16,实际上表示一列的时候是反着来的,320表示第一列,320-16表示第二列,那么320-(16 * i)表示第i列8 W! s0 N. {! _: Z  u( D) e) v4 N# x9 A
- P7 w! o7 N% Z
  1. //在Line4,第5列显示字符'A'3 m9 \( B% h; A- y
  2. LCD_DisplayChar(Line4,(320 - (16 * 5)),'A');6 Q3 a, U3 w" T4 `7 J7 N

  3. . e: p+ J$ E9 [/ A! T" e1 v
复制代码

8 C: Z$ q! o) b: Y7 S- {1 L6 K: a) h

! P) Y2 _% O' C1 ~  \4 \$ Z; l5 C( l4 o  l# P0 o# ?

$ x! w$ {4 U' z* H7 g- r$ h: m8 Y( i# V, c" B" V, ?  I
收藏 评论0 发布时间:2022-7-6 14:46

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版