于是想到很久以前用89C52做的人體紅外感應燈,從柜子里翻出來看了看,LED什么的都拆了,但是人體紅外感應模 塊還在,89C52的最小系統(tǒng)也是完整的,反正51單片機現(xiàn)在不用以后也用不到了,于是就開干,把這個人體紅外感應等做完整,正好也復習(學習)一下51單片機的玩法。
第一部分 原理圖設計
這就是板子原本的樣子。其實這是我當年自己焊的第一塊板子,背后太難看就不拍了。
然后這就是STM89C52,注意方向哦,認真看圖能發(fā)現(xiàn)上面是有個半圓弧的缺口的,他朝上。
然后基于目前的板子來設計電路圖吧。
首先我們要知道89C52封裝后的引腳和原理圖中標的是不同的,所以看89C52的引腳圖。
結(jié)合圖看到我們?nèi)梭w紅外傳感器離P2.0這個IO口很近,于是決定把P2.0口作為輸入口。
51單片機需要最小系統(tǒng)才能正確運行,所以我們是來了解一下,雖然板子上已經(jīng)焊好了。
打開Proteus,開始設計原理圖。
這就是最基本的電路了。XTAL1和XTAL2這一部分是時鐘電路,RST接出去的就是復位電路。
復位電路很好理解,就是按一下就復位嘛,51單片機是高電平復位,所以平時應該要通過下拉電阻下拉,保證平時是低電平,那個10K的電阻一頭接地一頭接RST,所以他就是下拉電阻了。
可能沒玩過51單片機的同學不清楚時鐘電路是什么回事,時鐘電路就是產(chǎn)生象時鐘一樣準確的振蕩電路。震蕩電路就相當于我們的心臟,他要按一定的頻率跳動我們才能活。另外時鐘電路就像是我們做廣播體操一樣,需要提供一個節(jié)拍,我們每個人跟著節(jié)拍做才能做整齊,而這個節(jié)拍就是單片機心臟跳動的頻率。
我們平時玩Arduino時并不用關心振蕩電路或者復位電路,因為板子上已經(jīng)都設計好了,比如我的UNO就是16MHz的晶振,并且AVR單片機可以使用內(nèi)部的晶振。而51單片機沒有內(nèi)部晶振,必須要使用外部晶振。
另外可以看到圖上EA口接了高電平,EA為片外程序存儲器選擇輸入端,低電平時,使用片外程序存儲器;高電平時,使用片內(nèi)程序存儲器。當然我們就是使用片內(nèi)程序存儲器咯。
這樣連接好單片機最基本的電路就完成了,燒上程序供電就能運行了。
在我們編程之前,先把電路設計完整。
這里我們加了2部分。
第一部分就是P2.0的輸入,由于沒有人體紅外傳感器的仿真模塊,就用一個按鈕來代替。我們的人體紅外傳感器使用的是HC-SR501,根據(jù)文檔我們可以知道當感應到有人時,OUT引腳是置為高電平3.3V的。在51中,或者Arduino中,單片機系統(tǒng)使用5V作為高電平時,3.3V也是算作高電平的。
第二部分就是LED啦。電阻是作為限流用的,防止電流過大燒壞LED或者單片機,我這里使用了玩Arduino都陪的220歐電阻,當然可以小一點,也可以大一點,只不過太小了起不到限流的作用,太大了雖然對硬件沒有損壞但是亮度就太小了。
第二部分 程序設計
直接上程序。
這樣就是最簡易的代碼了,大家應該都有C語言基礎就不用講太細了。P1,P2都是“reg51.h”里面定義了的,直接拿來用就行了。sbit是位定義,我們定義了“in”為P2.0這個引腳。P1我們沒有單獨定義每個引腳,因為我們可以直接將所有P1的端口置0或者置1。延時函數(shù)大家都能理解嘛,執(zhí)行空循環(huán)浪費時間就行了。而while(1){}就相當于Arduino的loop(){}。
這里我們只要判斷,P2.0口如果是高電平,那么就把P1口設置為0,即低電平,延時1000毫秒,再將P1口設置為1,即高電平。當然,真正使用時延時1秒肯定不夠,我最后設置的是60秒。
第三部分 仿真
Proteus有仿真功能,加載Keil C生成的HEX文件,然后點擊左下角的運行仿真即可。
這樣就開始仿真了,然后點擊P2.0口的按鈕。
按下按鈕后對比發(fā)現(xiàn)LED亮了,并且延時約1秒后又熄滅了,說明程序正確執(zhí)行了。
第四部分 動手開工
先來把程序燒錄上。記得把延時程序改成60秒哦。
通過USB2TTL,RX,TX反接。
按通常的燒錄方法就行了。
然后上電烙鐵,對照原理圖設計電路圖。因為這個原理圖很簡單,直接在大腦里就能畫出電路圖。如果復雜了,還是先把電路圖設計好再焊接。
我一直記得我有白光LED,但是找來找去都沒有找到,翻了翻淘寶發(fā)現(xiàn)真的是我記錯了,于是我就用2個紅色LED和2個藍色LED來代替了。
注意LED的導線,由于要安裝在不同的位置所以導線也不一樣長,這個要根據(jù)自身情況而定。
要說的就是我把面包版的電源模塊拿來用了,又可以用電池又可以通過USB用移動電源。
然后開始部署,我是用透明膠固定導線。想到拆的時候會留膠,所以沒粘很多,看起來不太美觀。
正好我門口對面就有個平臺可以放。然后需要調(diào)節(jié)下傳感器的感知距離,我調(diào)到最低的,反正完全夠用了。
第五部分 使用測試
好不容易等到了晚上,可以測試了。
先打開電源,單片機運行,感受到了我的人體紅外,燈亮。于是我進房間,留下一條門縫,一分鐘左右燈熄滅了,于是我拉開門,燈又一下亮了起來。程序是沒問題,單片機能正確運行。蛋似!光線真的太弱了。雖然我們看得到,但是本來就弱的光線,還是紅色和藍色的,這氛圍更加詭異了……
這是什么!瞬間有種進了鬼屋的感覺啊!嚇死本寶寶了!
我覺得還是早睡早起好!
第六部分 總結(jié)
如果真的要做的話,還是賣個大功率白光LED吧,有條件的同學還可以繼電器加電燈。
最后附上所有資料的下載。
*本文作者:zhangtory
42.91 KB, 下載次數(shù): 380, 下載積分: 黑幣 -5
有在一個錯誤.jpg (55.03 KB, 下載次數(shù): 198)
hclin 發(fā)表于 2016-6-25 23:01
那個 PIR 模組本身就有調(diào)整延長時間的VR,不必用MCU來處理,板主做法似乎殺雞用牛刀。
827254237 發(fā)表于 2016-6-4 23:06
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****
wodecuo 發(fā)表于 2018-4-25 17:16
為什么燒好程序后,連接電源,燈一亮一滅?
1677844682 發(fā)表于 2018-4-1 21:36
樓主我按照你說的做了一遍仿真,發(fā)現(xiàn)達不到和你一樣的效果,一運行程序仿真燈就亮,按下按鈕沒反應,檢查好 ...
都市郎 發(fā)表于 2018-1-20 22:13
編譯有一個錯誤不通過,如圖所示:還有樓主仿真圖里的R7是干嗎用的?
都市郎 發(fā)表于 2018-1-20 22:13
編譯有一個錯誤不通過,如圖所示:還有樓主仿真圖里的R7是干嗎用的?
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |