قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

kiai87
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: جنوب المغرب
المشاركات: 1,115
نشاط [ kiai87 ]
قوة السمعة:117
قديم 21-11-2010, 11:21 AM المشاركة 1   
افتراضي مشروع تحكم في 8 أجهزة عن بعد Twitter FaceBook Google+






السلام عليكم


من لا يحب المزاح ارجو ان لا يدخل الى موضوعي
بمزح معكم فقط فانتم كلكم اخواني

احب ام اشاركم في هده المشروع المخصص لي للارسال والاستقبال وهو يعتمد
على حبيبينا العزيزي الميكروكنترولر pic16f628
ويمكن تحكم في 8 أجهزة عن بعد بعد

سنبدأ أولا بالمرسل





الرسم الإلكتروني

http://doumai.pagesperso-orange.fr/T...eur_Schema.pdf

الرسم PCB

http://doumai.pagesperso-orange.fr/T...teur_Typon.pdf

http://doumai.pagesperso-orange.fr/T...plantation.pdf

كود الهيكس

:020000000528D1
:080008001628831207309F0047
:1000100083163030860085018312013085000F3051
:1000200086000B1088308B0063001428A400030E98
:10003000A50083128B1305100130A0000830860044
:100040000000061A55280230A00004308600000087
:10005000061A55280430A000023086000000061A57
:1000600055280830A000013086000000061A5528E7
:100070001030A000083086000000861A5528203075
:10008000A000043086000000861A55284030A000E9
:10009000023086000000861A55288030A00001300A
:1000A00086000000861A5528A00106172008A10026
:1000B0000830A30085147F2085107F20A10D031C2C
:1000C000642885147F206728000085107F20A30BFB
:1000D0005A2885147F2085100830A3007F20A30BA9
:1000E0006E282008031D1C2805140F3086000B10F5
:1000F00088308B00250E8300A40E240E090050309A
:08010000A200A20B81280800F7
:02400E00013F70
:00000001FF
كود الأسمبلي

;================================================= ===========================================
; Émetteur 8 voies pour télécommande
; Doumai.Terret*Wanadoo.fr
; Merci de laisser mon Mail pour toute modification du logiciel
;================================================= ===========================================
;
LIST P=16F628, F=INHX8M, r=dec
include "P16F628.inc"
;
__CONFIG _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _XT_OSC
;
; Do not show warnings
ERRORLEVEL -224

#DEFINE ALIM PORTA,0 ; Alimentation de l'émetteur si 0
#DEFINE EM1 PORTA,1 ; Signal à émettre
#DEFINE LED PORTB,6 ; LED d'indication de l'émission si 1
#DEFINE COL1 PORTB,4 ; Clavier Colonne 1 - S1 à S4
#DEFINE COL2 PORTB,5 ; Clavier Colonne 2 - S5 à S8

;
cblock 0x20
MOT : 1 ; Sauvegarde de l'état des BP
MOT1 : 1 ; Mot de 8 bit à émettre
I : 1 ; Comptage Tempo
J : 1 ; Comptage général
w_temp : 1 ; Pour interruption
status_temp : 1 ; Pour interruption

endc
;
;================================================= ===========================================
ORG 0x0000
goto main
;
ORG 0x0004
goto inter
;
main: bcf STATUS,RP0 ; Bank 0
movlw 0x07 ; Désactivation du mode comparateur et
movwf CMCON ; passe en mode Entrées / Sorties
;
bsf STATUS,RP0 ; Bank 1
movlw B'00110000' ; RB0 à RB3 en sortie clavier
movwf TRISB ; RB4 et RB5 en entrée clavier
clrf TRISA ; PortA en sortie
bcf STATUS,RP0 ; Bank 0
;
movlw 0x01 ;
movwf PORTA ; ALIM = 1, transistor bloqué
movlw 0x0F ; RB0 à RB3 = 1,
movwf PORTB ; attente d'interruption sur RB4 ou RB5
;
bcf INTCON,RBIF ; RAZ flag d'interruption sur RB4 à RB7
movlw 0x88 ; Valide les GIE et
movwf INTCON ; les interruptions sur RB4 à RB7
Dodo sleep ; Mode sommeil, en attente
goto Dodo ; d'une interruption
;
; ================================================== ================================
; Gestion de l'interruption sur modification RB4 ou RB5 (action sur un BP)
; ================================================== ================================
inter:
; Sauvegarde des registres W et STATUS (Normalement inutile)
movwf w_temp
swapf STATUS,W
movwf status_temp
;
bcf STATUS,RP0 ; Bank 0
bcf INTCON,GIE ; Désactive une nouvelle interruption
;
bcf ALIM ; Alimente l'émetteur
;
;==================================
; Lecture des boutons poussoirs
;==================================
;
Lect movlw 0x01 ; Lecture de S1
movwf MOT ; État des BP dans MOT
movlw 0x08 ; RB3 = 1
movwf PORTB
nop
btfsc PORTB,4 ; Test si S1 est actionné, skip dans le cas contraire
goto FinL ; S1 actionné, fin de la lecture des 8 BP
;
movlw 0x02 ; Lecture de S2
movwf MOT ; État des BP dans MOT
movlw 0x04 ; RB2 = 1
movwf PORTB
nop
btfsc PORTB,4 ; Test si S2 est actionné, skip dans le cas contraire
goto FinL ; S2 actionné, fin de la lecture des 8 BP
;
movlw 0x04 ; Lecture de S3
movwf MOT ; État des BP dans MOT
movlw 0x02 ; RB1 = 1
movwf PORTB
nop
btfsc PORTB,4 ; Test si S3 est actionné, skip dans le cas contraire
goto FinL ; S3 actionné, fin de la lecture des 8 BP
;
movlw 0x08 ; Lecture de S4
movwf MOT ; État des BP dans MOT
movlw 0x01 ; RB0 = 1
movwf PORTB
nop
btfsc PORTB,4 ; Test si S4 est actionné, skip dans le cas contraire
goto FinL ; S4 actionné, fin de la lecture des 8 BP
;
movlw 0x10 ; Lecture de S5
movwf MOT ; État des BP dans MOT
movlw 0x08 ; RB3 = 1
movwf PORTB
nop
btfsc PORTB,5 ; Test si S5 est actionné, skip dans le cas contraire
goto FinL ; S5 actionné, fin de la lecture des 8 BP
;
movlw 0x20 ; Lecture de S6
movwf MOT ; État des BP dans MOT
movlw 0x04 ; RB2 = 1
movwf PORTB
nop
btfsc PORTB,5 ; Test si S6 est actionné, skip dans le cas contraire
goto FinL ; S6 actionné, fin de la lecture des 8 BP
;
movlw 0x40 ; Lecture de S7
movwf MOT ; État des BP dans MOT
movlw 0x02 ; RB1 = 1
movwf PORTB
nop
btfsc PORTB,5 ; Test si S7 est actionné, skip dans le cas contraire
goto FinL ; S7 actionné, fin de la lecture des 8 BP
;
movlw 0x80 ; Lecture de S8
movwf MOT ; État des BP dans MOT
movlw 0x01 ; RB0 = 1
movwf PORTB
nop
btfsc PORTB,5 ; Test si S8 est actionné, skip dans le cas contraire
goto FinL
;
clrf MOT ; Aucune touche d'actionnée MOT = 0
FinL bsf LED ; LED allumée
;
;==============================================
; Émission
; Une trame comprend 8 bits suivie d'un Stop
; Un bit est constitué d'un Start à l'état 1
; suivi d'un 0 suivi par l'état du bit
;==============================================
Trame movf MOT,W
movwf MOT1 ; État des interrupteurs dans MOT1
movlw 0x08
movwf J ; J=8 pour les 8 bits à transmettre

DebBit bsf EM1 ; Start du 1er bit,
call Temp250 ; d'une durée de 250 s
bcf EM1 ; Front descendant
call Temp250 ; État 0 durant 250 s
rlf MOT1,F ; Bit à émettre danc Carry
btfss STATUS,C ; Test si le bit courant est à 1
goto Ec0 ; On va écrire un 0 sur l'entrée de l'émetteur
bsf EM1 ; Bit à émettre à 1
call Temp250 ; État 1 durant 250 s
goto FinBit ; Fin d'émission d'une trame
Ec0 nop
bcf EM1 ; Bit à émettre à 0
call Temp250 ; État 0 durant 250 s
FinBit decfsz J,F ; J = J - 1
goto DebBit ; Si J<>0 on retourne émettre un bit
;
bsf EM1 ; Bit Stop à 1
call Temp250 ; &#201;tat 1 durant 250 s
bcf EM1 ; Signal à l'état 0
;==============================================
; Inter Trame
;==============================================
movlw 8 ; 8 fois 250 s = 2ms d'inter-trame
movwf J ; 2ms à l'état 0 entre deux trames
InterT call Temp250
decfsz J,F
goto InterT
;
;==============================================
; Test si une touche est encore actionnée,
; sinon fin d'interruption et mode sleep
;==============================================
movf MOT,W ; W = MOT
btfss STATUS,Z ; Skip si MOT = 0
goto Lect ; On retourne lire l'état des BP
;
bsf ALIM ; Coupe l'alimentation de l'émetteur
movlw 0x0F ; LED éteinte et RB0 à RB3 = 1,
movwf PORTB ; pour l'attente de la prochaine interruption
;
bcf INTCON,RBIF ; Efface le flag d'interruption
movlw 0x88 ; Valide les GIE et
movwf INTCON ; les interruptions sur RB4 à RB7
; =============================================
; Restauration des registres W et STATUS
; =============================================
swapf status_temp,W
movwf STATUS
swapf w_temp,F
swapf w_temp,W
;
retfie
;
;=========================================
; Tempo de 250 s avec un quartz de 4 MHz
;=========================================
Temp250 movlw 80
movwf I
Temp250a
decfsz I,F
goto Temp250a
Return
;
end



