BASCOM


Demonstracja wyświetlania cyfr za pomocą wyświetlaczy Led.



Układ pokazuje, jak można przygotować procesor Atmega8 do współpracy z wyświetlaczami Led przy współudziale dekodera kodu BCD na kod wyświetlacza siedmio segmentowego.
Zasada działania układu pokazana jest pod programem. Rozwinięciem programu może być wpis do pętli Do nowych procedur, wykonywujących jakieś zadanie.

Przykład montażu próbnego:

Foto próbnej płytki montażowej
  • Wyświetlacze Led we współpracy z Atmega8.

'Led1.bas

 'Wyświetlanie informacji na wyświetlaczach Led.

 'Tutaj demonstracja wyświetlania liczb od 0 do 9.

 'Opracował Henryk Wydmuch

 'Procesor oscyluje z kwarcem 10.24MHz.

 'Program zajmuje 8% pamięci.

 

 $regfile = "m8def.dat"                                     'Info dla kompilatora.

$crystal = 10240000                                         'Informujemy kompilator o frekwencji 10,24MHz.

 

 Config Timer2 = Timer , Prescale = 1

 

 Dim I As Byte                                              'Zmienna operacyjna dla pętli For.

 Dim Wp As Word                                             'Zawiera liczbę wysokości tonu.

 Dim Zm As Byte                                             'Zawiera liczbę przepełnień Timer0.

 Dim Abcd As Byte

 

 Config Pind.0 = Output                                     'Wyjście kodu BCD (A).

  Set Portd.0                                               '

 Config Pind.1 = Output                                     ' Wyjście kodu BCD (B).

  Set Portd.1                                               '

 Config Pind.2 = Output                                     'Wyjście kodu BCD (C).

  Set Portd.2                                               '

 Config Pind.3 = Output                                     ' Wyjście kodu BCD (D).

  Set Portd.3                                               '

 

 Config Pind.7 = Input                                      'Port startowy.

  Set Portd.7                                               '

 Config Pinb.2 = Output                                     'Sterowanie anody wyświetlacza Led.

  Set Portb.2                                               '

 Config Pinb.3 = Output                                     'Sterowanie anody wyświetlacza Led.

  Set Portb.3                                               '

 Config Pinb.4 = Output                                     'Sterowanie anody wyświetlacza Led.

  Set Portb.4                                               '

 Config Pinb.5 = Output                                     'Sterowanie anody wyświetlacza Led.

  Set Portb.5                                               '

 

  On Timer2 Licz                                            'Włącz podprogram Licz Timer2.

 

 Declare Sub Z0                                             '

 Declare Sub Z1                                             '

 Declare Sub Z2                                             '

 Declare Sub Z3                                             '

 Declare Sub Z4                                             '

 Declare Sub Z5                                             '

 Declare Sub Z6                                             '

 Declare Sub Z7                                             '

 Declare Sub Z8                                             '

 Declare Sub Z9                                             '

 

 Enable Interrupts                                          'Odblokuj wszystkie przerwania.

  Enable Timer2                                             'Odblokuj przerwanie Timer2.

 

 Wp = 250                                                   'Częstotliwość generatora. (20KHz/Wp=KHz).

'''''''''''''''''''''''''''''''''''''''

 Do                                                         'Pętla Do.

 If Pind.7 = 0 Then                                         'Gdy Portd.7=0...

 

 For I = 0 To 9                                             'Start pętli For.

 Waitms 800

 Select Case I                                              'Przeglądaj zmienną I.

 Case 0:                                                    'Jeśli I ma 0, to...

 Call Z0                                                    'Wywołaj deklarację.

 

 Case 1:                                                    '

 Call Z1                                                    '

 

 Case 2:                                                    '

 Call Z2                                                    '

 

 Case 3:                                                    '

 Call Z3                                                    '

 

 Case 4:                                                    '

 Call Z4                                                    '

 

 Case 5:                                                    '

 Call Z5                                                    '

 

 Case 6:                                                    '

 Call Z6                                                    '

 

 Case 7:                                                    '

 Call Z7                                                    '

 

 Case 8:                                                    '

 Call Z8                                                    '

 

 Case 9:                                                    '

 Call Z9                                                    '

 

 End Select                                                 '

 Next I                                                     '

 End If                                                     '

 

 Loop                                                       'I wracaj ponownie do pętli.

End                                                         'Tu jest koniec pętli.

 ''''''''''Dane generatora'''''''''''''

 Licz:                                                      'Podprogram generatora Timer2.

 Incr Zm                                                    'Powiększaj przepełnienia Timer2 (po każdym 256 impulsie)..

 If Zm = Wp Then                                            'Jeśli przepełnień będzie tyle, ile zawiera Wp...

 Toggle Portb.2

 Toggle Portb.3                                             'Zmień poziom Portu (wyświetlacz1).

 Toggle Portb.4                                             'Zmień poziom Portu (wyświetlacz2).

 Toggle Portb.5                                             'Zmień poziom Portu (wyświetlacz3).

 Zm = 0                                                     'Zmień poziom Portu (wyświetlacz4).

 End If                                                     '

 Return                                                     'Wracaj z przerwania.

