aide quelqu'un peut me faire

P

Praful

Guest
aider tout le monde peut-il m'aider à faire le programme de distance ainsi que le bouton-poussoir LED on / off contrôleur en utilisant le langage C et AT89c51 et RC-5 Toute codée télécommande.Parce que je ma débutant dans les projets de uC maintenant je m apprendre en 2ème année.
1) Je ne sais pas comment accéder aux boutons avec temporisation anti-rebond.
2) Comment faire pour attribuer un code à distance à certaines caractéristiques.
S'il vous plaît aidez-moi
Vous remerciant à l'avance
Prafulk25 (at) rediffmail.com<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutre" border="0" />Désolé, mais vous avez besoin de connexion pour voir cette pièce jointe

 
le faire en deux étapes.Les interrupteurs et les LED devrait être simple.Laissez la partie de la télécommande pour la deuxième phase.Il n'est pas très simple pour un débutant.Une fois que vous obtenez les interrupteurs et les voyants au travail, puis essayez de RC.Il existe de nombreux sites qui le décrivent.

 
Tout d'abord Merci à techno et Seadolphine2000, de démontrer votre intérêt pour m'aider.
Ok, maintenant les détails sont, je veux juste pour passer une LED en utilisant un uC comme AT89c51
avec un bouton tactile et aussi avec une télécommande, mais en fonction de techno tout d'abord je tiens à en et hors de LED à l'aide d'un clavier, comme illustré dans le schéma dernière que j'ai envoyé avant ou comme indiqué ci-dessous.
S'il vous plaît envoyez-moi un programme en langage "C" peut causer je peux l'étudier.
En vous remerciant tous .......
prafulk25 (at) rediffmail.com
Désolé, mais vous avez besoin de connexion pour voir cette pièce jointe

 
Je n'avez pas un programme tout trouvé pour vous.Mais je suis sûr que si vous faites une étude de vous-même, vous devriez être capable d'écrire un facilement.

 
<img src="http://www.edaboard.com/images/smiles/icon_question.gif" alt="Question" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutre" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Pleure ou très triste" border="0" />
 
dont le code que vous utilisez pour la RI?Je peux vous conseiller RC5 (standart de codage de Sony à distance).Il est très simple.Si vous donnez des détails je peux vous envoyer un code en C lang.et PICBASIC

 
Il suffit d'aller http://www.winpicprog.co.uk et lire les tutoriels PIC.vous trouverez tout ce dont vous avez besoin (clavier, les voyants, les codes de contrôle à distance de Sony, etc)

 
ikarakaya Cher,
le code de la télécommande RC-5 qui, je, ve sont 38 DE, 22 DE, 22 CE.Je suis très reconnaissant si u envoyez-moi un tel programme en langage "C" pour AT89c51
En vous remerciant encore une fois ...........

<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutre" border="0" />
 
Il est facile de l'homme.Je veux vous montrer les étapes que j'ai suivi pour construire un récepteur infrarouge pour un de mes projets

1.Il est facile de construire le premier récepteur, l'émetteur n'est pas important à titre de séquestre, parce que vous pouvez acheter une télécommande contol prêtes à l'emploi avec le prix bon marché compatible avec le IR-code que vous souhaitez utiliser ..."Infrared_protocols_samples.pdf fichier" vous montrera des exemples de certains protocoles.

2.Pour recevoir les questions que vous devez acheter un module consignataire, il est de 3 pieds IC, mais ATTENTION, vous devez acheter un récepteur qui est compatible avec la fréquence de l'émetteur qui transmet le code modulé avec une fréquence spécifique.Vous pouvez le savoir par un circuit intégré deja sur ce lien: ftopic138019.html

3.Avant de programmation en C, vous devez savoir au sujet de certains prepherals dans le microcontrôleur, en particulier, externe et Internl Timer TMR0 interrompre.

4.Choisir une bonne UC, je suggère d'utiliser PIC16F84, parce qu'il est petit 18 pins, bon marché, facile à utiliser, des capacités de haut, et disponible.

5.bonne utilisation lang C., je propose CCS de www.ccsinfo.com, qui est juste pour ucs PIC, mais avant de pouvoir décoder le signal qui arrive à votre uC vous avez à mettre en place l'interruption externe qui est jointe avec le récepteur IC et la mise en place du TMR0 que vous avez à utiliser pour lire le temps à venir de la marque ou de l'espace.

