#include <16f877.h>
#use delay(clock=20000000)
void LcdWrite(char Rs, char Rw, char Data)
{
if( Rs==0 ) output_low(PIN_C5); else output_high(PIN_C5);
if( Rw==0) output_low(Pin_C6); else output_high(PIN_C6);
output_d(Data);
delay_us(10);
output_high(PIN_C4); //setten E
delay_us(40);
output_low(PIN_C4); //resetten E
delay_us(500);
}
main()
{
//init
delay_ms(50);
LcdWrite(0,0,0x30);
delay_ms(10);
LcdWrite(0,0,0x30);
LcdWrite(0,0,0x30);
//function set
//8bits, 1line, 5*7dots
LcdWrite(0,0,0x30);
//display on/of control
//display on, cursor on, blink on
LcdWrite(0,0,0x0F);
//clear display
LcdWrite(0,0,0x01);
//entry mode set
LcdWrite(0,0,0x06);
//oneindige lus
while(1)
{
//cursor moven naar 1e plaats display
LcdWrite(0,0,0x80|0x0);
//karakter '0' op scherm plaatsen
LcdWrite(1,0,'0');
//cursor moven naar 2de plaats display
LcdWrite(0,0,0x80|0x1);
//wachttijd, nie belangrijk
//gebruik ik om te cursor voorbij
//te zien flitsen zodat ik weet dat
// beiden(lcd+µp) blijven werken
delay_ms(100);
//vanaf hier loopt het fout
//cursor moven naar 9de plaats display
LcdWrite(0,0,0x80|0x40);
//karakter '1' op scherm plaatsen
LcdWrite(1,0,'1');
}
}
op de rechterhelft van mijn display kan ik niks laten verschijnen, de linkerhelft werkt prima.
type lcd is een PC1601L(RU-LWB-B)
lcd controller HD44780U
Ik weet dat de linkerhelft adres 0x0 t.e.m. 0x07 heeft
en de rechterhelft 0x40 t.e.m. 0x47
Wat het ook niet kan zijn, verkeerde aansluitingen, kortsluiting in adreslijnen,.....
Heb een tellertje gemaakt met databus lijnen en rs, r/w signaal en erop gemeten met de scoop en alles werkte prima.
Weet er iemand waar de fout zit?
Of iemand die ook al zoiets voorgehad heeft, hoe je het probleem hebt kunnen oplossen?
sille
Electronics is a fine hobby ;-) http://www.electro-online.be
Op 31 maart 2003 21:34:32 schreef DaVidL:
Ik weet dat de linkerhelft adres 0x0 t.e.m. 0x07 heeft
en de rechterhelft 0x40 t.e.m. 0x47
ben je dat zeker? ik weet het niet van een 16*1, maar bij een 16*2 is 0x00 tot 0x15 de bovenkant, en 0x40 tot 0x55 de bovenkant.Misschien gaat hij bij jou ook van 0x00 tot 0x15. dan is het normaal dat je de tekst niet ziet.
heb je al eens geprobeerd op die manier?
ff offtopic, maar hoe programeer jij je pic? heb je daar een programmer voor gebouwd? heb je daar een schema van?
[Bericht gewijzigd door sille op ]
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 31 maart 2003 21:34:32 schreef DaVidL:
Ik weet dat de linkerhelft adres 0x0 t.e.m. 0x07 heeft
en de rechterhelft 0x40 t.e.m. 0x47
Op sommige displays is dat zo maar het kan soms bij 1x16 lcd's ook zijn:
00 t/m 15
Zie hier.