Mariuszek15 Poziom 20

Joined: 18 Sep 2005 Posts: 913 Location: Chrzanów
|
#4
11 Sep 2007 15:32 Re: Analizator widma akustycznego na LCD |
|
|
|
Znalazłem kod źródłowy :) Więc co muszę zmienić, aby go uruchomić na LCD z allegro?
| Code: |
'Analizator widma z wyswietlaczem graficznym
'Marcin Wiązania
'marcin@wiazania@ep.com.pl
$prog &HFF , &HEF , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes.
$hwstack = 80 'ustawienie stosu
$swstack = 80 'ustawienie stosu
$framesize = 80 'ustawienie stosu
$regfile = "m8def.dat" 'typ mikrokontrolera
$crystal = 16000000 'czestotliwosc zegara
$lib "glcd.lib" 'zalaczenie biblioteki obslugujacej wyswietlacz z kontrolerem wyswietlacza
Config Graphlcd = 128 * 64 , Dataport = Portd , Controlport = Portb , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8 'konfiguracja graficznego LCD
Config Adc = Single , Prescaler = 2 , Reference = Avcc 'konfiguracja przetwornika A/C
Config Portc.2 = Output 'konfiguracja portow
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Declare Sub Pomiar 'podprogram pomiaru
Dim I As Byte 'zmienne
Dim K As Byte
Dim P As Byte
Dim F(7) As Byte
Dim Kol As Byte
Dim Wart_ac As Word 'wartosc odczytana z przetwornika
Dim Temp1 As Byte
Res Alias Portc.2 'przypisanie aliasow do linii portow
M_a Alias Portc.3
M_b Alias Portc.4
M_c Alias Portc.5
Reset Res 'wartosci poczatkowe zmiennych
Cursor Off , Noblink 'inicjalizacja LCD
Cls
Start Adc 'wlaczenie przetwornika
Line(0 , 4) -(0 , 54) , 1 'instrukcje rysowania skali
Line(0 , 54) -(3 , 54) , 1
Line(0 , 44) -(3 , 44) , 1
Line(0 , 34) -(3 , 34) , 1
Line(0 , 24) -(3 , 24) , 1
Line(0 , 14) -(3 , 14) , 1
Line(0 , 4) -(3 , 4) , 1
Line(127 , 4) -(127 , 54) , 1
Line(127 , 54) -(124 , 54) , 1
Line(127 , 44) -(124 , 44) , 1
Line(127 , 34) -(124 , 34) , 1
Line(127 , 24) -(124 , 24) , 1
Line(127 , 14) -(124 , 14) , 1
Line(127 , 4) -(124 , 4) , 1
Line(4 , 63) -(124 , 63) , 1
Line(4 , 63) -(4 , 62) , 1
Line(24 , 63) -(24 , 62) , 1
Line(44 , 63) -(44 , 62) , 1
Line(64 , 63) -(64 , 62) , 1
Line(84 , 63) -(84 , 62) , 1
Line(104 , 63) -(104 , 62) , 1
Line(124 , 63) -(124 , 62) , 1
Do 'program glowny
Set Res 'zerowanie detektorow
nop 'pusta instrukcja
nop 'pusta instrukcja
Reset Res 'odblokowanie zerowania
Delay 'opoznienie
Reset M_a 'obsluga kanalu 1 (000)
Reset M_b
Reset M_c
K = 1 'kanal 1
Call Pomiar 'wywolanie pomiaru
For I = 54 To 4 Step -1 'petla rysowania slupka o dlugosci zaleznej od wartosci odczytanej z A/C
If I >= F(k) Then 'jesli wartosc I wieksza lub rowna, to
Kol = 1 'zapis wartosci 1 do zmiennej kol (piksele beda wyswietlane)
Else 'w przeciwnym razie
Kol = 0 'zapis wartosci 0 do zmiennej kol (piksele beda wymazywane)
End If
Line(6 , I) -(21 , I) , Kol 'wyswietlenie lub kasowanie w zaleznosci od kol linii slupka
Next I 'zwiekszenie o 1 wartosci I
Set M_a 'obsluga kanalu 2 (001)
Reset M_b
Reset M_c
K = 2 'kanal 2
Call Pomiar 'wywolanie pomiaru
For I = 54 To 4 Step -1 'petla rysowania slupka o dlugosci zaleznej od wartosci odczytanej z A/C
If I >= F(k) Then 'jesli wartosc I wieksza lub rowna, to
Kol = 1 'zapis wartosci 1 do zmiennej kol (piksele beda wyswietlane)
Else 'w przeciwnym razie
Kol = 0 'zapis wartosci 0 do zmiennej kol (piksele beda wymazywane)
End If
Line(26 , I) -(41 , I) , Kol 'wyswietlenie linii slupka
Next I 'zwiekszenie o 1 wartosci I
Reset M_a 'obsluga kanalu 3 (010)
Set M_b
Reset M_c
K = 3 'kanal 3
Call Pomiar 'wywolanie pomiaru
For I = 54 To 4 Step -1 'petla rysowania slupka o dlugosci zaleznej od wartosci odczytanej z A/C
If I >= F(k) Then 'jesli wartosc I wieksza lub rowna, to
Kol = 1 'zapis wartosci 1 do zmiennej kol (piksele beda wyswietlane)
Else 'w przeciwnym razie
Kol = 0 'zapis wartosci 0 do zmiennej kol (piksele beda wymazywane)
End If
Line(46 , I) -(61 , I) , Kol 'wyswietlenie linii slupka
Next I 'zwiekszenie o 1 wartosci I
Set M_a 'obsluga kanalu 4 (011)
Set M_b
Reset M_c
K = 4 'kanal 4
Call Pomiar 'wywolanie pomiaru
For I = 54 To 4 Step -1 'petla rysowania slupka o dlugosci zaleznej od wartosci odczytanej z A/C
If I >= F(k) Then 'jesli wartosc I wieksza lub rowna, to
Kol = 1 'zapis wartosci 1 do zmiennej kol (piksele beda wyswietlane)
Else 'w przeciwnym razie
Kol = 0 'zapis wartosci 0 do zmiennej kol (piksele beda wymazywane)
End If
Line(66 , I) -(81 , I) , Kol 'wyswietlenie linii slupka
Next I 'zwiekszenie o 1 wartosci I
Reset M_a 'obsluga kanalu 5 (100)
Reset M_b
Set M_c
K = 5 'kanal 5
Call Pomiar 'wywolanie pomiaru
For I = 54 To 4 Step -1 'petla rysowania slupka o dlugosci zaleznej od wartosci odczytanej z A/C
If I >= F(k) Then 'jesli wartosc I wieksza lub rowna, to
Kol = 1 'zapis wartosci 1 do zmiennej kol (piksele beda wyswietlane)
Else 'w przeciwnym razie
Kol = 0 'zapis wartosci 0 do zmiennej kol (piksele beda wymazywane)
End If
Line(86 , I) -(101 , I) , Kol 'wyswietlenie linii slupka
Next I 'zwiekszenie o 1 wartosci I
Set M_a 'obsluga kanalu 6 (101)
Reset M_b
Set M_c
K = 6 'kanal 6
Call Pomiar 'wywolanie pomiaru
For I = 54 To 4 Step -1 'petla rysowania slupka o dlugosci zaleznej od wartosci odczytanej z A/C
If I >= F(k) Then 'jesli wartosc I wieksza lub rowna, to
Kol = 1 'zapis wartosci 1 do zmiennej kol (piksele beda wyswietlane)
Else 'w przeciwnym razie
Kol = 0 'zapis wartosci 0 do zmiennej kol (piksele beda wymazywane)
End If
Line(106 , I) -(121 , I) , Kol 'wyswietlenie linii slupka
Next I 'zwiekszenie o 1 wartosci I
Reset M_a 'obsluga paska nagrywania (110)
Set M_b
Set M_c
K = 7 'obsluga paska nagrywania
Wart_ac = Getadc(0) 'odczyt wartosc z przetwornika
Wart_ac = Wart_ac / 4 'przeliczenie odczytanej wartosci
Temp1 = Low(wart_ac) 'przeliczenie odczytanej wartosci
If Temp1 > 53 Then 'jesli wartosc wieksza od 53 to
Temp1 = Temp1 - 50 'odjecie wartosci 50
Else 'w przeciwnym razie
Temp1 = 4 'przypisanie wartosci 4
End If
If Temp1 > 124 Then 'jesli wartosc > od 124
Temp1 = 124 'to przypisanie wartosci 124
End If
Line(4 , 58) -(124 , 58) , 0 'wymazanie poziomego paska
Line(4 , 59) -(124 , 59) , 0 'wymazanie poziomego paska
Line(4 , 60) -(124 , 60) , 0 'wymazanie poziomego paska
Line(4 , 58) -(temp1 , 58) , 1 'wyswietlenie poziomego paska
Line(4 , 59) -(temp1 , 59) , 1 'wyswietlenie poziomego paska
Line(4 , 60) -(temp1 , 60) , 1 'wyswietlenie poziomego paska
Loop 'koniec petli glownek
End 'koniec programu
Sub Pomiar 'procedura pomiaru
Delay 'opoznienie
Wart_ac = Getadc(0) 'odczyt wartosci z A/C
Wart_ac = Wart_ac / 10 'podzielenie wartosci przez 10
Temp1 = Low(wart_ac) 'zapis do zmiennej Temp1 mniej znaczacego bajtu zmiennej wart_ac
If Temp1 > 50 Then 'jesli wartosc wieksza od 50 to
Temp1 = 50 'zapis do temp1 wartosci 50
End If
F(k) = 54 - Temp1 'obliczenie wielkosci slupka
If F(k) < 4 Then 'jesli wartosc slupka mniejsza niz 4 to
F(k) = 4 'zapis wartosci 4
End If
End Sub 'koniec podprogramu |
|
|