Zbiór programów, programowanie mikrokontrolera – BASCOM

Nie znalazłem podobnego zbioru programów, który mógłby pomóc początkującym programistą, czy też elektronikom którzy próbują swoich sił z mikrokontrolerami.

Tak więc, chce stworzyć taki wpis, zamieszczam poniżej kilka programów[kod źródłowy] który należy skompilować w bezpłatnym programie BASCOM-AVR. Następnie plik *.hex wgrywamy za pomocą programatora do mikrokontrolera.

Oczywiście to nie wszystko, następnym etapem jest podłączenie kabelków z odpowiednimi portami czy też rejestrami.
( Port.A -> dioda1, stan 1 dioda sie swieci, stan 0 dioda jest zgaszona ).
Jak znajde chwile napiszę o tym więcej, osobny wpis.

Wszystko działa bezproblemowo na układzie ZL3AVR na którym jakiś czas pracuje.

1.) Wyświetlenie napisu na wyświetlaczu LCD

      $regfile "m16def.dat"
      $crystal = 16000000

      Cls
      Lcd "Witaj,kotlecie"

      Do
      Loop

2.) Wyświetlenie napisu na wyświetlaczu LCD, + poruszanie napisu lewo, prawo, + wyświetlenie własno ręcznie stworzonej literki. (deflcdchar)

      $regfile "m16def.dat"
      $crystal = 16000000

      Deflcdchar 0 , 14 , 17 , 31 , 16 , 14 , 3 , 32 , 32
      Deflcdchar 1 , 6 , 18 , 2 , 18 , 6 , 32 , 32 , 32

      Cls

         Lcd "b" ; Chr(0) ; "c" ; Chr(1)

         Dim I As Byte

         Do
               For I = 1 To 12
                     Shiftlcd Right
                        Waitms 200
                     Next I

                     For I = 1 To 12
                     Shiftlcd Left
                     Waitms 200

                     Next I


                     Loop

3.) Wyświetlacz diodowy(0-9) + Wyświetlacz LCD + Liczby

$regfile "m16def.dat"
$crystal = 16000000

           Dim E As Byte
           Dim I As Byte
           Dim Liczba_led(10) As Byte

           Deflcdchar 0 , 2 , 32 , 14 , 17 , 17 , 17 , 14 , 32
           Deflcdchar 1 , 32 , 32 , 12 , 18 , 18 , 18 , 15 , 2

            Cls

             Liczba_led(1) = &B11000000
             Liczba_led(2) = &B11111001
             Liczba_led(3) = &B10100100
             Liczba_led(4) = &B10110000
             Liczba_led(5) = &B10011001
             Liczba_led(6) = &B10010010
             Liczba_led(7) = &B10000010
             Liczba_led(8) = &B11111000
             Liczba_led(9) = &B10000000
             'Liczba_led(10) = &B1001000

             Config Portd = &HFF
             Config Portc = &HFF
             Portc = &H01
             'Config Portc = &B00000011
             'Portc = &B00000001



           Lcd "Loading..."

           Home Lower
           Cursor Off

           Lcd "HiHon   " ; Chr(0) ; Chr(1)

Do


             For E = 1 To 5
                     Shiftlcd Right
                     Waitms 100
                     Next E

             For E = 1 To 5
                     Shiftlcd Left
                     Waitms 100
                     Next E


               For I = 1 To 9
                     Portd = Liczba_led(i)
                     Waitms 50
               Next I


               For I = 9 To 1 Step -1
                  Portd = Liczba_led(i)
                  Portd.7 = 0
               Waitms 50
               Next I

Loop


4.) Obsługa klawiatury, test klawiatury

$regfile "m16def.dat"
$crystal = 16000000

Config Portd.0 = Input
Config Portd.1 = Output

Portd.0 = 1
Portd.1 = 0

Config Portc.0 = Output

Config Portc.1 = Output

Portc.0 = 0
Portc.1 = 0


Do
      If Pind.0 = 0 Then

      Portc.0 = 1
      Else
      Portc.0 = 0

      End If
      Loop

5.) Wyświetlacz LCD wyświetla napis, napis porusza się prawo-lewo, a na wyświetlaczu diodowym wyświetlają sie liczby 0-9, 9-0

