熱門: 51單片機(jī) | 24小時必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時間: 2019-11-11 20:29
正文摘要:我現(xiàn)在用單片機(jī)外接一個紅外模塊,想要通過單片機(jī)上按鍵控制紅外模塊發(fā)射紅外,這個紅外模塊編碼是5個16進(jìn)制數(shù)組成,遵循NEC協(xié)議,我已經(jīng)有了要發(fā)送的編碼,比如這個A1 F1 00 FF 45 ,這個第一位是地址 ... |
|
你上面的程序是:按鍵控制串口發(fā)送5個十六進(jìn)制代碼。 你的紅外模塊功能和參數(shù)我也不知道,所以不清楚你的模塊是怎么工作的?只能猜測它會發(fā)射你要的代碼出去。 一般NEC代碼的格式是:一個起始代碼 + 一個用戶碼 + 一個用戶碼反碼 + 一個數(shù)據(jù)代碼 + 一個數(shù)據(jù)代碼反碼。 如果你的模塊也是這樣發(fā)送的,那就要看你用什么接收這個信號?是模塊還是你學(xué)習(xí)板上面的紅外接收頭? 如果是模塊的話,估計(jì)是通過串行通訊給你的學(xué)習(xí)板發(fā)送代碼,你需要編寫串行通訊接收函數(shù)來接收這個信號,再根據(jù)信號控制LED燈; 反之要是通過學(xué)習(xí)板上的接收頭接收,那就要編寫紅外接收函數(shù)來處理,而不是串行接收代碼函數(shù)。 |
|
僅僅編一個紅外遙控解碼的程序,難度不太大,最難的是在一段程序里插入紅外遙控解碼程序,紅外發(fā)射的信號慢、速率低,造成遙控解碼程序速度也很慢,要想完整解碼所有的紅外發(fā)射數(shù)據(jù),勢必影響主程序的運(yùn)行,前段時間我就編了一個紅外接收程序,外部中斷進(jìn)入紅外接收程序,解碼完成后又用定時中斷退出外部中斷,就用這個方法,我編出來的紅外遙控解碼程序相當(dāng)好用,靈敏度很高,距離夠遠(yuǎn),對主程序的影響在可以接收范圍之內(nèi),我也只能給你一個思路,就是外部中斷進(jìn)入紅外接收程序,解碼完成后又用定時中斷退出外部中斷,沒有紅外發(fā)射就不會進(jìn)入紅外接收程序。 紅外發(fā)射程序沒有編過,難度應(yīng)該更小,無非就是把數(shù)字調(diào)制在38K的信號,你要發(fā)射的數(shù)據(jù)A1 F1 00 FF 45最后兩位不對,最后兩位是反碼關(guān)系,F(xiàn)F的反碼是00。 |
![]() |
| 你這個模塊應(yīng)該是通過串口收發(fā)送數(shù)據(jù)的,可以參考51串口的例子 |
來51學(xué)習(xí)1 發(fā)表于 2019-11-12 09:36 波特率是對的,現(xiàn)在的要求是用這個紅外模塊來發(fā)送 |
|
你好! 1、for 發(fā)送的過程里面不應(yīng)該有延時 2、用單片機(jī)作為主控,直接用單片機(jī)發(fā)射紅外,不用外置紅外模塊 3、單片機(jī)晶振采用 11.0592,單片機(jī)波特率要和紅外模塊一致 |
Powered by 單片機(jī)教程網(wǎng)