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

STM32如何在LCD上显示单词、文字、图片等

[复制链接]
STMCU小助手 发布时间:2022-12-22 16:05
一、如何在LCD上显示一行字符串?
3 N( Z' W" @) J) i/ W4 E5 U1.首先找到液晶屏驱动文件LQ12864.c- @2 @1 \9 k: h: G0 I

" m' E" X$ Q6 c: R
20200531191324653.png
+ H! U* I9 \: S/ P6 f# C
- w; j; c2 o# [: i( R+ p
2.LQ12864.c文件中的LCD_P6x8Str()函数就是用来打印字符串的: j7 c/ U, p" g' [& l
3.对void LCD_P6x8Str(unsigned char x,unsigned char y,unsigned char ch[])进行解释:
5 E1 M. m. n  m* P+ H" v9 Uunsigned char x //x坐标,以像素点为单位
5 y! Z3 M' I" L' o; h1 T/ Hunsigned char y //y坐标,以行为单位
7 }9 z9 V' e# U  M0 d6 F8 j9 aunsigned char ch[] //打印到屏幕上的字符串
7 c$ `& j* x2 }4.例:在屏幕上打印“hello world”
  1. LCD_P6x8Str(0,0,"hello");//x坐标0 第0行打印 "hello"
    8 c" _- c3 H: w" {: [) u
  2.         LCD_P6x8Str(10,3,"world");//x坐标10,第3行打印 "world"
复制代码

, e' Y  U; n/ G! }
( j* `) @2 x+ V7 t' F 20200531192240892.png 4 E( c+ V' }3 c+ y, h, K
- K! a: T7 i% \- ]" ^
20200531192205394.png 9 I; r9 p  J: I

7 m; ^9 B$ `: [4 x/ g  h- T9 W5. LCD_P6x8Str()这个函数中的6x8的意思是,将行宽为6个像素点,列宽为8个像素点的区域作为一个字符的输出区域, n0 N% u' G5 f/ ^1 [/ H
6. 例:for循环的嵌套实现如下的3行5列“#”阵) {4 ?3 W, r$ r5 F& y9 ^
  1.                #####
    7 M! n' |4 s! N7 N* p$ P5 h
  2.               #####& h# _0 n0 V1 @9 ~
  3.               #####1 z5 m7 a$ w. K
复制代码

! k- s8 x! F. @2 w+ x/ k用到的函数:
* u, R$ D  K, p. p( b: D, r//外循环循环3次,内循环循环5次4 X7 p8 j) H2 q  O, H
for(i = 0; i < 3; i++)//控制行 i代表 y坐标
% b1 O# i' S- Y& ?5 g& J8 S{
5 X4 a- C' o, W$ Y* C$ nfor(j = 0; j < 5; j++)//控制列 j代表 x坐标0 ~4 i1 g" l. s% G) }6 M
{( g& N( ~4 Z6 q2 ?
LCD_P6x8Str(20+j*6,i,“#”);//jx6是字符的宽度,x坐标以像素点为单位! t! [# d% o% K8 a
}
( R/ i! z9 M( s% c& g8 `
7 [9 v4 L4 h# J7 O. }9 X0 q4 z$ }. D7.解释为什么是i代表y坐标,j代表x坐标:
7 m! O1 ?2 E9 N) d  l% y+ A8 p7 f! m5 {9 S  V* C
20200531193342526.png
1 `8 j1 R; d" f
% g  B/ G. I" ~2 o' s6 G
如图所示,就是LCD的打印方向,每打印一行,横坐标也就是j会移动5次,所以i代表y坐标,j代表x坐标。# U% ]/ Z8 Z' f8 C# k& U( h
. r8 G$ u; ^1 r1 `( r; O! a& e
8.解释20+j*6:0 s/ H1 _" K* k" H
20是让第20个像素点作为开始位置,jx6是一个“#”在x轴方向占用6个像素点,为了打印的字符不重叠,每隔j*6个像素点打印一个字符
2 h. ]7 A( f" w2 a
1 ]& D% q/ h3 j" ^! x/ X
( g. z: u3 N8 O: p1 R
二、如何自LCD上显示中文$ f3 i3 q* q, v8 ]* r
1.这里用到了字模生成软件) X! x/ D: L! K" D# C/ T

% |! R; u' L4 j; Q9 C+ o9 a# Q
20200531194333907.png $ f% Q$ O8 w$ C6 s$ v

