FAQ | Points | Add... | Recent posts | Search | Register | Log in


atmega8 i wyświetlacz 7 segmentowy LED ==> BASCOM


Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> atmega8 i wyświetlacz 7 segmentowy LED ==> BASCOM
Author
Message
Lodoo
Poziom 14
Poziom 14


Joined: 13 Jul 2004
Posts: 187
Location: Wrocław

Post#31 Post from the author of the topic 05 Nov 2005 03:56   

Re: atmega8 i wyświetlacz 7 segmentowy LED ==> BASCOM


No to mam juz jakis podstawowy kod do pomiaru predkosci :)
mam multipleksa

NIE WIEM CZY DOBRZE ZADEKLAROWALEM PORTY - prosze o sprawdzenie czy ilosc cyferek sie zgadza i czy prawidlowo "pominalem" bity kwarcu (portB) resetu (PortC) i timer'a (portD) - wystarczy tam dac zera (wejscia) i juz?? no i potem jak deklaruje ktore maja byc w jakich stanach to jak pominac bit ze srodka? (np portD.4 - timer) czy juz po deklaracji ze jest w porcie D 1 bit wejscia to juz deklaruje 7 zamiast 8 stanow? (tak zrobilem) czy jak?

NIE WIEM JAK ROZBIC 3-cyfrowa ZMIENNA "Predkosc" NA "setki" "dziesiatki" i "jednosci"

NIE WIEM JAK ZROBIC, zeby przy malych predkosciach (ponizej 10km/h) wartosc na wyswietlaczach byla zmieniana co 1 sekunde (4xtimer1)

Prosze o pomoc w tych 3 kwestiach.
dziekuje :)

Code:

'PREDKOSCIOMIERZ na potrojnym wyswietlaczu 7-seg z dekoderem CD4511
'podlaczenie: jednosci PD1, dziesiatki PD2, setki PD3
'             segmenty a-g poprzez uklad - dekoder CD4511 sterowany 4 bitami
'             piny: PD5, PD6, PD7, PD0
'             pin PD4 zostaje do timer'a

$regfile = "m8def.dat"
$crystal = 4000000

Dim Jednosci As Byte , Dziesiatki As Byte , Setki As Byte
Dim Wyswietlacz As Byte , Tablica(4) As Byte
Dim Imppred As Byte , Predkosc As Byte , Czekaj As Byte

Config Portb = &B11111001        'piny 6 i 7 to piny kwarcu. Tak ma to wygladac?
Config Portc = &B1111101          'pin 6 to pin RESET, reszta wejscia
Config Portd = &B11110111     'czy tak mam to zadeklarowac zeby PD4 bylo wejsciem Timera?
        Portd = &B1110000             'wyswietlacze wygaszone => stany niskie na katodach i wysokie na anodach

Config Timer1 = Timer , Prescale = 64
Config Timer0 = Counter , Edge = Falling      'wyzwalanie zboczem spadajacym

Predkosc = 0

Poczatek:

Tcnt0 = 0                                'kasowanie impulsow z czujnika predkosci
Start Timer0                           ' start zliczania impulsow

Timer1 = 0                             'zerowanie timera z 250ms do zera
Start Timer1                           ' start ogliczania czasu

Do                                         'poczatek petli wyswietlania

'TU MUSZE COS WSTAWIC ZEBY ROZDZIELIC PREDKOSC
'NA SETKI DZIESIATKI I JEDNOSCI
'I PREDKOSC WPISUJE NA WYSWIETLACZ:
'
'     PREDKOSC ==> jednosci, dziesiatki, setki

   Wyswietlacz = 0
  Do                                        'petla multipleksera
   Select Case Wyswietlacz
   Case 0:
     Portd.1 = 0
     Tablica(jednosci) = Lookup(jednosci , Tabela)
      Portd.5 = Tablica(1)
      Portd.6 = Tablica(2)
      Portd.7 = Tablica(3)
      Portd.0 = Tablica(4)
   Case 1:
     Portd.2 = 0
     Tablica(dziesiatki) = Lookup(dziesiatki , Tabela)
      Portd.5 = Tablica(1)
      Portd.6 = Tablica(2)
      Portd.7 = Tablica(3)
      Portd.0 = Tablica(4)
   Case 2:
     Portd.3 = 0
     Tablica(setki) = Lookup(setki , Tabela)
      Portd.5 = Tablica(1)
      Portd.6 = Tablica(2)
      Portd.7 = Tablica(3)
      Portd.0 = Tablica(4)
   End Select
   Incr Wyswietlacz
  Loop Until Wyswietlacz = 3
