Category Archives: Programowanie mikrokontrolerów

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.

Kontynuuj czytanie..“Zbiór programów, programowanie mikrokontrolera – BASCOM” »

Bascom: Obsługa klawiatury, wyswietlanie numeru przycisku na wyswietlaczu LED i LCD.

Następny dzień i następne problemy do rozwiązania.

Męczyłem się bardzo z tą klawiaturą, ale dzisiaj udało mi się ją częściowo zmuscić do współpracy.

Opisze mój program:

Poprzez funkcje getkbd, pobieramy informacje z jakiego przycisku skorzystaliśmy dzięki temu możemy wyswietlić tę liczbe na wyświetlaczu LED’owym czy LCD. I właśnie to zrobiłem.

Miałem problem z wyświetlaczem LED co widać na filmiku, jeden z kabelków nie działał tak jak powinien przez co nie miałem jednej kratki po prawej stronie. Postaram się to poprawić, póki co chciałem pochwalić się drobnym osiągnieciem.

Film z akcji:

Dość chaotycznie to wygląda przy aktualnym połączeniu kabelków, no ale co zrobić :)

Kod źródłowy programu:

$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
 
 
 
 
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
 
Portc = 1
 
Config Kbd = Portd
 
Do
Klawisz = Getkbd()                                          ' inicjacja klawisza, getkbd
 
 
Klawisz = Klawisz + 1
 
Portb = Kod(klawisz)
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
 
Loop

Bascom: Wyświetlacz LCD + Wyswietlacz LED.

Dzisiaj napisałem program który obsługuje wyświetlacz LCD oraz wyświetlacz LED’owy.

Na LCD wyświetla się napis, dwu-linjkowy, natomiast na LED’owym wyswietlają sie liczby 1-4 4-1 ( z kropką )

Film z akcji:

Kod programu, wraz z opisem:

$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

Nadal mam jednak problemy z tą klawiaturą, czy to naprawdę musi być takie trudne?!

Pozdrawiam.

 

Bascom: Obsługa klawiatury, a włąściwie jednego przycisku.

Dzisiaj chwile zająłem się obsługą klawiatury, gdy naciskam przycisk dioda LED świeci się.

Nie omieszkam zamieścić kodu:

$regfile "m16def.dat"
$crystal = 160000
 
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

Jeśli chodzi o podłączenia w układzie wygląda to następująco PD0 – JP13 , PD1 – JP3
( Doszedłem do tego dość eksperymentalnie, testowałem porty aż doszłem do oczekiwanego efektu ).

 

BASCOM : Obsługa wyświetlacza LCD 2×16 |ZL3-AVR|

Dopiero dzisiaj zdołałem uruchomić układ, ciągle mi czegoś brakowało po namyśle zapomniałem o kamiPROG.
Pluginie do AVR studio, – obsługa programatora.

Dzisiaj zająłem się podstawą, czyli podłaczeniem wyświetlacza LCD.
Prawde mówiąc troche mi to zajeło ze względu na to że zapomniałem co i jak..

Kod programu : / BASCOM /

$regfile "m16def.dat"
$crystal = 1600000
 
 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
    Cls
Dim I As Byte
 
           Deflcdchar 0 , 2 , 32 , 14 , 17 , 17 , 17 , 14 , 32
           Deflcdchar 1 , 32 , 32 , 12 , 18 , 18 , 18 , 15 , 2
 
           Cls
 
           Lcd "Test: " ; Chr(0) ; Chr(1) ; " xD"
 
           Cursor Off
 
           Home Lower
 
           Lcd "Test: " ; Chr(0) ; Chr(1) ; " xD"
 
Do
For I = 1 To 10
Shiftlcd Right
Waitms 2000
Next I
 
For I = 1 To 10
Shiftlcd Left
Waitms 2000
Next I
 
Loop

Pierwsze dwie linijki, są odpowiedzialne za typ mikrokontrolera oraz jego zegar.
W moim przypadku jest to atMEGA32 oraz zegar 16MHz.

Następnie definiujemy z jakich portów będziemy korzystać.
W języku BASCOM istnieje duże ułatwienie jeśli chodzi o obsługe wyświetlacza, wystarczy komenda lcd “bla” ;
by wyświetlić coś na wyświetlaczu.

Język BASCOM jest o tyle łatwy, i przystępny ze wystarczy kilka prostych komend, by uruchomić wyświetlacz, LED’y i inne rzeczy. Naprawde nie chcielibyście zobaczyć kodu w C++. :D

Deflcdchar  jest  uzupełnieniem, które przydaje się jeśli chcemy stworzyć jakieś znaczki specjalne. ( Np. jakiś dziwny uśmieszek )
Używamy w programie bascom modułu lcd designer i tam wykropkujemy co ma nam sie wyświetlić.
Następnie odwołujemy się do tego za pomocą chr(liczba deflchar’a).

np.

Deflcdchar 1 , 32 , 32 , 12 , 18 , 18 , 18 , 15 , 2
odwołujemy się chr(1).

Zrobiłbym zdjęcia, jednak myślę że sam symulator wskażę że kod działa poprawnie.
Dzisiaj wieczorem, lub jutro spróbuje rozbudować program o obsługę klawiatury.

Co jest niestety moim głównym problemem, bo nie mogłem tego jeszcze zrobić.

Pozdrawiam. :)

Nowe zabawki – Mikrokontroler, zasilacz..

Dziś będąc na politechnice, zabrałem ze sobą trochę sprzętu do domu na ok. 2 tygodnie.
Postaram się podszkolić w programowaniu mikrokontrolera do przyszłych projektów, o których napisze później.

Potrzebowałem zasilacza,programatora, zestawu mikrokontrolera no i książki.  ;)

Zaznajomiłem się już z podstawami, teraz chce stworzyć kilka programów które łączyłyby funkcjonalności wyświetlacza_LED,  diod LED, klawiatury.

Skupiłem się głównie na programowaniu w języku BASCOM, oraz C.
( Chociaż uważam że Bascom jest łatwiejszy :P )

Układ programuje się za pomocą różnej maści programatorów, ja będę programował poprzez KANDA ISP.
( USB – KANDA ). Program piszemy w języku Bascom, C bądź Asembler później z niego tworzymy *.hex
czyli plik z instrukcjami dla mikrokontrolera napisane szesnastkowo.

Programowanie mikrokontrolerów nie jest tylko zabawą, a praktyką dzięki której później możemy programować roboty, wszelakie urządzenia elektroniczne ( np. jak mój projekt zamku cyfrowego, o którym wkróce usłyszycie :) )

W następnych art. napisze więcej o programowaniu mikrokontrolera.
( Kod, opis i .. other stuff  )