6.Vous pouvez visiter www.microchip.com en savoir plus sur les périphériques IR.

7.Bonne chance: D

 
J'ai fait un projet dans lequel un relais peut être commandé par une télécommande IR
mais un problème se produit est si nous appuyez et maintenez bouton de la télécommande permet de basculer un relais peut ON à OFF à ON à OFF à ON à OFF
Je veux la même fonction que doit TV fonction à distance hors dire hors et sur les moyens de l'activer dévers
même une touche enfoncée et le retenir.Il ne fonctionne que lorsque nous avons à nouveau sur le bouton et appuyez à nouveau sur ON.
Alors S'il vous plaît tout organisme peut me dire la solution pour elle, j'ai utilisé un délai, mais aussi il bascule après un temps de retard
Le matériel, que j'ai utilisé, est At89c52 uC.et le compilateur Keil et un programme est en langage "C".
Exemple illustré: ---
0xAC cas: onf1var -;
if (<onf1var = 0)
(
ONF1ON = ~ ONF1ON;
putchar (chiffres [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="Neutre" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_exclaim.gif" alt="Exclamation" border="0" />
 
J'ai eu ce code à partir de certains cas ..... un décodeur RC5 écrit pour AVR.L'espoir peut être utile de vous
Code:/ *

rc5dec.c 0.2.0 - décodeur d'interruption RC5 entraînés pour Atmel AVR LC.

Site Web: http://markh.de/rc5dec/

Copyright (C) 2003 Mark Haemmerling <rc5(at)markh.de>Ce programme est un logiciel libre, vous pouvez le redistribuer et / ou la modifier

selon les termes de la Licence Publique Générale GNU telle que publiée par

la Free Software Foundation; soit la version 2 de la licence, ou

(À votre choix) toute version ultérieure.Ce programme est distribué dans l'espoir qu'il sera utile,

mais SANS AUCUNE GARANTIE, sans même la garantie implicite de

COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la

Licence Publique Générale GNU pour plus de détails.Vous devriez avoir reçu une copie de la Licence Publique Générale GNU

avec ce programme, sinon, écrivez à la Free Software Foundation

Foundation, Inc, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAPréconfiguré pour INT1 (PD3) et Timer/Counter0.

* /# Include <inttypes.h>

# Include <avr/signal.h>

# Include <avr/interrupt.h>

# Include <avr/io.h>/ / Régler la vitesse d'horloge ici

# Define XTAL 1000000/ / Vous pouvez avoir à expérimenter un peu avec cette

/ / En cas de forte perturbation, essayez des valeurs autour de 60

/ / Essayez d'utiliser les valeurs impaires (pour la détection de niveau symétrique)

# Define RC5RESAMPLE 11/ / Ce autoconfigures toutes les valeurs de minuterie:

# Si 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))volatiles rc5_code uint16_t = 0;

rc5_first_half uint8_t volatile;SIGNAL (SIG_INTERRUPT1) (

/ * Gestionnaire interruption externe

bord du récepteur infrarouge détecté.

Ceci est supposé être au milieu d'un bit.

* /

uint8_t i;/ / Resample pour filtrer les pointes

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

/ / Nous attendions un front montant, afin d'annuler si nous l'échantillon

for (i = RC5RESAMPLE; i; i -) if (! (PIND & (1 <<PIND3))) de retour;

) Else (

/ / Vice-versa ...

for (i = RC5RESAMPLE; i; i -) if ((PIND & (1 <<PIND3))) de retour;

)TCNT0 = RC5TIMERSECOND; / / minuterie préréglée à l'échantillon (OVF int) au second semestre (heure 3 / 4 bits)

rc5_first_half = 0; / / échantillon suivant sera au second semestre

SBI (TIMSK, TOIE0); / / int permettre OVF minuterie

CBI (GICR, INT1); / / int ext désactiver (ce gestionnaire)

)SIGNAL (SIG_OVERFLOW0) (

/ * Gestionnaire de débordement timer

échantillon le niveau actuel de la ligne d'interruption.

* /

rc5_shift uint16_t statique, rc5_temp;

statique rc5_bit uint8_t = 0, niveau, first_level = 1;

uint8_t i = 0, temp;/ / Resample pour filtrer les pointes

for (temp = RC5RESAMPLE; temp; temp -) si (PIND & (1 <<PIND3)) i ;

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

/ / Il s'agit d'un délai d'attente, annuler l'opération

Aller rc5_cancel;

) Else if (rc5_first_half == 1) (

/ / Cet exemple est pris dans la première moitié de la mèche (heure 1 / 4 bits)

niveau first_level = / / enregistrer le niveau actuel

if (niveau) cbi (MCUCR, ISC10); / / actuellement à un niveau élevé, attendez front descendant

d'autre SBI (MCUCR, ISC10); / / actuellement à un bas niveau, attendez front montant

rc5_first_half = 2; / / code spécial, on entend: int OVF appelle un délai d'attente

SBI (GICR, INT1); / / beaucoup mieux: attendre bord;)

TCNT0 = RC5TIMERCANCEL; / / au OVF minuterie (dans environ 1 / 2 peu de temps) nous devrions obtenir un délai d'attente

) Else (

/ / Cet exemple est pris dans la seconde moitié de la mèche (heure 3 / 4 bits)

TCNT0 = RC5TIMERFIRST; / / échantillon suivant au premier semestre (1 / 4 temps bit) de peu à côté

rc5_first_half = 1;

if (first_level! niveau =) (

/ / Niveaux différents -> Manchester valide codées peu détecté

if (! rc5_bit) (

/ / Ceci est le premier bit, rétablir les valeurs

rc5_temp = 0;

rc5_shift = 0x8000;

)

if (! niveau) | rc5_temp = rc5_shift; / / bas niveau (faible activité), de sorte stocker un '1 '

erreur else if (rc5_bit <2) rc5_cancel goto / / de haut niveau ("0" bits) comme bit de début ->

si ( rc5_bit == 14) (

/ / Réception complète, arrêter le fonctionnement

rc5_code = rc5_temp;

Aller rc5_cancel;

)

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

d'autre rc5_shift>> = 1;

) Else (

/ / Erreur dans le flux de Manchester - annuler> opération

Aller rc5_cancel;

)

)

retour;rc5_cancel:

CBI (MCUCR, ISC10); / / front descendant

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

GIFR = (1 <<INTF1); / / effacer un poste a finalement mis.
int.
drapeau

CBI (TIMSK, TOIE0); / / int minuterie désactiver.

first_level = 1; / / que le poste suivant.
int.
apparaît sur le bord tombant, assument le premier niveau aussi élevé

rc5_bit = 0;

)rc5_init (void) (

init * / pour poste.
int.
et le chronomètre.

appelons cela une fois pour activer le décodeur RC5.

* /

TCCR0 = TIMERCR;

CBI (DDRD, PD3); / / PIN est entrée

cbi (PORTD, PD3); / / pullup handicapés (récepteur a défini de sortie)

CBI (TIMSK, TOIE0); / / OVF minuterie handicapés.
devient possible par poste.
int.

SBI (MCUCR, ISC11); / / ext.
int.
activée par la chute de bord

CBI (MCUCR, ISC10);

GIFR = (1 <<INTF1); / / ext clair.
int.
drapeau

SBI (GICR, INT1); / / enable poste.
int.

)int main (void) (

/ Exemple de programme / principaux:

rc5_init (); / / activer la détection RC5DDRB = 0xFF; / / PORTB est de sortie

PORTB = 0x00; / / toutes les broches à faible/ / Départ de la boucle principale

for (;;) (

if (rc5_code) (

/ / ... Faire quelque action ici ...

PORTB = (uint8_t) rc5_code; / / sortie bas-octet à PORTB

rc5_code = 0; / / code clair

)

)

)/ / EOF

 
Praful a écrit:

J'ai fait un projet dans lequel un relais peut être commandé par une télécommande IR, mais un problème s'est produit c'est que si nous appuyez et maintenez bouton de la télécommande permet de basculer un relais peut ON à OFF à ON à OFF à ON à OFF ...
 

Welcome to EDABoard.com

Sponsor

Back
Top