Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

ATMEL 89C2051 komunikacia z displayom cez I2C
Jdi na stránku Předchozí  1, 2, 3
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Celeron



Založen: Apr 02, 2011
Příspěvky: 18533
Bydliště: Nový Bydžov

PříspěvekZaslal: út květen 09 2023, 14:01    Předmět: Citovat

Těžko radit. Podsvícenej nebo reflexní, barva písma, barva podkladu, barva podsvícení, velikost znaku, počet řádků, počet znaků v řádku, orientace konektoru, nakonec i řadič a znaková sada, to je milión kombinací, která se ti stejně smrskne na to co se dá aktuálně koupit.
Prostě se koukni co v kombinaci 2 x 16 nabízí prodejci a rozhodni se.
Tady máš ASM51 pro obsluhu LCD 2x16 s definicí znaků český abecedy. Adresaci a port si uprav podle svého projektu.
kód:

MOD_LCD   SEGMENT   CODE

;********************************      

   PUBLIC   DISPL,MS15,INIT,CES_AB,DELAY,D_ON,D_OFF,D_BLIK,C_L1_R
   PUBLIC  C_L2_R,D_HomE

   EXTRN   XDATA(L1,L2)
   Extrn   DAtA(Cursor)

;********************************      

   RSEG   MOD_LCD
;prEpis oBsAHu L1 A L2 Do LCD DisplEjE

DISPL:   CALL   BUSY      ;<DPTR,A,PSW,B,R0,P2>
   MOV   A,#80H      ;LINE1
   CALL   DR
   MOV   B,#16
   MOV   R0,#LOW(L1)
   CALL   DIS_O

   CALL   BUSY      ;LINE2
   MOV   A,#0C0H      
   CALL   DR
   MOV   B,#16      
   MOV   R0,#LOW(L2)   
   CALL   DIS_O   
   RET
;********************************
BUSY:   MOV   DPTR,#RBUSY   ;<DPTR,A>
BUSY1:   MOVX   A,@DPTR
   JB   ACC.7,BUSY1
   RET