التعديل الأخير تم بواسطة : kiai87 بتاريخ 21-11-2010 الساعة 12:24 PM
اعلانات

kiai87
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: جنوب المغرب
المشاركات: 1,115
نشاط [ kiai87 ]
قوة السمعة:117
قديم 21-11-2010, 11:32 AM المشاركة 2   
افتراضي


المستقبل



الرسم الإلكتروني


http://doumai.pagesperso-orange.fr/T...eur_Schema.pdf

http://doumai.pagesperso-orange.fr/T...plantation.pdf

رسم PCB

http://doumai.pagesperso-orange.fr/T...teur_Typon.pdf

كود الهيكس

:020000000A28CC
:0C001400831207309F0083160030860026
:10002000FE308500831286018501851C8601FF3024
:10003000A600051D1C281528A60B192853202008EA
:10004000A100FF30A600051D26281528A60B232891
:1000500053202008A2002108220203193028152865
:10006000FF30A600051D35281528A60B3228532081
:100070002008A2002108220203193F28152885180C
:100080004428220886004628220886060A30A50051
:10009000FF30A400FF30A300A30B4C28A40B4A2878
:1000A000A50B48282128A0010830A50005195928CA
:1000B0005628051D5C2859287830A300A30B5E281C
:1000C0000508A300A30CA30CA30CA00C4630A300AE
:1000D000A30B6828A50B5928A030A300A30B6E28FA
:0C00E00008002930A300A30B73280800BF
:02400E00013F70
:00000001FF
كود الإسمبلي

; Récepteur 8 voies - Télécommande HF
; Doumai.Terret*Wanadoo.fr
; Merci de laisser mon adresse si vous modifiez le programme
; Résonnateur = 4Mhz
;
LIST P=16F628, F=INHX8M, r=dec
include "P16F628.inc"
;
__CONFIG _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _XT_OSC
;
; Do not show warnings
ERRORLEVEL -224
;
; Déclaration des variables
;
cblock 0x20
TRAME0,TRAME1,TRAME2 ; 4 bits de la trame reçue, en cours, 1ère mémo, 2ème mémo
I,J,K ; pour le comptage
ST3 ; pour le comptage entre deux trames
endc
;
; Define
;
#define CAV1 PORTA,1 ; Cavalier Mode impulsionnel / bistable
#define REC PORTA,2 ; Entrée numérique en provenance du récepteur
#define REL1 PORTB,0 ; Relais K10
#define REL2 PORTB,1 ; Relais K20
#define REL3 PORTB,2 ; Relais K30
#define REL4 PORTB,3 ; Relais K40
#define REL5 PORTB,4 ; Relais K50
#define REL6 PORTB,5 ; Relais K60
#define REL7 PORTB,6 ; Relais K70
#define REL8 PORTB,7 ; Relais K80



;
org 0
goto Start
;
org 10

