【學習機】紅外遙控學習機的設計
2013-01-12 19:11:13 作者:goukk 來源:電子教育知識 網(wǎng)友評論 0 條
項目中要用到紅外遙控,要先學習遙控器的編碼,然后在發(fā)出去,也就是萬能遙控器的功能,想著很麻煩,就在淘寶上買了個萬能遙控器,想回來改裝, 買回來了,發(fā)現(xiàn)一改裝,咋看咋不專業(yè),客戶肯定不滿意,跟拼湊別人的產(chǎn)品似的,算了,還是自己整吧,嘿嘿,不說廢話了,還是看我咋做的紅外遙控學習機的吧。
1 、功能:利用單鍵學習型遙控器可以學習任何遙控器的某種按鍵功能,編碼保存在 24C 02 中,保證掉電之后,編碼不丟失。
2 、使用方法:按下學習鍵,學習燈亮,用遙控器對準紅外遙控接收頭,學習完成之后,學習燈熄滅,狀態(tài)等亮,說明可以發(fā)射了,按發(fā)射鍵,就可以發(fā)射學習到的編碼。
3 、系統(tǒng)硬件設計。
使用 89C 52 單片機 12M 晶振
sbit studylamp=P2^7; // 學習指示燈
sbit lamp=P2^6; // 狀態(tài)指示燈
sbit studykey=P3^2; // 學習鍵 (外部中斷)
sbit remotein=P1^1; // 信號輸入
sbit remoteout=P1^0; // 信號輸出
sbit txkey=P0^0; // 發(fā)射鍵
4 、軟件設計
( 1 )初始化
studylamp=1; // 學習燈不亮
lamp=1; // 發(fā)射燈不亮
remoteout=0; // 關(guān)遙控輸出
remotein=1; // 輸入位
IE=0x00;// 關(guān)閉中斷
IP=0x01;// 設定優(yōu)先級 外部中斷優(yōu)先級高
TMOD=0x22; // 定時器控制寄存器設置串口工作方式 模式 2 自動裝入計數(shù)器
TH0=0xf3; // 設定定時器 1 初值 40KHZ 初值
TL0=0xf3;
PCON=0x00;// 設定串口 波特率不加倍
IT0=1;// 外部中斷 脈沖觸發(fā) 邊沿觸發(fā)
EX0=1;// 允許外部中斷 0
EA=1; // 打開總中斷
( 2 )學習功能
學習功能的程序可以完成遙控編碼的起始位識別、遙控碼的寬度計數(shù)功能、結(jié)束位的識別功能,遙控碼的幀間歇位寬度在 10MS 以上,起始位碼寬度在 100us----20ms 之間,編碼位在 100us-------5ms 之間
確定起始位:高電平寬度超過 5.355ms ,接著是低電平碼,就是起始位
讀遙控編碼:對高電平或者低電平進行脈寬計數(shù),點評掉變的時候計數(shù)計數(shù),將計數(shù)值保存,確定結(jié)束位:在高電平計數(shù),如果超過 5.355ms ,則判斷為結(jié)束幀位,寫入 0x00 作為結(jié)束標志
( 3 )編碼發(fā)射
遙控碼發(fā)送處理程序利用計數(shù)器計數(shù)中斷功能,實現(xiàn) 40KHz 載波的發(fā)送,利用接收的電平時間,控制載波的發(fā)送時間
( 4 )向 24c 02 中寫數(shù)據(jù)
void WrToROM(unsigned char Data[],unsigned char Address,unsigned char Num)
參數(shù):要寫入的數(shù)據(jù)、要寫入的地址、要寫入的數(shù)據(jù)的個數(shù)
( 4 )讀 24c 02 中寫數(shù)據(jù)
void RdFromROM(unsigned char Data[],unsigned char Address,unsigned char Num)
參數(shù):讀出來的數(shù)據(jù)要存放的地址、要讀的地址、要讀的數(shù)據(jù)的個數(shù)
( 5 )延時程序
用于鍵盤的消抖操作
5 、主程序
// 主函數(shù)
void main()
{
clearmen();// 初始化
while(1)
{
key_tx(); // 發(fā)射按鍵掃描
}
}
學習按鍵是外部中斷 0
發(fā)射編碼的時候用的是定時 0 中斷
您可能想了解的品牌:
十佳點讀筆品牌榜上榜:http://www.goukk.com/000518ddj_index.htm
十佳學習機品牌榜上榜:http://www.goukk.com/0659xxj_index.html
十佳電子詞典品牌榜上榜:http://www.goukk.com/000197dzcd-wenju_index.htm
相關(guān)文章
[錯誤報告] [推薦] [收藏] [打印] [關(guān)閉] [返回頂部]