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

【经验分享】STM8 微控制器接入1602 LCD

[复制链接]
STMCU小助手 发布时间:2022-6-21 17:47
1602 LCD 显示屏是爱好者和最常用的显示屏。当您想向用户显示基本信息时,显示非常有用,并且还可以帮助测试或调试我们的代码。这种1602 LCD 模块已经流行了很长时间,并且很容易买到。
1 t) @, K. u, Y9 g& `+ a8 l2 K: x# L& h
在前面我们已经介绍了如何在8051单片机上使用1602LCD,在本文中,我们将继续介绍如何在STM8上使用1602 LCD。
! L5 A' u* e- L0 o1 O  [9 v0 W' q" [+ r7 J3 `
如果您是 STM8 新手,请查看STM8 相关入门文章,了解控制器板和编程环境的基础知识。- f" o+ S5 w) \- i( s

+ a- Y0 Q" m, V: P: t# _5 ]* L认识1602 LCD

& u% ?& B8 I! y& L; `* S1602 LCD 有 16 列和 2 行。所以总的来说,我们将能够在这个显示器上显示 32 个字符,这些字符可以是字母或数字,甚至是符号。我们在本文中使用的一个简单的1602 LCD 引脚如下所示:! N- N$ x8 k$ k% j& @$ X# T. c) r

2 s" `5 C7 Z( o3 j* t9 L c6568e99c9d3f4b65ef16ff65580bfd6.png ( v9 V+ l& P" ]" o

* ~! n. Z3 r7 j. Y7 [. u 62f99c4f83888162bc1fe695854a4b18.png
: V& a8 ~6 _: T1 Z+ z/ ?9 B/ o4 y9 @8 O- ~1 P! E
如上图所示,在 LCD 的背面,你会发现两个黑点,里面是HD44780 LCD 驱动 IC。我们的微控制器与这个 IC 通信,进而控制 LCD 把我们的内容在上面显示出来。. C  {; w8 W% ]) M( M0 R
2 y. f$ J% o3 R# Q1 i6 x8 x
如果您想知道1602 LCD是如何工作的,可以查看16x2 LCD 显示器的工作原理,这里不展开。
- ]! c0 w" y" @0 F, w% d
- S2 _9 s$ i. L0 J& E在本文中,我们将讨论使用简单的 LCD_print_char和LCD_print_string命令在 1602 LCD 显示器上显示字母字符(字母和数字),这里包含电路图和代码。
: m+ y4 k" g6 u6 Z3 U; {
% o' G1 s( }; D7 a' W将 LCD 与 STM8 微控制器连接的电路图% b% k% E1 r* ^) Q. K, [! y4 L) n
完整的STM8—LCD 电路如下图所示。如您所见,STM8S103F3P6 控制器与 LCD的连接非常简单,我们将 LCD 显示器直接连接到我们的开发板,并且还连接了 ST-link 以对开发板进行编程。" h% W! L3 M0 ]: ~- R
: C: }- n* L8 F( y, z6 c) G2 e
bd060b90725a77d41407845df0d0877e.png
7 F+ ]1 }  O% D" D" l
& b  Y6 h# C8 F* R8 n3 [6 D% `4 G注意LCD的工作电压为5V, STM8S103F3P6 微控制器工作电压为3.3V,所以必须为 LCD 提供 额外的5V 电源。: f) {" K" K3 S! d7 N) ~7 P
* @, }7 f; {9 d0 p. i
LCD Pin 3(VO/VEE)通过一个10k的可变电阻连接到电压(Vcc)以调节LCD的对比度。可变电阻的中间脚连接到 PIN 3,可变电阻其他两个引脚分别连接到Vcc和GND。+ I) g; @/ z2 N' H