Start bcf STATUS,RP0 ; Bank 0
movlw 0x07 ; Désactivation du mode comparateur et
movwf CMCON ; passe en mode Entrées / Sorties
;
bsf STATUS,RP0 ; Bank 1
movlw 0x00 ;
movwf TRISB ; Huit relais
movlw B'11111110' ; RA1 mode astable / monostable
movwf TRISA ; RA2 réception HF
bcf STATUS,RP0 ; Bank 0
;
clrf PORTB ; Relais non alimentés
clrf PORTA ;
;
Debut
;
; Lecture du cavalier
; Si on est en mode impulsionnel, on coupe l'alim des relais
;
btfss CAV1 ; Test l'état du cavalier
clrf PORTB ; Coupe l'alim relais
;
; Détection d'un état 0 de 1,5 ms sur REC pour la lecture de la première trame
; On test 255 fois si le signal reçu est à 0
; Si c'est le cas, on se situe entre deux trames
;
movlw 0xFF
movwf ST3 ; ST3=255
InterT0 btfss REC ; Test de l'état logique du signal HF reçu
goto InterT1 ; Le signal est à 0
goto Debut ; Le signal est à 1, on attend une inter trame
InterT1 decfsz ST3,F ; Décrémente ST3
goto InterT0 ; On continu à tester REC
;
; On est dans une inter-trame
; Lecture et sauvegarde des 8 bits ( les 8 poussoirs )
;
call Trame ; Lecture des 8 bits
movf TRAME0,W
movwf TRAME1 ; Sauvegarde des 8 bits qui viennent d'être lus dans TRAME1
;
; Détection d'un état 0 de 1,5 ms sur REC pour la lecture de la deuxième trame
;

Det1 movlw 0xFF
movwf ST3
InterT2 btfss REC
goto InterT3
goto Debut
InterT3 decfsz ST3,F
goto InterT2
;
; On est dans une inter-trame
; Lecture et sauvegarde des 8 bits
;
call Trame ; Lecture des 8 bits
movf TRAME0,W
movwf TRAME2 ; Sauvegarde des 8 bits qui viennent d'être lus dans TRAME2
;
; Comparaison des deux trames recues par HF. Les 2 trames doivent être identiques
;
movf TRAME1,W ; W=TRAME1
subwf TRAME2,W ; W=TRAME2-TRAME1
btfsc STATUS,Z ; Test si le résultat est nul
goto Comp0 ; Les deux trames sont identiques
goto Debut ; Les deux trames sont différentes
Comp0
;
; Détection d'un état 0 de 1,5 ms sur REC pour la lecture de la troisième trame
;

Det2 movlw 0xFF
movwf ST3
InterT4 btfss REC
goto InterT5
goto Debut
InterT5 decfsz ST3,F
goto InterT4
;
; On est dans une inter-trame
; Lecture et sauvegarde des 8 bits
;
call Trame ; Lecture des 8 bits
movf TRAME0,W
movwf TRAME2 ; Sauvegarde des 8 bits qui viennent d'être lus dans TRAME2
;
; Comparaison des deux trames recues par HF. Les 2 trames doivent être identiques
;
movf TRAME1,W ; W=TRAME1
subwf TRAME2,W ; W=TRAME2-TRAME1
btfsc STATUS,Z ; Test si le résultat est nul
goto Comp1 ; Les deux trames sont identiques
goto Debut ; Les deux trames sont différentes
Comp1
;
; Mode impulsionnel : Cavalier en place
; Les deux trames sont identiques
; Mise à l'état 1 de l'une des 8 sorties
;
btfsc CAV1 ; Test l'état du cavalier
goto Bist ; On saute au mode bistable
; On est en mode impulsionnel
movf TRAME2,W ; W=TRAME2
movwf PORTB ; Recopie TRAME2 sur le PORTB
;
goto Att ; Attente 2 secondes évite les rebonds
;
; Mode bistable : pas de cavalier
; Les deux trames sont identiques
; Changement de l'état de l'une des 8 sorties
;
Bist movf TRAME2,W ; W=TRAME2
xorwf PORTB,F ; Complémente l'état du relais concerné
;
; On attend 2 secondes en mode bistable pour que le poussoir soit relâché
; On attend 2 secondes en mode impulsionnel pour éviter les rebonds du BP
; Trois boucles imbriquées
;
Att movlw 10
movwf K
T0 movlw 255
movwf J
T1 movlw 255
movwf I
T2 decfsz I,F
goto T2
decfsz J,F
goto T1
decfsz K,F
goto T0
;
goto Det1 ; On part relire une trame
;
; On sort d'une inter-trame
; Extraction des 8 bits d'une trame
;
Trame clrf TRAME0 ; TRAME0=0 La trame courante est stockée dans TRAME0
movlw 8 ; Pour lecture des 8 bits
movwf K ; K=8
Ext1 btfsc REC ; On est encore dans l'inter trame
goto Ext2 ; Front montant
goto Ext1 ; On attend le premier front montant
Ext2 btfss REC ; on est sur un état haut, on attend le front descendant
goto Ext3 ; Front descendant
goto Ext2 ; On attend le front descendant
;
Ext3 movlw 120 ; Attente d' 1,5 bit (environ 375 s)
movwf I ; pour se retrouver au milieu du bit à lire
Temp15 decfsz I,F
goto Temp15
;
movf PORTA,W ; W=PORTA
movwf I ; I=PORTA
rrf I,F ; Trois rotations pour retrouver RA2 (bit à lire) sur Carry
rrf I,F ;
rrf I,F ; REC dans le bit de Carry
rrf TRAME0,F ; sauvegarde du bit qui vient d'être lu dans TRAME0,7
;
movlw 70 ; Attente d'une durée approximative d'un bit
movwf I ; pour se retrouver juste avant le prochain front descendant.
Temp10 decfsz I,F ; 212 s
goto Temp10
;
decfsz K,F ; On décrémente K
goto Ext2 ; On passe à la lecture du bit suivant
; ; La lecture des 8 bits est terminée
movlw 160 ; Les 8 bits ont été lus, on passe le bit Stop et
movwf I ; on saute dans l'inter-trame
Temp16 decfsz I,F ; 482 s
goto Temp16
;
Return
;
; Tempo de 127 s
;
Temp300
movlw 41
movwf I
Temp300a
decfsz I,F ; 127 s ()
goto Temp300a
Return
;
end