$regfile "m16def.dat"
$crystal = 16000000

' konfiguracja portów wyswietlacza

              Config Lcdpin = Pin , Rs = Portd.0 , E = Portd.1 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
              Config Lcdbus = 4
              Config Lcd = 16 * 2

' znaki specjalne lcd designer

           Deflcdchar 1 , 4 , 14 , 4 , 31 , 4 , 4 , 14 , 4
           Deflcdchar 2 , 31 , 17 , 17 , 31 , 4 , 4 , 4 , 4

            Cls                                             ' potrzebne czyszczenie, nalezy o tym pamietac!

           Lcd "Witaj Dawidzie" ; Chr(2)

           Cursor Off
           Home Lower                                       'linijka nizej

           Lcd "    BASCOM " ; Chr(1)



      ' ##################Funkcja wyswietlacz LED
Wyswietlacz2:
           Dim E As Byte
           Dim Liczba_led(10) As Byte

             Liczba_led(1) = &B11000000
             Liczba_led(2) = &B11111001
             Liczba_led(3) = &B10100100
             Liczba_led(4) = &B10110000
             Liczba_led(5) = &B10011001
             Liczba_led(6) = &B10010010
             Liczba_led(7) = &B10000010
             Liczba_led(8) = &B11111000
             Liczba_led(9) = &B10000000
             Liczba_led(10) = &B1001000


       Config Portb = &HFF
       Config Porta = &HFF
       Config Portc = &HFF
       Porta = &H01

Do
            For E = 1 To 5
            Porta = Liczba_led(e)
            Waitms 350
            Next E

            For E = 5 To 1 Step -1
            Porta = Liczba_led(e)
            Porta.7 = 0
            Waitms 350
            Next E
            Goto Wyswietlacz
Loop

' ####### Funkcja wyswietlacza LCD
Wyswietlacz:

                                   Dim I As Byte
' petla przesuwajaca tekst w prawo i lewo
Do
                     For I = 1 To 2
                     Shiftlcd Right
                     Waitms 300
                     Next I

                     For I = 1 To 2
                     Shiftlcd Left
                     Waitms 300
                     Next I
                     Goto Wyswietlacz2

Loop


6.) Wyświetlanie numeru wciśniętego klawisza na klawiaturze

$regfile "m16def.dat"
$crystal = 16000000

' konfiguracja portów wyswietlacza

              Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
              Config Lcdbus = 4
              Config Lcd = 16 * 2

Poczatek:


Dim Klawisz As Byte
Dim Kod(17) As Byte

Kod(1) = &B11111001
Kod(2) = &B10100100
Kod(3) = &B10110000
Kod(4) = &B10001000
Kod(5) = &B10011001
Kod(6) = &B10010010
Kod(7) = &B10000010
Kod(8) = &B10000011
Kod(9) = &B11111000
Kod(10) = &B10000000
Kod(11) = &B10010000
Kod(12) = &B11000110
Kod(13) = &B10001111
Kod(14) = &B11000000
Kod(15) = &B10001001
Kod(16) = &B10100001
Kod(17) = &B01111111                                        'reprezentacja zera

Config Portb = Output
Config Portc = Output


Config Kbd = Portd


Do
Klawisz = Getkbd()                                          ' inicjacja klawisza, getkbd


Klawisz = Klawisz + 1
Porta = Kod(klawisz)

Cls
Cursor Off                                                  ' wylaczenie kursora

Lcd "Wybrana liczba:"

Home Lower

Lcd Klawisz                                                 ' w linijce nizej pokaze nam sie numer przycisku
Waitms 250

Ledz Alias Portc.1


Dim Mycode As Word
Dim Code As Word
Dim Key As Byte
Dim Getkey As Byte

Mycode = 1

Key = Getkbd()

Key = Key + 1

If Key = Mycode Then Set Ledz
Waitms 500
Reset Ledz
Loop

Wklejone przezemnie kody źródłowe pomogą zrozumieć język BASCOM.

Większość programów wykonałem na Politechnice Częstochowskiej pod przewodnictwem Adriana Sadowskiego.

Dodaj komentarz