kosov do 89c51

S

sunish

Guest
hai vse
Všeč mi je, da informacije prebere in prikaže hiper terminal v dani na računalniku, ki bo poslala 10-mestno charectors za moje 89c51 sistema z uporabo 10 sedmih odsekih displays.i mnenju charactors bodo poslali z računalnikom v ASCII format.ie 1.000,09 gm. kako je to mogoče, mi prikaže ASCII charectors v sedmih segment zaslonov? kar so vrednote i obremenitve v časomer / scon / smod registrov za boadrate of 9600?
Izvorno kodo in ckt diagram tudi dobrodošli

kako ste

sunish

 
Mislim, da ni problema.Lahko preverite PC programska oprema je v redu?Capble je v redu?89C51 je OK?Moj način je z uporabo vzorcev, po programu in da sem naredil moj izdelek.
obstaja en krat sem izgubo 2 tedna za kabel.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Vso srečo, za vas!

 
Prvič, kako setup 8051 za izbrane baudrate ..
Vse kar morate storiti je, da naložite s številko od 0 do 9 ter v ta RAZPIS Potprogram:
Koda:

; ================================================= ===

; Inicializirati Serijska komunikacijska A = Baud Rate

; S kristalno oscilator z 11.059.200 vrednost za auto-reloded Timer1 se izračuna z uporabo

; Naslednjo formulo: 256-57600/BaudRate = TH1

; Celotno formulo: 256 - [2pwrSMOD/32] * [SC / (12 * BaudRate)]Ser_Setup:

MOV PCON, # 80h; Nastavi SMOD = 1

MOV SCON, # 52h

MOV TMOD, # 20h

MOV DPTR, # BAUDRATE

MOVC A, @ A DPTR

MOV TH1, A

SETB TR1

RETBAUDRATE:

PP 0FFh; 57600 0

PP 0FEh; 28800 1

PP 0FDh; 19200 2

PP 0FCh; 14400 3

PP 0FAh; 9600 4

PP 0F4h; 4800 5

PP 0E8h; 2400 6

PP 0D0h; 1200 7

PP 0A0h; 600 8

PP 040h; 300 9; ================================================= =
 
hai

hvala vsem za vaše replys. Še vedno sem razumel, da didnot Kako lahko pretvorite v ASCII charactor na zaslonu, da na sedmih odsekih izpis? v LCD lahko neposredno pošlje charector.how je mogoče, v 7 segment zaslonov? Predpostavljam sem, uporabo pristaniških 1 za pošiljanje podatkov 2 ter pristanišča in pristanišča 3 (zapušča rxd in txd) za transitor switching.i sem ob 10 prikazuje in podatki se bodo, kot 100.0987 ali gm-159.111gm
kako stesunish

 
Predpostavimo, da imate v pristanišču P1 povezav do 7 segment izpis kot sledi:

P1.0 -> a
P1.1 -> b
P1.2 -> c
P1.3 -> d
P1.4 -> e
P1.5 -> f
P1.6 -> g

Če izberete izpis s skupno vrednost anodnega nato pisno v pristanišče P1 mora biti:

izpis podatkov - vrednost P1 (hex)

0 - x1000000 ali C0
1 - x1111001 ali F9
2 - x0100100 ali A4
3 - x0110000 ali B0
4 - x0011001 ali 99
5 - x0010010 ali 92
6 - x0000010 ali 82
7 - x1111000 ali F8
8 - x0000000 ali 80
9 - x0010000 ali 90

x = ne skrbi, vendar lahko nastavite logične "1"

Kaj ne razumeš, kako ti je ASCII dodelite šestnajstiško vrednost k tistemu, ki se zahteva za P1.
To lahko storite s tem, kar se imenuje lookup tabele, shranjene v pomnilniku koda programa.

Upam, da ste seznanjeni s to izjavo;

ORG FFF0h
DIGIT_CODES: PP C0h, F9h, A4h, B0h, 99h, 92h, 82h, F8h, 80h, 90h

Kot lahko vidite, so vrednosti dane v pomnilniku programa začenši z FFF0h, vendar pa lahko izberejo vključitev točke v skladu z vašim pomnilnik velikosti.

FFF0 - C0
FFF1 - F9
FFF2 - A4
FFF3 - B0
FFF4 - 99
FFF5 - 92
FFF6 - 82
FFF7 - F8
FFF8 - 80
FFF9 - 90

Kaj moraš narediti naslednjič je inicializacijo DPTR Registrirajte s prvim vstopom v lookup tabelo.

MOV DPTR, # DIGIT_CODE in zdaj DPTR ima FFF0h

Denimo, da ste sedaj prejete značaj v SBUF.I ne bo preveril, če je v razponu od 30h - 39h.
To je tvoje delo.

MOV A, SBUF

Če odštejemo od A zdaj 30h,

CLR C
SUBB A, # 30h

akumulatorja ima sedaj vrednost v območju od 0 - 9 decimalke.Denimo SBUF = 37h (za ASCII 7), sedaj = 07h po odštevanjem.

Po MOVC A, @ A DPTR
A ima vrednost F8h, je vrednost, ki je shranjena v pomnilniku programa FFF7h
Samo zato, ker A DPTR = 07h (začetno vrednost A) FFF0h (vrednost DPTR)

Sedaj lahko pišete na vrednost A do pristanišča P1 in vožnje ustrezne tranzistor za skupni anodi izpis o pristaniških P2 kot povpraševanje.

 
hai
hvala za vaš odgovor
I will try to
en bolj preprost doubt.i grem za uporabo "h" od 7 segment display.to prikaz "."vrednosti.IIF sem razstavljanje 107,65 je.pride med 7 in 6, se bodo prikazani na naslednjih 7 seg display.i želite prikazati. "na 7 seg z mestno 7 itself.what korak bi moral dodati, da se doseže enaka?

sunish

 
Ena možnost je, da povežete bit 7 Port1 (ali katera pristanišča se uporablja za to) za segment "h" ..
(kar lahko narediš ta postopek neposredno na pomnilniške celice, kjer vas vodijo ta števka vrednost)

Če želite, da ga vklopite jo nastavite na H:
ORL P1, # 10000000b

in če boste potrebovali ga želi izklopiti jasno je, da L:
ANL P1, # 01111111b

ali nasprotni smeri ..

S spoštovanjem,
IanP

 
Verjamem, da vaša prejeta znaki so shranjeni v majhnih pufra v notranji ali zunanji RAM.
Ko prikličete podatke iz tega blažilca in ga pošlje izpis, vsakič, ko pošljete značaja s pogledom naprej, za naslednjo v pufru.
Če je "."nato pred pošiljanjem značaja (npr. 7) jasno najbolj pomembni bit registra, ki se bodo poslali na P1.
Torej, če ste poslali akumulator vsebine P1, kjer acc ima vrednost F8h (po ASCII 37h, kot je razloženo zgoraj), pred pošiljanjem opraviti IN A, # 7Fh
Ste verjetno opazili, da P1.7 ni v uporabi še.Tako je lahko vezana na decimalno vejico na izpis števk.

Ker si uporabo P1 za pošiljanje podatkov za vse izpis je pametno uporabljati, kar se imenuje interdigit blanking.
Pred pošiljanjem podatkov na naslednjo mestno pošlje FFH za P1 za majhen čas (običajno 1 / n, kjer je n število mest), da bi prazno vse prikaže.
Narediti to P1.7 bo prazen preveč.In tvoj prejšnji decimalno vejico se ne bo pojavil lit na naslednjo.

Oprosti, IanP sem svoj post po napotitvi moje.

 
hai
u hvala za odgovor ur
Poskušal sem, vendar to ni delo
ko
sem preveril hiper lastnosti terminala. (PC exicutes program in pošiljanje rezultatov na hiper terminal), prikazuje naslednja

baudov stopnja = 1200
podatkov bitov = 7
stop bit = 1
Parnost = ak
strani stresanjem = strojna oprema

do prejema podatkov iz hiper terminala, kar je potrebno in mora uporabljati spremembe v registre mojega 89c51?
i am uporabljate 11,0592 MHz crystal.pls daj mi regiaster vrednosti.