''''''''''''''''''''''''''''''''''''''

'''''Deklaracje'''''''''''''''''''''''

  Sub Z0

  'Abcd = 0

  Portd.0 = 0                                               'A

  Portd.1 = 0                                               'B

  Portd.2 = 0                                               'C

  Portd.3 = 0                                               'D

  End Sub

  Return

     Sub Z1

     'Abcd = 1

     Portd.0 = 1                                            'A

     Portd.1 = 0                                            'B

     Portd.2 = 0                                            'C

     Portd.3 = 0                                            'D

     End Sub

     Return

   Sub Z2

  'Abcd = 2

  Portd.0 = 0                                               'A

  Portd.1 = 1                                               'B

  Portd.2 = 0                                               'C

  Portd.3 = 0                                               'D

  End Sub

  Return

     Sub Z3

     'Abcd = 3

     Portd.0 = 1                                            'A

     Portd.1 = 1                                            'B

     Portd.2 = 0                                            'C

     Portd.3 = 0                                            'D

     End Sub

     Return

   Sub Z4

  'Abcd = 4

  Portd.0 = 0                                               'A

  Portd.1 = 0                                               'B

  Portd.2 = 1                                               'C

  Portd.3 = 0                                               'D

  End Sub

  Return

     Sub Z5

     'Abcd = 5

     Portd.0 = 1                                            'A

     Portd.1 = 0                                            'B

     Portd.2 = 1                                            'C

     Portd.3 = 0                                            'D

     End Sub

     Return

   Sub Z6

  'Abcd = 6

  Portd.0 = 0                                               'A

  Portd.1 = 1                                               'B

  Portd.2 = 1                                               'C

  Portd.3 = 0                                               'D

  End Sub

  Return

     Sub Z7

     'Abcd = 7

     Portd.0 = 1                                            'A

     Portd.1 = 1                                            'B

     Portd.2 = 1                                            'C

     Portd.3 = 0                                            'D

     End Sub

     Return

   Sub Z8

  'Abcd = 8

  Portd.0 = 0                                               'A

  Portd.1 = 0                                               'B

  Portd.2 = 0                                               'C

  Portd.3 = 1                                               'D

  End Sub

  Return

     Sub Z9

     'Abcd = 9

     Portd.0 = 1                                            'A

     Portd.1 = 0                                            'B

     Portd.2 = 0                                            'C

     Portd.3 = 1                                            'D

     End Sub

     Return

 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 'Objaśnienie:

 'Z Portówd.0,1,2,3 wysyłany jest kod BCD, który jest następnie dekodowany w 4543 na kod wyświetlaczy.

 'Kod zawarty jest w deklaracjach Z0-9.

 'Tranzystory 4xBC177 zasilane są częstotliwością ok. 100Hz z PortówB.2,3,4,5.

 'Regulację częstotliwości można przeprowadzać zmieniając zmienną WP.

 'Częstotliwość zmniejsza pobór prądu i pozwala zmieniać jasność Led.

 'Tranzystory 7xBC177 zasilają poszczególne segmenty wyświetlaczy, które połączone są równolegle.

 'Przycisk P powoduje start pętli For i wyświetlanie cyfr kolejno na wszystkich segmentach Led.

 'Koniec.