hallo,
ik heb het boek pic microcontrollers van bert van dam.
ik heb het didgitale klokje uit hoofdstuk 12.4 gemaakt.
het programa is geschreven in jaledit.
-- JAL 2.0.4
include 16f877_bert
include lcd_44780
-- define variables
var byte second = 0
var byte minute = 0
var byte hour = 0
var byte counter = 0
var byte selected= 0
-- define switches
var bit select is pin_d2
var bit up is pin_d1
var bit down is pin_d0
-- define texts
var byte TimeText[4]={"T","i","m","e"}
var byte HourText[12]={"A","d","j","u","s","t"," ","h","o","u","r","s"}
var byte MinuteText[14]={"A","d","j","u","s","t"," ","m","i","n","u","t","e","s"}
-- set text line 0
counter = 0
for 4 loop
LCD_char_line_pos(TimeText[counter],0,counter)
counter = counter + 1
end loop
-- switch the cursor off
LCD_cursor = off
forever loop
if selected == 0 then
-- only run if not adjusting time
delay_1s(1)
second = second + 1
if second == 60 then
second = 0
minute = minute + 1
if minute == 60 then
minute = 0
hour = hour +1
if hour == 24 then
hour = 0
end if
end if
end if
end if
-- display time
LCD_clock_line_pos(hour, 0,6)
LCD_clock_line_pos(minute, 0,9)
LCD_clock_line_pos(second, 0,12)
LCD_char_line_pos(":",0,8)
LCD_char_line_pos(":",0,11)
-- function select
if select then
while select loop
delay_10ms(1)
end loop
selected = selected + 1
end if
-- adjusting hours
if selected == 1 then
counter = 0
for 12 loop
LCD_char_line_pos(HourText[counter],1,counter)
counter = counter + 1
end loop
end if
if up & selected == 1 then
while up loop
delay_10ms(1)
end loop
hour = hour + 1
if hour > 23 then hour = 0 end if
end if
if down & selected == 1 then
while down loop
delay_10ms(1)
end loop
if hour == 0 then hour = 24 end if
hour = hour - 1
end if
-- adjusting minutes
if selected == 2 then
counter = 0
for 14 loop
LCD_char_line_pos(MinuteText[counter],1,counter)
counter = counter + 1
end loop
end if
if up & selected == 2 then
while up loop
delay_10ms(1)
end loop
minute = minute + 1
if minute > 60 then minute = 0 end if
end if
if down & selected == 2 then
while down loop
delay_10ms(1)
end loop
if minute == 0 then minute = 60 end if
minute = minute - 1
end if
-- done adjusting
if selected == 3 then
counter = 0
for 14 loop
LCD_char_line_pos(" ",1,counter)
counter = counter + 1
end loop
selected = 0
end if
end loop
het programma werkt en de pic ook.
het lcd doe het wel maar geeft heel licht allemaal zwarte blokjes weer.
het schema klopt
wie kan mij helpen
Joeri de Man
LED there be light
Die zwarte blokjes hebben met het contrast van je LCD te maken. Speel een beetje met het contrast, bij mij is dat een potentiometer, in ieder geval een weerstand.
het zijn allen zwarte blokjes maar er moet gewoon een tijd komen te staan maar die staat er niet en het contrast is heel licht dus je ziet niet of je het regelt.
Echoflex
1
Een rij zwarte blokjes betekent dat de initialisatie van het LCD niet gelukt is.
Het kan zijn dat het LCD niet goed aangesloten is..
ik heb hier een paar plaatjes er van.

het schema

lcd en pot voor de helderheid van letters/cijfers

pic 16f877a de twee groen en de twee gele naast elkaar zijn voor de data van het lcd.
de krokoklem zijn voor de switche's.
en de groene krokoklem voor de achtergrondverlichting van het lcd-schermpje.

het lcd in werking maar geen tekst of iets en dat blijft ook zo.
hij doet niks
.
help help help 
duffel
Mijn vrouwtje houdt ook van kleine dingetjes: www.minifrutsels.nl
Ik ga er van uit dat de aansluitingen goed zijn.
Ik gebruik zelf de schermpjes van Dick Best. Bij deze schermpjes werkt de aansluiting zoals in het boek van Bert niet.
De contrast pen moet vrijwel aan de massa liggen. Net even gemeten en heb er 200 mV op staan. gewoon de contrast pin aan de massa hangen werkt ook, echter ik vermoed dat ik daar al een schermpje mee om zeep geholpen heb na een aantal maande gebruik (om te testen kan het wel). Haal de 10K weerstand eens weg zodat je pot de hele 0 tot 5 Volt bereik heeft en probeer nog eens.
Duffel,
Ik had hetzelfde probleem met LCD van Conrad 181655.
Heb de 10k nu 1k5 gemaakt en het werkt perfect.
