iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 19
1
IoT

熟悉Arduino的Maker必看!30天帶你快速入門基於STM32嵌入式開發~系列 第 19

[Day 19]-【STM32系列】16 x 2 LCD 液晶顯示器 with I²C

LCD 1602 display

總不能一直都在看LED亮來亮去吧!?看久也是會懷疑人生的!所以今天,我們來介紹常用的LCD 1602,他給我們帶來這個獨立的顯示螢幕,好讓我們將結果輸出到螢幕上面成為一個完整的設計。
https://ithelp.ithome.com.tw/upload/images/20201005/20120093LnNPphOp37.png

那為了搭配 I²C使用,我們將會用到 PCF8574作為 I2C的擴展模組連接到 LCD,並用STM32開發板控制,如果還不熟悉 I²C的朋友們上一篇我們介紹了[Day 18]-【STM32系列】IC之間常用的通訊協定 I²C,可以先去看看再來。

https://ithelp.ithome.com.tw/upload/images/20201005/20120093XCgSiGMpOy.jpg

PCF8574具有 4個 pinout,從上到下依序為 GND,VCC,SDA,SCL和 16個 pinout。我們將 LCD連接到這 16個 pinout,我們就可以透過控制 SDA、SCL兩條線輸出 LCD。

所以我們是這樣,要讓 LCD顯示文字前必須先送 I²C給 PCF8574,他就負責為我們跟 LCD座溝通的橋樑,首先要送甚麼給 PCF8574呢? I²C的每一筆資料都是8bit,第一組資料就是先送地址,送完再送資料。就好比郵差要送信,要先告訴郵差要送去哪裡,在告訴他送甚麼信。同樣的我們同一條 I²C線上可能連接兩個不同的 LCD,所以不能有人有同樣的門牌號碼,上一篇也有提及理論上我們可以在同一條 I2C線上連接多達 128個設備(但通常10個就很多了)。總之我們不能讓兩個 PCF8574具有相同的地址,我們需要修改其中之一。

PCF8574

PCF8574 預設的地址是0 1 0 0 A2 A1 A0 R/W。
高四位0100是預設不會變,所以我們能改的就是低四位的A2 A1 A0 R/W
如上圖所示, PCF8574提供 A2 A1 A0 pinout供我們修改,地址的最低位可供read(1)/ write(0)操作,這裡我們均保持為 write(0)。在默認的情況下A2 A1 A0皆為高電平,所以地址將會是01001110,即0x4E。

如果更改設備的新位置,假設將A0接地,則新位置將為01001100,即0x4C。
所以這裡最多可以同時連接8個LCD到同一條線上。
關於PCF8574 Addressing 如下表:

0100 A2 A1 A0 0(W) Addressing Pins
0100 0 0 0 0 0x40
0100 0 0 1 0 0x42
0100 0 1 0 0 0x44
0100 0 1 1 0 0x46
0100 1 0 0 0 0x48
0100 1 0 1 0 0x4A
0100 1 1 0 0 0x4C
0100 1 1 1 0 0x4E

連接PCF8574到LCD、STM32 Board

https://ithelp.ithome.com.tw/upload/images/20201004/20120093Cf6FOP3Idh.png
將共同的VCC和GND接上,其餘我們需要LCD接至PCF8574
4-> RS-> p0
5-> R / W-> p1
6-> En-> p2
11-> DB4-> p4
12-> DB5-> p5
13-> DB6-> p6
14-> DB7-> p7

PCF8574接至STM32
PB6(SCL)->SCL
PB7(SDA)->SDA

Setup

https://ithelp.ithome.com.tw/upload/images/20201004/20120093THz63w1Ffa.png
跟往常一樣設定RCC -> HSE、LSE為Crystal/Ceramic Resonator
SYS -> Debug Serial Wire 打勾

到了這裡我們選擇I2C1 -> I2C 預設pinout會是PB6(SCL),PB7(SDA)。

https://ithelp.ithome.com.tw/upload/images/20201001/20120093mwsW2dOAkz.png
頻率直接給他最大下去了啦

生成檔案


相關連結


結語

就在我上傳只剩5分鐘
我準備要上傳時竟然跳出下面這個阿!
好在最後發現原來是我上傳的第一張圖片拿掉後就正常了
後面重新上傳圖片也就沒問題
到底為甚麼上傳的圖片會有甚麼禁止字元啦

https://ithelp.ithome.com.tw/upload/images/20201005/201200930Fw4Eyb3yT.png

哈哈~
不好笑啦
要是再晚個2 3分鐘
我就喪失鐵人資格了
竟然給我再發布文章前出這種trouble
差點沒給我嚇死


上一篇
[Day 18]-【STM32系列】IC之間常用的通訊協定 I²C
下一篇
[Day 20]-【STM32系列】DHT11 溫溼度感測模組
系列文
熟悉Arduino的Maker必看!30天帶你快速入門基於STM32嵌入式開發~30

尚未有邦友留言

立即登入留言