mmbasic:picomite_to_lcd_via_i2c
Picomite To LCD Via I2C
This program writes “HELLO” on an HD44870 LCD via PCF8574 bus expander and a level converter. It is intended for teaching and learning as it reads straight from top to bottom.
'chips primitive LCD driver ' pcf8574 pins in order: D7,D6,D5,D4,BL,E,RW,RS 'first section straight from the HD44780 data sheet setpin gp2,gp3,i2c2 'where the sigs come out i2c2 open 100,100 '100 KHz wait 100 mS pause 100 ' for power to come up i2c2 write &h27,0,1,&b00100000 :pause 1 'function set e lo i2c2 write &h27,0,1,&b00100100 :pause 1 ' flip e hi i2c2 write &h27,0,1,&b00100000 :pause 1 'e trailing edge sends data i2c2 write &h27,0,1,&b00100000 :pause 1 'function set e lo i2c2 write &h27,0,1,&b00100100 :pause 1 ' flip e hi i2c2 write &h27,0,1,&b00100000 :pause 1 'e trailing edge sends data i2c2 write &h27,0,1,&b00000000 :pause 1 'second function set i2c2 write &h27,0,1,&b00000100 :pause 1 'flip e hi i2c2 write &h27,0,1,&b00000000 :pause 1 'e back lo i2c2 write &h27,0,1,&b00000000 :pause 1 'third function set i2c2 write &h27,0,1,&b00000100 :pause 1 'flip e hi i2c2 write &h27,0,1,&b00000000 :pause 1 'e back lo i2c2 write &h27,0,1,&b11100000 :pause 1 'display on off i2c2 write &h27,0,1,&b11100100 :pause 1 'flip e hi i2c2 write &h27,0,1,&b11100000 :pause 1 'e back lo i2c2 write &h27,0,1,&b00000000 :pause 1 'entry mode set i2c2 write &h27,0,1,&b00000100 :pause 1 ' flip e hi i2c2 write &h27,0,1,&b00000000 :pause 1 ' e down to send data i2c2 write &h27,0,1,&b01100000 :pause 1 'more entry mode set i2c2 write &h27,0,1,&b01100100 :pause 1 ' flip e hi i2c2 write &h27,0,1,&b01100000 :pause 1 'e back lo 'now write a character LSB hi is character, not control. i2c2 write &h27,0,1,&b01000001 :pause 1 'hi nibble of capital H i2c2 write &h27,0,1,&b01000101 :pause 1 'flip e hi i2c2 write &h27,0,1,&b01000001 :pause 1 'e back lo to send i2c2 write &h27,0,1,&b10000001 :pause 1 'lo nibble of capital H i2c2 write &h27,0,1,&b10000101 :pause 1 ' flip e hi i2c2 write &h27,0,1,&b10000001 :pause 1 ' e lo to send i2c2 write &h27,0,1,&b01000001 :pause 1 'hi nibble of capital E i2c2 write &h27,0,1,&b01000101 :pause 1 'flip enable hi i2c2 write &h27,0,1,&b01000001 :pause 1 'enable lo to send i2c2 write &h27,0,1,&b01010001 :pause 1 'lo nibble of capital E i2c2 write &h27,0,1,&b01010101 :pause 1 'flip enable hi i2c2 write &h27,0,1,&b01010001 :pause 1 ' enable lo send i2c2 write &h27,0,1,&b01000001 :pause 1 'hi nibble of capital L i2c2 write &h27,0,1,&b01000101 :pause 1 'flip enable hi i2c2 write &h27,0,1,&b01000001 :pause 1 'lo to send i2c2 write &h27,0,1,&b11000001 :pause 1 'lo nibble of capital L i2c2 write &h27,0,1,&b11000101 :pause 1 'enable hi i2c2 write &h27,0,1,&b11000001 :pause 1 'enable lo i2c2 write &h27,0,1,&b01000001 :pause 1 'hi nibble of 2nd capital L i2c2 write &h27,0,1,&b01000101 :pause 1 'flip enable hi i2c2 write &h27,0,1,&b01000001 :pause 1 'lo to send i2c2 write &h27,0,1,&b11000001 :pause 1 'lo nibble of 2nd capital L i2c2 write &h27,0,1,&b11000101 :pause 1 'enable hi i2c2 write &h27,0,1,&b11000001 :pause 1 'enable lo i2c2 write &h27,0,1,&b01000001 :pause 1 'hi nibble of capital O i2c2 write &h27,0,1,&b01000101 :pause 1 'enable hi i2c2 write &h27,0,1,&b01000001 :pause 1 'lo to send i2c2 write &h27,0,1,&b11110001 :pause 1 'lo nibble of capital O i2c2 write &h27,0,1,&b11110101 :pause 1 'enable hi i2c2 write &h27,0,1,&b11110001 :pause 1 'lo to send 'turn on backlight i2c2 close setpin gp2, gp3, i2c2 i2c2 open 100,100 '100 KHz, wait 100 ms i2c2 write &h27,0,1,&b0001000 i2c2 close
mmbasic/picomite_to_lcd_via_i2c.txt · Last modified: 2025/01/14 10:24 by gerry