tft每日頭條

 > 圖文

 > stm8單片機的詳細說明書

stm8單片機的詳細說明書

圖文 更新时间:2024-09-14 09:46:07

1602 LCD 顯示屏愛好者衆多也是最常用的顯示屏。當您想向用戶顯示基本信息時,顯示非常有用,并且還可以幫助測試或調試我們的代碼。這種1602 LCD 模塊已經流行了很長時間,并且很容易買到。

在前面我們已經介紹了如何在8051單片機上使用1602LCD,在本文中,我們将繼續介紹如何在STM8上使用1602 LCD。

認識1602 LCD

1602 LCD 有 16 列和 2 行。所以總的來說,我們将能夠在這個顯示器上顯示 32 個字符,這些字符可以是字母或數字,甚至是符号。我們在本文中使用的一個簡單的1602 LCD 引腳如下所示:

stm8單片機的詳細說明書(STM8單片機接入1602LCD)1

stm8單片機的詳細說明書(STM8單片機接入1602LCD)2

如上圖所示,在 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 以對開發闆進行編程。

stm8單片機的詳細說明書(STM8單片機接入1602LCD)3

注意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。 同樣,我們對其他引腳也做了同樣的事情。如果你使用了不同電路,相應地更改這些值。

程序:

#define LCD_RS GPIOA, GPIO_PIN_1 #define LCD_EN GPIOA, GPIO_PIN_2 #define LCD_DB4 GPIOD, GPIO_PIN_1 #define LCD_DB5 GPIOD, GPIO_PIN_2 #define LCD_DB6 GPIOD, GPIO_PIN_3 #define LCD_DB7 GPIOD, GPIO_PIN_4 #include "STM8S.h" #include "stm8s103_LCD_16x2.h" void main() { int test_var = 0; char d4,d3,d2,d1; Lcd_Begin(); Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Print_String("STM8S103F3P3 LCD"); delay_ms(5000); Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Print_String("Hello World!"); Lcd_Set_Cursor(2,1); Lcd_Print_String("Test: "); while (1) { d4 = test_var '0'; d3 = (test_var/10) '0'; d2 = (test_var/100) '0'; d1 = (test_var/1000) '0'; Lcd_Set_Cursor(2,6); Lcd_Print_Char(d1); Lcd_Print_Char(d2); Lcd_Print_Char(d3); Lcd_Print_Char(d4); delay_ms(1000); test_var ; } }

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved