8051 Test code with 4 bit HD44780 LCD, LEDs, audio frequency generation.
8051 Test code with 4 bit HD44780 LCD, LEDs, audio frequency generation.
I _DO NOT_ claim that the code is pretty or "correct." Just fiddling with some stuff :-)
I _DO NOT_ claim that the code is pretty or "correct." Just fiddling with some stuff :-)
YouTube video showing my breadboard and program operation: https://www.youtube.com/watch?v=Z5JveB2_FQQ
YouTube video showing my breadboard and program operation: [Intel 8051 Microcontroller Test w External EPROM](https://www.youtube.com/watch?v=Z5JveB2_FQQ)
I compile with SDCC:
I compile with SDCC:
```
sdcc --iram-size 128 --stack-auto lcd.c
sdcc --iram-size 128 --stack-auto lcd.c
packihx lcd.ihx > lcd.hex
packihx lcd.ihx > lcd.hex
```
Since my EPROM programmer only handles raw hex data, no special formats, I also do:
Since my EPROM programmer only handles raw hex data, no special formats, I also do:
```
objcopy -I ihex -O binary lcd.hex lcd.bin
objcopy -I ihex -O binary lcd.hex lcd.bin
xxd -p lcd.bin lcd.bin.hex
xxd -p lcd.bin lcd.bin.hex
```
Those two commands give me a raw binary file, and then convert that binary to the raw ascii hex.
Those two commands give me a raw binary file, and then convert that binary to the raw ascii hex.
HD44780 LCD is hooked up to MCU as follows:
HD44780 LCD is hooked up to MCU as follows:
LCD: DB4|DB5|DB6|DB7|EN |RS RW
P1: 0 1 2 3 4 5 GND
>LCD: DB4|DB5|DB6|DB7|EN |RS RW
>P1: 0 1 2 3 4 5 GND
LEDs and piezo buzzer or speaker are hooked to pins of P3. I used 2.7k has pullup resistors for the LCD lines on P1. I think 4.7k would be more correct but the 2.7ks were what I had handy.
LEDs and piezo buzzer or speaker are hooked to pins of P3. I used 2.7k has pullup resistors for the LCD lines on P1. I think 4.7k would be more correct but the 2.7ks were what I had handy.