z klawiatury do wyświetlacza 7seg. na AT2051

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
tytusek
-
Posty: 24
Rejestracja: 07 maja 2006, 20:09
Lokalizacja: Tychy
Kontakt:

z klawiatury do wyświetlacza 7seg. na AT2051

Post autor: tytusek » 23 cze 2007, 20:24

Chciałbym się nauczyć programować mikrokontrolery. Czytałem o asemblerze, ale to dla mnie czarna magia na razie :cry: . Poradzono mi, że łatwiej pojąć Bascoma. Programowałem już kiedyś w pascalu i trochę w C, więc wiem z doświadczenia, że łatwiej przerabia się jakiś prosty program. Wtedy szybciej można zrozumieć jaka funkcja za co odpowiada. Zrobiłem taki prosty układ na Max 232 i 89AT2051 z wbudowanym wyświetlaczem 7 segmntowym. Chcę sprawdzić czy jest prawidłowa transmisja danych z klawiatury na wyświetlacz. Do tego potrzebny jest program. Znalazłem na necie podobny program do transmisji, ale na LCD. Tego akurat pełno, a na 7 seg. nic nie ma. Nie wiem co by tam zmienić, żeby grało z moim urządzeniem. Jak ktoś się czuje biegły w programowaniu i ma cierpliwość mi to wytłumaczyć, to byłbym bardzo szczęśliwy :grin: . Załączam plik w bascomie.
-----------------------------------------------
pozdro dla wszystkich :cool:
Załączniki
LCD.rar
plik LCD.bas i LCD.txt
(709 Bajtów) Pobrany 672 razy

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 24 cze 2007, 18:11

Program dla '2313 z rodziny avr, był opisywany w Mikroprocesorowej Oślej Łączce, bascoma '51 nigdy nie używałem, ale ogólna zasada działania jest podobna:
- posiadasz tyle zmiennych, ile wyświetlaczy
- uC ma za mało pinów, aby jednocześnie wysterować wszystkie, więc trzeba zastosować sterowanie multiplekserowe
- wyświetlacze led (zwykle) nie posiadają sterownika, więc należy je odświeżyć, niekoniecznie trzeba używać timera
- wybieramy aktywny wyświetlacz
- wybieramy która ze zmiennych reprezentujących poszczególne wyświetlacze na zostać wyświetlona
- konwertujemy zmienną z kodu binarnego na kod 7-segmentowy i wystawiamy ją na port sterujący wyświetlaczami.
Trochę to zawiłe, ale za to może być tańsze i/lub ładniejsze i/lub większe i czytelniejsze od taniego lcd podświetlanego na żółtozielony kolor.
Załączniki
7seg_bas.rar
- - - -brak- - - -
(1.12 KiB) Pobrany 686 razy

tytusek
-
Posty: 24
Rejestracja: 07 maja 2006, 20:09
Lokalizacja: Tychy
Kontakt:

Post autor: tytusek » 25 cze 2007, 16:10

Ale się napracowałeś! :shock: Nie myślałem, że to programowanie jest takie zawiłe. Rozszyfrowanie tego zajmie mi chyba jakiś tydzień. Muszę się zaopatrzyć w jakiś dobry cooler do chłodzenia szarych komórek, tym bardziej, że pogoda nie sprzyja myśleniu. :wink:
W międzyczasie zrobiłbym jakiś prosty układ elektroniczny, co małymi kroczkami wprowadzi mnie w świat mikrokontrolerów. Zaproponuj mi od czego zacząć. Na jaki µC warto się uczyć co ma przyszłość, bo słyszałem że Atmele to przeżytek. Podobno kompilator Bascoma jest płatny, a ja mam Bascom-8051-demo. Czy na tym coś skompiluję :?:
Dzięki za to, że tak rzetelnie podzieliłeś się ze mną swoją wiedzą :grin:
-----------------------------------
pozdro

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 25 cze 2007, 16:48

