Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 mar 2026, o 03:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 25 gru 2017, o 15:35 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Witam, ostatnio walczyłem z transmisją rs485, z którą miałem trochę problemów, ale poradziłem sobie z tym(jeszcze nie do końca ale będzie dobrze). Teraz mam inny problem. Mianowicie chciałbym napisać program, który będzie mi przesuwał cyfry na wyświetlaczach.
Program ma działać jak wybieranie numeru w domofonie, czyli wciskamy klawisz numer 1 to ta jedynka ma się wyświetlić na pierwszym wyświetlaczu od prawej strony. Gdy wciśniemy inny klawisz np. 5 to ta jedynka z pierwszego wyświetlacza ma się pojawić na drugim a na pierwszym ma się wyświetlać 5. Wciskamy np. 7 to jedynka wędruje na trzeci wyświetlacz, piątka na drugi a 7 na pierwszy. Czyli wszystko ma się przesuwać w lewą stronę. Wyświetlaczy ma być 4 sztuki. Jeżeli jakaś cyfra znajduje się już na czwartym wyświetlaczu a na pierwszym pojawia się znowu nowa cyfra to ta z czwartego wyświetlacza po prostu znika. Zasada taka jak w rejestrach przesuwnych. Nie chcę aby mi ktoś wysyłał gotowy kodu do tego, ja chcę tylko jakąś sugestie podpowiedź jak można to napisać. Multipleksację led już napisałem. Oto kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Próbowałem już pisać coś takiego, że wartość przesyłana do funkcji jest cały czas wyświetlana tylko na wyświetlaczu pierwszym.
Wartość tą przepisywałem do jakieś zmiennej i gdy przechodziła nowa wartość na wyświetlacz pierwszy to dopiero wyświetlałem wartość tej zmiennej na drugim wyświetlaczu ale to nie działało zbyt dobrze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 gru 2017, o 16:35 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

Tak nie analizując kodu...
A gdybyś liczbę wprowadzaną z klawiatury zapisywał w formie BCD do zmiennej 2 bajtowej ( w tym momencie będziesz miał "zasięg" 4 cyfr) i to na niej będziesz przeprowadzał wszelkie operację przesuwania itd. itp.
Dopiero po wykonaniu odpowiedniej operacji wysyłasz tą zmienną (kompletną) na wyświetlacz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 gru 2017, o 16:44 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Pomysł może i dobry tylko niewiem jak się za to zabrać. Nieumiem jeszcze za dobrze programować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 gru 2017, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Jeżeli dobrze rozumiem to masz zmienną
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
w której masz cyfry do wyświetlenia. Tak?


Co do kodu to nie wiem po co przekazujesz zmienną numer_klawisza do funkcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
bo jej nie używasz.
Także używana w podanej funkcji zmienna numer_wyswietlacza jest u ciebie pewnie niepotrzebnie jako globalna.

Ale wracając do pytania. Jeżeli w tablicy masz cyfry do wyświetlenia i chcesz wpisać nową wartość, przesuwając pozostałe, to wystarczy je skopiować je na nowe pozycje. Tak zapisując łopatologicznie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 gru 2017, o 22:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

To kopiowane łopatologiczne kopiowanie można też przerzucić do pętli co pewnie wpłynie na szybkość i wielkość programu.

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO