AlfaLCD - generovaní vlastních znaku
Milan MCM
magixe@volny.cz
Pondělí Červenec 4 16:59:25 CEST 2005
Dobrý den
Mám trošku malý problémek.
Jedná se o X51 proc a LCD display alfanumerický 4x16 znaků.
Vše mě dupe jak má , ale nyní potřebuji generovat cca 25vlastních znaků
Vzhledem k tomu že display má jen 8 pozic 00-07h pro definovaní vlastních
znaků uživatelem musím je generovat ON THE FLY - za běhu a to se mě
nedaří :((
Konám zhruba toto ale nerabotajet ...
Pokud vytvořím po inicializaci LCD znaky 0 - 7
a pak je za běhu programu jen používám tak to funguje
ale pokud je začnu generovat za běhu tak to nějak nechce fungovat -
patrně hrubá chyba.
Máte prosím někdo něco v ASM ? děkuji
; // podprogramy pro obsluhu LCD
Procedure LCD
Setbit EN ; Zapis do displeje
WrP0
Pause
Clearbit EN
Pause
EndProc
Procedure MAIN_I ; Zápis vlastních znaků do LCD
Clearbit RS ; jde o prikaz pro LCD
LCD ; posli to na oba display
..přenos přes A
Delay 3 ; poseckame
SetBit RS ; jde o data do LCD
Delay 3 ; poseckame
EndProc
; // vlastní napsání znaků
Procedure Napisto
Make_Invert1 ; měl by na 07h vytvořit znak
delay 2
LCD 7 ; banka 07h na LCD
Make_Invert2 ; měl by na 07h vytvořit znak
delay 2
LCD 7 ; banka 07h na LCD
EndProc
;// dva znaky 1 - 2 invertované
Procedure Make_Invert1
Main_I 01111000b
LCD 00011011b
Main_I 01111001b
LCD 00010011b
Main_I 01111010b
LCD 00011011b
Main_I 01111011b
LCD 00011011b
Main_I 01111100b
LCD 00011011b
Main_I 01111101b
LCD 00011011b
Main_I 01111110b
LCD 00010001b
Main_I 01111111b
LCD 00000000b
Main_I 10000000b ; vrať to na DDRAM ??!!
EndProc
Procedure Make_Invert2
Main_I 01111000b
LCD 00010001b
Main_I 01111001b
LCD 00001110b
Main_I 01111010b
LCD 00011110b
Main_I 01111011b
LCD 00011101b
Main_I 01111100b
LCD 00011011b
Main_I 01111101b
LCD 00010111b
Main_I 01111110b
LCD 00000000b
Main_I 01111111b
LCD 00000000b
Main_I 10000000b ; vrať to na DDRAM ??!!
EndProc
Další informace o konferenci Hw-list