دعواتكم معي يا حبيبي لكي لا يتم تردي من المنتدى ههههههههههههههه

هدا المشروع منقول للإفادة
المصدر الموقع الفرنسي

http://doumai.pagesperso-orange.fr/

يحتوي على دوائر جمبلة جدا



اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 21-11-2010, 11:36 AM المشاركة 3   
افتراضي


اخى الكريم

شكرا جزيلا لك

موضوع ومشروع رائع ومتكامل

بارك الله فيك

اقترح ان نقوم معا بتنفيذه عمليا على برنامج بروتيس .

مع تمنياتى بدوام التوفيق


الصورة الرمزية اكزي
اكزي
:: عضو ذهبي ::
تاريخ التسجيل: May 2009
الدولة: المغرب iguizzi06*hotmail.com // www.facebook.com/iguizzi.abdallah
المشاركات: 2,434
نشاط [ اكزي ]
قوة السمعة:148
قديم 21-11-2010, 12:21 PM المشاركة 4   
افتراضي


السلام عليكم أخي الكريم


شكرا جزيلا على العمل الرائع و بارك الله فيك


kiai87
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: جنوب المغرب
المشاركات: 1,115
نشاط [ kiai87 ]
قوة السمعة:117
قديم 21-11-2010, 12:22 PM المشاركة 5   
افتراضي






أجمل وأحلا تحيا إلى أعز وأفضل أستاد في المنتدى لك كل تقدير
والإحترام
يا أستادي فتح الله

والله فكرة جميلة جدا ويشرفني أن تكون أنت سباق في تنفيدها



kiai87
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: جنوب المغرب
المشاركات: 1,115
نشاط [ kiai87 ]
قوة السمعة:117
قديم 21-11-2010, 12:27 PM المشاركة 6   
افتراضي


السلام عليكم

أهلا بحبيبي وصديقي أكزي شرفت موضوعي بمرورك


الصورة الرمزية اكزي
اكزي
:: عضو ذهبي ::
تاريخ التسجيل: May 2009
الدولة: المغرب iguizzi06*hotmail.com // www.facebook.com/iguizzi.abdallah
المشاركات: 2,434
نشاط [ اكزي ]
قوة السمعة:148
قديم 21-11-2010, 12:35 PM المشاركة 7   
افتراضي


السلام عليكم

أهلا بحبيبي وصديقي أكزي شرفت موضوعي بمرورك
.............................

بارك الله فيك أخي الكريم على الرد الجميل من سيادتكم المحترمة وجزاك الله خيرا في الدنيا والأخرة


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 21-11-2010, 12:54 PM المشاركة 8   
افتراضي








أجمل وأحلا تحيا إلى أعز وأفضل أستاد في المنتدى لك كل تقدير
والإحترام
يا أستادي فتح الله

والله فكرة جميلة جدا ويشرفني أن تكون أنت سباق في تنفيدها



اخى الكريم

شكرا جزيلا لك

يسعدنى ويشرفنى ان نعمل سويا

مع تمنياتى بدوام التوفيق

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 11:19 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025