Nije, hvala puno.
Mikrokontroler + LCD-molim pomoc!
Zaključano
Zakačeno
Evo nešto na brzinu ali vidi se kako i šta se radi. Ukoliko koristiš razvojni sistem koji je Siniša uradio bitno je da ti svi dip prekidači budu u položaju OFF. LCD je na tom razvojnom sistemu povezan na "gornja" četiri pina PORTB RB4-RB7 dok su RS i E linije vezane na RA1 i RA3. RW linija je na GND. Sve ove postavke definisane su u hd447780.h. Ukoliko je tvoj LCD povezan drugačije moraš da koriguješ taj fajl. Funkcije koje se pozivaju su Microchip-ove i nešto se razlikuju (starija su varijanta ali nema suštinske razlike) od onih koje si i sam našao u XC folderu gde se nalaze sors fajlovi. Kod mene je to:
c:\Program Files\Microchip\xc8\v1.12\sources\pic18\plib\XLCD
Ja sam ih samo skupio u jedan fajl hd447780.c
c:\Program Files\Microchip\xc8\v1.12\sources\pic18\plib\XLCD
Ja sam ih samo skupio u jedan fajl hd447780.c
Potpis
gorankg
XLCDClear();
XLCDGoto(0,6);
XLCDPutROMString("i = ");
while(1)
{
for(i=0;i<10;i++)
{
XLCDGoto(0,10);
XLCDPut(i + 0x30); // na LCD se šalje ascii karakter
_delay(1000000); // Pauza od približno jedne sekunde
}
}
Ako moze objasnjenje kako ovo radi. Najvise sam radio sa C#, pa sam spremajuci zenu za ispit iz C a prosao cist C ali ovo mi je skroz ludo :)
Pitanje 1. Kakve veze ima XLCDPutROMString("i = "); sa ispisom na ekranu i inkrementom brojeva koji se posle 9 resetuje na 0.
Pitanje 2. Za 0x30 sam nasao da je broj dekadni broj 48 a kao karakter 0 i ne mogu da skapiram kakve to veze ima sa ovim sto se desava na displeju.
Code:
XLCDPut(i + 0x30); // na LCD se šalje ascii karakter
XLCDPut(i + 0x30); // na LCD se šalje ascii karakter
Ako je 0x30 "0", kao što si i sam zaključio, upotrebi logiku da ti 'kaže' šta je
Code:
i + 0x30
i + 0x30
ako se i menja u rasponu od 0 do 9
za XLCD... pogledaj XLCD biblioteku, biće ti jasnije šta ovo malecko programče radi, a to što tadi je ispisivanje cifara 0 do 9
evo i "izgleda" 2x16 LCD-a:









Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
1. XLCDPutROMString("i = "); će na LCD ispisati ovo što je u zagradi, odnosno i =
Time si pripremio da taj statični deo teksta ispišeš ispred for petlje jer nema potrebe da ga u for ponavljaš.
2. U for petlji ćeš samo posle i = dodavati u svakom prolazu ispis za trenutnu vrednost promenljive i. Da bi pisao karaktere po Hitachi HD44780 baziranom LCD, kakvih je inače najviše, potrebno je da mu pošalješ ascii kod karaktera koji želiš da ispišeš. ASCII tabelu ćeš naći na netu ukoliko je nemaš. Videćeš da cifre 0-9 imaju ascii kodove od 0x30 do 0x39. Dakle na trenutnu vrednost promenljive i moraš dodati 0x30 (decimalno 48) kako bi takav podatak prosledio funkciji XLCDPut().
U prvom prolazu kroz for ćeš na displeju imati: i = 0
U drugom: i = 1
itd..
Dva dokumenta koja opisuju rad sa HD44780 baziranim LCD možeš skinuti sa:
http://lcd-linux.sourceforge.net/pdfdocs/lcd1.pdf
http://lcd-linux.sourceforge.net/pdfdocs/lcd2.pdf
Time si pripremio da taj statični deo teksta ispišeš ispred for petlje jer nema potrebe da ga u for ponavljaš.
2. U for petlji ćeš samo posle i = dodavati u svakom prolazu ispis za trenutnu vrednost promenljive i. Da bi pisao karaktere po Hitachi HD44780 baziranom LCD, kakvih je inače najviše, potrebno je da mu pošalješ ascii kod karaktera koji želiš da ispišeš. ASCII tabelu ćeš naći na netu ukoliko je nemaš. Videćeš da cifre 0-9 imaju ascii kodove od 0x30 do 0x39. Dakle na trenutnu vrednost promenljive i moraš dodati 0x30 (decimalno 48) kako bi takav podatak prosledio funkciji XLCDPut().
U prvom prolazu kroz for ćeš na displeju imati: i = 0
U drugom: i = 1
itd..
Dva dokumenta koja opisuju rad sa HD44780 baziranim LCD možeš skinuti sa:
http://lcd-linux.sourceforge.net/pdfdocs/lcd1.pdf
http://lcd-linux.sourceforge.net/pdfdocs/lcd2.pdf
Potpis
gorankg
Znaci postavljamo statican tekst i dole petlja trci po ascii tabeli 10 mesta ispisujuci karaktere od 0x030 do 0x39.
Sve jasno, thanks
Sve jasno, thanks
Drugari, kako treba da se definise lcd na Sinisinom razvojnom sistemu ako radimo preko MikroC-a?
Imaš ovde: http://www.elitesecurity.org/p3212250 šemu razvojnog, odatle se vidi kako je povezan LCD i shodno tome izvršiš postavljanje parametara za MikroC.
Kako se radi pridodeljivanje pinova, zavisi od verzije MikroC-a koju koristiš, piše inače sve u Help-u
Za MikroC PRO V5.8.0:
Kako se radi pridodeljivanje pinova, zavisi od verzije MikroC-a koju koristiš, piše inače sve u Help-u
Za MikroC PRO V5.8.0:
Code:
sbit LCD_RS at RA1_bit;
sbit LCD_EN at RA3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_RS_Direction at TRISA1_bit;
sbit LCD_EN_Direction at TRISA3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_RS at RA1_bit;
sbit LCD_EN at RA3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_RS_Direction at TRISA1_bit;
sbit LCD_EN_Direction at TRISA3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Bukvalno ovog trenutka sam nasao shemu i po semi nasao Sinisine konektore :)
Hvala na brzoj pomoci :)
Hvala na brzoj pomoci :)
Ne znam u cemu je ali ne dobijam nista na ekranu. Samo kursor jednom blinkne i to je sve :(
sbit LCD_RS at RA1_bit;
sbit LCD_EN at RA3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_RS_Direction at TRISA1_bit;
sbit LCD_EN_Direction at TRISA3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
// LCD konekcija
void main()
{
Lcd_Init();
Lcd_Out(1,1,"HELLO!");
}
sbit LCD_RS at RA1_bit;
sbit LCD_EN at RA3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_RS_Direction at TRISA1_bit;
sbit LCD_EN_Direction at TRISA3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
// LCD konekcija
void main()
{
Lcd_Init();
Lcd_Out(1,1,"HELLO!");
}
Jesi probao da podesiš kontrast?
Pozdrav.
Sinisha
Pozdrav.
Sinisha
Jesam to je ok. Radi primer u xc8 koji je postavljen pre par postova od @gorana_68.
Ali ovaj nece da radi a nemam ideju u cemu je problem.
sbit LCD_RS at RA1_bit;
sbit LCD_EN at RA3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_RS_Direction at TRISA1_bit;
sbit LCD_EN_Direction at TRISA3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
// LCD konekcija
void main()
{
Lcd_Init();
Lcd_Out(1,1,"HELLO!");
}
U device mi stoji P16F1827 i MCU je 4.000000 MHz.
Ali ovaj nece da radi a nemam ideju u cemu je problem.
sbit LCD_RS at RA1_bit;
sbit LCD_EN at RA3_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_RS_Direction at TRISA1_bit;
sbit LCD_EN_Direction at TRISA3_bit;
sbit LCD_D7_Direction at TRISB7_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
// LCD konekcija
void main()
{
Lcd_Init();
Lcd_Out(1,1,"HELLO!");
}
U device mi stoji P16F1827 i MCU je 4.000000 MHz.
Da ti nije kojim slučajem uključen PLL?
To ume da pokarabasa tajminge, a MikroE biblioteke ne posmatraju Busy displeja.
To ume da pokarabasa tajminge, a MikroE biblioteke ne posmatraju Busy displeja.
Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
izmenjeno 1 put, poslednji put MirkoDamnjanovic 31.01.2013. u 10:42
Izmene poruke
- MirkoDamnjanovic31.01.2013. u 10:42zapis iz teksta poruke
Gde to da pogledam?

Ovo se nesto igram za Proteus pa ne stoji P16F1827 na 4MHz...

Ovo se nesto igram za Proteus pa ne stoji P16F1827 na 4MHz...
Fenomenalno, koristiš 16F1827 a daješ skrinšot podešavanja za 16F877
Code:
Config1
FOSC_LP,_ ; LP Oscillator, Low-power crystal connected between OSC1 and OSC2 pins
FOSC_XT,_ ; XT Oscillator, Crystal/resonator connected between OSC1 and OSC2 pins
FOSC_HS,_ ; HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins
FOSC_EXTRC,_ ; EXTRC oscillator: External RC circuit connected to CLKIN pin
FOSC_INTOSC,_ ; INTOSC oscillator: I/O function on CLKIN pin
FOSC_ECL,_ ; ECL, External Clock, Low Power Mode (0-0.5 MHz): device clock supplied to CLKIN pin
FOSC_ECM,_ ; ECM, External Clock, Medium Power Mode (0.5-4 MHz): device clock supplied to CLKIN pin
FOSC_ECH,_ ; ECH, External Clock, High Power Mode (4-32 MHz): device clock supplied to CLKIN pin
WDTE_OFF,_ ; WDT disabled
' WDTE_SWDTEN,_ ; WDT controlled by the SWDTEN bit in the WDTCON register
' WDTE_NSLEEP,_ ; WDT enabled while running and disabled in Sleep
' WDTE_ON,_ ; WDT enabled
PWRTE_ON,_ ; PWRT enabled
' PWRTE_OFF,_ ; PWRT disabled
' MCLRE_OFF,_ ; MCLR/VPP pin function is digital input
MCLRE_ON,_ ; MCLR/VPP pin function is MCLR
' CP_ON,_ ; Program memory code protection is enabled
CP_OFF,_ ; Program memory code protection is disabled
' CPD_ON,_ ; Data memory code protection is enabled
CPD_OFF,_ ; Data memory code protection is disabled
BOREN_OFF,_ ; Brown-out Reset disabled
' BOREN_SBODEN,_ ; Brown-out Reset controlled by the SBOREN bit in the BORCON register
' BOREN_NSLEEP,_ ; Brown-out Reset enabled while running and disabled in Sleep
' BOREN_ON,_ ; Brown-out Reset enabled
' CLKOUTEN_ON,_ ; CLKOUT function is enabled on the CLKOUT pin
CLKOUTEN_OFF,_ ; CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
IESO_OFF,_ ; Internal/External Switchover mode is disabled
' IESO_ON,_ ; Internal/External Switchover mode is enabled
FCMEN_OFF ; Fail-Safe Clock Monitor is disabled
' FCMEN_ON ; Fail-Safe Clock Monitor is enabled
Config2
' WRT_ALL,_ ; 000h to FFFh write protected, no addresses may be modified by EECON control
' WRT_HALF,_ ; 000h to 7FFh write protected, 800h to FFFh may be modified by EECON control
' WRT_BOOT,_ ; 000h to 1FFh write protected, 200h to FFFh may be modified by EECON control
WRT_OFF,_ ; Write protection off
PLLEN_OFF,_ ; 4x PLL disabled <=====
' PLLEN_ON,_ ; 4x PLL enabled <=====
STVREN_OFF,_ ; Stack Overflow or Underflow will not cause a Reset
' STVREN_ON,_ ; Stack Overflow or Underflow will cause a Reset
BORV_25,_ ; Brown-out Reset Voltage (VBOR) set to 2.5 V
' BORV_19,_ ; Brown-out Reset Voltage (VBOR) set to 1.9 V
LVP_OFF ; High-voltage on MCLR/VPP must be used for programming
' LVP_ON ; Low-voltage programming enabled
Config1
FOSC_LP,_ ; LP Oscillator, Low-power crystal connected between OSC1 and OSC2 pins
FOSC_XT,_ ; XT Oscillator, Crystal/resonator connected between OSC1 and OSC2 pins
FOSC_HS,_ ; HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins
FOSC_EXTRC,_ ; EXTRC oscillator: External RC circuit connected to CLKIN pin
FOSC_INTOSC,_ ; INTOSC oscillator: I/O function on CLKIN pin
FOSC_ECL,_ ; ECL, External Clock, Low Power Mode (0-0.5 MHz): device clock supplied to CLKIN pin
FOSC_ECM,_ ; ECM, External Clock, Medium Power Mode (0.5-4 MHz): device clock supplied to CLKIN pin
FOSC_ECH,_ ; ECH, External Clock, High Power Mode (4-32 MHz): device clock supplied to CLKIN pin
WDTE_OFF,_ ; WDT disabled
' WDTE_SWDTEN,_ ; WDT controlled by the SWDTEN bit in the WDTCON register
' WDTE_NSLEEP,_ ; WDT enabled while running and disabled in Sleep
' WDTE_ON,_ ; WDT enabled
PWRTE_ON,_ ; PWRT enabled
' PWRTE_OFF,_ ; PWRT disabled
' MCLRE_OFF,_ ; MCLR/VPP pin function is digital input
MCLRE_ON,_ ; MCLR/VPP pin function is MCLR
' CP_ON,_ ; Program memory code protection is enabled
CP_OFF,_ ; Program memory code protection is disabled
' CPD_ON,_ ; Data memory code protection is enabled
CPD_OFF,_ ; Data memory code protection is disabled
BOREN_OFF,_ ; Brown-out Reset disabled
' BOREN_SBODEN,_ ; Brown-out Reset controlled by the SBOREN bit in the BORCON register
' BOREN_NSLEEP,_ ; Brown-out Reset enabled while running and disabled in Sleep
' BOREN_ON,_ ; Brown-out Reset enabled
' CLKOUTEN_ON,_ ; CLKOUT function is enabled on the CLKOUT pin
CLKOUTEN_OFF,_ ; CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
IESO_OFF,_ ; Internal/External Switchover mode is disabled
' IESO_ON,_ ; Internal/External Switchover mode is enabled
FCMEN_OFF ; Fail-Safe Clock Monitor is disabled
' FCMEN_ON ; Fail-Safe Clock Monitor is enabled
Config2
' WRT_ALL,_ ; 000h to FFFh write protected, no addresses may be modified by EECON control
' WRT_HALF,_ ; 000h to 7FFh write protected, 800h to FFFh may be modified by EECON control
' WRT_BOOT,_ ; 000h to 1FFh write protected, 200h to FFFh may be modified by EECON control
WRT_OFF,_ ; Write protection off
PLLEN_OFF,_ ; 4x PLL disabled <=====
' PLLEN_ON,_ ; 4x PLL enabled <=====
STVREN_OFF,_ ; Stack Overflow or Underflow will not cause a Reset
' STVREN_ON,_ ; Stack Overflow or Underflow will cause a Reset
BORV_25,_ ; Brown-out Reset Voltage (VBOR) set to 2.5 V
' BORV_19,_ ; Brown-out Reset Voltage (VBOR) set to 1.9 V
LVP_OFF ; High-voltage on MCLR/VPP must be used for programming
' LVP_ON ; Low-voltage programming enabled
Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Izvinjavam se jos jednom za pogresan screenshot.
Za sta se koristi ovaj mikroProg Suite?
Sta da radim sa ovim kodom config-a?
Za sta se koristi ovaj mikroProg Suite?
Sta da radim sa ovim kodom config-a?
Citat:
Za sta se koristi ovaj mikroProg Suite?
Za "prženje" mikrokontrolera MikroE programatorima/razvojnim sistemima.
Citat:
Sta da radim sa ovim kodom config-a?
To su ti svi konfiguracioni bit-ovi koje ima 16F1827
Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
* Ako sam te skapirao mikroProg Suite ima istu svrhu kao i PicKit2 Programmer
* Pokusavao sam u Edit Project da podesavam i nista nisam uspeo.
* Pokusavao sam u Edit Project da podesavam i nista nisam uspeo.
Koristim 5.6.1. Vizuelno je isti, ima sve iste opcije...
Elem gomila konfiguracionih opcija je drugacija od ovoga sto si mi poslao. Sutra cu da podesim identicno pa da probam na razvojnom sistemu.
Hvala na pomoci/trudu
Pozdrav
Elem gomila konfiguracionih opcija je drugacija od ovoga sto si mi poslao. Sutra cu da podesim identicno pa da probam na razvojnom sistemu.
Hvala na pomoci/trudu
Pozdrav





