孫 媛
(北京物資學院, 北京 101149 )
隨著計算機技術的發展,人們對計算機的要求越來越高。在計算機的大家族中,單片微型計算機發展十分迅速,滲透到電子設計領域的各個方面,進入智能控制領域,因此開創了控制新局面。
在工業控制領域,人們對計算機提出了控制要求。首先,能夠面向控制對象,便于進行控制變量的輸入/輸出,其次,體積盡量小,能夠嵌入控制系統內部,能適應工業現場較為惡劣的工作環境,并且具有豐富的用于控制的指令系統和I/O接口等。單片機系統能很好地滿足這些控制要求,成為工業測控系統中最為理想的控制系統[1]。
燃氣報警器的氣體探測器準確性高,遇到燃氣泄漏到一定濃度時,可以顯示燃氣泄漏量,自動切斷燃氣閥,發出聲光報警,啟動排風扇,這樣可以有效防止因燃氣過量泄露造成人員和財產的傷害。當燃氣泄漏時,能夠完成以上功能,燃氣報警器通常會有以下功能模塊:LED顯示模塊、聲光報警模塊、排氣扇模塊、鍵盤模塊、通信模塊等。
燃氣報警器根據傳感器探頭采集數據,主要有兩方面功能。
(1)燃氣泄露警情的處理。安裝在樓宇公寓各防區的燃氣泄漏感應器(探頭),在有燃氣泄漏發生時產生輸出脈沖,該脈沖經過波形整形為矩形波之后經過燃氣控制器判斷處理,顯示泄漏燃氣量,同時伴有聲光報警,報警器自動關閉燃氣閥,啟動排風扇,同時發送信息給用戶或中央監控室。
(2)燃氣表耗用量的讀取。安裝在樓宇公寓中的燃氣表除了用于常規的顯示功能之外,每個表都配備了脈沖輸出功能。隨著用戶對燃氣的消費,按照單位計量比例輸出相應的脈沖信號。脈沖信號經過波形整形處理為矩形波后作為計數脈沖,燃氣報警器通過實時采樣計數脈沖獲得表的消耗量。
根據應用系統所要實現的功能,規劃出由硬件和軟件實現的功能部分。根據燃氣報警器的主要功能,規劃對整體功能的設計。燃氣報警器的功能框圖如圖1所示。

圖1 燃氣報警器的功能框圖
燃氣報警器主要由單片機擴展了兩組信號輸入:燃氣泄漏脈沖采集、燃氣消耗量采集;通信接口電路:可以及時發送信息給用戶或中控室;鍵盤:用戶可以設置基本功能;LCD顯示器:顯示泄漏量和消耗量;E2PROM 24C16:掉電保護信息和基本信息的存儲等。
(1)由于燃氣表消耗量和燃氣泄漏量輸出都是脈沖量,所以燃氣控制器直接對燃氣表消耗量和燃氣(探頭)泄漏量脈沖輸出信號進行采集,從而避免了在燃氣控制器主板上使用A/D轉換接口。利用單片機89C52的P1口作為燃氣表脈沖和報警脈沖信號的共同輸入通道,燃氣表脈沖和燃氣泄漏脈沖信號分別通過斯密特觸發器波形整形和74LS244緩沖器進入CPU。這里分別用P3.4(定時器T0的外部輸入)和P3.5(定時器T1的外部輸入)口線作為分時有效使能端。
(2)采用虛擬串行總線技術。LCD液晶顯示器和8K E2PROM 24C16用單片機I/O口線擴展了串行接口器件,采用了虛擬串行總線技術。用24C16存放有關初始化信息、燃氣表的消耗量和燃氣泄漏量以及重要的初始化信息。LCD液晶顯示模塊,內置顯示RAM和驅動控制器,通過串行方法與單片機AT89C52相連。
(3)通過單片機的P0口線串行擴展了簡易鍵盤,實現人機交互。P0口作為普通的I/O使用時,輸出是漏極開路電路,故需要外接上拉電阻5~10 KΩ左右才能正常工作。
(4)通過無線轉換完成電平轉換與無線通信網絡連接。
51系列單片機的存儲器在物理結構上分為程序存儲器空間和數據存儲器空間,共有4個存儲空間:片內程序存儲器和片外程序存儲器空間,片內數據存儲器和片外數據存儲器空間[2]。4個存儲空間與其物理地址的對應關系如圖2所示。

