Kan noen hjelpe meg å gjøre

P

Praful

Guest
Kan noen hjelpe meg å gjøre programmet i Remote samt trykknapp operert LED av / på kontrolleren bruker C-språk og AT89C51 og Any RC-5 kodet Fjernkontroll.Fordi jeg ma nybegynner i UC prosjekter nå Jeg er lærer i 2. år.
1) Jeg vet ikke hvordan du får tilgang knapper med debounce tidsforsinkelse.
2) Hvordan tilordne en ekstern kjøring til bestemte funksjonen.
Please hjelp meg
Takker deg på forhånd
Prafulk25 (at) rediffmail.com<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Nøytral" border="0" />Beklager, men du må logge inn for å vise dette vedlegget

 
Gjør det i to trinn.Bryterne og LED burde være enkelt.La fjernkontrollen delen til den andre fasen.Det er ikke veldig enkelt for en nybegynner.Når du får brytere og lysdioder skal fungere, så prøv på RC.Det er mange nettsteder som beskriver det.

 
Først av alt Enn å Teknikken og Seadolphine2000, for å vise din interesse å hjelpe meg.
Ok, nå detaljene er jeg bare ønsker å veksle en ledet ved hjelp av en UC som AT89C51
med knapper og også med en fjernkontroll, men ifølge teknikken først Jeg vil på / av en LED er ved hjelp av et tastatur som vist i forrige diagram som jeg sendte før eller som vist nedenfor.
Vennligst send meg et program i "C" språk kan forårsake jeg kan studere det.
Takke dere alle .......
prafulk25 (at) rediffmail.com
Beklager, men du må logge inn for å vise dette vedlegget

 
I dont har et ferdighus programmet for deg.Men jeg er sikker på at hvis du gjør noen studere selv, bør du kunne skrive en enkel måte.

 
<img src="http://www.edaboard.com/images/smiles/icon_question.gif" alt="Spørsmål" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Nøytral" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Gråter eller Veldig trist" border="0" />
 
hvilke koden bruker du for IR?Jeg kan rådet du RC5 (standart koding av Sony fjernkontrollen).Det er veldig enkelt.Hvis du gir opplysninger jeg kan sende deg en kode i C lang.og PICBASIC

 
bare gå til http://www.winpicprog.co.uk og les PIC opplæringsprogrammer.finner du alt du trenger (tastatur, LED, Sony fjernkontrollkoder etc)

 
Kjære ikarakaya,
koden for RC-5 fjernkontroll som jeg har er 38 DE, 22 DE, 22 CE.Jeg er veldig takknemlig hvis u sende meg et slikt program i "C" språk for AT89C51
Takker du igjen ...........

<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Nøytral" border="0" />
 
Det er enkelt mann.Jeg vil vise deg trinnene som jeg fulgte for å bygge en IR-mottaker for ett av mine prosjekter

1.Det er lett å bygge Mottaker først, er sender ikke viktig som mottaker, fordi du kan kjøpe en ekstern kontroll til ferdige med billig pris kompatibel med IR-kode som du vil bruke ..."infrared_protocols_samples.pdf" filen vil vise deg prøver på noen protocoles.

2.For å motta saker du må kjøpe en Mottaker modul, er det 3 ben IC, men Becareful, må du kjøpe en mottaker som er kompatibel med senderfrekvensen som vil overføre modulert kode med bestemt frekvens.Du kan vite om det fra allerede bygget krets på denne linken: ftopic138019.html

3.Before programmering med C, må du vite om noen prepherals i microcontroller, spesielt; eksterne avbryte og internl Timer TMR0.

4.Velge gode UC, foreslår jeg å bruke PIC16F84, fordi det er liten 18 pins, billig, lett å bruke, høy kapasitet og tilgjengelig.

5.Bruk god C lang. Foreslår jeg CCS, fra www.ccsinfo.com, som er bare for PIC UCS, men før du kan dekode den kommende signal til UC må du konfigurere den eksterne avbruddet som er festet med mottakeren IC og sette opp TMR0 som du må bruke for å lese den tiden kommer merke eller plass.

6.Du kan besøke www.microchip.com å vite mer om IR-enheter.

