① 基於單片機的光電感測器的計數器設計
計數顯示電路可完成對上述脈沖信號的計數和顯示。圖3是由單片機構成的計數系統框圖。 計數系統以MCS-51系列單片機的8031為核心,8013單片機的外圍擴展了程序存儲器27C256和數據存儲器WM0016DRH,此外,用8255擴展了I/O口,同時具有時鍾單元、掉電保護、看門狗單元、通信單元以及LED(發光二極體)顯示器、鍵盤等。 1)8031單片機及存儲器 8031內含4kb EEPROM程序存儲器,具有功耗低、抗干擾能力強的特點,可安置於監測現場,數據存儲器WM0016DRH是一種多功能非易失性SRAM,特點如下:高速高抗干擾自保持,不怕掉電,上下電百萬次數據無丟失,斷電保護10年有效,既可高速連續讀寫,也可任意地址單位元組操作,無需拼湊頁面,隨機讀寫不需等待,立即有效,輸入輸出TTL/CMOS兼容,上電復位輸出,掉電保護,內置看門狗,電源監測,不用外加電路和電池,且引腳與標准SRAM兼容。 2)計數及顯示 多車道車流量數對應的脈沖通過光電隔離耦合並行輸入至8031單片機的P1口,通過軟體控制和鍵盤設定計數值並用LED加以顯示,可自動循環顯示或定點顯示兩種方式,且兩者相互間可任意切換[4]。 當熱釋電感測器安裝位置固定後,輸入脈沖的脈寬和占空比均取決於高速公路上車輛的車速和車距(脈寬對應車輛感測器有效監視方位內的時間,車速和車距有限定),占空比q小於50%,為了准確拾取車流量信息,通過軟體可實現單片機對每一路並行輸入數據的讀取周期小於脈寬,且將每路各自相鄰的兩讀取周期讀取的數據進行運算(暫存前一個周期讀取的數據),若兩數據為01,則自動計1,否則計0。其中0為前一個周期的讀取數據,此時脈沖為低電平,1為後一個周期的讀取數據,此時脈沖為高電平,從而避免了對脈沖的漏計和重復計數,再把4路的讀數每一周期進行一次加運算,累加後的和就是總的車流量。 將8031單片機內的定時器/計數器設定為工作方式1,構成16位二進制計數器[5],採用動態掃描方式直接驅動5位十進制計數器[5]。採用動態掃描方式直接驅動5位十進制LED顯示,最大計數值達到65536,可記錄4車輛的車流量並顯示一個月內的日流量,累計4車道一個月內的日流量總和,計數器內數據保護時間可達一個月之久。當計數器達到設定值時,聲光報警,可存儲數據,並手動復位。 3)時鍾單元 採用DS12C887實時時鍾晶元,具有顯示具體時間信息的功能,若設計調整和設置按鍵,可方便地對時間進行調整和設置,從而為車流量的統計提供准確的時間數據。 4)串列通信單元 由於單片機系統的數據存儲能力和數據處理能力有限,以及現場實時性要求較高,故單片機現場只能暫時存儲採集到的數據和對數據進行簡單處理,至於大量的數據存儲和後續復雜的數據處理可交給上位機完成,由於大型機具有RS-232標准串列口,所以通過8031單片機TTL電平全雙工串列口,附加RS-232電平轉換電路MAX3232可與上位機實現數據通信。 3 軟體設計 計數系統的程序主要包括系統自檢程序、系統初始化程序、鍵盤掃描程序、按鍵處理程序、顯示程序以及數據採集處理程序等,圖4所示為主程序流程。 4 安裝與調試