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

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.

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.

http://www.uploadarchief.net/files/download/p6250105.jpg
het schema

http://www.uploadarchief.net/files/download/p6250121.jpg
lcd en pot voor de helderheid van letters/cijfers

http://www.uploadarchief.net/files/download/p6250125.jpg
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.

http://www.uploadarchief.net/files/download/p6250127.jpg
het lcd in werking maar geen tekst of iets en dat blijft ook zo.
hij doet niks |:( ;( :'-( :(.

help help help :(

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.

erg bedankt duffel hij werkt nu bedankt.
nu kan ik weer veder.

bedankt.:) ;) :P :9 :-7

Duffel,
Ik had hetzelfde probleem met LCD van Conrad 181655.
Heb de 10k nu 1k5 gemaakt en het werkt perfect.