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

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

[复制链接]
STMCU小助手 发布时间:2022-6-21 17:47
1602 LCD 显示屏是爱好者和最常用的显示屏。当您想向用户显示基本信息时,显示非常有用,并且还可以帮助测试或调试我们的代码。这种1602 LCD 模块已经流行了很长时间,并且很容易买到。

在前面我们已经介绍了如何在8051单片机上使用1602LCD,在本文中,我们将继续介绍如何在STM8上使用1602 LCD。

如果您是 STM8 新手,请查看STM8 相关入门文章,了解控制器板和编程环境的基础知识。

认识1602 LCD

1602 LCD 有 16 列和 2 行。所以总的来说,我们将能够在这个显示器上显示 32 个字符,这些字符可以是字母或数字,甚至是符号。我们在本文中使用的一个简单的1602 LCD 引脚如下所示:

c6568e99c9d3f4b65ef16ff65580bfd6.png

62f99c4f83888162bc1fe695854a4b18.png

如上图所示,在 LCD 的背面,你会发现两个黑点,里面是HD44780 LCD 驱动 IC。我们的微控制器与这个 IC 通信,进而控制 LCD 把我们的内容在上面显示出来。

如果您想知道1602 LCD是如何工作的,可以查看16x2 LCD 显示器的工作原理,这里不展开。

在本文中,我们将讨论使用简单的 LCD_print_char和LCD_print_string命令在 1602 LCD 显示器上显示字母字符(字母和数字),这里包含电路图和代码。

将 LCD 与 STM8 微控制器连接的电路图
完整的STM8—LCD 电路如下图所示。如您所见,STM8S103F3P6 控制器与 LCD的连接非常简单,我们将 LCD 显示器直接连接到我们的开发板,并且还连接了 ST-link 以对开发板进行编程。

bd060b90725a77d41407845df0d0877e.png

注意LCD的工作电压为5V, STM8S103F3P6 微控制器工作电压为3.3V,所以必须为 LCD 提供 额外的5V 电源。

LCD Pin 3(VO/VEE)通过一个10k的可变电阻连接到电压(Vcc)以调节LCD的对比度。可变电阻的中间脚连接到 PIN 3,可变电阻其他两个引脚分别连接到Vcc和GND。

然后是RS、读/写 (RW) 和使能 (E) 引脚。

RW引脚接地,因为我们不会从 LCD 读取任何内容,我们只会执行写入操作。

另外两个控制引脚 RS 和 E 分别连接到 PA1 和 PA2 引脚。

数据引脚 DB0 到 DB7。1602 LCD 可以在两种模式下工作,一种是 8 位模式,我们必须使用 LCD 上的所有 8 个数据引脚(DB0-DB7),另一种是 4 位模式,我们只需要 4 个数据引脚(DB4-DB7) 。

因为它需要占用单片机的 GPIO ,由于一般单片机引脚较少,因此我们本次使用了 4 位模式,并且仅将引脚 DB4、DB5、DB6 和 DB7 分别连接到引脚 PD1、PD2、PD3 , 和 PD4。

最后两个引脚 BLA 和 BLK 用于为LCD内部背光灯供电,我们使用了一个 560 欧姆的电阻作为限流电阻。

STM8S微控制器的LCD程序
为了演示,我们将对 STM8S 控制器进行编程以显示一个简单的字符串,例如“Hello World”,然后我们将在第二行中每隔一秒增加一个“Test”值。

我们通过定义引脚并添加所需的头文件来启动我们的程序。在我们上面的电路图中,我们已将LCD_RS连接到 A1,因此我们将其定义为LCD_RS GPIOA、GPIO_PIN_1。 同样,我们对其他引脚也做了同样的事情。如果你使用了不同电路,相应地更改这些值。

程序
  1. #define LCD_RS GPIOA, GPIO_PIN_1
  2. #define LCD_EN GPIOA, GPIO_PIN_2
  3. #define LCD_DB4 GPIOD, GPIO_PIN_1
  4. #define LCD_DB5 GPIOD, GPIO_PIN_2
  5. #define LCD_DB6 GPIOD, GPIO_PIN_3
  6. #define LCD_DB7 GPIOD, GPIO_PIN_4
  7. #include "STM8S.h"
  8. #include "stm8s103_LCD_16x2.h"
  9. void main()
  10. {
  11.     int test_var = 0;
  12.     char d4,d3,d2,d1;
  13.     Lcd_Begin();
  14.     Lcd_Clear();
  15.     Lcd_Set_Cursor(1,1);
  16.     Lcd_Print_String("STM8S103F3P3 LCD");
  17.     delay_ms(5000);
  18.     Lcd_Clear();
  19.     Lcd_Set_Cursor(1,1);
  20.     Lcd_Print_String("Hello World!");
  21.     Lcd_Set_Cursor(2,1);
  22.     Lcd_Print_String("Test: ");
  23.     while (1)
  24.     {
  25.         d4 = test_var%10 + '0';
  26.         d3 = (test_var/10)%10 + '0';
  27.         d2 = (test_var/100)%10 + '0';
  28.         d1 = (test_var/1000) + '0';
  29.         Lcd_Set_Cursor(2,6);
  30.         Lcd_Print_Char(d1);
  31.         Lcd_Print_Char(d2);
  32.         Lcd_Print_Char(d3);
  33.         Lcd_Print_Char(d4);
  34.         delay_ms(1000);
  35.         test_var++;
  36.     }
  37. }

复制代码

收藏 评论0 发布时间:2022-6-21 17:47

举报

0个回答

所属标签

相似技术帖

官网相关资源

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