Loop Until Timer1 = 15625             'wartosc ta odpowiada 0,25s

Stop Timer1                                   'zatrzymanie odliczania czasu
Stop Timer0                                   'zatrzymanie zliczania impulsow
Imppred = Tcnt0                              'impulsy zczytane z PD4
Predkosc = Imppred * 6.186
       'predkosc=[14400/(ilosc impulsow na 1 km)]*Imppred
       'srednica kola 54,7cm , 4 impulsy na 1 obrot kola => 6,186

Goto Poczatek


Tabela:                                       ' ponizej przykladowe cyfry odpowiadajace liczbim 0...9
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 138 , 194

Back to top
   
marek_Łódź
Poziom 23
Poziom 23


Joined: 23 Dec 2004
Posts: 3131
Location: Łódź

Post#32 05 Nov 2005 10:16helpful post - solution   

Re: atmega8 i wyświetlacz 7 segmentowy LED ==> BASCOM


Lodoo wrote:
NA "setki" "dziesiatki" i "jednosci"

Quote:
NIE WIEM JAK ZROBIC, zeby przy malych predkosciach (ponizej 10km/h) wartosc na wyswietlaczach byla zmieniana co 1 sekunde (4xtimer1)

Code:

Dim Speed As Byte                                           ' Prędkość
Dim Tmp As Byte
Dim I As Byte
Dim Index As Byte
Dim Mmv as Byte

*** Rozbicie na 3 cyfry ***
Dim Cyfry(3) As Byte

Speed = 147                                                      ' W Polsce to zakazane

Mmv=0                                                              'Taktowanie konwersji
..........

Do    ' główna pętla programu
...
'*** poniżej 10 km/h co czwarte przejście ***
Incr Mmv                                           
Tmp = 0
If Speed < 10 Then Tmp = Mmv Mod 4

'*** Warunkowa konwersja (co 1 lub co 4 przejście) ***
If Tmp = 0 Then

'*** Rozbicie liczby na cyfry ***
  For I = 1 To 3                                            'Nasza konwersja
    Tmp = Speed Mod 10                                      'Ostatnia cyfra
    Index = 4 - I                                           'Do tablicy
    Cyfry(index) = Tmp
    Speed = Speed - Tmp                                     'Pozostałe
    Speed = Speed / 10
  Next I
'****************************
End If

..... wyświetlanie itp....



Żeby przemiatanie cyfr wyświetlacza było pod kontrolą, odczekanie powinno być po wysłaniu każdej cyfry (np. do 20 ms - 50Hz). Chyba lepiej to zrobić to w przerwaniach zegara, ale rozumiem, że to będzie następna wersja (jeśli powstanie).

Co do zmniejszenia częstotliwości przy v<10km/h to wystarczy wprowadzić zmienną Mmv odliczającą przejścia przez konwersje (wyliczanie cyfr) i warunkowo robić konwersję. Przy prędkości<10 cyfry są cyfry wyliczane co czwarte przejście czyli przez pozostałe 3 przejścia pętli pozostają stałe, przy prędkości>10 cyfry wyliczane są w każdym przejściu.
Back to top
   
Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> atmega8 i wyświetlacz 7 segmentowy LED ==> BASCOM
Page 2 of 2 Go to page Previous  1, 2
Similar topics
HEF 4543 BP i wyświetlacz 7-segmentowy LED (2)
Wyświetlacz 3 segmentowy LED LB-603MF (8)
Atmega8 i LCD. Ilu segmentowy wyświetlacz? Jakiej firmy? (3)
[atmega16][bascom] Wyświetlacz 14-sto segmentowy. (3)
Bascom i wyświetlacz vfd 14-sto segmentowy (7)
[Bascom] Wyświetlacz 7 Segmentowy (2)
[atmega8][bascom]Wyswietlacz 7 segmentowy (5)
Stoper - Atmega8, wyświetlacz LED, bascom (13)
[ATmega8][Bascom] Wyswietlacz 7 segmentowy LED. (19)
Zegar a multiplexowy 7 segmentowy wyświetlacz LED (2)

Page generation time: 0.166 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed