【正文】
51F 系列單片機 的軟硬件系統(tǒng)和特點以及 C8051F,Microsoft Visual Studio 的編程開發(fā)環(huán)境的一些特點,為接下來的硬件設(shè)計及軟件開發(fā)做了 鋪墊。 13 3 硬件 系統(tǒng)的設(shè)計與實現(xiàn) 基本功能 檢測功能: ? 具有 對 瓦斯、一氧化碳、氧氣、硫化 氫 四種環(huán)境參量的在線 檢測 功能; ? 具有溫度檢測功能; ? 具有供電電源輸入電壓檢測(電池電量)功能。 顯示功能: ? 具有日期時間顯示功能; ? 具有溫度顯示功能; ? 具有電池電量顯示功能; ? 具有四種環(huán)境參量顯示功能; ? 具有多級菜單操作功能。 報警功能: ? 具有聲光報警功能。 通信功能: ? 采用 射頻收發(fā)模塊,具有與手持 PDA(或主機) 進 行 數(shù) 據(jù)交互功能。 存儲功能: ? 具有基本工作參數(shù)讀寫功能; ? 具有大規(guī)模實時數(shù)據(jù)存儲功能 。 待機功能: ? 具有進入睡眠待機功能; ? 具有快速喚醒功能。 14 框架設(shè)計 ? 業(yè)務(wù)處理層主要完成三大任務(wù)包括模塊控制、數(shù)據(jù)分析以及任務(wù)調(diào)度。 ? 模塊控制 調(diào)用相關(guān)模塊的底層驅(qū)動及相關(guān)數(shù)據(jù)計算等操作; ? 數(shù)據(jù)分析 對各個模塊的自身數(shù)據(jù)進行分析; ? 任務(wù)調(diào)度 根據(jù)數(shù)據(jù)分析結(jié)果來完成模塊控制 。 具體框架設(shè)計如圖 31 所示: 業(yè) 務(wù) 處 理1 、 任 務(wù) 調(diào) 配2 、 數(shù) 據(jù) 分 析3 、 模 塊 控 制環(huán) 境 參 數(shù) 計 算1 、 H 2 S 、 O 2 、 C O 、 C H 4四 種 氣 體 濃 度 計 算2 、 供 電 電 源 電 壓 計 算數(shù) 據(jù) 采 集 處 理1 、 氣 體 濃 度 、 電 源 電 壓 等數(shù) 據(jù) 采 集2 、 數(shù) 據(jù) 濾 波 處 理A D C 驅(qū) 動 及 控 制1 、 A D C 模 塊 初 始 化2 、 轉(zhuǎn) 換 通 道 切 換溫 度 驅(qū) 動1 、 溫 度 模 塊 初 始 化2 、 溫 度 采 集溫 度 計 算1 、 溫 度 值 計 算液 晶 屏 驅(qū) 動1 、 液 晶 屏 初 始 化2 、 命 令 / 數(shù) 據(jù) 發(fā) 送3 、 設(shè) 定 顯 示 區(qū) 域交 互 菜 單1 、 提 供 人 機 交 互 界 面2 、 顯 示 氣 體 濃 度 等 信 息3 、 設(shè) 定 相 關(guān) 參 數(shù) 配 置4 、 存 儲 調(diào) 配 信 息聲 光 報 警 驅(qū) 動1 、 報 警 模 塊 初 始 化2 、 控 制 聲 音 及 燈 光 報 警存 儲 驅(qū) 動1 、 存 儲 單 元 初 始 化2 、 讀 / 寫 存 儲 單 元R F 無 線 驅(qū) 動1 、 R F 無 線 模 塊 初 始 化2 、 數(shù) 據(jù) 的 接 收3 、 數(shù) 據(jù) 的 發(fā) 送R T C 驅(qū) 動1 、 R T C 模 塊 初 始 化2 、 寄 存 器 初 始 配 置協(xié) 議 分 析 處 理1 、 發(fā) 送 數(shù) 據(jù) 的 打 包2 、 接 收 數(shù) 據(jù) 的 解 析按 鍵 驅(qū) 動1 、 管 腳 初 始 化2 、 按 鍵 觸 發(fā)3 、 按 鍵 分 析低 功 耗 驅(qū) 動1 、 低 功 耗 初 始 化2 、 進 入 睡 眠 低 功 耗3 、 喚 醒 進 入 正 常 工 作實 時 時 間1 、 讀 取 計 時 寄 存 器2 、 實 時 時 間 計 算圖 31 框架設(shè)計圖 軟件工作流程主要包括兩大部分:一部分為前臺處理,另一部分為后臺 處理。具體 15 如圖 32所示: 軟 件 工 作 流 程 后 臺 處 理前 臺 處 理m i a n ( ) 函 數(shù)w h i l e ( ) 主 循 環(huán)上 電 開 機硬 件 初 始 化數(shù) 據(jù) 采 集液 晶 顯 示動 作 處 理數(shù) 據(jù) 計 算 及 分 析 處 理A D C 通 道 轉(zhuǎn) 換 中 斷R T C 實 時 時 鐘按 鍵 外 部 中 斷定 時 器 時 基 中 斷喚 醒 中 斷 圖 32 硬件 工作流程圖 前臺處理 硬件初始化 ? 系統(tǒng)時鐘單元:設(shè)置當前晶振源,并配置 core clock 以及 bus clock等時鐘; ? 看門狗單元:打開看門狗; ? 存儲單元:第一次使用時需寫入當前相關(guān)工作配置信息,往后均讀取配置信息; ? IO 管腳單元:配置與外設(shè)交互所需管腳,如 LCD 顯示單元、 RF 無線單元等,若使用管腳中斷也在其進行設(shè)置; ? 基準定時器單元初始化:定義一個基準定時,如 500us~1ms; 16 ? 變量初始化: 清除相關(guān)標志位、相關(guān)緩沖數(shù)據(jù)區(qū)以及賦相關(guān)變量初值等; ? RTC 實時時鐘單元初始化:開啟 RTC 實時計時; ? LCD 單元初始化:對 LCD 顯示器件進行物理初始化; ? 睡眠模式初始化:選擇待機所進入的相關(guān)低功耗模式; ? ADC 轉(zhuǎn)換單元初始化:選擇配置相關(guān)轉(zhuǎn)換通道等操作。 備注 : RF無線單元初始化并未在上電后就進行,需根據(jù)發(fā)送或接收需求才打開初始化。 數(shù)據(jù)采集 ? 氣體濃度采集; ? 電池電量采集; ? 環(huán)境溫度采集。 備 注:這里的采集處理主要是指后臺的數(shù)據(jù)轉(zhuǎn)換后保存到相關(guān)緩沖數(shù)據(jù)區(qū),而前臺主要完成 ADC 轉(zhuǎn)換通道的切換工作及置位相關(guān)轉(zhuǎn)換 通道標志。 數(shù)據(jù)計算及分析處理 ? 相關(guān)參數(shù)的數(shù)據(jù)公式計算; ? 數(shù)據(jù)最終值獲取傳遞,包括當前時間、氣體濃度、當前電量; ? 管腳采集及處理,包括 左鍵 、 右鍵 長 /短按的相關(guān)事件處理以及充電管腳狀態(tài)檢測; ? 電量欠壓分析; ? 氣體超限分析。 液晶屏顯示 ? 主界面顯示; ? 菜單操作界面。 17 動作處理 ? 長按 確定鍵 處理; ? 欠壓提示處理; ? 氣體濃度超限聲光報警處理; ? 無線通信處理,包括發(fā)送或接收; ? 關(guān)機處理,包括關(guān)閉相關(guān)供電及進入睡眠模式等; ? 喂看門狗處理。 后臺處理 ADC 中斷 ? 四路 ADC 轉(zhuǎn)換通道響應(yīng)中斷; ? CH CO、 H2O、 O2 四種氣體轉(zhuǎn)換; ? 電池電量轉(zhuǎn)換。 備注 :電量與 CH4甲烷共用一個轉(zhuǎn)換通道。 定時器時基中斷 ? 1ms 的基準延時; ? 開啟動作處理模塊延時; ? LCD 背光關(guān)閉計時; ? 聲光報警計時; ? 欠壓電量提示計數(shù); ? RF 無線發(fā)送間隔; ? 充電狀態(tài)計時切換 。 按鍵中斷 ? 主要是特指 確定鍵 ; ? 判斷按鍵長短按; 18 ? 背光開啟; ? 清欠壓提示。 RTC 實時時鐘: ? RTC 秒寄存器自行增加 。 喚醒中斷: ? 進入睡眠模式后被喚醒; ? 長按則喚醒進入開機狀態(tài) ? 短按則退出繼續(xù)進入睡眠 無線單元數(shù) 據(jù)流圖如圖 33 所示: 2 . 4 G 無 線 通 信 處 理底 層 驅(qū) 動( 1 ) 配 置 字 初 始 化 : v o i d R F _ G e t _ I n i t B u f ( )( 2 ) 無 線 模 塊 初 始 化 : v o i d R F _ I n i t ( )( 3 ) 發(fā) 送 一 個 字 節(jié) : v o i d R F _ T x _ B y t e ( u i n t 8 _ t d a t a )( 4 ) 接 收 一 個 字 節(jié) : v o i d R F _ R x _ B y t e ( u i n t 8 d a t a )( 5 ) 使 能 接 收 配 置 : v o i d R F _ E n a b l e _ R x ( )( 6 ) 使 能 發(fā) 送 配 置 : v o i d R F _ E n a b l e _ T x ( )上 層 應(yīng) 用( 1 ) 協(xié) 議 打 包 : v o i d R F _ P a c k ( u i n t 8 _ t * T x B u f , i n t s r c L e n )( 2 ) 協(xié) 議 解 析 : v o i d R F _ P a r s e ( u i n t 8 _ t * R x B u f , i n t s r c L e n )( 3 ) 數(shù) 據(jù) 發(fā) 送 : v o i d R F _ T x _ B y _ S h o c k M o d e ( u i n t 8 _ t L E N G T H )( 4 ) 數(shù) 據(jù) 接 收 : u i n t 8 _ t R F _ R x _ B y _ S h o c k M o d e ( u i n t 8 _ t L E N G T H )單 向 變 量打 包 數(shù) 據(jù) 發(fā) 送 緩 沖 區(qū) :g _ R F _ T x P a c k B u f [ ]單 向 變 量 數(shù) 據(jù) 接 收 緩 沖 區(qū) :g _ R F _ R x P a r s e B u f [ ]單 向 變 量數(shù) 據(jù) 發(fā) 送 緩 沖 區(qū) :g _ R F _ T x B u f [ ]單 向 變 量 解 析 數(shù) 據(jù) 接 收 緩 沖 區(qū) :g _ R F _ R x B u f [ ] 圖 33 19 FLASH 存儲單元 Flash 存儲單元數(shù)據(jù)流圖如圖 34 所示: f l a s h 數(shù) 據(jù) 存 儲上 層 應(yīng) 用( 1 ) 寫 f l a s h 操 作 : f l a s h _ w r i t e ( )( 2 ) 讀 f l a s h 操 作 : f l a s h _ r e a d ( )( 3 ) 上 電 時 f l a s h 操 作 : C a l c P a r a m _ I n i t ( )底 層 驅(qū) 動( 1 ) 擦 除 存 儲 區(qū) 域 :F T F A _ E R S S C R ( )( 2 ) 讀 取 擦 除 狀 態(tài) :F T F A _ R D 1 S E C ( )( 3 ) 寫 字 節(jié) : F T F A _ P G M 4 ( )雙 向 變 量氣 體 相 關(guān) 內(nèi) 部 參 數(shù) : g _ c a l c P a r a m [ 5 ]報 警 點 : g a s _ a l a r m背 光 時 間 : b c k _ v a l u e溫 度 : t e m p _ v a l u e實 時 時 間 : t i m e _ v a l u e無 線 發(fā) 送 間 隔 : n r f _ v a l u e 圖 34 flash 存儲單元數(shù)據(jù)流圖 備注 : ①底層驅(qū)動是調(diào)用飛思卡爾內(nèi)部的驅(qū)動庫; ②在寫操作前,需先進行存儲區(qū)域擦除才能寫入,擦除至少 1k 區(qū)域; ③不支持單字節(jié)寫入,一次需寫入四個字節(jié); ④第一次操作 flash 時, CalcParam_Init()主要是進行 上電寫操作,第二次以后便進行上電讀操作。 20 4 軟件系統(tǒng)的設(shè)計與實現(xiàn) 本程序主要目的是對從 NRF 模塊接收到的數(shù)據(jù)進行分析和處理,并通過文本框、圖表等方式將采集到的數(shù)據(jù)顯示出來。并結(jié)合所收集到的數(shù)據(jù)對周邊環(huán)境進行大概的分析,從而保證到所在人員的安全。 本軟件中心控制流程 如圖 41 所示: 圖 41軟件中心控制流程 21 從工具箱中依次拖入表 41 所列控件,并按照表中的內(nèi)容修改控件屬性。 表 41 控件屬性設(shè)置 控件名 控件屬性 屬性值 備注 Form1 Text 周邊環(huán)境 信息 實時 采集 窗體標題文本 Size 500, 500 窗體寬,高 label1 Text 選擇串口 標簽文本 label2 Text 波特率 標簽文本 label3 Text 數(shù)據(jù)返回 標簽文本 label4 Text 溫度 標簽文本 label5 Text ℃ 標簽文本 label6 Text 氧氣 標簽文本 label7 Text %