圖2 MSC-51單片機的存儲器分配
AT89C52(簡稱89C52)是美國ATMEL公司生產的低電壓、高性能CMOS 8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes 的隨機存取數據存儲器(RAM)。
(1)數據存儲器(RAM)。數據存儲器片內為256個字節,片外最多可外擴64K字節。
(2)程序存儲器(Flash)。程序存儲器用來存儲程序。89C52片內有8K字節的Flash存儲器,如果片內的程序存儲器的容量不夠,片外最多可外擴程序存儲器64K字節。
(3)特殊功能寄存器(SFR)。特殊功能寄存器共有21個,用于CPU對片內各種功能部件進行管理、控制和監視。這些特殊功能寄存器映射在片內RAM區80H-FFH的地址區間內。
程序是給微處理器處理問題的一系列命令,是由機器碼組成的代碼串,設計人員編寫的程序就存放在程序存儲器中,俗稱只讀程序存儲器(ROM)。相應的數據放到數據存儲器中[3]。
根據89C52單片機的數據存儲空間,數據區域如果不擴展片外RAM,則片內RAM能夠利用的空間只有:
高128字節的80H~FFH的間接存儲空間
低128字節中20H~2FH的位存儲區,30H~7FH字節存儲區
根據可以利用的片內RAM,燃氣報警器的存儲空間分配如下:
4.1.1高128字節間接存儲地址分配
高128B數據區和特殊功能寄存器區的地址空間是重疊的,高128B的直接尋址寄存器被用作特殊功能寄存器區,只有間接尋址的寄存器能夠用來存儲數據。在燃氣報警器中,80H—FFH間接存儲的數據分配見表1。

表1 80H~0FFH間接存儲地址的分配
匯編語言定義如下:
;某個間址寄存器定義
ALARM1_CYCLE EQU 90H
ALARM2_CYCLE EQU 91H
ALARM3_CYCLE EQU 92H
ALARM4_CYCLE EQU 93H
ALARM5_CYCLE EQU 94H
ALARM6_CYCLE EQU 95H
ALARM7_CYCLE EQU 96H
ALARM8_CYCLE EQU 97H
4.1.2 20H~2FH位寄存器地址分配
在片內寄存器低128B根據不同的尋址方式又分為00H~FH為工作寄存器區,20H~2FH為位尋址區,燃氣報警器進行位操作的數據存到20H~2FH位寄存器區,分配見表2。

表2 20H~2FH位寄存器分配
匯編語言定義如下:
;某位位寄存器定義
ALARM_ON EQU 20H
A0ON BIT ALARM_ON_F.0
A1ON BIT ALARM_ON_F.1
A2ON BIT ALARM_ON_F.2
A3ON BIT ALARM_ON_F.3
A4ON BIT ALARM_ON_F.4
A5ON BIT ALARM_ON_F.5
A6ON BIT ALARM_ON_F.6
A7ON BIT ALARM_ON_F.7
4.1.3 30H~7FH通用寄存器地址分配
通用寄存器在燃氣報警器中定義見表3。

表3 30H~7FH通用寄存器分配
整個程序存儲器分為片內和片外兩部分,尋址范圍分別為64 KB,燃氣報警器只用到了片內程序存儲器。程序存儲器中除了存儲運行程序之外還將常用表格固化到程序存儲器中[4]。
電可擦除可編程的只讀存儲器E2PROM 24C16(ELECTRICALLY ERASABLE PROGRAMMABLE READ-ONLY MEMORY)具有如下特點:在線改寫數據和自動擦除功能;斷電時,數據不會丟失;輸入輸出口與TTL兼容;片內編程電壓發生器,可以產生擦除和寫入操作時所需的電壓;片內控制和定時發生器可控制擦除和寫入操作;具有整體編程允許和截止功能,以增強數據的保護能力;具有二線串行接口,可以在I2C上做從器件使用[5]。
燃氣報警器數據采集監控系統采用AT89C52設計,通過項目更好理解燃氣報警器存儲分配的原理和開發過程?;趩纹瑱C設計的燃氣報警器,在面向控制方面,具有功能完善、穩定可靠、體積小、價格低廉等優點,被樓宇和住宅等地方采用,已達到良好的效果。