放假回家了,基本上都是一個人在家,晚上除了自己的房間有光,其他房間都是黑漆漆的,每當要去客廳接水喝,走到門口時都有種恐怖的感覺……
于是想到很久以前用89C52做的人體紅外感應燈,從柜子里翻出來看了看,LED什么的都拆了,但是人體紅外感應模 塊還在,89C52的最小系統也是完整的,反正51單片機現在不用以后也用不到了,于是就開干,把這個人體紅外感應等做完整,正好也復習(學習)一下51單片機的玩法。
第一部分 原理圖設計
這就是板子原本的樣子。其實這是我當年自己焊的第一塊板子,背后太難看就不拍了。

然后這就是STM89C52,注意方向哦,認真看圖能發現上面是有個半圓弧的缺口的,他朝上。

然后基于目前的板子來設計電路圖吧。
首先我們要知道89C52封裝后的引腳和原理圖中標的是不同的,所以看89C52的引腳圖。

結合圖看到我們人體紅外傳感器離P2.0這個IO口很近,于是決定把P2.0口作為輸入口。
51單片機需要最小系統才能正確運行,所以我們是來了解一下,雖然板子上已經焊好了。
打開Proteus,開始設計原理圖。

這就是最基本的電路了。XTAL1和XTAL2這一部分是時鐘電路,RST接出去的就是復位電路。
復位電路很好理解,就是按一下就復位嘛,51單片機是高電平復位,所以平時應該要通過下拉電阻下拉,保證平時是低電平,那個10K的電阻一頭接地一頭接RST,所以他就是下拉電阻了。
可能沒玩過51單片機的同學不清楚時鐘電路是什么回事,時鐘電路就是產生象時鐘一樣準確的振蕩電路。震蕩電路就相當于我們的心臟,他要按一定的頻率跳動我們才能活。另外時鐘電路就像是我們做廣播體操一樣,需要提供一個節拍,我們每個人跟著節拍做才能做整齊,而這個節拍就是單片機心臟跳動的頻率。
我們平時玩Arduino時并不用關心振蕩電路或者復位電路,因為板子上已經都設計好了,比如我的UNO就是16MHz的晶振,并且AVR單片機可以使用內部的晶振。而51單片機沒有內部晶振,必須要使用外部晶振。
另外可以看到圖上EA口接了高電平,EA為片外程序存儲器選擇輸入端,低電平時,使用片外程序存儲器;高電平時,使用片內程序存儲器。當然我們就是使用片內程序存儲器咯。
這樣連接好單片機最基本的電路就完成了,燒上程序供電就能運行了。
在我們編程之前,先把電路設計完整。

這里我們加了2部分。
第一部分就是P2.0的輸入,由于沒有人體紅外傳感器的仿真模塊,就用一個按鈕來代替。我們的人體紅外傳感器使用的是HC-SR501,根據文檔我們可以知道當感應到有人時,OUT引腳是置為高電平3.3V的。在51中,或者Arduino中,單片機系統使用5V作為高電平時,3.3V也是算作高電平的。
第二部分就是LED啦。電阻是作為限流用的,防止電流過大燒壞LED或者單片機,我這里使用了玩Arduino都陪的220歐電阻,當然可以小一點,也可以大一點,只不過太小了起不到限流的作用,太大了雖然對硬件沒有損壞但是亮度就太小了。
第二部分 程序設計
直接上程序。

這樣就是最簡易的代碼了,大家應該都有C語言基礎就不用講太細了。P1,P2都是“reg51.h”里面定義了的,直接拿來用就行了。sbit是位定義,我們定義了“in”為P2.0這個引腳。P1我們沒有單獨定義每個引腳,因為我們可以直接將所有P1的端口置0或者置1。延時函數大家都能理解嘛,執行空循環浪費時間就行了。而while(1){}就相當于Arduino的loop(){}。
這里我們只要判斷,P2.0口如果是高電平,那么就把P1口設置為0,即低電平,延時1000毫秒,再將P1口設置為1,即高電平。當然,真正使用時延時1秒肯定不夠,我最后設置的是60秒。
第三部分 仿真
Proteus有仿真功能,加載Keil C生成的HEX文件,然后點擊左下角的運行仿真即可。

這樣就開始仿真了,然后點擊P2.0口的按鈕。

按下按鈕后對比發現LED亮了,并且延時約1秒后又熄滅了,說明程序正確執行了。
第四部分 動手開工
先來把程序燒錄上。記得把延時程序改成60秒哦。

通過USB2TTL,RX,TX反接。

按通常的燒錄方法就行了。
然后上電烙鐵,對照原理圖設計電路圖。因為這個原理圖很簡單,直接在大腦里就能畫出電路圖。如果復雜了,還是先把電路圖設計好再焊接。
我一直記得我有白光LED,但是找來找去都沒有找到,翻了翻淘寶發現真的是我記錯了,于是我就用2個紅色LED和2個藍色LED來代替了。
注意LED的導線,由于要安裝在不同的位置所以導線也不一樣長,這個要根據自身情況而定。

要說的就是我把面包版的電源模塊拿來用了,又可以用電池又可以通過USB用移動電源。
然后開始部署,我是用透明膠固定導線。想到拆的時候會留膠,所以沒粘很多,看起來不太美觀。

正好我門口對面就有個平臺可以放。然后需要調節下傳感器的感知距離,我調到最低的,反正完全夠用了。
第五部分 使用測試
好不容易等到了晚上,可以測試了。
先打開電源,單片機運行,感受到了我的人體紅外,燈亮。于是我進房間,留下一條門縫,一分鐘左右燈熄滅了,于是我拉開門,燈又一下亮了起來。程序是沒問題,單片機能正確運行。蛋似!光線真的太弱了。雖然我們看得到,但是本來就弱的光線,還是紅色和藍色的,這氛圍更加詭異了……

這是什么!瞬間有種進了鬼屋的感覺啊!嚇死本寶寶了!
我覺得還是早睡早起好!
第六部分 總結
如果真的要做的話,還是賣個大功率白光LED吧,有條件的同學還可以繼電器加電燈。
最后附上所有資料的下載。
*本文作者:zhangtory |