已經會用單片機實現流水燈的功能,說明對單片機有了初步的入門知識,會配置單片機的GPIO口輸出了,建議再學習以下單片機的GPIO的輸入,比如按鍵輸入。因為紅外遙控會使用到GPIO輸出和GPIO輸入,還用會要定時器甚至中斷。下面從硬件設計和程序設計介紹一下紅外遙控的設計。
1.紅外發射電路的設計
紅外遙控涉及到一發一收,即一個紅外發射管和一個紅外接收管配合使用。紅外發射管一般是透明的,跟發光二極管LED驅動方法一致。如下圖所示,是設計的紅外發射電路。單片機輸出高電平時三極管導通,發射管工作發出紅外光,這里也可以用按鍵來控制。
2.紅外接收電路的設計
紅外接收管用來接收發射管所發出的紅外光,紅外接收管可以用普通的接收管,也可以使用專用的紅外接收頭,如VS1838系列接收頭,下圖是使用1838接收頭實現的紅外電路。當接收到紅外光后,1838輸出低電平。
如果你是通過單片機開發板來學習的,那么板子上應該帶有紅外接收頭,并且配有紅外遙控器,盡可能的利用手邊的資源。
3.簡單紅外遙控的實現
硬件電路設計好之后,就要設計程序了。你可以使用紅外遙控控制板子上LED燈的亮滅、流水燈的花樣變換、繼電器的工作燈。這種簡單的指令只需要檢測紅外輸出的電平就可以。如果單片機檢測到低電平,說明有人按了紅外遙控器,把繼電器打開即可,不需要走協議。
4.紅外數據通信的實現
如果用通過紅外來傳輸數據的話,就需要遵循一定的協議了。目前常用的紅外通訊協議是NEC的協議,如下圖規定了邏輯0和邏輯1的脈沖寬度。
在編寫程序時可能用到單片機的定時器資源、中斷資源、捕捉等。所以NEC協議的實現,對初學者來說還是比較復雜的。建議先從簡單的遙控命令入手。