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.