problem grænseflade 89c2051

Y

yviswanathbe

Guest
Hej venner,
Jeg gør projektet opkaldt Auto Måling af Valgt fra strømforsyningen til en af min ansøgning.
Jeg er at forstærke det analoge udgang via en OP-Amp OP07, det forstærkede output gives til ADC, der er jeg over til digital, denne digitale værdi Jeg tager på en af Port of microcontroller (89c2051). Jeg ønsker at få denne værdi ved hjælp af serielle communication.for at jeg har tilsluttet den microcontroller til max233.

mit problem er ingen værdi vises i Hyperterminal.
kan ethvert organ fortælle mig, hvad problemet har jeg?
Koden jeg har brugt er

#
include <reg52.h>
#
include <stdio.h>sbit adc_port = P1;
sbit rd = P3 ^ 0;
sbit WLO = P3 ^ 1;
sbit CS = P1 ^ 2;
sbit intr = P1 ^ 3;

void conv ();
void læse ();
void transmittere (usignerede CHAR);usignerede CHAR adc_val;

void vigtigste ()
(
TMOD = 0x20;
TH1 =- 3;
SCON = 0x50;
TR1 = 1;
TI = 1;
mens (1)
(
conv ();
læse ();
P3 = adc_val;
)
)
void conv ()
(
CS = 0;
WR = 0;
WR = 1;
CS = 1;
while (intr);
)

void læse ()
(
CS = 0;
RD = 0;
adc_val = adc_port;
rd = 1;
CS = 1;
)

void transmittere (usignerede CHAR data1)
(
SBUF = data1;
while (! TI);
TI = 0;
)thanks in advance.
Beklager, men du skal login for at se denne tilslutningskrav

 
Do sieci trafił uaktualniony plan wydawniczy Intela obejmujący procesory dla komputerów desktop. Mówiąc najogólniej pokrywa się on z wcześniejszymi informacjami jakie podawaliśmy na łamach TPC odnośnie premiery poszczególnych rodzin układów. Jeszcze w tym roku, a mianowicie w trzecim kwartale bieżącego roku, portfolio Intela poszerzy się o chipy Ha...

Read more...
 
Hi viswanath;

I dont se fremsender funktion, der hedder et sted i dit program.Dont gøre TI = 1 i starten.gøre EA = 1.Første display på LCD og se om ur få outout.

Sådan appraoch?
Første konvertere ADC værdi.Opbevares i en variabel.flytte variabe data til SBUF og fremsender som ur gør.Også holde denne fremsender rutine i mens (1) uendelig løkke.

Er u bruger en afbryder i mens (intr);

der er flere possiblilties som matcher baudrate af Hyperterminal og krydstjekning hte serielt kabel, der ur bruger.Jeg vil tale om dette spørgsmål for u gang u bekræfte, at do u get produktion i LCD.

 
hi shiv,
thanx 4 besvarelse.

di jeg er nødt til at skrive afbryde funktionen til dette ....
og hvad Abt PCON og TCON registre, har jeg brug for at bruge disse registre.

 
er der ikke behov for nogen knid af afbryder.efter omregning bare kalde transmittere funktion.se om Hyperterminal er også fastsat for 9600 baudhastighed og 8 data bits og 1 stop bit og Strømningsreguleringen ingen.Lagt efter 33 sekunder:er der ikke behov for nogen knid af afbryder.efter omregning bare kalde transmittere funktion.se om Hyperterminal er også fastsat for 9600 baudhastighed og 8 data bits og 1 stop bit og Strømningsreguleringen ingen.
hvis ur bruger KEIL IDE derefter u kan kontrollere i simulator selv.

 
ok sir,

Hvorfor er seriel kommunikation ikke behøver afbryde og i hvilken type ansøgninger, vil vi bruge afbryde koncept for seriel kommunikation.

Kunne du præcisere mig, at ovenstående to forespørgsler.

tak.

 
De grundlæggende generelle formål controller, der har UART har interne stifter DI og TI, som tager cares af afbryder.Andre interrupts vil blive betjent af den registeransvarlige af de prioriterede tildelt.
Selv om UART i 8051 i fuld duplex, vi bruger dem som en halv duplex ved at overvåge TI og DI ben.
Uden disse afbryder serielle comm, virker ikke.

behage sende mig din mob.nummer, hvis tvivlen er ikke afklaret.Jeg vil kalde u hvis ur inden Karnataka

 
hi shiv,

Jeg fik succes med seriel kommunikation.
Problemet som jeg vender nw er med ADC.
i henhold til datablad for 5V med 2,5 som Vref / 2 output binære bør FF (11111111), men jeg får omvendte for 0V input jeg får FF som produktion og for 5V input jeg får 00000000 som output.

