由于最近比較閑,所以沒有什么事情好做,于是想起了去年臺風的一晚上和博記約定要搞個輸入密碼才可以啟動電腦的硬件,不過后來因許多原因而不了了之,今憶起往事,所以才把它做好,到時候回去和同學們在大排檔里吹水也有東西來吹.鑒于這個系統的代碼量較大,在此只給出代碼的下載地址和片上系統(RIOS )的系統架構圖,如果你還有什么好的想法的話可以在此基礎上加已改進.現在,監控系統不單止是可以支持輸入密碼啟動電腦,還支持接收上位機(RTU )的監控系統性能的數據,當然,也可以在線修改RIOS 啟動密碼..
圖一 運行效果圖(本來是想弄成動圖的,但是缺少這方面的軟件)
圖二 RIOS 系統架構圖
在系統的底部,有六個驅動程序用來控制外圍硬件(之前導師問為什么要把它稱作驅動而不是實現某些硬件功能的構造函數,在我看來,驅動就是軟件和硬件交流的橋梁[雖然驅動是用軟件寫的],它還提供一系列應用編程接口給上層應用程序或者內核來調用.在這里也一樣,每個.C 文件只做屬于它應該做的事,并且向上提供編程接口來控制主控芯片的外圍硬件,于是習慣性地把它們稱之為驅動),內核模塊monitor_system_trance_data [這個驅動是用于和RTU 進行信息交互的,關于數據交互的詳細的數據包結構和標志在monitor_system_code_trance.h 里面保存著]是基于驅動device_52_trance 拓展的;模塊monitor_system_code_password [用于在EEPROM 內讀/寫密碼]是基于驅動device_eeprom 拓展的.最后,monitor_system_chip 把所有接口都匯總起來,構建RIOS 的核心代碼,為什么不把它稱作內核呢?覺得吧,它只不過是把這么多接口都使用一遍的代碼文件,歸根到底都還只是"使用別人的東西","只不過是這些代碼的用戶罷了".
最后還要提及的就是RIOS 使用到的引腳定義:
// P0 給keyboard 進行數據接收用
// lcd_1602 控制引腳
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P1^2;
// P2 是lcd_1602 用來進行數據傳輸的
// 芯片端串行數據傳輸引腳
sbit data_in=P3^0;
sbit data_out=P3^1;
// AT24C02 EEPROM IIC 總線傳輸引腳
sbit scl=P3^6;
sbit sda=P3^7;
// 啟動PC 端電源引腳(注意,它的原理是通過控制繼電器引發主板PWR 端連)
sbit io_switch_elect =P3^5;
// PC 端運行電壓檢測引腳
sbit io_interrupt_0=P3^2;
完整的代碼下載地址(包含:RIOS [Keil v4.0 ]和RTU [Microsoft VC++ 6.0 ]): http://www.zg4o1577.cn/f/monitor_system.rar