Zamek szyfrowy LCD na AVR. Pilne!


Witam. Dostałem ostatnio takie zadanie na zaliczenie w szkole i kompletnie nie wiem jak sie do niego zabrać.

Program ma być napisany w Bascomie na jakimś (obojętnie jakim) AVR'e, 8 diod podpięte do któregokolwiek portu i przyciski tak samo, to samo z wyswietlaczem (obojetnie gdzie i obojętnie jaki, najlepej jakiś popularny np. 2x16)

oto zadanie:

"Wyświetlacz LED pierwotnie wskazuje cztery zera. Nalezy stworzyć "zamek" cyforwy, który
zostanie otwarty po wprowadzeniu na wyświetlacz LED cyfr 1 2 3 4. Oznaka otwarcia zamka
jest wygaszenie wszystkich diod na 10 sekund po tym czasie na wyświetlaczu znowu pojawią
się cztery zera. Mikrokontroler posiada dwa przyciski S1 i S2. Przyciskiem S1 wskauzjemy
kolumnę do zmiany cyfry, natomiast S2 zmienia nam cyfrę na wskazanej kolumnie. Po
wprowadzeniu cyfr w każdej kolumnie przycisk S1 sprawdza kod i otwiera zamek."

Pomoże ktoś? bardzo proszę! chociaż jakis początek, cokolwiek ;(




Portret użytkownika mirley

Re: Wyswietlacz

A gdzie tu masz wyświetlacz LCD.... przeciez wyraźnie z opisu wynika że ma to byc czterocyfrowy wyświetlacz LED + obsługa 2 przycisków i tyle. Wyświetlacze trzeba podłączyć do procka tak aby można było je multipleksować. Potrzeba wtedy 12 pinów do sterowania 4 cyfr. Przyciski na osobnych 2 pinach. Zapoznaj się z moimi projektami termometrów. Tam masz obsługę wyświetlacza. Możesz na początek zacząć od:

'****************************
           'Konfiguracja
'****************************
$regfile = "attiny2313.dat"
$crystal = 8000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111000 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Przerwanie0
 
Enable Interrupts
'****************************
      'Zmienne
'****************************
Dim Dziel(2) As Byte
Dim W(4) As Byte
Dim Mux As Byte
Dim F1s As Bit , F4ms As Bit , F100ms As Bit
 
'****************************
      'Wartosci Poczatkowe
'****************************
 
'****************************
      'Petla glowna
'****************************
Do
 
If F4ms = 1 Then
  Reset F4ms                                                'co 4ms
  Gosub Wyswietl
End If
 
If F100ms = 1 Then
  Reset F100ms                                              'co 100ms
 
  'np obsługa klawiatury 
   'logika zamka szyfrowego
 
End If
 
 
Loop
End
'****************************
      'Przerwanie timer0
'****************************
Przerwanie0:
Timer0 = 131
   Set F4ms
   Incr Dziel(1)
   If Dziel(1) = 25 Then
     Dziel(1) = 0
     Set F100ms
     Incr Dziel(2)
     If Dziel(2) = 10 Then
       Dziel(2) = 0
       Set F1s
     End If
   End If
Return
 
'****************************
      'wyswietlanie
'****************************
Wyswietl:
  Incr Mux
  If Mux = 4 Then Mux = 0
 
  For I = 1 To 4
    W(i) = Lookup(ww , Tabela)
  Next I
 
  Select Case Mux
    Case 0:
      Set Portd.3
      Portb = W(4)
      Reset Portd.6
 
    Case 1:
     Set Portd.6
     Portb = W(3) And &B11011111
     Reset Portd.5
 
    Case 2:
     Set Portd.5
     Portb = W(2)
     Reset Portd.4
 
    Case 3:
     Set Portd.4
     Portb = W(1)
     Reset Portd.3
  End Select
 
Return
 
'*******************************************************************************
                           'Tabele do wyswietlania na wyswietlaczu
'*******************************************************************************
Tabela:
    Data 40 , 235 , 50 , 162 , 225 , 164 , 36 , 234 , 32 , 160
'znak:    0     1     2     3     4     5     6     7     8     9

Połączenia wyświetlacza dokładnie tak samo jak w projekcie http://mirley.firlej.org/minitermometr_uniwersalny z tym że przyciski będą na Pd.0 i Pd.1

Najpierw trzeba to uruchomić, potem reszta

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

w opisie autora postu

w opisie autora postu straciełech się.
Opcjonalnie bym proponowoł zastosowanie 4543 (dekoder BCD na 7segment- jakieś 90 groszy) do wyświetlacza LED, mniejsze odciążenie dla uC.
Ile masz czasu na realizację projektu. Z jakiego przedmiotu to masz?

Portret użytkownika mirley

Re: Dekoder

Dekoder może być ale osobiście uważam że nie ma sensu stosować dodatkowych układów jak jest miejsce w programie na realizację logiki wewnątrz

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika tictac1906

Re

Ale ja nie musze robić całego projektu (płytki itd..) tylko za zadanie mam napisać program o którym mowa na początku tematu i do jutra (piątek 11.01.12) go wysłać. Wystarczy że wyśle ten program który napisałes mirley? czy jest jeszcze inie kompletny? Prosze o pomoc bo sam nie dam rady do jutra ;/

-

uC

Portret użytkownika mirley

Re: Program

jasne że trzeba dopisać. To masz tylko szkielet z obsługą wyświetlacza.... Nie potrafisz poddać analizie tego programu? Trzeba napisać całą logikę zamka i obsługę przycisków

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika tictac1906

Błagam cie człowieku napisz

Błagam cie człowieku napisz mi to chociaż tak mniej więcej bo jak tego nie wyśle do jutra wieczorem to po mnie i nie zaolicze tego przedmiotu.. PROSZE!

-

uC

Portret użytkownika mirley

RE: Program

Powinno teraz teoretycznie działać ale bez sprawdzenia w praktyce nigdy nic nie wiadomo

'****************************
           'Konfiguracja
'****************************
$regfile = "attiny2313.dat"
$crystal = 8000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111000 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Przerwanie0
 
Enable Interrupts
'****************************
      'Zmienne
'****************************
Dim Dziel(2) As Byte
Dim W(4) As Byte
Dim Mux As Byte
Dim F1s As Bit , F4ms As Bit , F100ms As Bit
Dim W_ena as bit 
Dim Dig as byte
Dim Licz as byte
'****************************
      'Wartosci Poczatkowe
'****************************
W_ena = 1 
Dig = 1
'****************************
      'Petla glowna
'****************************
Do
 
If F4ms = 1 Then
  Reset F4ms                                                'co 4ms
  If W_ena = 1 Then Gosub Wyswietl else Portb = 255
End If
 
If F100ms = 1 Then
  Reset F100ms                                              'co 100ms
 
  if W_ena = 0 then 'licz czas po otwarciu
    incr Licz
    if Licz = 100 then
      W(1) = 0
      W(2) = 0
      W(3) = 0
      W(4) = 0
      W_ena = 1
      Licz = 0  
    end if
 
  else
 
    if Pind.0 = 0 then
      incr Dig
      If Dig = 5 Then
        Dig = 1
        If W(1) = 1 and W(2) = 2 and W(3) = 3 and W(4) = 4 then W_ena = 0
      End If
    end if
 
    if Pind.1 = 0 then
      incr W(Dig)
      if W(Dig) = 10 then W(Dig) = 0 
    end if
 
  end if
 
End If
 
 
Loop
End
'****************************
      'Przerwanie timer0
'****************************
Przerwanie0:
Timer0 = 131
   Set F4ms
   Incr Dziel(1)
   If Dziel(1) = 25 Then
     Dziel(1) = 0
     Set F100ms
     Incr Dziel(2)
     If Dziel(2) = 10 Then
       Dziel(2) = 0
       Set F1s
     End If
   End If
Return
 
'****************************
      'wyswietlanie
'****************************
Wyswietl:
  Incr Mux
  If Mux = 4 Then Mux = 0
 
  For I = 1 To 4
    W(i) = Lookup(ww , Tabela)
  Next I
 
  Select Case Mux
    Case 0:
      Set Portd.3
      Portb = W(1)
      Reset Portd.6
 
    Case 1:
     Set Portd.6
     Portb = W(2)
     Reset Portd.5
 
    Case 2:
     Set Portd.5
     Portb = W(3)
     Reset Portd.4
 
    Case 3:
     Set Portd.4
     Portb = W(4)
     Reset Portd.3
  End Select
 
Return
 
'*******************************************************************************
                           'Tabele do wyswietlania na wyswietlaczu
'*******************************************************************************
Tabela:
    Data 40 , 235 , 50 , 162 , 225 , 164 , 36 , 234 , 32 , 160
'znak:    0     1     2     3     4     5     6     7     8     9

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.