kunne du har en idé om hvor problemet mighht være?

actuallly input til ADC er i intervallet 0-4.3V.
Vref / 2 som jeg har brugt i kredsløbet er 2.5volts, er det korrekt r hw do vi beregner Vref spænding ..

min hob er 09963517504.
sende mig ur's.

tak,
viswanath.

 
Kontroller Vref dokumentation af manualen.

Nogle gange register, som vi er nødt til at flytte Vref værdi kan konfigureres negativt.

Hvis Vref udvælgelsen er gennem hardware er vi nødt til at henvise dokument.

Hvis det er muligt sende databladet af ADC ur bruger.Er det ADC0808 eller enhver anden virksomhed.Jeg vil downloade databladet og se mig selv.

 
Hej,
Jeg bruger ADC0804 ni har lagt i databladet.Lagt efter 2 minutter:lem,
nogle Problemet kommer, når knyttet,
plz hente den fra siden, jeg bruger ADC 0804 fra nationale halvledere

 
Med hensyn til ADC jeg tror Du er nødt til at tjekke referencespænding punkt .. fordi der vil også være negativ reference ..
Hvorfor Vref / 2?Bruger du en potentiel adskillelsesstolpen af / 2 ved referencepunkt?
Jeg håber, at Analog input De giver også Positive ...
Er der nogen konvertering Logic udvælgelse, der kan kontrollere gennem software?
Hvad er ADC logik?
Successive tilnærmelse?R2R stigen logik?
Jeg tror, jeg beder spørgsmål til Dem, men det ville faktisk kan hjælpe dig.
Please cofirm spændingen nøjagtigt på stifter af controller ..

 
Hi shiv,
ADC er 8 bit parllel Successive Tilnaermelse type.

 
hi shiv,
nu mit kredsløb er ok med ADC.
Jeg er ikke i stand til at læse konverteres data fra microcontroller i pc'en.

Jeg sender min kode, plz fortælle mig, hvor jeg gør forkert,#

include <stdio.h>#

include <reg51.h>
sbit MYDATA = P1;sbit rd = P3 ^ 0;sbit WLO = P3 ^ 1;sbit cs = P1 ^ 2;sbit intr = P1 ^ 3;
usignerede CHAR modtager ();void transmittere (usignerede CHAR);usignerede CHAR chr;usignerede CHAR resultat;
void vigtigste ()(usignerede CHAR værdi;SCON = 0X50;TMOD = 0X20;TH1 =- 3;TR1 = 1;TI = 1;MYDATA = 0XFF;intr = 1;rd = 1;WR = 1;mens (1)(WR = 0;WR = 1;while (intr == 1)RD = 0;værdi = MYDATA;rd = 1;transmittere (værdi);))
void transmittere (usignerede CHAR data1)(SBUF = data1;while (! TI);TI = 0;)tak,
visu

 
sende mig din kode for referenceLagt efter 10 minutter:ADC PROG
Beklager, men du skal login for at se denne tilslutningskrav

 
Hej,
Du er ikke konvertere data, der sendes i 'data1' til indberetter rutine, der er en 'binær' hex antal i en "ASCII" Hex antallet at udskrive den på Hyperterminal i en læsbar form, Hyperterminal vil forsøge at udskrive uanset karakter er ASCII-kode i 'data1' (hvis det er printable) for koden sendes til den.

Prøv noget lignende: --void transmittere (usignerede CHAR data1)
(
usignerede CHAR cChar [6]; / / Make strengen grænser længere end 6 hvis det kræves.
int i;

sprintf (cChar, "% 02x \ n \ r \ 0", (usignerede int) data1);
/ / Må ikke brug for den (usignerede CHAR) stoebt, nogle compilers ikke.

/ / Brug "% 02i \ n \ r \ 0", hvis du ønsker det i decimalgrader dette vil udskrive hver ny værdi på
/ /
new line.Derefter bør udskrive noget lignende 7f til en værdi af # 7f.Hvis du bruger
//"%# 05x \ n \ r \ 0 "Du burde få 0x07f printes ud.
/ / inkludere mere math rutiner hvis du ønsker at konvertere værdien til en spænding direkte.
/ / du kan derefter gøre format string mere fancy herunder tilføje "volt" osv.
/ / før linjeskift & returtegn karakter.

for (i = 0; i <5; i ) / / Lav karakter tælle længere, hvis det kræves.
(
SBUF = cChar ;
while (! TI);
TI = 0;
)
)

Du skal også omfatte header fil <stdio.h> for dette arbejde.

Jeg håber, at dette hjælper.

Venlig hilsen
Bob.

 

Welcome to EDABoard.com

Sponsor

Back
Top