STC15F104W解碼原理圖.jpg (76.48 KB, 下載次數: 28)
下載附件
2024-5-7 09:31 上傳
1.png (18.78 KB, 下載次數: 35)
下載附件
2024-5-7 09:33 上傳
315-433MHZ學習遙控器芯片支持1527 2264 2260 2262 SC5211 HS2240等解碼,自動適應振蕩電阻 2260 2262 2264 如果不進行人工地址編碼,好多個遙控器地址編碼一樣的,只要學習一個遙控器,所有的遙控器都能同時用
一:如何設置自鎖,互鎖,點動輸出1:斷電。按住學習鍵然后上電保持1-2秒鐘后松開,學習燈閃3次,設置為自鎖輸出。 2:斷電。按住學習鍵然后上電保持1-2秒鐘后松開,學習燈閃1次,設置為互鎖輸出。 3:斷電。按住學習鍵然后上電保持1-2秒鐘后松開,學習燈閃2次,設置為點動輸出。 二:遙控器學習:以上輸出模式設置后斷開電源,然后上電,按一下學習鍵,學習燈保持亮,再按遙控器上的任意一鍵,學習燈熄滅,遙控器學習成功。重復上述操作可以學習多達20個遙控器。1527 2260 2262 2264等的遙控器可以混合學習使用。 三:如何清空已學習過的遙控器:斷電,按住學習鍵然后上電保持4秒以上再松開按鍵,學習燈閃爍4次,說明已學習過的遙控器已被清空。
單片機源程序如下:
//內部晶振:11.0592M //測試芯片:STC15F104E/STC11F04W //硬件最簡版 //實現2262、1527解碼輸出,學習、自適應多阻值,片內EEPROM存儲相關信息
#include <reg52.h> #include <intrins.h>
sfr AUXR=0x8e;
sfr IAP_DATA = 0xC2; //片內EEPROM資源聲明 sfr IAP_ADDRH = 0xC3; sfr IAP_ADDRL = 0xC4; sfr IAP_CMD = 0xC5; sfr IAP_TRIG = 0xC6; sfr IAP_CONTR = 0xC7;
sfr P3M0 =0xb2; sfr P3M1 =0xb1;
#define uchar unsigned char #define uint unsigned int
sbit RF = P3^4; //射頻引腳定義 sbit set = P3^3; //設置鍵定義
sbit keya = P3^0; //第一路 sbit keyb = P3^1; //第二路 sbit keyc = P3^2; //第三路 sbit keyd = P3^5; //第四路
uint ll_w; uchar hh_w; //高,低電平寬度 uchar ma_x; //接收到第幾位編碼了 uchar idata bma1,bma2,bma3; //用于接收過程存放遙控編碼,編碼比較兩次,這是第一次 uchar idata mmb1,mmb2,mmb3; // 用于接收過程存放遙控編碼,第二次 uchar key_data; uchar short_k; uchar mma1,mma2,mma3; //用于解碼過程 uchar L_M_select; uchar xplx; uint s,s1;
bit old_rc5; //保存上一次查詢到的電平狀態 bit tb_ok; //接收到同步的馬時置1 bit rf_ok1,rf_ok2; //解碼過程中的臨時接收成功標志 bit rf_ok; //接收到一個完整的遙控命令后置1,通知解碼程序可以解碼了 bit study; //進入學習狀態標志 bit system_int; //系統清零標志 bit m1,m2,m3,m4; bit flag_zs; bit decode_ok; //解碼成功
uchar idata key_number[61];
void delay_1ms(uint x) //1毫秒延時 { uchar b,c; for(x;x>0;x--) { for(b=5;b>0;b--) { for(c=150;c>0;c--); } } }
void BB(uint size,uchar Number) {
if(Number) { for(Number;Number>0;Number--) { set=0; delay_1ms(size); set=1; delay_1ms(size); } } else { set=0; delay_1ms(size); set=1; } }
void chick1527(uchar d) { uchar u; for(u=0;u<4;u++) { if(((d>>(u*2)) & 3)==2) { xplx=0x55; } } }
//==================================================== /////////片內EEPROM讀寫驅動程序/////////////////////////// //====================================================
void IAP_Disable() //關閉IAP { //關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處于安全狀態, //一次連續的IAP 操作完成之后建議關閉IAP 功能,不需要每次都關 IAP_CONTR = 0; //關閉IAP 功能 IAP_CMD = 0; //清命令寄存器,使命令寄存器無命令,此句可不用 IAP_TRIG = 0; //清命令觸發寄存器,使命令觸發寄存器無觸發,此句可不用 IAP_ADDRH = 0; IAP_ADDRL = 0; }//
//讀一字節,調用前需打開IAP 功能,入口:DPTR = 字節地址,返回:A = 讀出字節 uchar read_add(uint addr) //讀EEPROM { IAP_DATA = 0x00; IAP_CONTR = 0x84; //打開IAP 功能, 設置Flash 操作等待時間 IAP_CMD = 0x01; //IAP/ISP/EEPROM 字節讀命令
IAP_ADDRH = addr>>8; //設置目標單元地址的高8 位地址 IAP_ADDRL = addr&0xff; //設置目標單元地址的低8 位地址
EA = 0; IAP_TRIG = 0x5a; //先送 46h,再送B9h 到ISP/IAP 觸發寄存器,每次都需如此 IAP_TRIG = 0xa5; //送完 B9h 后,ISP/IAP 命令立即被觸發起動 _nop_(); EA = 1; IAP_Disable(); //關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處于安全狀態, //一次連續的IAP 操作完成之后建議關閉IAP 功能,不需要每次都關 return (IAP_DATA); }//------------------------------------------------------------------------------
//字節編程,調用前需打開IAP 功能,入口:DPTR = 字節地址, A= 須編程字節的數據 void write_add(uint addr,uchar ch) //直接寫EEPROM { IAP_CONTR = 0x84; //打開 IAP 功能, 設置Flash 操作等待時間 IAP_CMD = 0x02; //IAP/ISP/EEPROM 字節編程命令
IAP_ADDRH = addr>>8; //設置目標單元地址的高8 位地址 IAP_ADDRL = addr&0xff; //設置目標單元地址的低8 位地址
IAP_DATA = ch; //要編程的數據先送進IAP_DATA 寄存器 EA = 0; IAP_TRIG = 0x5a; //先送 46h,再送B9h 到ISP/IAP 觸發寄存器,每次都需如此 IAP_TRIG = 0xa5; //送完 B9h 后,ISP/IAP 命令立即被觸發起動 _nop_(); EA = 1; IAP_Disable(); //關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處于安全狀態, //一次連續的IAP 操作完成之后建議關閉IAP 功能,不需要每次都關 }//------------------------------------------------------------------------------ //擦除扇區, 入口:DPTR = 扇區地址
void Sector_Erase(uint addr) //扇區擦除 { IAP_CONTR = 0x84; //打開IAP 功能, 設置Flash 操作等待時間 IAP_CMD = 0x03; //IAP/ISP/EEPROM 扇區擦除命令
IAP_ADDRH =addr>>8; //設置目標單元地址的高8 位地址 IAP_ADDRL =addr&0xff; //設置目標單元地址的低8 位地址
EA = 0; IAP_TRIG = 0x5a; //先送 46h,再送B9h 到ISP/IAP 觸發寄存器,每次都需如此 IAP_TRIG = 0xa5; //送完 B9h 后,ISP/IAP 命令立即被觸發起動 _nop_();
EA = 1; 下載燒錄說明 IRC頻率選11.0592M 如果已燒錄過的單片機,燒錄前必須下載后恢復下出廠設置。才能再燒錄,新單片機不用恢復 操作:按住學習鍵,上電保持10秒以上松開即可。
Protel99格式的PCB和源程序燒寫文件等資料下載:
資料.7z
(435.33 KB, 下載次數: 71)
2024-5-7 15:26 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|