preklad z C do Bascom
Moderátor: Moderátoři
preklad z C do Bascom
Nelze pouzit ovladani pomoci knihovny glcdks108.lib!!!
kdo si na to troufa tomu zaslu komplet v C
Cecko moc neumim a v bascomu se mi porad nedari vytvorit to same co dela puvodni program napsany v c ,lepe napsano neumim ovladat glcd s ks0108 jinym zpusobem jak pomoci glcdks108.lib a to zde neni mozne.
potrebuji to pro dalsi rozsireni programu coz v C u mne nehrozi.
-
Návštěvník
a co vyctu z toho datasheetu kdyz polovinu veci vidim poprve... ? bascom se ucim 2 mesice a vzhledem k tomu, ze jsem nikdy nic neprogramoval tak neni nic spatneho na tom ze se tu na to ptam ne, jak jinak se to mam asi naucit kdyz siroko daleko neznam nikoho kdo by se tomu venoval a mohl by mi s tim pomoct.
-
Návštěvník
Kód: Vybrat vše
čtení stavového slova
B=1 - řadič zaneprázdněn, B=0 - připraven
D=1 - LCD zapnut, D=0 - LCD vypnut
R=1 - probíhá reset, R=0 - reset ukončenKód: Vybrat vše
#include <util/delay.h>
#define lcdrs 6 // LCD's RS pin is connected to Pin0 of AVR 0
#define lcdrw 7 // LCD's r/w pin is connected to Pin1 of AVR 1
#define lcde 2 // LCD's e pin is connected to Pin2 of AVR
#define lcdcs1 5 // LCD's CS1 pin is connected to Pin5 of AVR
#define lcdcs2 4 // LCD's CS2 pin is connected to Pin4 of AVR
#define lcdrst 3 // LCD's RST pin is connected to Pin3 of AVR
#define ctrl_port PORTB
#define ctrl_port_ddr DDRB
#define ctrl_port_pins PINB
#define data_port PORTD
#define data_port_ddr DDRD
#define data_port_pins PIND
...
void glcdInit (void)
{
data_port_pins = 0; //DATA Port Low
data_port_ddr = 0xff; //Make DATA port output
ctrl_port = 0; //CONTROL Port Low
ctrl_port_ddr = 0xff; //Make CONTROL port outputs
ctrl_port |= (1<<lcdrst);
ctrl_port |= (1<<lcdcs1); //Enable the CS1 of the display
ctrl_port |= (1<<lcdcs2); //Enable the CS2 of the display
ctrl_port &= ~(1<<lcdrs); //Clear RS \_
ctrl_port &= ~(1<<lcdrw); //Clear RW / Command mode
_delay_us(42);
data_port = 0b11000000; //Display start line = 0 (0-63)
eStrobe();
_delay_us(42);
data_port = 0b01000000; //Set address = 0 (0-63)
eStrobe();
_delay_us(42);
data_port = 0b10111000; //Set page = 0 (0-7)
eStrobe();
_delay_us(42);
data_port = 0b00111111; //Display ON
eStrobe();
ctrl_port &= ~(1<<lcdcs1); //Disable the CS1 of display
ctrl_port &= ~(1<<lcdcs2); //Disable the CS2 of display
createRaster(); // raster...
showTheWave(); // LCD.
}
====================================================================
-
Návštěvník
Kód: Vybrat vše
lcdrs ALIAS Portb.6
lcdrw ALIAS Portb.7
lcde ALIAS Portb.2
lcdcs1 ALIAS Portb.5
lcdcs2 ALIAS Portb.4
lcdrst ALIAS Portb.3
ctrl_port ALIAS Portb
data_port ALIAS Portd
data_port_pins ALIAS Pind
glcdInit:
data_port = 0
config data_port = output
ctrl_port = 0
config ctrl_port = output
lcdrs = 1
lcdcs1 = 1
lcdcs2 = 1
lcdrs = 0
lcdrw = 0
waitus 42
data_port = &B11000000
gosub eStrobe
waitus 42
data_port = &B10111000
gosub eStrobe
atd.........
return
-
nepřihlášen
Pro zobrazování pixelů existuje příkaz PSET X,Y,Value
Jen pro inspiraci: jednoduchý osciloskop v Bascomu
http://www.avr64.com/English/Projects/Index.htm
ten odkaz je zajimavy, ale jen bych dodal ze s verzi pana seratidise to nelze srovnat. mam to odzkousene.