Řízení LCD 40x4
Napsal: 13 pro 2019, 22:04
Zdravím. Už pár dní si lámu hlavu s tím, jak řídit LCD 4x40 znaků. Jedná se o LCD která má první dva řádky řízené povelem na E1, další E2 viz obrázek.
Kód pro odeslání dat:
Původní kód pro obvod řídící LCD 4x20 znaků:
Původní zapojení procesoru na řízení LCD 4x20 zhnaků
Zapojení funguje i na mém LCD, pokud připojím E1 a E2 na pin C.2, vypíše stejné znaky na první a třetí řádek. Jak ale upravit ten program, aby to vypisovalo na všechny 4 řádky jsem zatím nepřišel
Zatím se mi podařilo inicializovat všechny řádky a předpokládám, že se musí rozdělit ty dva signál enable např, takto:
Více se mi bohužel nepodařilo.
Stránky, z kterých jsem vycházel: http://electromag1.wifeo.com/fabriquer- ... icaxe-.php
Za každou radu dík.
Rád bych i nadále používal zapojení využívající pro ovládání LCD obvod PICAXE 20M2 (20X2) a data tam posíla sériovou linkou. Za tím to spolehlivě funguje na všech LCD až do 4x20 znaků, které mají jen jeden vstup na povel enable.Kód pro odeslání dat:
Kód: Vybrat vše
;08m2
symbol baud=N4800
Pause 1000
serout C.1, baud, (254,1) ;smaže LCD
start:
serout C.1, baud, (254,128) ;souřadnice první řádek, první pozice
serout C.1, baud, ("abcdefghijklm")
goto start
Kód: Vybrat vše
;20M2 LCD
symbol baud = N4800_32
symbol RX = C.0
symbol enable = C.2
symbol rs = C.1
init:
gosub LCD_init
main:
serin RX,baud,b1
if b1 < 253 then
high rs
pinsB = b1
pulsout enable,1
goto main
else if b1 = 254 then
low rs
serin RX,baud,b1
pinsB = b1
pulsout enable,1
goto main
end if
LCD_init:
dirsC = %10111110
dirsB = %11111111
pause 15
pinsB = %00110000
pulsout enable,1
pause 5
pulsout enable,1
pulsout enable,1
setfreq m32
pinsB = %00111000
pulsout enable,1
pinsB = %00000001
pulsout enable,1
pause 8
pinsB = %00000010
pulsout enable,1
pinsB = %00000110
pulsout enable,1
pause 1
pinsB = %00001100
pulsout enable,1
pause 1
return
Zatím se mi podařilo inicializovat všechny řádky a předpokládám, že se musí rozdělit ty dva signál enable např, takto:
Kód: Vybrat vše
;20M2 LCD
symbol baud = N4800_32
symbol RX = C.0
symbol enable = C.2
symbol enable2 = C.3
symbol rs = C.1
...
LCD_init:
dirsC = %10111110
dirsB = %11111111
pause 15
pinsB = %00110000
pulsout enable,1
pulsout enable2,1
pause 5
pulsout enable,1
pulsout enable2,1
pulsout enable,1
pulsout enable2,1
setfreq m32
pinsB = %00111000
pulsout enable,1
pulsout enable2,1
pinsB = %00000001
pulsout enable,1
pulsout enable2,1
pause 8
pinsB = %00000010
pulsout enable,1
pulsout enable2,1
pinsB = %00000110
pulsout enable,1
pulsout enable2,1
pause 1
pinsB = %00001100
pulsout enable,1
pulsout enable2,1
pause 1
return
Stránky, z kterých jsem vycházel: http://electromag1.wifeo.com/fabriquer- ... icaxe-.php
Za každou radu dík.