8 P4 N( |, {9 O5 b% E, a7 C# w就是图中的软件/ U+ @& M; g$ \  q4 |& y' `

$ q% F, p) ^9 E5 g% m
2.配置好用到的一些参数/ v- F- y0 R* Y( X8 o: N
$ D2 H2 e; f0 _

9 L. x" k. }+ k$ G; o9 ^- y3 i 20200531194607262.png
5 v( l8 Y6 ?1 d+ F3 v. k9 e2 Q+ i. w* Z/ t. T$ O4 C4 K; H  [
20200531194833924.png
- q8 k. N6 W1 b3 E0 ]7 [$ B, k# }. {" B' M; t
20200531195445913.png 3 i5 L- Y. ~2 }" V7 _, C

  e0 F' C" R9 E+ d& B 20200531195513635.png ) U$ B+ L: h5 @% ~' T
7 E3 U. _1 @, J- r+ ~
这样“冰河”这两个字的字模就生成了
3 l" T9 Z! Q$ D1 }5 Z3 G- e) V9 B; v0 Q( ^8 C
3. 打开LCD驱动文件
$ S% ?( a- X+ r% c5 G# U6 D) q
9 x4 t3 X. z( v7 [& V4 T9 q
20200531200715469.png 7 A& a0 ~" l) p0 V4 h

0 Y7 U( M( G9 q* M3 [9 ?把字模生成的16进制数复制到% m, Z: O- y) F; q& R9 i; n5 ~

: l8 f% y4 ~  o2 u
20200531200850967.png
0 }8 M# w' ^- w9 r/ G
9 f+ N8 c* f" Y- d1 U 20200531201058476.png + T2 H. r( L) Q2 J" o9 N, f
2 y2 p- w- ^2 o/ P, n( _' F7 c

* J9 t0 p* N/ s4. 打印汉字“冰河”5 b$ \+ f$ e" X( _9 F% b
9 s: [9 D& Q9 \- D. q# n$ j$ Y
  1. LCD_P14x16Str(0,0,"冰河");3 J2 k5 P) p! W# N
复制代码

6 k. F* j1 B7 I! b) a6 w; l) \9 b7 | 20200531201429332.png
6 g/ Y) t% Z/ ^2 K3 L& p
" L6 q5 ]  I& M% x2 F+ S
: D- @" z6 v" j" j" h' A4 T
三、如何在LCD上画图
* d0 A. S+ r" M# ~7 B' f) j1.同理,用到的是驱动文件中的Draw_BMP()函数2 d; a, P, D: ^& A/ ?4 `7 b

' w1 a4 w( C1 ]& ^$ @2.解释函数void Draw_BMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char * bmp)
$ {- [2 u0 k0 Y6 R, ]4 ^& t4 m& u) R; u; E6 J/ W
3.unsigned char x0,unsigned char y0 //矩形左顶点 x0以像素点位单位 y0以行为单位
) A& @# @* M2 `  C% S% _8 K) Eunsigned char x1,unsigned char y1 //矩形右下角顶点5 q) R. P4 @) h& y4 L" R
unsigned char * bmp //生成的数组
: N3 q. m7 \4 o/ h
0 m( _: j' J1 ^3 e9 ?

4 q8 ?/ t7 z& p+ eDraw_BMP(32,0,95,6,map);//将屏幕中间的一半作为画纸
$ G! Q) ^/ k. r% G6 \- J' ]# B) L5 Q9 K// 64 * 56,32到95共有64个像素点,0~6共7行,一行8个像素点,共56个像素点
. w+ _9 w6 L6 {7 b, T* F  Y  K5 UDraw_BMP(0,0,127,7,map);//将这个屏幕作为画纸
5 z# c/ @, y6 {6 T- j6 P// 128 * 64
0 u1 `& |: U6 D0 ^  X' l$ `, B3 K; p& u2 e( `! K- F

& Q7 o) J, x; d* o6 f2 ?; f4.这里用到的求字模软件是
' H6 }7 V) Z0 U  X1 m( K6 j  {
0 `/ y  K% D# ?- Z6 S$ c
2020053120262832.png
+ o+ O: ~; ], X1 Z. K5.配置参数; \9 j$ d9 e. u4 j) j

3 c9 K7 N$ a. z9 ?0 M9 C
20200531203105566.png
0 g" y8 N$ r' g5 B! W% X3 s
5 `- p; F6 x. _. s+ t
20200531203400190.png
+ F  L) O& n" D3 g) t9 e8 @
+ i. m7 v, C- f2 O

7 `; L6 p0 U8 ]+ M/ p, ^. ~6.打印刚画的图
! @9 ~6 @# l) J
  1. Draw_BMP(32,0,95,6,Bmp013);+ w7 Z, }  z6 ]6 L2 K( K
复制代码
1 n9 r0 d4 A" C
20200531203728618.png
4 C# {6 ~# ~3 h: Y( t/ j1 t1 W+ }! X) l3 L
20200531203744281.png
9 Y# A8 S: v0 `+ m) E2 h" N$ ^
5 d' K+ H  p+ C- w8 J4 J, ~1 \$ g————————————————/ _" N! D+ a5 C. @7 y
版权声明:冰·河
0 y5 ?" B! s: O* s3 {" K' b  I- h; |  Y% N. l* i) k- I7 B% Z
0 a2 ~" G9 l2 V0 X+ }3 ?  ~7 O! U8 c
赞 收藏 评论0 发布时间:2022-12-22 16:05

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版