原作者:http://www.raoushi.com/bbs/dpj-196806-1.html
作品名稱:
智能大風(fēng)監(jiān)測(cè)系統(tǒng)
設(shè)計(jì)目標(biāo):
檢測(cè)窗外風(fēng)的大小。
2.2示窗外風(fēng)的大小。
2.3顯示窗戶的開(kāi)關(guān)狀態(tài)。
2.4手動(dòng)控制開(kāi)關(guān)窗戶。
2.5大風(fēng)報(bào)警。
設(shè)計(jì)步驟:
3.1需求分析
在夜晚大風(fēng)的天氣忘了關(guān)窗會(huì)帶來(lái)財(cái)產(chǎn)的損失。
3.2功能確定
檢測(cè)窗外風(fēng)的大小、顯示窗外風(fēng)的大小、顯示窗戶的開(kāi)關(guān)狀態(tài)、手動(dòng)控制開(kāi)關(guān)窗戶、大 風(fēng)報(bào)警。
3.3硬件需求單片機(jī)AT89c51、led燈、按鍵、8x8led點(diǎn)陣、有源蜂鳴器、7位數(shù)碼管、38譯碼器、輸入輸出擴(kuò)口。
3.4軟件編程
3.5調(diào)試
硬件原理
有兩個(gè)開(kāi)關(guān)控制上位機(jī)向兩個(gè)下位機(jī)傳輸數(shù)據(jù),K1控制一號(hào)從機(jī),K2控制二號(hào)從機(jī)。當(dāng)按下開(kāi)關(guān)K1時(shí)由上位機(jī)向一號(hào)從機(jī)發(fā)送數(shù)據(jù),一號(hào)從機(jī)根據(jù)收到的數(shù)據(jù)執(zhí)行相應(yīng)操作。當(dāng)按下開(kāi)關(guān)K2時(shí)由上位機(jī)向二號(hào)從機(jī)發(fā)送數(shù)據(jù),二號(hào)從機(jī)根據(jù)收到的數(shù)據(jù)執(zhí)行相應(yīng)操作。
一號(hào)從機(jī):P1口連接led點(diǎn)陣列控制端,P2.5、P2.6、P2.7連接一個(gè)38譯碼器,38譯碼器的輸出口接led點(diǎn)陣的行控制端,38譯碼器分別順序?qū)ed點(diǎn)陣的每一行進(jìn)行顯示,P1口的狀態(tài)則由上位機(jī)傳輸?shù)臄?shù)據(jù)決定。一號(hào)從機(jī)的P3.2~P3.4分別連接開(kāi)關(guān)K4~K6控制窗戶的開(kāi)關(guān),P3.5~P3.7連接三個(gè)led燈,它們的狀態(tài)則表示窗戶的開(kāi)關(guān)狀態(tài)。
二號(hào)從機(jī):通過(guò)一個(gè)地址鎖存器74ls373和一個(gè)并行輸入輸出口8255A增加輸入輸口。在8255A的PA口連接晶體管,PB口接一個(gè)4x4的矩陣鍵盤,矩陣鍵盤的按鍵用作行程開(kāi)關(guān),當(dāng)窗外的風(fēng)越大行程開(kāi)關(guān)越往后的開(kāi)關(guān)就會(huì)按下,同時(shí)晶體管就會(huì)顯示出相應(yīng)的風(fēng)的大小,數(shù)字越大風(fēng)越大。P1.0口接一個(gè)有源蜂鳴器,當(dāng)風(fēng)大到5級(jí)是警報(bào)器就會(huì)響起,P1.1口接一個(gè)開(kāi)關(guān),當(dāng)蜂鳴器響起時(shí)需要手動(dòng)按下開(kāi)關(guān)關(guān)掉蜂鳴器。
軟件流程
上位機(jī)分別向一、二號(hào)從機(jī)發(fā)送數(shù)據(jù),一、二號(hào)從機(jī)在接收到數(shù)據(jù)時(shí)緩存在自己的芯片里,每個(gè)從機(jī)根據(jù)相應(yīng)的外部操作進(jìn)行相應(yīng)的控制。
5.1上位機(jī)代碼:
六、系統(tǒng)仿真與調(diào)試 6.1.在keil uvision4中編寫各個(gè)芯片的程序并對(duì)程序進(jìn)行調(diào)試和生成.hex文件。 6.2根據(jù)設(shè)計(jì)思想進(jìn)行電路設(shè)計(jì),在proteus中連接電路圖。 6.3將keil uvidion4中生成的.hex文件導(dǎo)入芯片進(jìn)行仿真。 七、仿真結(jié)果與分析 7.1仿真過(guò)程出現(xiàn)的問(wèn)題: 7.1.1上位機(jī)向下位機(jī)傳輸?shù)臄?shù)據(jù)必須大于零,否則led點(diǎn)陣在顯示時(shí)會(huì)卡在數(shù)據(jù)0那不進(jìn)行下一步操作。 7.1.2上位機(jī)在向下位機(jī)傳輸數(shù)據(jù)時(shí)如果按下的時(shí)間不足時(shí)下位機(jī)也不能在相關(guān)操作下得到應(yīng)有的結(jié)果。 7.1.3二號(hào)從機(jī)中控制蜂鳴器的開(kāi)關(guān)在關(guān)掉蜂鳴器后蜂鳴器的報(bào)警作用就沒(méi)有了,必須要重新啟動(dòng)芯片,這是因?yàn)樵诔绦蛑惺鞘褂冒聪麻_(kāi)關(guān)就跳出警報(bào)和矩陣鍵盤按鍵的循環(huán),因?yàn)榉澍Q器的報(bào)警與否是由矩陣鍵盤的按鍵控制的,如果不跳出矩陣鍵盤按鍵就不能使蜂鳴器關(guān)掉。 7.1.4一號(hào)從機(jī)的矩陣鍵盤的按鍵用作行程開(kāi)關(guān)時(shí)如果風(fēng)使前面的開(kāi)關(guān)按下不放開(kāi)的情況后面的按鍵在按下時(shí)晶體管中不能顯示相應(yīng)風(fēng)的大小,顯示的數(shù)字還是停留在最開(kāi)始顯示的位置。 7.2解決辦法: 7.2.1避免出現(xiàn)0的數(shù)據(jù)傳輸。 7.2.2按下K1或K2的時(shí)候停留幾秒鐘。 7.2.3在矩陣鍵盤外在加一個(gè)循環(huán),當(dāng)跳出矩陣鍵盤循環(huán)時(shí)同時(shí)按下矩陣鍵盤的0鍵和蜂鳴器的關(guān)就可以避免重啟軟件。圖(1)為初始的代碼,圖(2)為更改后的代碼。 圖(1) 圖(2) 7.2.4由于掃描的矩陣鍵盤的性質(zhì)決定了當(dāng)前面的按鍵按下時(shí)后面的按鍵無(wú)效, 所以只能在設(shè)備的安裝時(shí)避免前面的按鍵一直按下。
全部資料51hei下載地址:
http://www.raoushi.com/bbs/dpj-196806-1.html
|