Poprzedni temat «» Następny temat
DSM-51
Autor Wiadomość
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-16, 20:05   DSM-51

Witam. Jestem w ostatniej klasie technikum, i szczerze mówiąc nie za bardzo znam się na DSMce. Aby zaliczyć semestr dostałem zadanie do wykonania, lecz mam problem z jedna z jego części.

Zadanie:
Otóż muszę na wyswietlaczu 7-segmentowym wykonać napis BOL, i sprawić aby każda z literek po kolei pojedynczo się przesuwała w prawo, a następnie zniknęła.
Jestem w stanie tylko stworzyć takowy napis BOL znajdujący się po lewej stronie, ale dalej jestem w kropce i nie mam pojęcia jak sprawić aby literki się przesuwały. Jeżeli ktoś byłby w stanie wytłumaczyć w jaki sposób to wykonać, byłoby świetnie.
EDIT: zapomniałem dodać, że operacja ta ma się zapętlić to 3 razy.
  
 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2012-04-16, 20:30   

Sam algorytm jest prosty, ale 51' już wiele osób nie zna, a znawców systemów ewolucyjnych dla 51' to chyba szukać z świeczką.
W czym to piszesz w ASM czy C ? Ja coś takiego tworzyłem kiedyś w bascom 51.
Sam sposób jest prost, tworzysz sobie w RAM tablicę równą ilości wyświetlaczy.
Potem ja zerujesz i wstawiasz na pierwszą lewą pozycję znak B (index 0 tablicy). czekasz ok 0.7 sek (700ms). Tablica jest wyświetlana po kolei w przerwaniu od jakiegoś Timera, przynajmniej 200x na sek dla wyświetlacza LED.
Nie czyścisz tablicy, tylko wstawiasz, na drugi wyświetlacz B (inedex 1 tab), a na pierwszy O (index 0 tablicy). Nie musisz niczego czyścić bo procesor wykona tę operacje tak szybko że nie zauważysz żadnych zakłóceń na wyświetlaczu.
Po kolejnych 700ms, robisz to samo tylko na inedx 2 dajesz B, na index 1 O, a na index 0 L.
Potem wchodzisz w pętlę która już tylko przesuwa, zawartość bufora w lewo co 700ms i napis ci płynie po ekranie. Przy czym element z ostatniego indexu tablicy musi ładować do pierwszego, czyli musi to tworzyć taki pierścień, w którym kręcą się dane dla wyświetlacza..
 
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-16, 20:44   

To nie caly napis ma się przesuwać, tylko pojedyncze literki. BOL BO L BO L BO B O ... coś w ten deseń.
 
     
simrowit
Nowy na forum


Dołączył: 11 Kwi 2012
Posty: 29
Skąd: Żywiec
Wysłany: 2012-04-17, 07:22   

Jeśli przesuwanie znaków ma byc celem ostatecznym to wcale nie trzeba tego dokonywac po przez przesuwanie znakow, tylko po prostu przez wyswietlenie takich gotowych napisow z przesuniętą literą w jakichs odstepach czasowych a efekcie uzyskamy przesuwajace sie znaki. Cel uswieca srodki. No chyba ze jest wymagany taki algorytm ze jednak ten tekst ma sie fizycznie w pamieci przesuwac, to wówczas faktycznie trzeba bedzie pokombinowac. Moge pomoc.
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2012-04-17, 07:58   

Nie znam za bardzo DSM, ale ja bym stworzył poza wspomnianymi komórkami - buforami na napis dodatkowy licznik. Jego zwiększanie w pętli powodowałoby, że przesuwał się jak gdyby początek napisu względem początku wyświetlaczy, bo przecież te wyświetlacze mają jakiś adres w przestrzeni adresowej, a na 99% jest on ciągły, więc zrobienie tego nie powinno być jakimś wielkim problemem. Po przejściu całego napisu następowałoby zerowanie tego licznika.
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 09:28   

Panowie, ja szczerze mówiąc nie mam pojęcia co robić, i nie za bardzo rozumiem to co chcecie mi przetłumaczyć. Niestety nie jestem najlepszym uczniem, dlatego tutaj pisze.

@Simrowit - jeżeli byś mi pomógł, byłbym naprawdę wdzięczny...
 
     
simrowit
Nowy na forum


Dołączył: 11 Kwi 2012
Posty: 29
Skąd: Żywiec
Wysłany: 2012-04-17, 10:41   

wg mnie najprosciej zrobic to tak jak sie robi animacje czyli kolejno wyswietlanie klatek obrazu, jak w kinie:). Napisales ze nie jest problemem dla ciebie napis BOL wyswielic wiec z ta metoda nie bedzie problemu:

1) BOL
2) czekaj
3) BO L
4) czekaj
5) BO__L
6) czekaj
7) BO___L
.
.
X) B________O
.
itd.
calosc powtorz 3x moze nie jest to rozwiazanie idealne ale na zaliczenie moze bedzie dobre , jesli potrzeba czegos "madrzejszego" daj znac. I w jakim jezyku ma to byc napisane znam Bascom i ASM, C niestety nie.
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 10:56   

To znaczy mój napis BOL jest typowy jak z podręcznika. Może napisze jak on wygląda w praktyce...
To ma być pisane w ASM.

