This shows you the differences between two versions of the page.
pm:prj2025:iotelea:ana_maria.ailiesei [2025/05/28 00:12] ana_maria.ailiesei [4-bit write cycle (Figure 9)] |
pm:prj2025:iotelea:ana_maria.ailiesei [2025/05/28 00:35] (current) ana_maria.ailiesei [Bibliography and Sources] |
||
---|---|---|---|
Line 281: | Line 281: | ||
== Why those hex commands? == | == Why those hex commands? == | ||
- | 0x01 Clear Display, 0x02 Return Home, 0x06 Entry-Mode Set, 0x0C Display ON/OFF, 0x28 Function Set – their op-codes and bit-fields are listed in Table 6 “Instructions” of the datasheet. | + | 0x01 Clear Display, 0x02 Return Home, 0x06 Entry-Mode Set, 0x0C Display ON/OFF, 0x28 Function Set – their op-codes and bit-fields are listed in Table 6 "Instructions" of the datasheet. |
- | The Function Set constant 0x28 is 0010 1000b ⇒ DL = 0 (4-bit), N = 1 (2-line), F = 0 (5×8 font). You must send this after forcing the controller into 4-bit mode so it knows the final interface width. | + | The Function Set constant 0x28 is 0010 1000b => DL = 0 (4-bit), N = 1 (2-line), F = 0 (5x8 font). You must send this after forcing the controller into 4-bit mode so it knows the final interface width. |
- | === Power-up initialisation (Figure 24 flow) === | + | == Power-up initialisation (Figure 24 flow) == |
<code> | <code> | ||
- | 0x30 → 0x30 → 0x30 → 0x20 | + | 0x30 -> 0x30 -> 0x30 -> 0x20 |
</code> | </code> | ||
- | Send the “0x30 three times” handshake (still in 8-bit mode) and finally 0x20 to drop DL=0. This is the exact 4-bit initialisation sequence shown in Figure 24 “4-Bit Interface Initializing by Instruction” (under Initializing by Instruction). | + | Send the "0x30 three times" handshake (still in 8-bit mode) and finally 0x20 to drop DL=0. This is the exact 4-bit initialisation sequence shown in Figure 24 "4-Bit Interface Initializing by Instruction" (under Initializing by Instruction). |
- | = 4-bit write cycle (Figure 9) = | + | == 4-bit write cycle (Figure 9) == |
In 4-bit mode each byte is split: high nibble first, low nibble second. Figure 9 labels the bus cycles: | In 4-bit mode each byte is split: high nibble first, low nibble second. Figure 9 labels the bus cycles: | ||
Line 298: | Line 298: | ||
| 1 | 1 | DR read | Fetch data from DDRAM/CGRAM via Data Register | | | 1 | 1 | DR read | Fetch data from DDRAM/CGRAM via Data Register | | ||
- | See Figure 9 “4-Bit Transfer Example” for the two Enable pulses per byte. | + | See Figure 9 "4-Bit Transfer Example" for the two Enable pulses per byte. |
- | = What the bit-flags in lcd_send_half() do = | + | == What the bit-flags in lcd_send_half() do == |
| Bit mask | PCF8574 pin → LCD | Why it’s set | | | Bit mask | PCF8574 pin → LCD | Why it’s set | | ||
Line 347: | Line 347: | ||
<html> | <html> | ||
<iframe width="560" height="315" | <iframe width="560" height="315" | ||
- | src="https://www.youtube.com/embed/058uTZwySFo" | + | src="https://www.youtube.com/embed/1_WvuHkVgRU" |
title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen> | title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen> | ||
</iframe> | </iframe> | ||
Line 370: | Line 370: | ||
[[https://www.flipkart.com/tumtafa-best-quality-labyrinth-game-ball-in-a-maze-round-wooden-kids-adults-party-fun-games-board/p/itm10a21ca18e84c?pid=BDGGGSTBHPG2E3WZ |Ball maze photo]] | [[https://www.flipkart.com/tumtafa-best-quality-labyrinth-game-ball-in-a-maze-round-wooden-kids-adults-party-fun-games-board/p/itm10a21ca18e84c?pid=BDGGGSTBHPG2E3WZ |Ball maze photo]] | ||
+ | |||
+ | [[https://cdn.sparkfun.com/assets/9/5/f/7/b/HD44780.pdf | HD44780 Datasheet]] | ||