生活随笔
收集整理的這篇文章主要介紹了
433遥控器无线解码 1527中断方式解码 51单片机
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
433遙控器無線解碼 1527中斷方式解碼 51單片機
這版為1527遙控器解碼,是為了項目洗臀器做遙控器控制。1527遙控器原理如下。
碼分別為:同步碼 地址碼20位 鍵碼4位(也可以同步碼16位 鍵碼八位)
本方法的核心思想先判斷同步碼是否接收成功,如果接收成功開始接收后面的24位數(shù)據(jù)并且存入三個字節(jié)當中,最后一個字節(jié)的后四位就是鍵碼,然后通過鍵碼的不同確定不同的功能。
本實驗所使用遙控器,因為遙控器發(fā)出波形時間會有誤差,所以下面都是大概值 程序中也會以范圍方式判斷。
每楨碼間隔時間為12MS (即同步碼)
同步碼:0.4MS+12MS
0:0.4MS+1.2MS 為0
1:1.2MS+0.4MS 為1
以下就是這次的代碼了
#include <stc15.h>
#include <intrins.h>#define uchar unsigned char
#define uint unsigned intsbit RF
= P0
^5;
sbit LED
= P3
^4; sbit D0
= P3
^6;
sbit D1
= P3
^7;
sbit D2
= P4
^1;
sbit D3
= P4
^2;
sbit VT
= P3
^5; bit decode_ok
;
uchar hh_w
,ll_w
;
uchar ma_x
;
uchar bma1
,bma2
,bma3
,bma4
;
uchar idata mmb1
,mmb2
,mmb3
,mmb4
; bit rf_ok1
,rf_ok2
;
bit rf_ok
;
bit old_rc5
;
bit tb_ok
; uchar mma1
,mma2
,mma3
,mma4
;
uchar temp_h
;temp_l
;
bit bt_auto
;
uint s
,s1
;用于系統(tǒng)延遲 分別為留時間做第二次解碼 和 留時間實現(xiàn)功能 目的保證系統(tǒng)穩(wěn)定性
void timeint() interrupt
1 { if(!bt_auto
) {TL0
=0x70; TH0
=0xfB; else{TL0
=temp_l
; TH0
=temp_h
; }TF0
=0; if (!RF
){ ll_w
++;old_rc5
=0; } else { hh_w
++;if (!old_rc5
) { if (((hh_w
>=2)&&(hh_w
<=8))&&((ll_w
>=50)&&(ll_w
<=190))) { if((ll_w
>=110)&&(ll_w
<=140)){ma_x
=0;tb_ok
=1;bma1
=0; bma2
=0; bma3
=0; bt_auto
=0;} else{ if((ll_w
>140)&&(ll_w
<=160)){ ma_x
=0;tb_ok
=1;bma1
=0; bma2
=0; bma3
=0; bt_auto
=1;temp_h
=0xfe;temp_l
=0x6b; } else{ if((ll_w
>160)&&(ll_w
<=190)){ ma_x
=0;tb_ok
=1;bma1
=0; bma2
=0; bma3
=0; bt_auto
=1;temp_h
=0xfd;temp_l
=0xdc; }else{ if((ll_w
>70)&&(ll_w
<=90)){ma_x
=0;tb_ok
=1;bma1
=0; bma2
=0; bma3
=0; bt_auto
=1;temp_h
=0xff;temp_l
=0x30; }else{if((ll_w
>90)&&(ll_w
<=110)){ma_x
=0;tb_ok
=1;bma1
=0; bma2
=0; bma3
=0; bt_auto
=1;temp_h
=0xff;temp_l
=0x00; }else{if((ll_w
>=50)&&(ll_w
<=70)){ma_x
=0;tb_ok
=1;bma1
=0; bma2
=0; bma3
=0; bt_auto
=1;temp_h
=0xff;temp_l
=0x7a; } }}} }} }else if ((tb_ok
)&&((ll_w
>=10)&&(ll_w
<=14))) { ma_x
++; if(ma_x
>23){if(!rf_ok1
)第一次接收到
{mma1
=bma1
;mma2
=bma2
;mma3
=bma3
;mma4
=bma4
;rf_ok1
=1; tb_ok
=0;bt_auto
=0;s
=1500; }else {mmb1
=bma1
;mmb2
=bma2
;mmb3
=bma3
;mmb4
=bma4
;rf_ok2
=1; tb_ok
=0;bt_auto
=0; }}} else if ((tb_ok
)&&((ll_w
>=2)&&(ll_w
<=8))) { switch (ma_x
) { case 0 : { bma1
=bma1
| 0x80; break; }case 1 : { bma1
=bma1
| 0x40; break; }case 2 : { bma1
=bma1
| 0x20; break; }case 3 : { bma1
=bma1
| 0x10; break; }case 4 : { bma1
=bma1
| 0x08; break; }case 5 : { bma1
=bma1
| 0x04; break; }case 6 : { bma1
=bma1
| 0x02; break; }case 7 : { bma1
=bma1
| 0x01; break; }case 8 : { bma2
=bma2
| 0x80; break; }case 9 : { bma2
=bma2
| 0x40; break; }case 10: { bma2
=bma2
| 0x20; break; }case 11: { bma2
=bma2
| 0x10; break; }case 12: { bma2
=bma2
| 0x08; break; }case 13: { bma2
=bma2
| 0x04; break; }case 14: { bma2
=bma2
| 0x02; break; }case 15: { bma2
=bma2
| 0x01; break; }case 16: { bma3
=bma3
| 0x80; break; }case 17: { bma3
=bma3
| 0x40; break; }case 18: { bma3
=bma3
| 0x20; break; }case 19: { bma3
=bma3
| 0x10; break; }case 20: { bma4
=bma4
| 0x80; break; }case 21: { bma4
=bma4
| 0x40; break; }case 22: { bma4
=bma4
| 0x20; break; }case 23: { bma4
=bma4
| 0x10;if(!rf_ok1
){ mma1
=bma1
;mma2
=bma2
;mma3
=bma3
;mma4
=bma4
;rf_ok1
=1; tb_ok
=0;bt_auto
=0;s
=1500;break; }else{mmb1
=bma1
;mmb2
=bma2
;mmb3
=bma3
;mmb4
=bma4
;rf_ok2
=1; tb_ok
=0;bt_auto
=0;break; } }} ma_x
++;}else {ma_x
=0; tb_ok
=0; bt_auto
=0;bma1
=0; bma2
=0; bma3
=0; bma4
=0;hh_w
=1;ll_w
=0;} ll_w
=0;hh_w
=1; } old_rc5
=1; }if(rf_ok1
) {s
--;if(!s
) rf_ok1
=0;if(rf_ok2
) {if((mma1
==mmb1
)&&(mma2
==mmb2
)&&(mma3
==mmb3
)&&(mma4
==mmb4
)){rf_ok
=1; rf_ok1
=0;rf_ok2
=0; }else{rf_ok
=0;rf_ok1
=0;rf_ok2
=0; } } }if((rf_ok
)) { EA
=0;rf_ok
=0; D3
=mma4
& 0x80; D2
=mma4
& 0x40;D1
=mma4
& 0x20;D0
=mma4
& 0x10;
decode_ok
=1;VT
=0; s1
=1500;EA
=1;}if(decode_ok
) {s1
--;if(!s1
){VT
=1;decode_ok
=0;} }}void system_start() AUXR
=0xb5; P0M0
=0x01;P0M1
=0x20;P3M0
=0xC0;P3M1
=0x00;P4M0
=0x06;P4M1
=0x00;P0
=0xfe;P3
=0x3f; P4
=0xf9;TMOD
= 0x11; TL0
=0xb5;TH0
=0xfb;ET0
=1;TR0
=1; EA
=1;
}void main()
{system_start();while(1);
}
這次有點累了 下次補查詢方式解碼 下次用2262來寫吧 有不明白的可以下面提出來
總結
以上是生活随笔為你收集整理的433遥控器无线解码 1527中断方式解码 51单片机的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。