Bascom jest płatny, ale można za darmo pobrać wersję z ograniczeniami (między innymi kod wynikowy nie morze być zbyt duży (dla wersji avr jest to 4KB). Inną sprawą jest wersja kompilatora: Bascom51 nadaje się do procesorów '51, z kolei BascomAvr nadaje się dla procesorów AVR jak rodzina Tinny czy Mega.
tytusek pisze:słyszałem że Atmele to przeżytek.
Nie możesz odrzucać procesorów firmy Atmel, ponieważ rodzina '51 to przeżytek (choć jeszcze długo będzie wystarczać w pewnych zastosowaniach) a ta sama firma produkuje jeszcze procesory typu Avr czy Arm.
Co do sposobu sterowania wyświetlacza 7-seg top radze: na początek radze zacząć od jednego wyświetlacza (i zajęcia całego portu) oraz prostego licznika typu ,,co sekundę zwiększ stan portu'', potem dodać instrukcję zmiany tych kodów dwójkowych na normalne cyfry (lookup + etykieta z danymi) a na koniec szybka zmiana wyświetlacza i znaku wyświetlanego (czyli właśnie multipleksowanie).

tytusek
-
Posty: 24
Rejestracja: 07 maja 2006, 20:09
Lokalizacja: Tychy
Kontakt:

Post autor: tytusek » 26 cze 2007, 18:56

Nie chodziło mi o wyświetlacze, ale jakieś bardzo proste układy. Nie mogę się połapać w takich długich programach. Np w pascalu jest szablon: nazwa programu, deklaracja stałych i zmiennych, program. A jak to jest w asemblerze czy bascomie?
-------------------------------------------------
pozdro

ZbeeGin

Post autor: ZbeeGin » 26 cze 2007, 20:18

tytusek pisze:A jak to jest w asemblerze czy bascomie?
W zasadzie tak samo. Na początku jest deklaracja procesora i startowego adresu kodu w przypadku asemblera. Reszta to juz w/g uznania.
Jeśli lubisz porządek w kodzie, to zrobisz to tak by wszystkie potrzebne deklaracje, makra, itp. były na początku programu.

Przykład BASCOM:

Kod: Zaznacz cały

$regfile = "m8def.dat"		'procesor Mega8
$crystal = 8000000		'taktowany 8MHz

Dim A As Byte			'zmienne
Dim B As Word

A = 0				'ustawienia początkowe zmiennych
B = 0

Do
  A = A + B			'operacje programu w pętli na zmiennych
  B = B + 1
Loop
Przykład ASM:

Kod: Zaznacz cały

.include "m8def.inc"			;deklaracja procesora i jego rejestrów

.equ PORT_DATA_OUT = PORTB			;deklarujemy przyjazne nazwy
.equ PORT_DATA_INP = PORT_DATA_OUT - 2
.equ PORT_CONFIG = PORT_DATA_OUT - 1
.def ACC = R16				;rejestr ogólnego przeznaczenia R16 będzie naszym akumulatorem

.dseg
zmienna:  .db 1				;rezerwujemy pamięć danych na zmienną

.cseg					;rozpoczynamy kod
.org 0x0000				;od adresu 0000h
rjmp Reset				;skok dalej

.org 0x0020				;przesuwamy dalszy kod pod adres 0020h
ldi ACC, 0x55				;ładujemy akumulator stałą
out PORT_DATA_OUT, ACC			;którą wyślemy na nasz port wyjściowy
inc ACC					;zwiększymy stałą o 1
sts zmienna, ACC			;i przepiszemy do zmiennej (masło maślane, ale to przykład)

_petla:
rjmp _petla				;i tutaj się zapętlimy do czasu aż prądu braknie. :)

tytusek
-
Posty: 24
Rejestracja: 07 maja 2006, 20:09
Lokalizacja: Tychy
Kontakt:

Post autor: tytusek » 26 cze 2007, 20:53

No nie, już mi się w głowie kręci :???: Jednak zacznę od sklecenia jakiegoś prostego układu.
Potem będę myślał nad programem, bo dla mnie cztery linijki kodu rozgryźć to już ciężko.
Tylko jeszcze jedno pytanie, obojętnie na jakie procki będę pisał to potem jest potrzebny programator i kompilator. To za co się na początek wziąć? A może jakiś niedrogi uniwersalny programator pod kilka typów procków? :roll:
----------------------------------------------
pozdro i dobranoc :grin:

[ Dodano: 2007-06-27, 13:18 ]
W jednym z postów do początkującego usera polecono mu poszukać na "oślej łączce".
Gdzie to jest, bo ne widzę takiego działu na forum? :cry:
----------------------------------------------
pozdro

Npn
-
Posty: 35
Rejestracja: 19 maja 2007, 3:09
Lokalizacja: Kraków

Post autor: Npn » 29 cze 2007, 5:14

tytusek pisze:jest potrzebny programator i kompilator. To za co się na początek wziąć? A może jakiś niedrogi uniwersalny programator pod kilka typów procków?
Niedrogie i uniwersalne programatory istnieją dla procków posiadających ISP (od Attiny do Atmega, w tym 89Sx051). Najprościej i najtaniej jest podłączyć układ wykonawczy do kompa za pomocą czterech rezystorów (+masa) - popatrz w Bascomowym helpie na dział 'Supported Programmers -> Sample Electronics ISP programmer'. Jednak bezpieczniej dla portu LPT będzie zrobić za parę zł (bądź kupić za kilkanaście) programator STK200/300.
Programowanie procesorów 89Cx051 wymaga programatora równoległego zbudowanego na dwóch ekspanderach magistrali I2C (po ok. 5zł za sztukę), którego schematy można znaleźć albo w necie, albo w artykule BascomCOLLAGE 03/2000 (Uwaga!!! - R2 powinien być 680, nie 470).
tytusek pisze:polecono mu poszukać na "oślej łączce".
"Ośla łączka" to nazwa cyklu artykułów o podstawach elektroniki, które były dawno, dawno temu publikowanych w EdW.

ODPOWIEDZ