;................................
            ;DISPLAY RWM, (KAM CHCI PSAT)
            ;A<-ADR.RWM (MOV A,#1000XXXXB)
DR:   MOV   DPTR,#WINST   ;       (MOV A,#1100XXXXB)
   MOVX   @DPTR,A
   RET
;--------------------------------
            ;B <- POCET ZNAKU (MOV B,#16)
            ;R0<- UKAZOVATKO NA ZAC.RETEZCE
            ;     ( MOV R0,#LOW(LINE1) )
DIS_O:   CALL   BUSY      ;VYSTUP NA DISPLEJ   
   MOV   DPTR,#WDATA
   CALL   INSTR
   INC   R0
   DJNZ   B,DIS_O
   RET
;................................
INSTR:   MOV   P2,#HIGH(L1)   ;<P2,A>
   MOVX   A,@R0
   MOVX   @DPTR,A
   RET
;********************************
INIT:   CALL   MS20
   CALL   INST_I
   CALL   MS5
   CALL   INST_I
   CALL   MS1
   CALL   INST_I
            ;FUNCTION SET
   MOV   A,#1
   MOV   B,#4
MODS:   MOV   DPTR,#INITBL
   PUSH   ACC
   CALL   DIS_ROM
   POP   ACC
   INC   A
   DJNZ   B,MODS
   RET
;................................
MS1:   MOV   R2,#0
   MOV   R3,#2   
   JMP   DELAY

MS5:   MOV   R2,#0
   MOV   R3,#8   
   JMP   DELAY

MS20:   MOV   R2,#0
   MOV   R3,#30   
   JMP   DELAY

MS15:   MOV   R2,#0      ;!!!!!
   MOV   R3,#20   

DELAY:   PUSH   B      ;<R2,R3>
   PUSH   ACC
   DIV   AB
   POP   ACC
   POP   B
   DJNZ   R2,DELAY
   DJNZ   R3,DELAY
   RET
;................................
INST_I:   MOV   DPTR,#INITBL   ;INSTR iniCiAlizACni
   MOV   A,#0
DIS_ROM:
   MOVC   A,@A+DPTR
   MOV   DPTR,#WINST
   MOVX   @DPTR,A
   CALL   BUSY
   RET
;................................
            ;iniCiAlizACni tABulkA
INITBL:   DB   00110000B   ;"6"   SET DL TO HiGH
   DB   00111000B   ;"6"   8 Bit, 2 linEs, 5x7 Dots
   DB   00001000B   ;"4"   DisplAy oFF
   DB   00000001B   ;"1"   ClEAr DisplAy, rEturn Cursor
   DB   00000110B   ;"3"   sEt sHiFt moDE (Entry moDE sEt)
;********************************
WINST   EQU   0F000H
WDATA   EQU   0F001H
RBUSY   EQU   0F002H
;********************************
D_BLIK:   MOV   A,#00001101B   ;DISPLAY ON, CURSOR OFF, BLIK ON
   JMP   INS_DI
;................................
D_ON:   MOV   A,#00001100B   ;DISPLAY ON, CURSOR OFF
   JMP   INS_DI
;................................
D_OFF:   MOV   A,#00001000B   ;DISPLAY OFF
INS_DI:   PUSH   ACC
   CALL   BUSY
   POP   ACC
   MOV   DPTR,#WINST
   MOVX   @DPTR,A
   RET
;................................
D_HomE:
   mov   A,Cursor
   mov   B,Cursor
   CjnE   A,#15,t_D_HomE
   jmp   C_l1_r
t_D_HomE:
   jnC   C_l2_r   
C_L1_R:   MOV   A,#00000010B   ;CURSOR HOME L1
   CALL   INS_DI
C_MOVE_R:
   CALL   BUSY
   MOV   A,#00010100B   ;KURSOR VPRAVO
   MOV   DPTR,#WINST
   MOVX   @DPTR,A
   DJNZ   B,C_MOVE_R
   RET
;................................
C_L2_R:   MOV   A,#00000010B   ;CURSOR HOME L2
   CALL   INS_DI
   MOV   A,#40-10H
   ADD   A,B
   MOV   B,A
   JMP   C_MOVE_R
;********************************
CES_AB:

   CALL   BUSY

   MOV   A,#01000000B      ;DLOUHE Y = 0H
   CALL   AD_C6
   MOV   DPTR,#DL_Y
   CALL   DA_C6

   MOV   A,#01001000B      ;DLOUHE E = 1H
   CALL   AD_C6
   MOV   DPTR,#DL_E
   CALL   DA_C6

   MOV   A,#01010000B      ;C S HACKEM = 2H
   CALL   AD_C6
   MOV   DPTR,#C_S_H
   CALL   DA_C6

   MOV   A,#01011000B      ;R S HACKEM = 3H
   CALL   AD_C6
   MOV   DPTR,#R_S_H
   CALL   DA_C6

   MOV   A,#01100000B      ;E S HACKEM = 4H
   CALL   AD_C6
   MOV   DPTR,#E_S_H
   CALL   DA_C6

   MOV   A,#01101000B      ;u DlouHE = 5H
   CALL   AD_C6
   MOV   DPTR,#Dl_u
   CALL   DA_C6

   MOV   A,#01110000B      ;A DLOUHE = 6H
   CALL   AD_C6
   MOV   DPTR,#DL_A
   CALL   DA_C6

   MOV   A,#01111000B      ;I DLOUHE = 7H
   CALL   AD_C6
   MOV   DPTR,#DL_I
   
DA_C6:   CLR   A         ;VYSLI 8 * DATA
   MOV   B,#8
CYK_DA:   PUSH   ACC
   MOVC   A,@A+DPTR      ;NACTI Z CODE
   PUSH   DPH
   PUSH   DPL
   MOV   DPTR,#WDATA
   MOVX   @DPTR,A         ;ZAPIS DO DEFIN. RAM DISPLEJE
   CALL   BUSY
   POP   DPL
   POP   DPH
   POP   ACC
   INC   A
   DJNZ   B,CYK_DA      ;8 RADKU ZNAKU
   RET   

AD_C6:   MOV   DPTR,#WINST      ;ADRESA C6
   MOVX   @DPTR,A
   CALL   BUSY
   RET
;-------------------------------
DL_Y:   DB   2,4,11H,11H,0FH,1,0EH,0
DL_E:   DB   2,4,0EH,11H,1FH,10H,0EH,0
C_S_H:   DB   0AH,4,14,10H,10H,11H,14,0
R_S_H:   DB   0AH,4,16H,19H,10H,10H,10H,0
E_S_H:   DB   0AH,4,14,11H,1FH,10H,14,0
Dl_u:   DB   2,4,11H,11H,11H,13H,0DH,0
DL_A:   DB   2,4,0EH,1,15,11H,15,0
DL_I:   DB   2,4,12,4,4,4,14,0
;********************************
   END

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ruprecht



Založen: Sep 28, 2005
Příspěvky: 1404
Bydliště: ZČ + JM

PříspěvekZaslal: út květen 09 2023, 15:27    Předmět: Citovat

Já bych se nejdřív podíval do toho pascalu (help, příklady, knihovny...), jaké umí obsloužit řadiče tak nějak "nativně" pomocí vestavěných příkazů, což bude asi nejjednodušší cesta (když se ptáš na)
citace:
TextXY(x,y,'string')... PLOT(x,y) MOVE(X,Y)
Jak už psali kolegové dřív, třeba ten pascal umí HD44780, pak by stačilo nadefinovat 4/8bit připojení a správné nožičky, displej si vybereš třeba v TME nebo Dratek nebo Laska nebo Ali nebo kdekoli jinde
_________________
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
voitano



Založen: Dec 02, 2009
Příspěvky: 497

PříspěvekZaslal: út květen 09 2023, 18:40    Předmět: Citovat

Jen tak ze srandy jsem zkompiloval vzorové projety v C a basicu a velikostně to vyšlo stejně. no optimalizace je u MikroElektroniky celkem problém. Počítám, že i ten pascal by vyšel stejně, tak bych ho ani tak nezavrhoval
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Mahoney



Založen: Oct 26, 2019
Příspěvky: 404

PříspěvekZaslal: út květen 09 2023, 19:26    Předmět: Citovat

Ale o tomto tu nebyla tak úplně řeč, spíš šlo o to, že Pascal (a mj. dneska i Basic) má strukturu podobnou jako C, ale ten Pascal má víc obtěžující syntaxi, kde člověk píše spoustu rezervovaných slov v podstatě zbytečně tam, kde mu v C stačí jen závorky. To je jedna věc. Druhá věc je ta, že k C mu poradí daleko víc lidí, ale to už jsem psal, a další věc je, že k C sežene daleko víc kvalitních a dobře dokumentovaných kompilátorů, a to klidně i za cenu 0 čehokoliv, což u toho Pascalu kdovíjak moc nehrozí, a zejména ne v embedded scéně. Píše to i sám, zaplatil kopec a dostal podporu minimální (a v případě nových brouků žádnou, a ani si nejsem jist, že si ji v tom MicroPascalu může sám dopsat tak, jako se může v C celkem běžně).

Třeba zrovna zde na fóru poslední dobou často probírané Arduino se svým IDE - ono to není jenom o IDE, sada nástrojů (toolchain) skrytá za tímto IDE je velmi silná, a přitom je free/opensource (stejně jako to IDE). Že netřeba psát ve Wiringu / C++, ale lze i čisté C už se tu na fóru taky probíralo. Proč toho nevyužít?

A má pravdu i Nostalcomp. Pochopím, když toho má někdo doma hromadu v zásobách, taky nějaký mám, ale i tak je s tím "děsnej opruz", a kdybych to měl dneska kupovat, tak si fakt koupím radší rovnou jakýkoliv AVR za stejnou (či o málo vyšší) cenu, ale za tu cenu s neporovnatelným výkonem i výbavou a hlavně přímou podporou toho IDE… šetří to nervy i čas, má to být radost když už se tím bavíme, ne opruz

(Ale jistým způsobem to chápu, taky nerad vyhazuju starý brouky, a to hlavně kvůli přírodě - "ať se to radši nějak využije"… potíž je, že ta využitelnost je fakt malá)

Když chce poznat, jak to chodí "přímo na železe", potřebuje si to osahat v assembleru, a až se pak odlepí z assembleru, tak nejbliižší low-level jazyk "nejvíc neomezenej" je C, jiné ho tak blízko nepustí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
RayeR



Založen: Aug 02, 2009
Příspěvky: 1403
Bydliště: Praha

PříspěvekZaslal: st říjen 16 2024, 18:14    Předmět: Citovat

Kdysi sem taky mastil neco na 89C2051 v ASM, ale jak ten program rostl a rostl, tak sem se z toho poto... Mileho svaba sem vydloubnul a nasel jsem za nej nake docela dobre pinove kompatabilni AVR ATiny a napsal to znovu v C. Ano, to ladeni pres ISP proti prendavani do programartoru je nebe a dudy...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3
Strana 3 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.22 sekund