孫 媛
(北京物資學(xué)院, 北京 101149 )
隨著計(jì)算機(jī)技術(shù)的發(fā)展,人們對(duì)計(jì)算機(jī)的要求越來越高。在計(jì)算機(jī)的大家族中,單片微型計(jì)算機(jī)發(fā)展十分迅速,滲透到電子設(shè)計(jì)領(lǐng)域的各個(gè)方面,進(jìn)入智能控制領(lǐng)域,因此開創(chuàng)了控制新局面。
在工業(yè)控制領(lǐng)域,人們對(duì)計(jì)算機(jī)提出了控制要求。首先,能夠面向控制對(duì)象,便于進(jìn)行控制變量的輸入/輸出,其次,體積盡量小,能夠嵌入控制系統(tǒng)內(nèi)部,能適應(yīng)工業(yè)現(xiàn)場(chǎng)較為惡劣的工作環(huán)境,并且具有豐富的用于控制的指令系統(tǒng)和I/O接口等。單片機(jī)系統(tǒng)能很好地滿足這些控制要求,成為工業(yè)測(cè)控系統(tǒng)中最為理想的控制系統(tǒng)[1]。
燃?xì)鈭?bào)警器的氣體探測(cè)器準(zhǔn)確性高,遇到燃?xì)庑孤┑揭欢舛葧r(shí),可以顯示燃?xì)庑孤┝?,自?dòng)切斷燃?xì)忾y,發(fā)出聲光報(bào)警,啟動(dòng)排風(fēng)扇,這樣可以有效防止因燃?xì)膺^量泄露造成人員和財(cái)產(chǎn)的傷害。當(dāng)燃?xì)庑孤r(shí),能夠完成以上功能,燃?xì)鈭?bào)警器通常會(huì)有以下功能模塊:LED顯示模塊、聲光報(bào)警模塊、排氣扇模塊、鍵盤模塊、通信模塊等。
燃?xì)鈭?bào)警器根據(jù)傳感器探頭采集數(shù)據(jù),主要有兩方面功能。
(1)燃?xì)庑孤毒榈奶幚怼0惭b在樓宇公寓各防區(qū)的燃?xì)庑孤└袘?yīng)器(探頭),在有燃?xì)庑孤┌l(fā)生時(shí)產(chǎn)生輸出脈沖,該脈沖經(jīng)過波形整形為矩形波之后經(jīng)過燃?xì)饪刂破髋袛嗵幚?,顯示泄漏燃?xì)饬?,同時(shí)伴有聲光報(bào)警,報(bào)警器自動(dòng)關(guān)閉燃?xì)忾y,啟動(dòng)排風(fēng)扇,同時(shí)發(fā)送信息給用戶或中央監(jiān)控室。
(2)燃?xì)獗砗挠昧康淖x取。安裝在樓宇公寓中的燃?xì)獗沓擞糜诔R?guī)的顯示功能之外,每個(gè)表都配備了脈沖輸出功能。隨著用戶對(duì)燃?xì)獾南M(fèi),按照單位計(jì)量比例輸出相應(yīng)的脈沖信號(hào)。脈沖信號(hào)經(jīng)過波形整形處理為矩形波后作為計(jì)數(shù)脈沖,燃?xì)鈭?bào)警器通過實(shí)時(shí)采樣計(jì)數(shù)脈沖獲得表的消耗量。
根據(jù)應(yīng)用系統(tǒng)所要實(shí)現(xiàn)的功能,規(guī)劃出由硬件和軟件實(shí)現(xiàn)的功能部分。根據(jù)燃?xì)鈭?bào)警器的主要功能,規(guī)劃對(duì)整體功能的設(shè)計(jì)。燃?xì)鈭?bào)警器的功能框圖如圖1所示。
圖1 燃?xì)鈭?bào)警器的功能框圖
燃?xì)鈭?bào)警器主要由單片機(jī)擴(kuò)展了兩組信號(hào)輸入:燃?xì)庑孤┟}沖采集、燃?xì)庀牧坎杉?;通信接口電路:可以及時(shí)發(fā)送信息給用戶或中控室;鍵盤:用戶可以設(shè)置基本功能;LCD顯示器:顯示泄漏量和消耗量;E2PROM 24C16:掉電保護(hù)信息和基本信息的存儲(chǔ)等。
(1)由于燃?xì)獗硐牧亢腿細(xì)庑孤┝枯敵龆际敲}沖量,所以燃?xì)饪刂破髦苯訉?duì)燃?xì)獗硐牧亢腿細(xì)?探頭)泄漏量脈沖輸出信號(hào)進(jìn)行采集,從而避免了在燃?xì)饪刂破髦靼迳鲜褂肁/D轉(zhuǎn)換接口。利用單片機(jī)89C52的P1口作為燃?xì)獗砻}沖和報(bào)警脈沖信號(hào)的共同輸入通道,燃?xì)獗砻}沖和燃?xì)庑孤┟}沖信號(hào)分別通過斯密特觸發(fā)器波形整形和74LS244緩沖器進(jìn)入CPU。這里分別用P3.4(定時(shí)器T0的外部輸入)和P3.5(定時(shí)器T1的外部輸入)口線作為分時(shí)有效使能端。
(2)采用虛擬串行總線技術(shù)。LCD液晶顯示器和8K E2PROM 24C16用單片機(jī)I/O口線擴(kuò)展了串行接口器件,采用了虛擬串行總線技術(shù)。用24C16存放有關(guān)初始化信息、燃?xì)獗淼南牧亢腿細(xì)庑孤┝恳约爸匾某跏蓟畔?。LCD液晶顯示模塊,內(nèi)置顯示RAM和驅(qū)動(dòng)控制器,通過串行方法與單片機(jī)AT89C52相連。
(3)通過單片機(jī)的P0口線串行擴(kuò)展了簡(jiǎn)易鍵盤,實(shí)現(xiàn)人機(jī)交互。P0口作為普通的I/O使用時(shí),輸出是漏極開路電路,故需要外接上拉電阻5~10 KΩ左右才能正常工作。
(4)通過無線轉(zhuǎn)換完成電平轉(zhuǎn)換與無線通信網(wǎng)絡(luò)連接。
51系列單片機(jī)的存儲(chǔ)器在物理結(jié)構(gòu)上分為程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間,共有4個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器空間,片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器空間[2]。4個(gè)存儲(chǔ)空間與其物理地址的對(duì)應(yīng)關(guān)系如圖2所示。
圖2 MSC-51單片機(jī)的存儲(chǔ)器分配
AT89C52(簡(jiǎn)稱89C52)是美國(guó)ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)。
(1)數(shù)據(jù)存儲(chǔ)器(RAM)。數(shù)據(jù)存儲(chǔ)器片內(nèi)為256個(gè)字節(jié),片外最多可外擴(kuò)64K字節(jié)。
(2)程序存儲(chǔ)器(Flash)。程序存儲(chǔ)器用來存儲(chǔ)程序。89C52片內(nèi)有8K字節(jié)的Flash存儲(chǔ)器,如果片內(nèi)的程序存儲(chǔ)器的容量不夠,片外最多可外擴(kuò)程序存儲(chǔ)器64K字節(jié)。
(3)特殊功能寄存器(SFR)。特殊功能寄存器共有21個(gè),用于CPU對(duì)片內(nèi)各種功能部件進(jìn)行管理、控制和監(jiān)視。這些特殊功能寄存器映射在片內(nèi)RAM區(qū)80H-FFH的地址區(qū)間內(nèi)。
程序是給微處理器處理問題的一系列命令,是由機(jī)器碼組成的代碼串,設(shè)計(jì)人員編寫的程序就存放在程序存儲(chǔ)器中,俗稱只讀程序存儲(chǔ)器(ROM)。相應(yīng)的數(shù)據(jù)放到數(shù)據(jù)存儲(chǔ)器中[3]。
根據(jù)89C52單片機(jī)的數(shù)據(jù)存儲(chǔ)空間,數(shù)據(jù)區(qū)域如果不擴(kuò)展片外RAM,則片內(nèi)RAM能夠利用的空間只有:
高128字節(jié)的80H~FFH的間接存儲(chǔ)空間
低128字節(jié)中20H~2FH的位存儲(chǔ)區(qū),30H~7FH字節(jié)存儲(chǔ)區(qū)
根據(jù)可以利用的片內(nèi)RAM,燃?xì)鈭?bào)警器的存儲(chǔ)空間分配如下:
4.1.1高128字節(jié)間接存儲(chǔ)地址分配
高128B數(shù)據(jù)區(qū)和特殊功能寄存器區(qū)的地址空間是重疊的,高128B的直接尋址寄存器被用作特殊功能寄存器區(qū),只有間接尋址的寄存器能夠用來存儲(chǔ)數(shù)據(jù)。在燃?xì)鈭?bào)警器中,80H—FFH間接存儲(chǔ)的數(shù)據(jù)分配見表1。
表1 80H~0FFH間接存儲(chǔ)地址的分配
匯編語言定義如下:
;某個(gè)間址寄存器定義
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位寄存器地址分配
在片內(nèi)寄存器低128B根據(jù)不同的尋址方式又分為00H~FH為工作寄存器區(qū),20H~2FH為位尋址區(qū),燃?xì)鈭?bào)警器進(jìn)行位操作的數(shù)據(jù)存到20H~2FH位寄存器區(qū),分配見表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通用寄存器地址分配
通用寄存器在燃?xì)鈭?bào)警器中定義見表3。
表3 30H~7FH通用寄存器分配
整個(gè)程序存儲(chǔ)器分為片內(nèi)和片外兩部分,尋址范圍分別為64 KB,燃?xì)鈭?bào)警器只用到了片內(nèi)程序存儲(chǔ)器。程序存儲(chǔ)器中除了存儲(chǔ)運(yùn)行程序之外還將常用表格固化到程序存儲(chǔ)器中[4]。
電可擦除可編程的只讀存儲(chǔ)器E2PROM 24C16(ELECTRICALLY ERASABLE PROGRAMMABLE READ-ONLY MEMORY)具有如下特點(diǎn):在線改寫數(shù)據(jù)和自動(dòng)擦除功能;斷電時(shí),數(shù)據(jù)不會(huì)丟失;輸入輸出口與TTL兼容;片內(nèi)編程電壓發(fā)生器,可以產(chǎn)生擦除和寫入操作時(shí)所需的電壓;片內(nèi)控制和定時(shí)發(fā)生器可控制擦除和寫入操作;具有整體編程允許和截止功能,以增強(qiáng)數(shù)據(jù)的保護(hù)能力;具有二線串行接口,可以在I2C上做從器件使用[5]。
燃?xì)鈭?bào)警器數(shù)據(jù)采集監(jiān)控系統(tǒng)采用AT89C52設(shè)計(jì),通過項(xiàng)目更好理解燃?xì)鈭?bào)警器存儲(chǔ)分配的原理和開發(fā)過程。基于單片機(jī)設(shè)計(jì)的燃?xì)鈭?bào)警器,在面向控制方面,具有功能完善、穩(wěn)定可靠、體積小、價(jià)格低廉等優(yōu)點(diǎn),被樓宇和住宅等地方采用,已達(dá)到良好的效果。