- R( g0 ~" R- W* P1 `然后是RS、读/写 (RW) 和使能 (E) 引脚。0 c, C# w0 r- m2 {1 [( H& d
& N4 T7 W  b% q# u5 H2 A' D
RW引脚接地,因为我们不会从 LCD 读取任何内容,我们只会执行写入操作。
7 f% g6 ?$ \, g: ?4 M% c7 _1 Z5 J! v( ]- e# T2 a0 A
另外两个控制引脚 RS 和 E 分别连接到 PA1 和 PA2 引脚。  w& i1 {( J# a) ~% B& o
8 F0 K; m- k$ s
数据引脚 DB0 到 DB7。1602 LCD 可以在两种模式下工作,一种是 8 位模式,我们必须使用 LCD 上的所有 8 个数据引脚(DB0-DB7),另一种是 4 位模式,我们只需要 4 个数据引脚(DB4-DB7) 。2 u* M+ {/ _" X! j) p3 H4 j

; W3 _! ^/ z! `因为它需要占用单片机的 GPIO ,由于一般单片机引脚较少,因此我们本次使用了 4 位模式,并且仅将引脚 DB4、DB5、DB6 和 DB7 分别连接到引脚 PD1、PD2、PD3 , 和 PD4。' U9 c0 ?. \. M5 k; ?7 w& m

4 p; e# O1 J- }, j2 i最后两个引脚 BLA 和 BLK 用于为LCD内部背光灯供电,我们使用了一个 560 欧姆的电阻作为限流电阻。
0 D& K% c2 l2 r4 K9 Y% y
2 k# f0 e: M0 q# E) P  O% kSTM8S微控制器的LCD程序
5 `0 L. ]  @7 u4 j  L/ |1 C为了演示,我们将对 STM8S 控制器进行编程以显示一个简单的字符串,例如“Hello World”,然后我们将在第二行中每隔一秒增加一个“Test”值。
- L2 j5 R0 {; [, R3 A8 f; b4 X% n3 L9 I" g7 ?; ~
我们通过定义引脚并添加所需的头文件来启动我们的程序。在我们上面的电路图中,我们已将LCD_RS连接到 A1,因此我们将其定义为LCD_RS GPIOA、GPIO_PIN_1。 同样,我们对其他引脚也做了同样的事情。如果你使用了不同电路,相应地更改这些值。
9 s. i' Z9 V1 z
& [1 k. b# ?) \* r/ E5 e程序5 z9 Z  Z1 J8 p
  1. #define LCD_RS GPIOA, GPIO_PIN_1  }; ?* C4 f0 k8 s4 b
  2. #define LCD_EN GPIOA, GPIO_PIN_2
    " @1 L9 {% \; e- g/ ]" B3 r
  3. #define LCD_DB4 GPIOD, GPIO_PIN_11 H# S+ A& @# E! b0 S- M" a2 c
  4. #define LCD_DB5 GPIOD, GPIO_PIN_2
    , r) u5 w$ P, Y; b/ C
  5. #define LCD_DB6 GPIOD, GPIO_PIN_3
    4 v$ \8 w' `/ ^- [, a4 G7 b2 _. g
  6. #define LCD_DB7 GPIOD, GPIO_PIN_4+ ~- M. N7 R* [: }/ }. V, e
  7. #include "STM8S.h"
    3 y% K. p3 \* ~0 i" T5 p
  8. #include "stm8s103_LCD_16x2.h"
      a; f' ~, \( p9 {; ]  w
  9. void main()
    0 J$ M  N4 J  \# _5 q, T
  10. {
    6 L2 z) I) H$ R2 ?8 f
  11.     int test_var = 0;
    % U$ A' ^! N/ {% q( f1 m9 k
  12.     char d4,d3,d2,d1;
    1 ^3 x9 K6 u* ~5 S
  13.     Lcd_Begin();% K, |" c8 I2 L- D7 S
  14.     Lcd_Clear();. r+ q. l- K  R6 A1 K# S$ Z' P1 k
  15.     Lcd_Set_Cursor(1,1);
    1 l8 z5 o. Q4 E
  16.     Lcd_Print_String("STM8S103F3P3 LCD");
    & @" S6 m! ~) ]1 D- ?6 [, E. n
  17.     delay_ms(5000);3 h: U% o3 m, W
  18.     Lcd_Clear();
    4 v6 Q9 T1 g2 j
  19.     Lcd_Set_Cursor(1,1);
      `/ F5 I1 e) S/ b: M* R5 \1 D; I
  20.     Lcd_Print_String("Hello World!");
    % J  j. r" G9 Z9 B3 R
  21.     Lcd_Set_Cursor(2,1);& O; E0 s7 s1 I# c& V2 Q
  22.     Lcd_Print_String("Test: ");
    . Y7 n" {: N; Y8 c' n
  23.     while (1). g0 C1 R) Z. }; E# K
  24.     {4 K% C. U% o- t! z& T& B9 r
  25.         d4 = test_var%10 + '0';+ m0 k& }# S! C& c/ f
  26.         d3 = (test_var/10)%10 + '0';, n6 H, C3 `* H8 F+ E1 ^
  27.         d2 = (test_var/100)%10 + '0';  f2 q# M0 i: Q9 \" ]- g
  28.         d1 = (test_var/1000) + '0';
    0 o- f' j( P6 P/ w. q+ [
  29.         Lcd_Set_Cursor(2,6);
    5 }9 j3 s8 N0 |9 |3 J1 T* O/ d
  30.         Lcd_Print_Char(d1);( Q! V: B- ?& P6 \2 ?0 I& Z; L6 e
  31.         Lcd_Print_Char(d2);  g( Z) t  Y$ ]& E! \1 K. Z
  32.         Lcd_Print_Char(d3);2 G6 r1 y2 D! C, q6 I* s) q1 i
  33.         Lcd_Print_Char(d4);: h: F2 M- }0 p3 Y& g4 u
  34.         delay_ms(1000);9 |; M8 ]$ g6 l
  35.         test_var++;
    # I' i6 G. K7 y8 y
  36.     }: |+ P  A; p/ k
  37. }2 G' r+ m/ S2 ]+ ^, b- E
  38. * g, _% @* ]( A# G& W5 W. v/ {
复制代码
) U9 k- j3 L0 f- q$ A3 _( H4 r
收藏 评论0 发布时间:2022-6-21 17:47

举报

0个回答

所属标签

相似分享

官网相关资源

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