är ganska ny på det här med elektronik och det här är min första programmering av en PIC med mikroC. har försökt koppla in en display men den är bara helt svart. är lite osäker på hur jag ska koppla ihop allt. verkar vara svårt att hitta exempel som kombinerar 16F628A, PLED och mikroC.
så...finns det nån vänlig själ här som kan peka mig i rätt riktning? gärna i form av ett schema där det framgår hur kopplingen skall göras samt hur jag initierar/slår på den från mikroC. (har kikat på de exempel som följer med men eftersom den bara är helt svart så är jag osäker på syntaxen.. )
Var inne i MikroC tryck "F1" för att öppna Help filen välj fliken "mikroC Libraries" klicka på "LCD (4-bit interface)" enklast att koppla upp. Rulla längst ner på den sidan och där är förklarat hur du skall koppla upp displayn och PICen samt att där är ett program exempel som man bara kan kopiera!
Om du kvar kabeln till datorn så kan du ju plugga in den dit igen och testa.
Annars har jag för mig att PLED-displayer (precis som OLED) är helt svarta tills man skickar ut tecken till den.
efter lite kopplande och mest sinnesprogrammerande så har jag fått liv i den. fast.... jag har bara en massa svarta rutor. skulle förstå om det va i hela displayen men det är bara på den övre raden... känns lite märkligt eller?
Jag har varit med om det på LCD-displayer, men inte PLED eller OLED.
Möjligen så kan det bero på timing-problem, dvs för korta pauser mellan de "kommandon" som du skickar till displayen. Prova att öka alla tider. Det kan även bero på någon miss i koden. Lägg gärna upp koden så kan vi kika.
jag va inte medveten om att jag behövde köra delayer mellan kommandon som jag skickade till displayen. (fanns ju inga såna i de exempel som kommer med mikroC..) koden har jag ju ändrat 100 gånger men nu ser den ut så här:
void updateLCD(){
char *text = "fu**in fruitcake";
Lcd8_Config(&PORTA,&PORTB,4,5,3,0,1,2,3,4,5,6,7);
Delay_8ms();
Lcd8_Out(1, 1, text); // Print text
}
/* main entry */
void main(){
CMCON |= 0x07; // turn off comparators
TRISA = 0xc7; // RB3,4 och 5 är ut, resten in
TRISB = 0; // Alla B är ut
updateLCD();
}
CMON-raden var visst en kvarleva från några tester...läste några trådar på mikroelektronikas forum och det hade tydligen hjälpt nån stackare så man e ju tvungen att testa.. men som svar på din fråga: ingen aning..
En liten detalj bara: TRISA = 0xc7; // RB3,4 och 5 är ut, resten in
Det borde nog ha stått // RA3,4..osv.
"jag va inte medveten om att jag behövde köra delayer mellan kommandon som jag skickade till displayen."
Jag visste inte att du använde de inbyggda LCD-rutinerna. När du använder dem så behöver du inte lägga till någon extra delay. LCD-rutinerna ordnar allt sådant. Tyvärr blir det en aning svårare att felsöka då eftersom man inte ser vad som händer, iallafall i inte i C-koden.
Lite sånadär standardgrejjer:
Du är 100% säker på att allt är rätt kopplat?
Hur är det med klockhastigheten på den PIC-kretsen? Allt är rätt inställt både i "Device Flags" och vid "Clock" ?
Du skulle kunna sätta lysdioder på utgångarna som PLED'en använder för att se om du får någon signal där.