Kod:
SEG_ON   EQU   P1.6

LITB   EQU   01111111B    ;  LITERA B
LITO   EQU   00111111B     ;  LITERA O
LITL   EQU   00111000B     ;  LITERA L
ZERO   EQU   00000000B

DISPLAY   EQU   30H

LJMP  START
ORG   100H
START:
MOV  DISPLAY,#ZERO
MOV  DISPLAY+1,#ZERO
MOV  DISPLAY+2,#ZERO
MOV  DISPLAY+3,#LITL
MOV  DISPLAY+4,#LITO
MOV  DISPLAY+5,#LITB
MOV  DISPLAY+6,#ZERO

LOOP_DISP:

MOV   RO,#DISPLAY
MOV   R2,#7
MOV   R3,#00000001B

LOOP:

SETB   SEG_ON

MOV   R1,#CSDS
MOV   A,R3
MOVX   @R1,A

RL    A
MOV  R3,A

MOV   R1,#CSDB
MOV   A,@R0
MOVX   @R1,A

INC   R0

CLR  SEG_ON

MOV  A,#1
LCALL  DELAY_MS

DJNZ  R2,LOOP

SJMP   LOOP_DISP   


Nie wiem czy w ogóle z takiego polecenia można zrobić aby te literki pojedynczo się przesuwały w prawo.
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 13:08   

simrowit, w jaki sposób stworzyć tę animację? Jeżeli można poproszę o listing, albo nawet i kontakt na nr GG: 5574832.
 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2012-04-17, 13:31   

Podaj może jakieś konkretne wymogi jakie na ciebie narzucono w tym zaliczeniu . Masz pełną dowolność koncepcji i rozwiązania, czy np, program ma umożliwiać przesuwanie dowolnego wprowadzonego do niego tekstu, bo to determinuje całe podejście.
Cytat:
Niestety nie jestem najlepszym uczniem, dlatego tutaj pisze.

Dla mnie akurat żadne uzasadnienie, bo jeżeli masz w szkole zadanie z 8051, to na pewno go przerabialiście. Oczywiście kwestią otwartą jest czemu nie przyswoiłeś materiału, nie twierdzę że twoja wina, możesz po prostu mieć daremnego nauczyciela. Tacy też są.
Tylko pamiętaj że gotowiec ci i tak nic nie da. Bo wystarczy że cię spytają jak to działa, albo karzą ci zmienić w tym to a owo i polegniesz. Bez zrozumienia tematu i tak nic nie osiągniesz.
Jeżeli nie jesteś związany Asemblerem to sobie go daruj, tylko napisz to sobie w o wiele bardziej czytelnym C, czy co tam wałkujecie.
 
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 13:42   

kayron, to co potrzebuje to tylko wyrywek zadania które mam do wykonania. Specjalnie dla Ciebie napisze całe zadanie.
Kod:
1.włącz i wyłącz diodę LED(test) 6 razy,
2.włącz i wyłącz buzer 3 razy,
3.operację 1 i 2 powtórz 6 razy w pętli.
4.na wyświetlaczu 7segmentowym wyświetl napis BOL, który zmienia swoje położenie po 1 literce i znika w prawo.
5.operację nr 4 powtórz 3 razy.
6.na wyświetlaczu LCD wyświetl propozycję oceny i wyraz "Dziękuję".


Koncepcja generalnie należy do mnie, jedynym praktycznie wymogiem jest limit pliku HEX jaki moge osiągnąć, to bodajże 5kb.
Tutaj z przyswojeniem materiału akurat zwaliłbym na mnie, niestety wybrałem złe technikum lecz zorientowałem się w tym już trochę za późno aby dokonać jakiejś zmiany.
Nie sądzę, a nawet wiem, że nauczyciel po zobaczeniu programu na DSMce nie będzie chciał już żadnych dodatkowych zmian do wprowadzenia.
 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2012-04-17, 13:52   

5kB to raczej wystarczy na taki program, wystarczyłoby i 2 KB. Ogólnie rozbroił mnie punkt 5.
Jeżeli nauczyciel, nie narzuca metody wykonania, to spoko. tylko nie napisałeś czy jesteś ograniczony językiem programowania, i czy musisz przedstawić kod źródłowy ?
 
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 13:55   

Język już wspomniałem wyżej ASM, kodu przedstawiać nie muszę. Po prostu tworzę program i pokazuje nauczycielce jak leci na urządzeniu, ona w treść programu nie wnika.
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2012-04-17, 13:58   

Na takie coś to i poniżej 512B wystarczy (zależy jak i w czym się pisze). A 2kB na program w asm to bardzo dużo i można napisać o wieeeele więcej, niż w zadaniu, że już nie wspomnę o 5kB.

Dla przykładu podam, że ten zegarek: LINK zajął niecałe 1.4kB (w wersji oprogramowania 1.0.2), więc widać tu potęgę asemblera.
  
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 14:04   

w szkole mam zrobione punkty 1,2,3 i 6. Mam problem z tym napisem. Plik z zadaniami 1 2 3 6 waży u mnie 1kb.

A co do tego zegara ciekaw jestem jak dlugi jest program.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,03 sekundy. Zapytań do SQL: 10