hvala adv

sunish

 
Zdravo Sunish,

Lahko uporabite IanP kodo.To je primeren za vaš 11,0592 MHz kristal
Samo vstavite v kodo zaporedje:

Koda:;

MOV A, # 0; za 57.600

; Ali MOV A, # 1; za 28.800

; Ali MOV A, # 2, za 19.200

Ali 3 ali 4 ali 5 ....
pogled na BAUDRATE vrednosti znotraj IanP kodo

In izberite eno glede na vaše HyperTerminala baudrate nastavitve

LCALL Ser_Setup

;

 
sunish wrote:

Poskušal sem, vendar to ni delo

ko sem preveril hiper lastnosti terminala. (PC exicutes program in pošiljanje rezultatov na hiper terminal), prikazuje naslednjabaudov stopnja = 1200

podatkov bitov = 7

stop bit = 1

Parnost = ak

strani stresanjem = strojna oprema
 
hai vse
hvala za vaš odgovor
Problem je ne morem spremeniti nastavitve HyperTerminala ker isto se uporablja za nekatere druge namene also.can nismo program je 89c51 za prejemanje podatkov z baudov stopnja 1200/2400, podatki 7 bitov, one stop bit, čudno pariteto in strojne strani tresenje?sunish

 
Zdravo Sunish,

Lahko program 89C51 prejmejo podatke na 1200 bps, 1 stop bit, liha pariteta in strojne Dogovaranje.
Kot ste verjetno obvestilo je nekaj manjka.Ne morete program 89C51 prejemati ali pošiljati 7 bitov prek strojne USART ..

Vendar pa ne vidim nobenega razloga, za katere ne morete spremeniti HyperTerminala nastavitve.
Če ste odprti HyperTerminala program boste pozvani, da vnesite ime za posebno povezavo, pravijo COM 1.
Potem morate izbrati baudrate podatkov bitov, pariteta in napravami.
Ko zaprete vaš zasedanje, vas pozove, če želite, da se shrani.Izberite YES in to
je vse.
Nastavitve so lahko različne glede na vaše potrebe aplikacij.Ne klikniti na bližnjico za drugo uporabo_Odpri HyperTerminala od poti Start -> Programs -> Accessories -> Obvestila -> Hyper Terminal
Preizkusite ga.

 
Mislim, da bi rada, da simulira položaj na 1200bps in 7bits, čudno, 1Stop ..

V tem primeru obremenitve registrov, kakor je bilo že omenjeno:
TMOD -> 20h
SCON -> 52h
PCON -> 80h
TH1 -> 0D0h
in SETB TR1
Če želite upravljati 7 bitov, čudno, 1Stop kopijo Putchar in Getchar iz priloženih strani ..

Prav tako izvaja "Nullmodem z zanko nazaj Dogovaranje" (http://www.lammertbies.nl/comm/info/RS-232_null_modem.html)

S spoštovanjem,
IanP
Oprosti, ampak, kar potrebujete za prijavo v to prilogo, da si ogledate

 
YES, lepo trik z ACC.7 nadomesti z P za pošiljanje / prejemanje 7 bitov.
Nikoli uporabljena 7bits za serijsko komunikacijo,
zdaj pa hvala za komentar.

 
imam isti problem lahko u PLZ chk out to kodo

# vključujejo <AT89X51.H>

char getCharacter (ničen)
(
char CHR / * spremenljivka, da imajo novi znak * /
medtem ko (RI! = 1) (;)
CHR = SBUF;
RI = 0;
vrnitev (CHR);
)neveljaven glavne (neveljaven)
(
/ / int i;
char CHR / * spremenljivka, da imajo znake * /
SCON = 0x50 / * mode 1, 8-bit uart, omogočite sprejemnik * /
TMOD = 0x20 / * časovnik 1, način 2, 8-bit osvežite * /
TH1 = 0XFD / * 9600 * /
TR1 = 1;
TI = 1;
medtem ko (1)
(
CHR getCharacter = ();
/ / for (i = 0; i <3300; i )
//{};
P1 = CHR;

)
)

 

Welcome to EDABoard.com

Sponsor

Back
Top