... void lcd_send_i(unsigned char instruction) //zapisz instrukcję sterującą do LCD { PORTA = (PORTA & 0xFB); //cbi(PORTB,lcd_rs); PORTA = (PORTA | 0x08); //sbi(PORTB,lcd_e); PORTA = ((PORTA & 0x0f) | (instruction & 0xf0)); //przygotuj starszy półbajt do LCD asm("nop");...
http://obrazki.elektroda.pl/5937161900_1... Chciałbym zaprezentować prosty licznik Geigera, jaki ostatnio wykonałem. Urządzenie oparte jest o powszechnie znaną radziecką tubę STS-5. Lampa ta jest ciekawa, ponieważ jest stosunkowo czuła. Jako element sterujący zastosowałem mój ulubiony mikrokontroler rodziny 8051 typu AT89C2051 z typowym...
Wystawiaj na wyświetlacz zmienne lub stałe. np. x1=1000010 to powinno być duże Ż rosyjskie. LCD x1 Znaki cyrylicy są w wyświetlaczu. Młodszy półbajt 0000 do 1111 a starszy 1000 i 1001
... Łączność LCD z procesorem musiałaby być obustronna...?. Funkcja Shift na zmiennej powoduje oczywiście przejście w lewo lub w prawo, ale na bitach tak..?. Ja na Twoim miejscu , nie korzystałbym z Shiftlcd , tylko raczej z Locate. Cały problem , sprowadza się w zasadzie do operowania pozycją kursora , za pomocą klawiszy góra/dół . Kursor_prawo:...
W atmedze8 aby wpisać coś do UCSRC trzeba dodać (1<<URSEL), inaczej całość zostanie wpisana do UBRRH. Niektóre Atmegi tak mają (np 162). Inspirację Atmel chyba brał z UARTa 16C45x/55x. Jeszcze lepszy jest 161, gdzie straszy podzielnika jest "wspólny" dla UART0 i UART1. Napisałem "wspólny" bo młodszy półbajt odpowiada za jeden UART, starszy za...
dało by się zaprogramować jakoś w LD? Jakby sie zaprzeć to tak ale pewnie nie starczy zasobów no i szybkość działania byłaby mała. LD to proste funkcje logiczne, multiwibratory liczniki. Z tego składa sie uC ale ma ich dziesiątki tysięcy. LD jest interpretowany, przez co koszmarnie wolny. Jest pewna opcja. Widziałem kiedys projekt, w którym podłączono...
Jeśli się resetuje to sprawdź czy podprogram obsługi przerwania (lub inny podprogram) jest zakończony przez return. Jeśli chcesz wyświetlać nieznaczące zero to: If Minuta < 10 Then Lcd "0"; Lcd Minuta lub Zamieniasz zmienną minuta na postać BCD i wyświetlasz starszy półbajt i młodszy jalo osobne cyfry.
Panowie, szanowni koledzy.... Powiem szczerze chyba ktoś mnie, źle rozumie... Tą klawiaturke znam i właściwie w swoim działającym układzie wykorzystuję jeden PCF więc sama klawiaturka ograniczona jest do 8 przycisków. Ona działa i ma się dobrze. Mnie chodzi o coś takiego... podłączam do jednego portu procesorka układ np DS2405 i odczytuję jego adres...
Witam. Jakiś czas temu prowadziłaem temat Zumek napisał mi kawałek kodu który nie za bardzo mi działa. O ile Starszy półbajt Hb zmienia się prawidłowo o tyle młodszy półbajt zmienia się cyklicznie bardziej przypadkowym cyfrom i nie bardzo wiem co z tym zrobic. Czy ma ktoś może jakiś pomysł?. Do układu mam dołączoną klawiaturę I2C na PCF-ie kodzik programu...
Inicjalizacja LCD w tryb 4-bit według producenta HD44780: 1. czekamy > 15ms po włączeniu zasilania 2. wysyłamy 0x38 (jako 1 bajt, nie połówki) 3. czekamy > 4.1ms 4. wysyłamy 0x38 (j/w) 5. czekamy > 100us 6. wysyłamy 0x38 (j/w) i teraz: 7. wysyłamy 0x28 (function set 4-bit) jako dwa 'półbajty'. Ponadto już możemy sprawdzać BF (busy flag). Dopiero teraz...
Dokładnie miałem nadzieję, że tutejsi guru od razu wypatrzą jakiś błąd. Wyszedłem z założenia, że to nie windows - raz działa raz nie. Działało na jednym procku to będzie i na innym. A "supertajny" kod (nie mojego autorstwa), nie przypuszczałem, że komuś będzie się chciało przeglądać to - proszę bardzo: lcd.h #include <avr/io.h> #include <util/delay.h>...
Witam, po czwartym dniu studiowania forum, googli itp. Doszedłem do wniosku, że jak założę nowy temat to ktoś się ulituje i nie pisząc o lenistwie, wyszukiwarkach itp odpowie na parę pytań. Do tej pory pisałem w bascomie, ze względu na koszty postanowiłem sie przesiąść na C- i tu zaczął się jakiś koszmar. Przyzwyczajony do bascomowej składni zetknąłem...
Tutaj jest tak to zrobić w windowsie: #include<iostream> #include<windows.h> using namespace std; int main() { WORD kolor; kolor=0x00f5; HANDLE uchwyt; uchwyt=GetStdHandle(STD_OUTPUT_HANDL... SetConsoleTextAttribute(uchwyt,kolor... cout << "test" << endl; system("pause");...
Witam. Z tym powyżej jakoś sobie poradziłem i jakoś sie kompiluje, ale nie chce do końca działać. Więc porzuciłem tą koncepcję i chce wstawkę asemblerową rozwiązać w inny sposób ale tu pojawił się kolejny problem. Napisałem wstawkę wg instrukcji z helpa do acr-gcc i kompilator wywalił mi takie coś... void instr_lcd(unsigned char instr) //przesłanie...
Ten kod działa(jedynie opóźnienia mogą być złe - trzeba pokombinować). Przeanalizuj sobie. http://obrazki.elektroda.pl/6776092100_1... Pozdrawiam
Musisz podać więcej szczegółów: - jaki procesor, - jaki wyświetlacz, - jak podłączony wyświetlacz, - jak podłączona klawiatura, - ... Najlepiej bedzie jak załączysz schemat Poniżej masz przykład obsługi klawiatury matrycowej 4x4 z książki "Mikrokontrolery AVR w praktyce" /***************************************... /* Ćwiczenie...
Walczę właśnie z DS18B20. Mój procek to AT90S2313 na płytce ZL1AVR, a kwarc 8 MHz. 1-Wire wychodzi tam na pin nr 3 portu D, a pin VCC DS18B20 jest podłączony do 5V. Port B służy do obsługi wyświetlacza. (To info dla tych co nie znają ZL1AVR ;-) ) Program pisałem w AVR-GCC na podstawie informacji ze strony www.mikrokontrolery.net i książki "Mikrokontrolery...
Witam Od kilku dni staram się uruchomić program z książki Mikrokontrolery AVR w praktyce. Po dodaniu makr sbi i cbi program się skompilował, ale kompilator zwracał ostrzeżenia: Repeated variable name __c Repeated variable name __c within block. Rename it typedef debugging not supported COFF file contains inconsistencies or unsupported features. Debug...
Witam, Mam taki problem - napisałem sobie procedury do obsługi wyświetlacza LCD, nie mogę tylko poradzić sobie z wyświetleniem na LCD zawartości rejestru (16 bitowy). Procesor ATmega 8. Próbowałem takie coś: void pisz_int(unsigned int t) { unsigned char bufor[20]; itoa(t,bufor,10); pisz_text(bufor); } ale nie...
Jestem początkującym w C. Napisałem sobie kilka funkcji sterujących wyświetlaczem LCD (1x16). Przy taktowaniu 1Mhz wszystko pracuje znakomicie. Przy innych częstotliwościach mikroprocesora (2, 4 i 8Mhz) wyświetlacz nie pracuje poprawnie, wyświetla niepełne napisy lub przypadkowe znaki. Mikrokontroler jest taktowany wewnętrznym generatorem RC. Oczywiście...
Ok , postaram się to wyjaśnić ;) Sub Modyfikuj_polbajt(byval Polbajt As Byte , Byval Zmien As Byte) 'Polbajt , to pozycja kursora na LCD (1-16) 'Zmien , to wartość 1 gdy zwiększamy o 1 , lub 255 gdy zmniejszamy o 1 Local Hb As Byte 'zmienna pomocnicza dla starszych(4-7) 4-bitów z bajtu Local Lb As Byte 'zmienna pomocnicza dla...
Wyświetlacze LCD charakteryzują się interfejsem 8-bitowym, tworzonym przez 8 linii danych DB0...DB7. W praktyce stosuje się interfejs 4-bitowy z linii DB4...DB7. W trybie 4-bitowym transmisja bajtu dokonuje się w dwóch etapach - w pierwszym przesyłany jest półbajt starszy, a w drugim półbajt młodszy. Wybór sposobu sterowania zależy od konstruktora który...
Autor tego programu stwierdził, że plik pamięci danych (z EEPROM) będzie miał rozszerzenie eep i tak zostało. W rzeczywistości to plik o takiej samej strukturze i formie zapisu danych, jak te z rozszerzeniem bin. Jak odczytywał pamięć programu procesora (ROM) to jego plik ma bodajże rozszerzenie rom. Pisano Panu - wybór procesora NIE 705 a 05, czyli...
Miałem kiedyś problem z hieroglifami na LCD gdy używałem magistrali 4 bit i wskutek "czegoś" zamieniał się młodszy półbajt ze starszym. Pokombinowałem z timeoutami, zacząłem sprawdzać flagę zajętości i zaczęło śmigać:)
BinaryHex 0 - - - - - - 0 1 - - - - - - 1 10 - - - - - 2 11 - - - - - 3 100 - - - - 4 101 - - - - 5 110 - - - - 6 111 - - - - 7 1000 - - - -8 1001 - - - -9 1010 - - - -A 1011 - - - -B 1100 - - - -C 1101 - - - -D 1110 - - - -E 1111 - - - -F To jest nibble. Jak starsza połówka jest 0x0, to jej nie ma, a jak jej nie ma, to po co ją wysyłać? Wystarczy młodszy...
Do komunikacji 4-ro przewodowej nie potrzebujesz podłączać pinów D3-D0 wyświetlacza. Można jedynie podpiąć je do masy. Ja jeszcze dodatkowo pin R/W podpinam do masy (nie czytam stanu zajętości LCD, tylko odczekuję odpowiedni czas). Jeśli chcesz, to mam w asemblereze napisane procedury do obsługi LCD 2x16 właśnie z komunikacją 4-ro przewodową (zarówno...
Jak za pomocą operacji and w asmie uzyskać operację modulo 15 ? (miałem taki pomysł że wszystkie 8 bit liczby mod 15 mają taką własność że młodszy półbajt jest negacją starszego ale może jest jakiś prostszy sposób np tak jak dla modullo dla liczb będących potęgą dwójki gzdzie operacja A mod B jest równoważna operacji A AND (B-1) ) Ktoś wie ? Zamykam....
Trochę nad tym posiedziałem i wiem ja tworzą się śmieci: - jest to suma logiczna bitu który chcę zapalić, młodszych 4 bitów adresu kolumny i najmłodszego bitu. Skąd bierze się młodsza część adresu? Przecież wystawiam na port danych wartość 0xff - czyli port działa jako wejściowy... A skąd bierze się najmłodszy bit to już w ogóle zagadka. Dodam że mikrokontroler...
Kolega Samuraj jak najbardziej ma racje. Protokół jest tu najważniejszy. Ja chciałbym tylko dodać ze swojego doświadczenia tyle, że jeśli chodzi o RS232 i transmisję asynchroniczną, to warto stracić trochę cennego czasu (jeśli oczywiście nie jest krytyczny) ale informacje po RS wysyłać w sposób znakowy. Oznacza to że dane (1 bajt) są wysyłane w postaci...
... Gdzie zrobiłem błąd?? plik lcd01.h ... #define LCD_DATA_PORT LCD_PORT /* port for 4bit data (Pin 0..3) */ ... LCD_DATA_PORT = (LCD_DATA_PORT&0x0f) | (instr&0xf0); // przygtuj starszy polbajt do LCD ... Wysyłasz dane na starszy półbajt(Pin 4...7) portu , zamiast na młodszy ;) Piotrek
Bo tylko jedna linia będzie przyciemniona. Tak ma być. I dlaczego dajesz reti na końcach procedur? Reti jest dla procedur przerwań. I przeczytaj co pisałem o inicjalizacji bo dalej byki robisz. W pewnym momencie masz przesyłać dane w dwóch bajtach. Jeden po drugim bez pętli opóźniających. Zobacz u siebie. Po drugie nie odpisałeś na pytania i dalej nie...
Nie piszę w C, ale jak tak patrzę na Twoją procedurę inicjalizacji to coś ona za krótka jest. Mniej więcej powinno być tak - najpierw wysyłasz 30h trzy razy a potem jeden raz 20h co oznacza przejście na tryb 4 bitowy. Od tej pory instrukcje do LCD musisz wysyłać w dwóch półbajtach - najpierw starszy półbajt, potem młodszy. Tak więc to jeszcze nie koniec...
Pewnie chodzi Ci o to, że powinienem odczytać starszy półbajt, potem młodszy a dopiero potem sprawdzić flagę busy? Nigdzie nie spotkałem jednoznacznej informacji, że flaga busy nie może zmieniać się podczas trwania stanu wysokiego na enable. Bardzo możliwe, że flaga busy jest przekazywana bezpośrednio na pin D7 podczas odczytu starszego półbajtu ostatniego...
znowu troche asm-a. zrób tak ( np ): zmiennej d1 - pierwszy odczytany bajt zmienna d2 - drugi odczytany bajt 1 - zerujesz w pierwszym bajcie 4 najmłodsze bity ( mnożysz logicznie przez 11110000b ) 2 - wymieniasz mładszy pół bajt drugiego odczytanego bajtu z młodszym półbajtem pierwszego odczytanego bajtu ( ciekaw jestem ile razy bedziesz czytał ten...
zrobiłem z tą flagą wewnatrz przerwania tzn : //---------Funkcja 8--obsługa przerwania licznika T0-- SIGNAL (SIG_OVERFLOW0) { licznik++; if(licznik==31) { licznik=0; update_required=1; } TCNT0 = 0x03; } funkcja main: while(1) { sei(); PORTB |= _BV(3); // rozładowanie kondensatora C20 pomiar_U1;...
Witam Jeżeli masz książkę Andrzeja Rydzewskiego to na stronie 82 zobacz stan początkowy rejestrów. Na stronie 138 jest opis rozkazu PUSH to może coś się wyjaśni W skrócie, jeżeli nie przestawisz początku stosu to pierwszy bajt odłożony na stos znajdzie sie pod adresem 08H (jest to adres rejestru R0 z banku rejestrów nr1 ) standardowo używany jest bank...
(at)Pittt zauważyłeś co driver robi z półbajtami ? Raz wartość jest na starszym a raz na młodszym. A przy pojedynczym odczycie potrafi wziąć oba półbajty. Dziwny ten modbus. Jakby czytał z przesunięciem o jeden rejestr ale nie zawsze.
Jak wysyłasz jakąkolwiek daną do LCD w trybie 4-ro bitowym, to musisz napierw wysłać starszy półbajt, potem młodszy. Zrób tak: LCD_ZAPIS: swap ACC push ACC orl Data_LCD,#0F0h orl A,#0Fh anl Data_LCD,A setb En mov R3,#5d lcall Delay_ms clr En pop ACC swap A orl Data_LCD,#0F0h orl A,#0Fh anl Data_LCD,A setb En mov R3,#5d lcall Delay_ms clr En ret...
dobra, doszedłem jak to robić dla bitów po przecinku... Polega to na tym, że część całkowitą konwertuje dokładnie tak jak to jest wyżej opisane. Natomiast z tym co po przecinku robie tak: 1. Przesuwam o 1 pozycje w prawo, czyli pierwsze wchodzą najmłodsze bity 2. Tu można na kilka sposobów, wynik bedzie taki sam: a) jeśli po przesunięciu w danej...
Witam, Panowie proszę o jakąś pomoc, jak już wspominałem w którymś poście jesem świeżynka jeśli chodzi o C ale rzuciłem się na zrobienie własnej obsługi LCD no i gdy ją robię tak że linia RW jest na stałe do GND i działam tylko na opóźnieniach to wszysko chula.... ale gdy chcę odczytywać Busy Flag to masakra :( .... wiem wiem temat był wałkowany na...
...wedlug Myke Predko (protoplasta ktory wsadzil to na PIC'a) R1 i D1 dzialaja jako bramka AND wiec na pinie 13 i zarowno na wejsciu powinna pojawic sie "1" zeby E zadzialalo.... stad specjalne przygotowanie danych w zrodle programu.... x x RS D4 D5 D6 D7 E ... Kiedy tak sobie patrzę na schemat podłączenia LCD do 74164 i na kod programu , to mi się...
http://obrazki.elektroda.pl/9470588900_1... Poznajmy Nibblera - 4-bitowy procesor, zbudowany w domu. Od czasu, kiedy autor stworzył komputer BMOW1, otrzymywał wiele zapytań, jak zabrać się do skonstruowania w domu własnego komputera. I jako że BMOW to skomplikowana maszyna, autor postanowił opracować urządzenie, którego działanie będzie...
Witam. Ostatnio analizuję kodzik z tej stronki: http://hobbyelektronik.org/Elo/AVR/3510i... Zastanawiająca jest tu tablica znaków. Mianowicie zapis nie wygląda tak jak standardowo, czyli dla każdego znaku jest np zapis ośmio-bajtowy, tak że nawet rzędy pikseli o wartości 0x00 są zapisywane do tablicy, przez co jest marnowane miejsce. Tu wygląda...
Witam, Proszę o pomoc, sprawa jest następująca - programuje uC at90s2313 przez złącze ISP, piszę program pod avrstudio 4.12, kompiluje avr - gcc. Prośba odnosi się do programu: #include "header.h" unsigned char liczt0; //Licznik wejść do przerwania timera0. //Klawisz jest badany, gdy liczt0=0 unsigned char lkursor; //licznik wejść do przerwania timera0...
młodszy słowo młodszy specjalista młodszy automatyk
pilot centralnego zamka schemat solaredge konfiguracja 4life tracer
usterka elektronik wzmacniacz contra schemat
Instrukcja serwisowa Privileg Super 5010 - gdzie znaleźć? Huawei E3372h, E8372h, ZTE MF833V – modem USB do radia Android, stały Internet w samochodzie