7.Lykke til: D
Beklager, men du må logge inn for å vise dette vedlegget

 
Jeg har laget et prosjekt der et relé kan styres gjennom en IR-fjernkontroll
men et problem er oppstått hvis vi trykker og holder knapp på fjernkontrollen et relé kan slår seg på av til på å av å til off
Jeg vil må fungere samme som TV remote funksjon off mener av og på betyr på den skrånende toggle
selv en tast trykkes ned og hold den.Det virker bare igjen når vi slipper knappen og trykk den ned igjen på.
Så du kan alle kropp fortelle meg at løsningen for det brukte jeg en forsinkelse, men også det bytter etter en time forsinket
Maskinvaren, som jeg brukte, er At89c52 UC.og Keil kompilatoren og et program i "C" språk.
Eksempel vist: ---
case 0xAC: onf1var -;
if (onf1var <= 0)
(
ONF1ON = ~ ONF1ON;
putchar (tall [ONF1ON]); ONF1 ();
for (i = 0; i <5500; i );
)
break;

void ONF1 (void)
(
if (ONF1ON)
(
ONF1LED = 0;
)
if (! ONF1ON)
(
ONF1LED = 1;
)
for (i = 0; i <5500; i );<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Nøytral" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_exclaim.gif" alt="Utrop" border="0" />
 
Jeg fikk denne koden fra noen der ..... ett RC5 dekoder skrevet for AVR.Håper kan være nyttige for deg
Code:/ *

rc5dec.c 0.2.0 - Avbrudd drevet RC5 dekoder for Atmel AVR LC's.

Webside: http://markh.de/rc5dec/

Copyright (C) 2003 Mark Haemmerling <rc5(at)markh.de>Dette programmet er fri programvare, og du kan redistribuere det og / eller modifisere

det under GNU General Public License, publisert av

Free Software Foundation, enten versjon 2 av lisensen, eller

(valgfritt) en nyere versjon.Dette programmet distribueres i håp om at det vil være nyttig,

men UTEN NOEN GARANTI; uten engang implisitt garanti for

SALGBARHET eller EGNETHET FOR ET BESTEMT FORMÅL. Se

GNU General Public License for flere detaljer.Du skal ha mottatt en kopi av GNU General Public License

sammen med dette programmet, hvis ikke, skriv til Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAForhåndskonfigurerte for INT1 (PD3) og Timer/Counter0.

* /# include <inttypes.h>

# include <avr/signal.h>

# include <avr/interrupt.h>

# include <avr/io.h>/ / Sette klokkehastighet her

# define XTAL 1000000/ / Du må eksperimentere litt med dette

/ / I tilfelle av tunge forstyrrelser, prøv verdier rundt 60

/ / Prøver å bruke ulike verdier (for symmetrisk nivå påvisning)

# define RC5RESAMPLE 11/ / Dette autoconfigures alle timer verdier:

# hvis XTAL <285000

# Define PRESCALEDIV 1

# Define TIMERCR (1 <<CS00)

# elif XTAL <2300000

# Define PRESCALEDIV 8

# Define TIMERCR (1 <<CS01)

# elif XTAL <18000000

# Define PRESCALEDIV 64

# Define TIMERCR (1 <<CS01) | (1 <<CS00)

# else

# Define PRESCALEDIV 256

# Define TIMERCR (1 <<CS02)

# endif

# define RC5TIMERFIRST 0x100-((uint8_t) (XTAL / PRESCALEDIV * 0,0008890))

# define RC5TIMERSECOND 0x100-((uint8_t) (XTAL / PRESCALEDIV * 0,0004445))

# define RC5TIMERCANCEL 0x100-((uint8_t) (XTAL / PRESCALEDIV * 0,0008890))volatile uint16_t rc5_code = 0;

volatile uint8_t rc5_first_half;SIGNAL (SIG_INTERRUPT1) (

/ * Ekstern interrupt handler

kant fra IR-mottaker oppdaget.

Dette antas å være midt i en bit.

* /

uint8_t i;/ / Sampling å filtrere ut toppene

if (MCUCR & (1 <<ISC10)) (

/ / Vi ventet på et stigende kant, så avbryte hvis vi prøve lav

for (i = RC5RESAMPLE; i; i -) if (! (pind & (1 <<PIND3))) return;

) Else (

/ / Omvendt ...

for (i = RC5RESAMPLE; i; i -) if ((pind & (1 <<PIND3))) return;

)TCNT0 = RC5TIMERSECOND; / forhåndsinnstilte timer å prøve (OVF int) i andre halvår (3 / 4 bit tid)

rc5_first_half = 0; / neste prøve blir i andre halvdel

SBI (TIMSK, TOIE0); / / aktivere timer OVF int

CBI (GICR, INT1); / / deaktivere ext int (denne behandleren)

)SIGNAL (SIG_OVERFLOW0) (

/ * Timer overflow handler

smake på dagens nivå av avbruddet linje.

* /

statiske uint16_t rc5_shift, rc5_temp;

statiske uint8_t rc5_bit = 0, nivå, first_level = 1;

uint8_t i = 0, temp;/ / Sampling å filtrere ut toppene

for (temp = RC5RESAMPLE, temp; temp -) if (pind & (1 <<PIND3)) i ;

level = (i> ((uint8_t) (RC5RESAMPLE / 2)));if (rc5_first_half == 2) (

/ / Dette er en timeout, avbryte operasjonen

goto rc5_cancel;

) Else if (rc5_first_half == 1) (

/ / Denne prøven er tatt i første halvdel av bit (1 / 4 bit tid)

first_level = nivå; / / lagre dagens nivå

if (level) CBI (MCUCR, ISC10); / / tiden på høyt nivå, vente på fallende kant

else SBI (MCUCR, ISC10); / dag på lavt nivå, vente på stigende kant

rc5_first_half = 2; / spesiell kode, betyr: neste OVF int er en timeout

SBI (GICR, INT1); / / mye bedre: vente på kanten;)

TCNT0 = RC5TIMERCANCEL; / / på timer OVF (i 1 lag / 2 bit tid) vi bør få en timeout

) Else (

/ / Denne prøven er tatt i andre halvdel av bit (3 / 4 bit tid)

TCNT0 = RC5TIMERFIRST; / / neste prøven ved første halvparten (1 / 4 bit tid) neste bit

rc5_first_half = 1;

if (first_level! = nivå) (

/ / Nivåer variere -> gyldig manchester kodet bit oppdaget

if (! rc5_bit) (

/ / Dette er det første bit, nullstille verdier

rc5_temp = 0;

rc5_shift = 0x8000;

)

if (! nivå) rc5_temp | = rc5_shift; / lavt nivå (lav-aktivt) så lagrer et '1 '

else if (rc5_bit <2) goto rc5_cancel; / høyt nivå ('0 'bit) som startbit -> feil

if ( rc5_bit == 14) (

/ / Mottak komplett, stop drift

rc5_code = rc5_temp;

goto rc5_cancel;

)

if (rc5_shift == 0x0100) rc5_shift = 0x0020;

else rc5_shift>> = 1;

) Else (

/ / Feil i Manchester strømmen -> avbryte operasjonen

goto rc5_cancel;

)

)

return;rc5_cancel:

CBI (MCUCR, ISC10); / / fallende kant

SBI (GICR, INT1); / / ext.
int.
aktivert

GIFR = (1 <<INTF1); / / clear en slutt satt ext.
int.
flag

CBI (TIMSK, TOIE0); / / deaktivere timer int.

first_level = 1; / / som neste ext.
int.
vises på fallende kant, antar det første nivået så høyt

rc5_bit = 0;

)void rc5_init (void) (

/ * Init for ext.
int.
og timer.

kaller dette en gang for å aktivere rc5 dekoder.

* /

TCCR0 = TIMERCR;

CBI (DDRD, PD3); / / pin er input

CBI (PORTD, PD3); / / pullup funksjonshemmede (mottaker har definert output)

CBI (TIMSK, TOIE0); / / timer OVF deaktivert.
blir aktivert som ext.
int.

SBI (MCUCR, ISC11); / / ext.
int.
aktiveres av fallende kant

CBI (MCUCR, ISC10);

GIFR = (1 <<INTF1); / / clear ext.
int.
flag

SBI (GICR, INT1); / / aktivere ext.
int.

)int main (void) (

/ / Eksempel hovedprogrammet:

rc5_init (); / / aktivere RC5 detectionDDRB = 0xFF; / PORTB er utgang

PORTB = 0x00; / / alle pins lav/ / Start main loop

for (;;) (

if (rc5_code) (

/ / ... Gjøre noe action her ...

PORTB = (uint8_t) rc5_code; / / output lav-byte på PORTB

rc5_code = 0; / / clear kode

)

)

)/ / EOF

 
Praful skrev:

Jeg har laget et prosjekt der et relé kan styres gjennom en IR-fjernkontroll men et problem er oppstått hvis vi trykker og holder knapp på fjernkontrollen et relé kan slår seg på av til på å av å til off ...
 

Welcome to EDABoard.com

Sponsor

Back
Top