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