久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4130|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

智能小區(qū)安防系統(tǒng)設(shè)計(jì)論文下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:300215 發(fā)表于 2018-4-1 11:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
小區(qū)安防,煙霧,紅外,溫度,煤氣。
引言
中國(guó)安居工程需要大力發(fā)展安全文明小區(qū)建設(shè),嚴(yán)峻的社會(huì)治安形勢(shì),需要建立并完善安全文明小區(qū)防盜報(bào)警網(wǎng)絡(luò)系統(tǒng)體系。如何解決在當(dāng)前每個(gè)家庭經(jīng)濟(jì)承受能力有限的情況下,建設(shè)滿足防范功能及可靠性需求的安全文明小區(qū)防范防盜報(bào)警網(wǎng)絡(luò)系統(tǒng),是當(dāng)前急需解決的課題。本方案是在考慮以上因素的基礎(chǔ)上,所設(shè)計(jì)的可行實(shí)施方案。
小區(qū)安全防范報(bào)警系統(tǒng)是智能小區(qū)實(shí)現(xiàn)安全管理的重要系統(tǒng),主要包括防盜報(bào)警、煤氣泄漏報(bào)警、消防報(bào)警等。小區(qū)管理極為重要的內(nèi)容是確保住宅­,住戶安全,生活中,人人都可能出現(xiàn)一些意想不到的求助情況,現(xiàn)代居住的格局,鄰里常年不來(lái)往已是常事,家庭生活穩(wěn)密性、封閉,性越來(lái)越強(qiáng)。因此,小區(qū)安全防范­及報(bào)警系統(tǒng)是具有先進(jìn)的設(shè)計(jì)和設(shè)備,并為小區(qū)住戶的安全提供保障的必要系統(tǒng)。
我國(guó)的安防自動(dòng)報(bào)警控制系統(tǒng)經(jīng)歷了從無(wú)到有、從簡(jiǎn)單到復(fù)雜的發(fā)展過(guò)程,其智能化程度也越來(lái)越高。在小區(qū)內(nèi)的每個(gè)住戶單元安裝一臺(tái)報(bào)警主機(jī),住戶可選擇安裝在住戶門口、窗戶處安裝聲檢、緊急求助,煙霧/煤氣探頭、瓦斯探頭,等報(bào)警感知設(shè)備,報(bào)警主機(jī)通過(guò)總線與管理中心的電腦想連接,進(jìn)行安防信息管理。如果發(fā)生盜賊闖入、搶劫、煙霧、燃汽泄露,聲音過(guò)高等緊急事故,傳感器就會(huì)立即獲知并由報(bào)警系統(tǒng)即刻觸發(fā)聲光警報(bào)以有效恫嚇企圖行竊的盜賊;系統(tǒng)還會(huì)迅速向報(bào)警中心傳送報(bào)警信息;報(bào)警中心接到警情后立即自動(dòng)進(jìn)行分辨處理,迅速識(shí)別判定警報(bào)類型、地點(diǎn)、用戶,中心據(jù)此派出機(jī)動(dòng)力量采取相應(yīng)解救措施;系統(tǒng)具備24小時(shí)防破壞等并自我監(jiān)視,一旦有任何被破壞的跡象也會(huì)即刻報(bào)警。總之,無(wú)論白天黑夜,你離家在外還是在家休息,電子保安時(shí)時(shí)刻刻保護(hù)的安全,這正是能為家人、家庭、財(cái)產(chǎn)所做的最有效的安全防盜保護(hù)措施。
1  總體設(shè)計(jì)1.1 設(shè)計(jì)背景
在當(dāng)今高速發(fā)展的社會(huì)中,人們對(duì)自身所處的環(huán)境越來(lái)越關(guān)心,居家安全已成為當(dāng)今小康之家優(yōu)先考慮的問(wèn)題。當(dāng)上班家中無(wú)人,或者僅有老人孩子在家,或晚上在家熟睡,都必須確保家庭成員和財(cái)產(chǎn)的絕對(duì)安全。
中國(guó)安居工程需要大力發(fā)展安全文明小區(qū)建設(shè),嚴(yán)峻的社會(huì)治安形勢(shì),需要建立并完善安全文明小區(qū)防盜報(bào)警網(wǎng)絡(luò)系統(tǒng)體系。如何解決在當(dāng)前每個(gè)家庭經(jīng)濟(jì)承受能力有限的情況下,建設(shè)滿足防范功能及可靠性需求的安全文明小區(qū)防范防盜報(bào)警網(wǎng)絡(luò)系統(tǒng),是當(dāng)前急需解決的課題。本方案是在考慮以上因素的基礎(chǔ)上,所設(shè)計(jì)的可行實(shí)施方案。一、住宅小區(qū)防盜報(bào)警系統(tǒng)要求 當(dāng)前,隨著經(jīng)濟(jì)的發(fā)展,人民的生活日益改善,人們對(duì)家庭生命財(cái)產(chǎn)安全越來(lái)越重視,采取了許多措施來(lái)保護(hù)家庭的安全。以往的做法是安裝防盜門、防盜網(wǎng),但也存在有礙美觀,不符合防火要求,不能有效地防止壞人的入侵。現(xiàn)在,全國(guó)各地都在如火如荼地開展建設(shè)安全文明小區(qū)的活動(dòng),而且很多地方都提出取消防盜網(wǎng)的口號(hào),家庭電子防盜報(bào)警系統(tǒng)也就應(yīng)運(yùn)而生。因?yàn)榇蠖鄶?shù)家庭都是雙職工,白天家里通常沒有人,發(fā)生報(bào)警后,必須要有專人來(lái)處理,因此,必須設(shè)立報(bào)警中心。而且因?yàn)閲?guó)內(nèi)住宅區(qū)大多數(shù)是密集型分布,一個(gè)住宅區(qū)往往有幾百上千戶,并且都有自身的保安隊(duì)伍,因此當(dāng)用戶防盜報(bào)警系統(tǒng)報(bào)警時(shí),除了在現(xiàn)場(chǎng)報(bào)警外,還需要向當(dāng)?shù)嘏沙鏊蚬卜志诌M(jìn)行報(bào)警聯(lián)網(wǎng)外,也需要向住宅小區(qū)的保安中心進(jìn)行聯(lián)網(wǎng)報(bào)警,以便警情得到迅速處理。另外,考慮到國(guó)內(nèi)普遍收入水平較低,對(duì)于每一戶家庭的防盜報(bào)警系統(tǒng)成本不可太高,但因?yàn)橛脩魯?shù)量多,也不能采用質(zhì)量差的產(chǎn)品,以免誤報(bào)頻繁造成不良影響。根據(jù)以上分析,住宅小區(qū)對(duì)防盜報(bào)警系統(tǒng)的要求如下:1.廣泛性——即要求小區(qū)內(nèi)每個(gè)家庭都能得到保護(hù)。2.實(shí)用性——即要求每個(gè)家庭的防范系統(tǒng)能在實(shí)際可能發(fā)生受侵害的情況下及時(shí)報(bào)警。并要求操作簡(jiǎn)便,環(huán)節(jié)少,易學(xué)。3.系統(tǒng)性——即要求每個(gè)家庭的防范系統(tǒng)在案情發(fā)生時(shí),除能自身報(bào)警外,必須及時(shí)傳到保衛(wèi)部門,并同時(shí)上報(bào)當(dāng)?shù)毓矆?bào)警中心。4.可靠性——即要求系統(tǒng)所設(shè)計(jì)的結(jié)構(gòu)合理產(chǎn)品經(jīng)久耐用、系統(tǒng)是可靠。5.投資可行性------即要求系統(tǒng)投資或造價(jià)能控制在小區(qū)家庭能承受的范圍之內(nèi)。
1.2 設(shè)計(jì)思想
在小區(qū)內(nèi)的每個(gè)住戶單元安裝一臺(tái)報(bào)警主機(jī),住戶可選擇安裝在住戶門口、窗戶處安裝聲檢、緊急求助,煙霧/煤氣探頭、瓦斯探頭,病毒檢測(cè)器,防盜報(bào)警器等報(bào)警感知設(shè)備,報(bào)警主機(jī)通過(guò)總線與管理中心的電腦想連接,進(jìn)行安防信息管理,本系統(tǒng)具有遠(yuǎn)程報(bào)警功能。如果發(fā)生盜賊闖入、搶劫、煙霧、燃汽泄露,聲音過(guò)高等緊急事故,傳感器就會(huì)立即獲知并由報(bào)警系統(tǒng)即刻觸發(fā)聲光警報(bào)以有效恫嚇企圖行竊的盜賊;系統(tǒng)還會(huì)迅速向報(bào)警中心傳送報(bào)警信息;報(bào)警中心接到警情后立即自動(dòng)進(jìn)行分辨處理,迅速識(shí)別判定警報(bào)類型、地點(diǎn)、用戶,中心據(jù)此派出機(jī)動(dòng)力量采取相應(yīng)解救措施;系統(tǒng)具備24小時(shí)防破壞等并自我監(jiān)視,一旦有任何被破壞的跡象也會(huì)即刻報(bào)警。總之,無(wú)論白天黑夜,你離家在外還是在家休息,電子保安時(shí)時(shí)刻刻保護(hù)的安全,這正是能為家人、家庭、財(cái)產(chǎn)所做的最有效的安全防盜保護(hù)措施。
1.3 系統(tǒng)功能
設(shè)計(jì)具有防盜并且兼有防火,防煤氣,防盜毒等功能的小區(qū)防盜報(bào)警系統(tǒng),無(wú)疑可以使家庭保安自動(dòng)化。系統(tǒng)采用體積小巧,功能強(qiáng)大,價(jià)格便宜的單片微型計(jì)算機(jī)作為居民家庭第一監(jiān)視端,與單片機(jī)連接各種用于家庭安保的傳感器作為收集信號(hào)并送給單片機(jī)初步處理,單片機(jī)實(shí)時(shí)與遠(yuǎn)方主監(jiān)控計(jì)算機(jī)通信,將從傳感器接受來(lái)的信號(hào)實(shí)時(shí)傳給主機(jī),主機(jī)端就可以知道小區(qū)各個(gè)居民家庭的異常情況,從而進(jìn)行實(shí)時(shí)處理。系統(tǒng)利用CAN總線傳輸信息,提高了可靠性,操作更方便,在工程實(shí)際中有廣泛的應(yīng)用,因而具有良好的應(yīng)用前景和工程推廣價(jià)值。
該系統(tǒng)運(yùn)用了了單片機(jī)AT89C51, CAN總線的主要特性和功能,將主從式微機(jī)通信運(yùn)用于今天的生活,體現(xiàn)了自動(dòng)化的發(fā)展前景一片光明。對(duì)于應(yīng)用區(qū)域:
每個(gè)家庭可實(shí)現(xiàn):家中無(wú)人時(shí),如上班了,可把家庭報(bào)警系統(tǒng)設(shè)置在外出布防狀態(tài),使所有的探測(cè)器都工作起來(lái)。當(dāng)竊賊試圖破門而入或從陽(yáng)臺(tái)闖入,被動(dòng)紅外探測(cè)器探測(cè)到動(dòng)作,警號(hào)發(fā)聲,并且保安中心立刻接收到警情,接著在數(shù)秒后公安局報(bào)警中心也會(huì)收到報(bào)警信號(hào)。家中有人時(shí),如睡覺時(shí),把系統(tǒng)設(shè)置在留守布防狀態(tài),當(dāng)竊賊企圖從大門闖入時(shí),立刻動(dòng)作發(fā)出警報(bào);如果主人有緊急情況,如急病或受到挾持時(shí),可按動(dòng)鍵盤上的緊急按鈕發(fā)出警報(bào)。
1.4 系統(tǒng)設(shè)計(jì)框圖
圖1.1 系統(tǒng)組成結(jié)構(gòu)圖
1.5 系統(tǒng)實(shí)現(xiàn)方法
    (1) 利用各種傳感器接收需要防備外界的異常信號(hào),信號(hào)的檢測(cè)與轉(zhuǎn)換傳輸。
(2) 單片機(jī)接收傳感器檢測(cè)信號(hào),進(jìn)行初步處理,如記錄發(fā)生情況的位置,何種報(bào)警等等,也可以單片機(jī)進(jìn)行現(xiàn)場(chǎng)報(bào)警。
(3) 利用CAN總線實(shí)現(xiàn)單片機(jī)與主控計(jì)算機(jī)的串口通訊。
(4) 在主控計(jì)算機(jī)上接收單片機(jī)送來(lái)的報(bào)警信號(hào),發(fā)出報(bào)警信息。
2  系統(tǒng)可行性分析2.1 硬件模塊
報(bào)警器硬件由溫度煙霧信號(hào)采集模塊、煤氣信號(hào)采集模塊、防盜報(bào)警模塊、光報(bào)警模塊,鍵盤顯示模塊以及單片機(jī)與CAN總線模塊組成。
2.1.1單片機(jī)控制模塊
經(jīng)過(guò)比較,作者決定使用常用、廉價(jià)的單片機(jī)AT89C51作為主控制器。單片機(jī)AT89C51是由ATMEL公司生產(chǎn)的51單片機(jī)。簡(jiǎn)單介紹如下:
AT89C51是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的AT89C51提供了高性價(jià)比的解決方案。
    AT89C51是一個(gè)低功耗高性能單片機(jī),40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,         AT89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。
AT89C51具有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。
AT89C51的引腳圖如下圖所示:
圖2.1AT89C51芯片的引腳圖
VCC:供電電壓。
GND:接地。
P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3口也可作為AT89C51的一些特殊功能口,如下所示:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(記時(shí)器0外部輸入)
P3.5 T1(記時(shí)器1外部輸入)
P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)
P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。
/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2:來(lái)自反向振蕩器的輸出。
此單片機(jī)主要用于控制,包括響應(yīng)中斷、延時(shí)、判斷、發(fā)送對(duì)方號(hào)碼等等。
2.1.2溫度煙霧信號(hào)采集模塊
要準(zhǔn)確的進(jìn)行火災(zāi)報(bào)警,選擇合適的溫度傳感器和煙霧傳感器是準(zhǔn)確報(bào)警的前提。綜合考慮各種因素,作者選擇集成數(shù)字溫度傳感器DS18B20和煙霧傳感器NIS-09C用作采集系統(tǒng)的敏感元件。
2.1.3煤氣信號(hào)采集模塊
煤氣泄露報(bào)警:一當(dāng)室內(nèi)煤氣超過(guò)正常標(biāo)準(zhǔn)時(shí),它將通過(guò)傳感器向家庭控制器發(fā)出報(bào)警信號(hào)。對(duì)于密度大于空氣的氣體,感應(yīng)器放在氣體源的下方。對(duì)于密度小于空氣的氣體,感應(yīng)器放在氣體源的上方,當(dāng)煤氣泄露報(bào)警啟動(dòng),就通知管理中心。綜合考慮各種因素,作者選用氣敏傳感器TP-1.1A,用作煤氣報(bào)警。
2.1.4防盜報(bào)警模塊
防盜報(bào)警:在小區(qū)每一住戶內(nèi)安裝防盜報(bào)警裝置。當(dāng)住戶家中無(wú)人時(shí),可把家庭內(nèi)的防盜報(bào)警系統(tǒng)設(shè)置為布防狀態(tài),當(dāng)竊賊闖入時(shí),報(bào)警系統(tǒng)自動(dòng)發(fā)出警報(bào)并向小區(qū)安保中­心報(bào)警。綜合考慮各種因素,選用熱電釋紅外傳感器RE200B來(lái)進(jìn)行防盜報(bào)警。
2.1.5光報(bào)警模塊
    由AT89C51的P1口的P1.4~P1.7分別控制4個(gè)發(fā)光二極管,予以光報(bào)警。P1.4~P1.7控制的燈依次為正常信號(hào)燈、煤氣信號(hào)燈、火災(zāi)信號(hào)燈和防盜信號(hào)燈。當(dāng)這些輸出端輸出低電平時(shí),對(duì)應(yīng)的信號(hào)燈便會(huì)發(fā)光報(bào)警。
圖2.2 光報(bào)警電路圖
2.1.6數(shù)據(jù)采集模塊
A/D轉(zhuǎn)換是本系統(tǒng)比較關(guān)鍵的一步,通過(guò)A/D轉(zhuǎn)換,成功的把所要測(cè)量和控制的數(shù)據(jù)采集過(guò)來(lái),是保證系統(tǒng)功能可以實(shí)現(xiàn)的第一步。為了設(shè)計(jì)好A/D轉(zhuǎn)換模塊,使它達(dá)到預(yù)想的A/D轉(zhuǎn)換效果,必須選定合適的A/D轉(zhuǎn)換器。
A/D轉(zhuǎn)換電路采用了常用的8位8通道數(shù)模轉(zhuǎn)換專用芯片ADC0809,ADC0809由8路模擬開頭、地址鎖存與譯碼器、8位A/D轉(zhuǎn)換器和三態(tài)輸出鎖存緩沖器組成。
(1) 其主要性能指標(biāo)為:
①分辨率為8位。
②最大不可調(diào)誤差:0808為1/2LSB,0809為1LSB。
③單電源+5v供電,基準(zhǔn)電壓由外部提供,典型值為+5v,此時(shí)允許輸入模擬電壓為0—5V。
④具有鎖存控制的8路模擬選通開關(guān)。
⑤可鎖存三態(tài)輸出,輸出電平與TTL電平兼容。
功耗15mW。
⑥轉(zhuǎn)換速度取決于芯片的時(shí)鐘頻率。時(shí)鐘頻率范圍500KHz時(shí),轉(zhuǎn)換時(shí)間為128μs。
(2)ADC0809引腳功能
圖2.3為ADC0809引腳圖,說(shuō)明如下;
圖2.3 ADC0809芯片引腳
①IN0—IN7——8路模擬信號(hào)輸入端。
②ADDA、ADDB、ADDC——3位地址碼輸入端。8路模擬信號(hào)轉(zhuǎn)換選擇由A、B、C決定。A為低位,C為高位。與低8位地址中A0—A2連接。由A0—A2地址000-111選擇INO-IN7八路A/D通道。其中模擬開關(guān)與輸入通道的關(guān)系見表3.1。
③CLK——外部時(shí)鐘輸入端。時(shí)鐘頻率高,A/D轉(zhuǎn)換速度快。允許范圍為10—1280KHz,典型值為640KHz,此時(shí)A/D轉(zhuǎn)換時(shí)間為100μs通常由MCS-51型單片機(jī)ALE端直接或分頻后與0809CLK端相連接。當(dāng)MCS-51型單片機(jī)無(wú)讀寫外RAM操作時(shí),ALE信號(hào)固定為CPU時(shí)鐘頻率的1/6。若晶振為6MHz,則1/6為1MHz時(shí).A/D轉(zhuǎn)換時(shí)間為64μs。
表2.1路模擬開關(guān)與輸入通道的關(guān)系表
通入通道
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
A
0
1
0
1
0
1
0
1
B
0
0
1
1
0
0
1
1
C
0
0
0
0
1
1
1
1
④D0—D7——數(shù)字量輸出端。
——A/D轉(zhuǎn)換結(jié)果輸出允許控制端。當(dāng)面端為高電平時(shí),允許將A/D轉(zhuǎn)換結(jié)果從Do—D7端輸出。通常由MCS- 51型單片機(jī)的端與0809片選端(例如P2.0)通過(guò)或非門與0809端相連接。當(dāng)DPTR為FEFFH,且執(zhí)行MOVX  A,@DPTR指令
后,RD和P2.0均有效,或非后產(chǎn)生高電平,使0809端有效,0809將A/D轉(zhuǎn)換結(jié)果送入數(shù)據(jù)總線Po口,CPU再讀入A中。
⑥ALE——地址鎖存允許信號(hào)。8路模擬通道地址由A、B、C輸入,在0809的ALE信號(hào)有效時(shí)將該8路地址鎖存(注意0809ALE與803lALE的區(qū)別)。
⑦START——啟動(dòng)A/D轉(zhuǎn)換信號(hào)。當(dāng)START端輸入一個(gè)正脈沖時(shí),立即啟動(dòng)0809進(jìn)行A/D轉(zhuǎn)換。START端與ALE端連在一起,由MCS-51型單片機(jī)WR與0809片選端(例如P2.0)通過(guò)或非門相連,當(dāng)DPTR為EFF8H,執(zhí)行“MOVX@DPTR,A”指令后,將啟動(dòng)0809模擬通道0的A/D轉(zhuǎn)換。FEF8H—FEFFH分別為8路模擬輸入通道的地址。執(zhí)行MOVX寫指令,井非真的將A中內(nèi)容寫進(jìn)0809,而是產(chǎn)生WR信號(hào)和P2.o有效,從而使0809的START和ALE有效,且輸出A/D通道0地址A0—A2。事實(shí)上也無(wú)法將A內(nèi)容寫進(jìn)0809,0809中沒有一個(gè)寄存器能容納A中內(nèi)容,0809的輸入通道是IN0—IN7,輸出通道是D0—D7,因此,執(zhí)行“MOVX@DPTR,A”指令與A中內(nèi)容無(wú)關(guān),但DPTR地址應(yīng)指向當(dāng)前A/D的通道地址。
⑧EOC——A/D轉(zhuǎn)換結(jié)束信號(hào)。當(dāng)啟動(dòng)0809A/D轉(zhuǎn)換后;EOC輸出低電平;轉(zhuǎn)換結(jié)束后,EOC輸出高電平,表示可以讀取A/D轉(zhuǎn)換結(jié)果。該信號(hào)取反后,若與MCS-51型單片機(jī)引腳INT0或連接,可引發(fā)CPU中斷,在中斷服務(wù)程序中讀A/D轉(zhuǎn)換的數(shù)字信號(hào)。若MC5—51型單片機(jī)兩個(gè)中斷源已用完,則EOC也可與P1口或四口的一條端線相連,不采用中斷方式,采用查詢方式,查得EOC為高電平后,再讀A/D轉(zhuǎn)換值。
⑨VREF+、VREF- ——正負(fù)基準(zhǔn)電壓輸入端。基準(zhǔn)電壓的典型值為+5v,可與電源電壓(+5v)相連,但電源電壓往往有一定波動(dòng),將影響A/D精度。因此,精度要求較高時(shí),可用高穩(wěn)定度基準(zhǔn)電源輸入。當(dāng)模擬信號(hào)電壓較低時(shí),基準(zhǔn)電壓也可取低于5v的數(shù)值。
⑩Vcc——正電源電壓(+5v)。GND——接地端。
ADC0809的A/D轉(zhuǎn)換過(guò)程是在時(shí)鐘信號(hào)的協(xié)調(diào)下進(jìn)行的。ADC0809的時(shí)鐘信號(hào)由CLOCK端送入,其最高頻率為640MHz,在這個(gè)最高頻率下ADC0809的A/D轉(zhuǎn)換時(shí)間為100uS左右。
A/D轉(zhuǎn)換結(jié)束后,A/D轉(zhuǎn)換的結(jié)果(8位數(shù)字量)送到三態(tài)鎖存輸出緩沖器,此時(shí)A/D轉(zhuǎn)換結(jié)果還沒有現(xiàn)在DB0—DB7八條數(shù)字量輸出線上,單片機(jī)不能獲取之。單片機(jī)要想讀到A/D轉(zhuǎn)換結(jié)果,必須使ADC0809的允許輸出控制端OE為高電平,打開三態(tài)輸出鎖存器,A/D轉(zhuǎn)換結(jié)果出現(xiàn)在DB0—DB7上。
圖2.4 ADC0809的讀、寫、啟動(dòng)以及A/D轉(zhuǎn)換時(shí)序圖
圖2.4中EOC為轉(zhuǎn)換結(jié)束輸出信號(hào)。在A/D轉(zhuǎn)換期間,EOC維持高電平,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),EOC變成高電平。ADC0809的START端收到下降沿后,并不立即進(jìn)行A/D轉(zhuǎn)換,EOC=1,而是延遲10uS后,才開始A/D轉(zhuǎn)換,EOC變?yōu)榈碗娖健纹瑱C(jī)讀取A/D轉(zhuǎn)換結(jié)果的方法有三種(1)延遲法:單片機(jī)啟動(dòng)ADC0809后,延時(shí)130uS以上,可以讀到正確的A/D轉(zhuǎn)換結(jié)果。(2)查詢法:EOC必須接到AT89C51的一條I/O線上。單片機(jī)啟動(dòng)ADC0809后,延遲10uS,檢測(cè)EOC,若EOC=0則A/D轉(zhuǎn)換沒有結(jié)束,繼續(xù)檢測(cè)EOC直到EOC=1。當(dāng)EOC=1時(shí),A/D轉(zhuǎn)換已經(jīng)結(jié)束,單片機(jī)讀取A/D轉(zhuǎn)換結(jié)果。(3)中斷法:EOC必須經(jīng)過(guò)非門接到AT89C51的中斷請(qǐng)求輸入線INT0或INT1上,AT89C51的中斷觸發(fā)方式為下降沿觸發(fā)。單片機(jī)啟動(dòng)A/D轉(zhuǎn)換后可以做其它工作,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),EOC由0—1經(jīng)過(guò)非門傳到INT端,AT89C51收到中斷請(qǐng)求信號(hào),若AT89C51開中斷,則進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中單片機(jī)讀取A/D轉(zhuǎn)換的結(jié)果。
數(shù)據(jù)采集的電路如圖2.5所示。溫度、煙霧、煤氣、防盜傳感器的輸出分別接到ADC0809的IN4、IN5、IN6和IN7。ADC0809的通道選擇地址A,B,C分別由AT89C51的P0.0~P0.2經(jīng)地址鎖存器74LS373輸出提供。當(dāng)P2.0=0時(shí),與寫信號(hào)WR共同選通ADC0809。圖中ALE信號(hào)與ST信號(hào)連在一起,在WR信號(hào)的前沿寫入地址信號(hào),在其后沿啟動(dòng)轉(zhuǎn)換。例如,輸出地址7FF8H可選通通道IN4,實(shí)現(xiàn)對(duì)溫度傳感器輸出的模擬量進(jìn)行轉(zhuǎn)換;輸出地址7FF9H可選通通道IN1,實(shí)現(xiàn)對(duì)煙霧傳感器輸出的模擬量進(jìn)行轉(zhuǎn)換。圖中ADC0809的轉(zhuǎn)換結(jié)束狀態(tài)信號(hào)EOC接到89C51的INT1引腳,當(dāng)A/D轉(zhuǎn)換完成后,EOC變?yōu)楦唠娖剑硎巨D(zhuǎn)換結(jié)束,產(chǎn)生中斷。在中斷服務(wù)程序中,將轉(zhuǎn)換好的數(shù)據(jù)送到指定的存儲(chǔ)單元。
圖2.5 數(shù)據(jù)采集模塊
2.1.7鍵盤顯示模塊
單片機(jī)系統(tǒng)所用的鍵盤有編碼鍵盤和非編碼鍵盤兩種。
編碼鍵盤是只要按下它的某一個(gè)鍵,就能產(chǎn)生這個(gè)鍵的代碼,與此同時(shí)還產(chǎn)生一個(gè)脈沖信號(hào),以通知CPU接收鍵碼。編碼鍵盤使用方便,也不用編寫太復(fù)雜的程序。但硬件電路復(fù)雜,比非編碼簡(jiǎn)易鍵盤成本要高。
非編碼鍵盤也稱簡(jiǎn)易鍵盤,它的按鍵是排列成行、列矩陣形式的。按鍵的作用只是簡(jiǎn)單地實(shí)現(xiàn)接點(diǎn)的接通或斷開,因此必須有一套相應(yīng)的程序與之配合,才能產(chǎn)生相應(yīng)的鍵碼,它基本上不需要附加什么硬件電路。但需要通過(guò)軟件來(lái)解決按的識(shí)別、防抖動(dòng)以及如何產(chǎn)生鍵碼的問(wèn)題。
為了節(jié)約成本,本系統(tǒng)選用簡(jiǎn)易鍵盤作為撥號(hào)輸入。
單片機(jī)所用的顯示有LED和LCD兩種,從設(shè)計(jì)的難度和成本造價(jià)來(lái)說(shuō)LCD都要高于LED。本作品要顯示的是要撥的號(hào)碼和來(lái)電顯示對(duì)方機(jī)子的號(hào)碼,為數(shù)字顯示。因此,本作品選用了由LED組成的7段發(fā)光顯示器,它有簡(jiǎn)單、經(jīng)濟(jì)、易于與單片機(jī)接口等優(yōu)點(diǎn)。7段LED選用的是共陽(yáng)極的。
2.1.8CAN總線協(xié)議
CAN(Controller Area Network)總線,又稱控制器局域網(wǎng),是Bosch公司在現(xiàn)代汽車技術(shù)中領(lǐng)先推出的一種多主機(jī)局域網(wǎng)。由于其卓越的性能,極高的可靠性,獨(dú)特靈活的設(shè)計(jì)和低廉的價(jià)格,現(xiàn)已廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng)控制、智能大廈、小區(qū)安防、交通工具、醫(yī)療儀器、環(huán)境監(jiān)控等眾多領(lǐng)域。
CAN的通信協(xié)議主要由CAN控制器完成。CAN控制器主要由實(shí)現(xiàn)CAN總線協(xié)議的部分和實(shí)現(xiàn)與微處理器接口部分的電路組成。對(duì)于不同型號(hào)的CAN總線通信控制器,實(shí)現(xiàn)CAN協(xié)議部分電路的結(jié)構(gòu)和功能大多相同,而與微處理器接口部分的結(jié)構(gòu)和方式存在一些差異。
CAN控制器選用SJA1000作為控制器。SJA1000是高集成度CAN控制器。具有多主結(jié)構(gòu)、總線訪問(wèn)優(yōu)先權(quán)、成組與廣播報(bào)文功能及硬件濾波功能。輸入時(shí)鐘頻率為16MHZ時(shí)鐘,輸出可編程控制。由以下幾部分構(gòu)成:接口管理邏輯、發(fā)送緩存器、接收緩存器、位流處理器、位定時(shí)邏輯、收發(fā)邏輯、錯(cuò)誤管理邏輯、控制器接口邏輯等。
SJA1000在電路中是一個(gè)總線接口芯片,通過(guò)它實(shí)現(xiàn)上位機(jī)與現(xiàn)場(chǎng)微處理器之間的數(shù)據(jù)通信。該電路的主要功能是通過(guò)CAN總線接收來(lái)自上位機(jī)的數(shù)據(jù)進(jìn)行分析組態(tài)然后下傳給下位機(jī)的控制電路實(shí)現(xiàn)控制功能,當(dāng)CAN總線接口接收到下位機(jī)的上傳數(shù)據(jù),SJA1000就產(chǎn)生一個(gè)中斷,引發(fā)微處理器產(chǎn)生中斷,通過(guò)中斷處理程序接收每一幀信息并通過(guò)CAN總線上傳給上位機(jī)進(jìn)行分析。AT89C51是CAN總線接口電路的核心,其承擔(dān)CAN控制器的初始化、CAN的收發(fā)控制等任務(wù)。
CAN總線收發(fā)器選用PCA82C250作為總線收發(fā)器。 PCA82C250是CAN 協(xié)議控制器和物理總線之間的接口。82C250 可以為總線提供不同的發(fā)送性能,為CAN 控制器提供不同的接收性能。而且它與“ISO 11898”標(biāo)準(zhǔn)完全兼容。PCA82C250的目的是為了增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護(hù)總線,降低射頻干擾(RFI)實(shí)現(xiàn)熱防護(hù)等。
接口主要元件電路原理圖見圖2.6,在進(jìn)行電路設(shè)計(jì)時(shí)應(yīng)注意以下幾點(diǎn),否則達(dá)不到預(yù)期的效果。
(1)總線兩端必須接兩個(gè)終端匹配電阻RT,忽略掉它們,會(huì)使數(shù)據(jù)通信的抗干擾性及可靠性大大降低。
(2)PCA82C250為CAN控制器和物理總線之間的接口,它可以提供向總線的
差動(dòng)發(fā)送能力和CAN控制器的差動(dòng)接收能力,TXD和RXD引腳分別發(fā)送經(jīng)過(guò)驅(qū)動(dòng)后的發(fā)送和接收信號(hào)。其引腳8(RS)可以選擇2種不同的工作方式:把該引腳直接與地相連,系統(tǒng)將處于高速工作方式,在這種方式下,為避免射頻干擾,建議使用屏蔽電纜作總線;而在波特率較低,總線較短時(shí),一般采用斜率控制方式,上升及下降的斜率取決于RS的阻值,實(shí)踐表明15-200k為RS較理想的取值范圍,在這種方式下,可以使用雙絞線作總線(本系統(tǒng)采用該工作方式)。
(3)SJA1000的TX1腳懸空,RX1引腳的電位必須維持在約0.5VCC上,否則,
將不能形成CAN協(xié)議要求的電平邏輯。因本系統(tǒng)傳輸距離近,環(huán)境干擾小,可以不用電流隔離,這樣可以直接把82C250的VREF端(約為0.5VCC)與SJA1000的RX1相連,從而簡(jiǎn)化了電路。
(4)設(shè)計(jì)時(shí)將SJA1000的CLOCKOUT的時(shí)鐘信號(hào)接至AT89C51的時(shí)鐘電路輸
入端,作為AT89C51的外部時(shí)鐘輸入,解決了時(shí)鐘同步問(wèn)題;SJA1000中斷輸出信號(hào)/INT接至AT89C51的/INT0端,通過(guò)中斷方式與AT89C51通信。
    AT89C51                 SJA1000
   圖2.6 接口主要元器件電路圖
2.1.9傳感器模塊
上述所說(shuō)的各種信號(hào)采集模塊都是經(jīng)過(guò)傳感器來(lái)進(jìn)行信號(hào)采集,再送到ADC0809。
傳感器是一個(gè)從系統(tǒng)接收功率,通常以另一種形式將功率送到第二個(gè)系統(tǒng)中的器件。按照這一定義,可以說(shuō)傳感器是一種吸收(提取)、轉(zhuǎn)換和傳送能量的器件。嚴(yán)格地說(shuō),應(yīng)該區(qū)別檢測(cè)和變換這兩個(gè)概念。前者只是將被測(cè)量轉(zhuǎn)移到系統(tǒng)中去,而后者從字面上說(shuō)是將被測(cè)量的種類加以改變。有時(shí),對(duì)被測(cè)量只進(jìn)行一次變換還不夠,必須進(jìn)行第二次、第三次變換,一直到所希望的能量形式為止。傳感器轉(zhuǎn)換能量的理論基礎(chǔ)都是利用物理學(xué)、化學(xué)等各種現(xiàn)象和效應(yīng)來(lái)進(jìn)行能量形式的變換。隨著微電子和計(jì)算機(jī)技術(shù)的發(fā)展,傳感器輸出信號(hào)的形式應(yīng)盡可能是電量。
傳感器的組成按其定義一般是由敏感元件、變換元件和測(cè)量電路三部分組成。除自源型傳感器外,還需外加輔助電源,用框圖表示,如圖2.7所示。由圖可知,傳感器由以下幾個(gè)部分組成:
圖2.7 傳感器的組成框圖
(1)敏感元件(預(yù)變換器)  直接感受被測(cè)量(一般為非電量)并將其轉(zhuǎn)換為與被測(cè)量有確定關(guān)系的易變成電量(包括電量)的其它量的元件。
(2)轉(zhuǎn)換元件(變換器)  它能將其它物理量直接轉(zhuǎn)換為有確定關(guān)系的電量的元件。
(3)測(cè)量電路(變換電路)  把轉(zhuǎn)換元件輸出的電信號(hào)變?yōu)楸阌谔幚怼@示、記錄、控制的可用電信號(hào)的電路。測(cè)量電路的類型視轉(zhuǎn)換元件的不同而定.經(jīng)常采用的有電橋電路和其它特殊電路,加高阻抗輸入電路、脈沖電路、振蕩電路等。
(4)輔助電源  供給轉(zhuǎn)換能量。
2.2 軟件模塊
通過(guò)上面分析,決定選用C51系列單片機(jī)作為控制器,那么它的軟件編寫就要按照單片機(jī)語(yǔ)言:C語(yǔ)言或匯編語(yǔ)言來(lái)編寫,這里選用執(zhí)行效率高的匯編語(yǔ)言編寫。 開發(fā)工具為keil c51,它的功能強(qiáng)大,支持c語(yǔ)言和匯編語(yǔ)言的編寫與調(diào)試,其軟件模擬I/O口也會(huì)給軟件調(diào)試帶來(lái)極大的方便。
2.2.1溫度煙霧信號(hào)采集模塊
進(jìn)行火災(zāi)報(bào)警,需要溫度和煙霧兩個(gè)傳感器,當(dāng)溫度達(dá)到一定的度數(shù)和煙霧的濃度達(dá)到一定的百分比時(shí),就進(jìn)行火災(zāi)報(bào)警。在本設(shè)計(jì)中,作者選用了數(shù)字溫度傳感器AS18B20和煙霧傳感器NIS-09C來(lái)進(jìn)行報(bào)警。
把數(shù)字溫度傳感器AS18B20和煙霧傳感器NIS-09C分別接到ADC0809IN4口和IN5口。當(dāng)進(jìn)行火災(zāi)報(bào)警時(shí),ADC0809就將采集到的數(shù)據(jù)信號(hào)存儲(chǔ)在數(shù)據(jù)區(qū),進(jìn)行A/D轉(zhuǎn)換,并將指針指向下一個(gè)通道。
2.2.2煤氣信號(hào)采集模塊
進(jìn)行煤氣報(bào)警,作者選用了常用的家庭煤氣報(bào)警傳感器TP-1.1A。將煤氣傳感器TP-1.1A接到ADC0809的IN6口。當(dāng)進(jìn)行煤氣報(bào)警時(shí),ADC0809就將采集到的數(shù)據(jù)信號(hào)存儲(chǔ)在數(shù)據(jù)區(qū),進(jìn)行A/D轉(zhuǎn)換,并將指針指向下一個(gè)通道。
2.2.3防盜報(bào)警信號(hào)采集模塊
人體有恒定的體溫,一般在37攝氏度,所以會(huì)發(fā)出特定波長(zhǎng)的紅外線。熱電釋紅外傳感器探頭就是靠探測(cè)人體發(fā)射的紅外線而進(jìn)行工作。人體發(fā)出的紅外線,通過(guò)菲涅爾濾光片增強(qiáng)后,聚集到紅外感應(yīng)源上。熱電式元件在接收到人體紅外輻射溫度發(fā)生變化時(shí)將會(huì)失去電荷平衡,向外釋放電荷,后續(xù)電路經(jīng)檢測(cè)處理后產(chǎn)生報(bào)警信號(hào)。進(jìn)行防盜報(bào)警時(shí),作者選用了價(jià)格比較合適的熱電釋紅外傳感器RE200B。當(dāng)人體靠近熱電釋紅外傳感器RE200B到一定距離時(shí),熱電釋紅外傳感器就會(huì)報(bào)警,ADC0809就會(huì)將采集的信號(hào)存儲(chǔ)在數(shù)據(jù)區(qū),進(jìn)行A/D轉(zhuǎn)換。
2.2.4光報(bào)警
把四個(gè)發(fā)光二極管分別接在AT89C51的P1.4~P1.7口。P1.4~P1.7口控制的燈依次為正常信號(hào)燈、煤氣信號(hào)燈、火災(zāi)信號(hào)燈和防盜信號(hào)燈。當(dāng)這些輸出端輸出低電平時(shí),對(duì)應(yīng)的信號(hào)燈便會(huì)發(fā)光報(bào)警。
2.2.5信號(hào)采集模塊
數(shù)據(jù)采集部分的程序設(shè)計(jì)包括:驅(qū)動(dòng)ADC0809的IN4,IN5,IN6和IN7進(jìn)行A/D轉(zhuǎn)換,分別由子程序ADC1(溫度轉(zhuǎn)換),ADC2(煙霧濃度轉(zhuǎn)換),ADC3(煤氣濃度轉(zhuǎn)換)和ADC4(防盜轉(zhuǎn)換)完成;單片機(jī)接收轉(zhuǎn)換好的數(shù)據(jù),存入指定內(nèi)存單元,由INT1中斷服務(wù)程序完成。每次驅(qū)動(dòng)A/D轉(zhuǎn)換后等待外部中斷1,中斷到來(lái)說(shuō)明A/D轉(zhuǎn)換已經(jīng)完成,通過(guò)中斷服務(wù)程序讀取轉(zhuǎn)換得到的數(shù)據(jù)。
數(shù)據(jù)采集模塊的工作原理:各類傳感器采集到數(shù)據(jù)后模擬量傳送到ADC0809,0809將轉(zhuǎn)換成的數(shù)字量傳給89C51,最后單片機(jī)將采集到的數(shù)據(jù)送到SJA1000通過(guò)CAN總線收發(fā)器82C250傳上總線,完成數(shù)據(jù)采集工作,并由CAN 總線通過(guò)RS232傳給上位機(jī)。
2.2.6鍵盤顯示模塊
    本單元需要兩個(gè)并行口:一個(gè)作為行信號(hào)輸出,它與顯示器的位選碼共享一個(gè)口,這里作者選用P2口的P2.2和P2.3;另一個(gè)作為列信號(hào)的讀入口,這里選用P0口的前四位P2.4至P2.7。
2.2.7CAN總線通訊模塊
CAN總線測(cè)控系統(tǒng)的通信軟件分為3部分:CAN初始化、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收。
CAN初始化,其主要是設(shè)置CAN的通信參數(shù)。需要初始化的寄存器有:模式寄存器(Peli CAN模式)、時(shí)分寄存器、接收代碼寄存器、屏蔽寄存器、總線定時(shí)寄存器、輸出控制寄存器等。需要注意的是,這些寄存器僅能在復(fù)位期間可寫訪向,因此,在對(duì)這些寄存器初始化前,必須確保系統(tǒng)進(jìn)入了復(fù)位狀態(tài),并且系統(tǒng)中各CAN控制器的總線定時(shí)寄存器的初始化字必須相同。
數(shù)據(jù)發(fā)送,現(xiàn)場(chǎng)的各傳感器把環(huán)境多參數(shù)的檢測(cè)信號(hào)(數(shù)字量、模擬量、開關(guān)量)進(jìn)行轉(zhuǎn)換處理后,發(fā)向CAN控制器的發(fā)送緩沖區(qū),然后啟動(dòng)CAN控制器的發(fā)送命令,此時(shí)CAN控制器將自動(dòng)向總線發(fā)送數(shù)據(jù),不再需傳感器的微控制器進(jìn)行干預(yù)。
數(shù)據(jù)接收,整個(gè)微機(jī)測(cè)控系統(tǒng)中的CAN控制器檢測(cè)到總線上有數(shù)據(jù)時(shí)會(huì)自動(dòng)接收總線上的數(shù)據(jù),存入其接收緩沖區(qū),并向AT89C51微控制器發(fā)送接收中斷,啟動(dòng)中斷接收服務(wù)程序,AT89C51通過(guò)執(zhí)行中斷接收服務(wù)程序,從CAN控制器的接收緩沖區(qū)讀取數(shù)據(jù),并對(duì)其進(jìn)行進(jìn)一步處理工作。
3  硬件單元電路設(shè)計(jì)3.1 ADC0809和四個(gè)報(bào)警傳感器的接口電路設(shè)計(jì)
ADC0809和四個(gè)報(bào)警傳感器的接口電路設(shè)計(jì)圖如圖3.1所示。
圖3.1 ADC0809和傳感器的接口電路圖
上圖所示的四個(gè)插針?lè)謩e代表溫度傳感器,煙霧傳感器,煤氣傳感器和防盜傳感器。因?yàn)閭鞲衅鬟M(jìn)行報(bào)警時(shí),要將傳感器放于不同的位子,所以在設(shè)計(jì)電路圖時(shí),作者就選用插針,這樣,用軟線把插針與傳感器連接起來(lái),顯得更加方便,可以將傳感器放于需要的位子。
元器件的選取:
ADC0809芯片一塊
插針?biāo)膫(gè)(三排插針兩個(gè),兩排插折兩個(gè))
47K的電阻一個(gè),51歐姆的電阻一個(gè),50K的電阻兩個(gè)
3.2 AT89C51與ADC0809接口電路
AT89C51與ADC0809接口電路如3.2所示。
圖3.2 AT89C51與ADC0809接口電路圖
ADC0809的通道選擇地址A,B,C分別由AT89C51的P0.0~P0.2經(jīng)地址鎖存器74LS373輸出提供。當(dāng)P2.7=0時(shí),與寫信號(hào)WR共同選通ADC0809。圖中ALE信號(hào)與ST信號(hào)連在一起,在WR信 號(hào)的前沿寫入地址信號(hào),在其后沿啟動(dòng)轉(zhuǎn)換。ADC0809的轉(zhuǎn)換結(jié)束狀態(tài)信號(hào)EOC接到AT89C51的INT1引腳,當(dāng)A/D轉(zhuǎn)換完成后,EOC變?yōu)楦唠娖剑硎巨D(zhuǎn)換結(jié)束,產(chǎn)生中斷。在中斷服務(wù)程序中,將轉(zhuǎn)換好的數(shù)據(jù)送到指定的存儲(chǔ)單元。
AT89C51的頻率跟ADC0809的頻率不一致,所以選用74LS74進(jìn)行二分頻。
元器件的選取:
AT89C51單片機(jī)一塊
ADC0809芯片一塊
74LS74芯片一塊
74LS02芯片一塊
74LS04芯片兩塊
3.3 AT89C51與光報(bào)警接口電路
AT89C51與光報(bào)警接口電路如圖3.3所示
圖3.3 AT89C51與光報(bào)警接口電路圖
把四個(gè)發(fā)光二極管分別接在AT89C51的P1.4~P1.7口。P1.4~P1.7口控制的燈依次為正常信號(hào)燈、煤氣信號(hào)燈、火災(zāi)信號(hào)燈和防盜信號(hào)燈。當(dāng)進(jìn)行一種報(bào)警時(shí),所對(duì)應(yīng)的發(fā)光二極管就會(huì)亮。例如,當(dāng)進(jìn)行火災(zāi)報(bào)警時(shí),P1.6口的發(fā)光二極管就會(huì)亮。
元器件的選取:
四個(gè)340歐姆的電阻
四個(gè)發(fā)光二極管
3.4 鍵盤顯示接口電路
鍵盤顯示接口電路如圖3.4所示。
圖3.4 鍵盤顯示接口電路圖
具體掃描法:(1)將全部行線Y0-Y3(行)置低電平,然后檢測(cè)列的狀態(tài)。只要有一列的電平為低,則表示按鍵中有鍵被按下,而且閉合的鍵位于低電平與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中沒有鍵按下。(2)判斷閉合鍵所在的位置。在確定有按鍵按下以后,就可以進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置低電平,即在置某根行線為低電平時(shí),其線為高電平。在確定某根行線位置為低電平后,再將行檢測(cè)各列的電平狀態(tài)。若為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。
元器件的選取:
按鍵選用我們熟悉的四腳矩形按鍵8個(gè)
9012PNP放大三極管4個(gè)
四位共陽(yáng)LED數(shù)碼管一塊
4.7k的限流電阻4個(gè)
3.5 AT89C51與CAN總線接口電路
AT89C51與CAN總線接口電路圖如圖3.5所示。
圖3.5 AT89C51與CAN總線接口電路圖
在系統(tǒng)中,SJA1000的片選信號(hào)一般由地址總線經(jīng)譯碼獲得,并由此決定出CAN控制器各寄存器的地址。在本設(shè)計(jì)中,作者用單片機(jī)AT89C51的P2.7為片選信號(hào)。所以,SJA1000的地址為:7F00-7F32H。
SJA1000的TX1腳懸空,RX1引腳的電位必須維持在約0.5Vcc上,否則,將不能形成CAN協(xié)議所要求的電平邏輯。如果系統(tǒng)傳輸距離近,環(huán)境干擾小,可以不用電流隔離,這樣可直接把82C250的VREF端(約為0.5 Vcc)與RX1腳相連,從而簡(jiǎn)化了電路。
當(dāng)上電復(fù)位時(shí),AT89C52的上電復(fù)位,需要從低到高的電平變化來(lái)激活,而SJA1000的17腳RST被激活,需要出現(xiàn)一個(gè)由高電平到低電平的跳變,因此,這必須加一個(gè)反相器。
82C50第8腳與地之間的電阻Rs稱為斜率電阻,它的取值決定了系統(tǒng)處于高速工作方式還是斜率控制方式。而在波特率較低、總線較短時(shí),一般采用斜率控制方式,上升及下降的斜率取決于民的阻值,實(shí)驗(yàn)數(shù)據(jù)表明15~200kΩ為Rs較理想的取值范圍,在該方式下,可以使用平行線或雙絞線作總線。在本設(shè)計(jì)中,Rs選用150K。
元器件的選取:
SJA1000芯片一塊
PCA82C250芯片一塊
74LS04芯片一塊
16MHZ晶振一個(gè)
22PF的二極管兩個(gè)
60歐姆的電阻一個(gè)
150K的電阻一個(gè)
4  軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)主要是采集四個(gè)報(bào)警傳感器的報(bào)警信號(hào),再通過(guò)發(fā)光二極管顯示,每一個(gè)發(fā)光二極管亮就表示有一種報(bào)警傳感器報(bào)警。用戶可以根據(jù)自己家庭的具體情況來(lái)設(shè)置報(bào)警的最高限度,用鍵盤顯示來(lái)實(shí)現(xiàn)。單片機(jī)還要把采集的信號(hào)通過(guò)CAN總線傳輸?shù)缴衔粰C(jī),在上位機(jī)上顯示出來(lái)。
4.1 CAN總線程序
CAN總線測(cè)控系統(tǒng)的通信軟件分為3部分:CAN初始化、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收。
4.1.1CAN初始化
CAN初始化,其主要是設(shè)置CAN的通信參數(shù)。需要初始化的寄存器有:模式寄存器(Peli CAN模式)、時(shí)分寄存器、接收代碼寄存器、屏蔽寄存器、總線定時(shí)寄存器、輸出控制寄存器。
CAN初始化程序代碼為:
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <absacc.h>
  5. #define byte unsigned char
  6. #define word unsigned int
  7. #define time0  65536-2000
  8. #define BAUD  -13
  9. #define MAIN    1  ///定義主機(jī),從機(jī)地址
  10. #define ADDR    2
  11. #define READ   'R'
  12. #define WRIT   'W'
  13. #define CAN_PORT P0
  14. #define CAN_CR   0    //控制
  15. #define CAN_CMR  1    //命令
  16. #define CAN_SR   2    //狀態(tài)
  17. #define CAN_IR   3    //中斷
  18. #define CAN_ACR  4    //驗(yàn)收
  19. #define CAN_AMR  5    //屏蔽
  20. #define CAN_BTR0 6    //時(shí)序0
  21. #define CAN_BTR1 7    //時(shí)序1
  22. #define CAN_OCR  8    //輸出
  23. #define CAN_TXB  10   //發(fā)送緩沖
  24. #define CAN_RXB  20   //接收緩沖
  25. #define CAN_CDR  31   //分頻

  26. sbit CAN_WR  = P2^5;
  27. sbit CAN_RD  = P2^6;
  28. sbit CAN_ALE = P2^7;
  29. sbit CAN_RST = P1^0;

  30. sbit da_in   = P3^7;
  31. sbit da_clk  = P3^6;
  32. sbit da_cs   = P3^5;

  33. sbit KEY1    = P2^0;
  34. sbit KEY2    = P2^1;
  35. sbit LED1    = P1^3;
  36. sbit LED2    = P1^4;
  37. sbit LED7    = P1^7;
  38. sbit beer    = P1^1;
  39. bit CANBUS;
  40. byte bdata Acc ;
  41. sbit Acc7=Acc^7;
  42. byte idata TXB[10]={1,2,3,4,5,6,7,8,9,10}; //第一個(gè)為報(bào)文標(biāo)志碼
  43.       
  44. byte idata RXB[10];
  45. void CAN_INI()  /*初始化部分*/
  46. {
  47.   CANW(CAN_CR,0x01);  
  48.   CANW(CAN_ACR,MAIN); //驗(yàn)收濾波器需與報(bào)文標(biāo)志碼(從機(jī)的發(fā)送的第一個(gè)字節(jié))一致
  49.   CANW(CAN_AMR,0x00);   
  50.   CANW(CAN_BTR0,0x42);   //125k-BPS
  51.   CANW(CAN_BTR1,0x1c);
  52.   CANW(CAN_OCR,0x1A);   //0xaa,0xd2,0xfa
  53.   CANW(CAN_CR,0x02);    //**中斷使能   
  54. }
  55. 4.1.2CAN數(shù)據(jù)發(fā)送

  56. 數(shù)據(jù)發(fā)送,現(xiàn)場(chǎng)的各傳感器把環(huán)境多參數(shù)的檢測(cè)信號(hào)(數(shù)字量、模擬量、開關(guān)量)進(jìn)行轉(zhuǎn)換處理后,發(fā)向CAN控制器的發(fā)送緩沖區(qū),然后啟動(dòng)CAN控制器的發(fā)送命令,此時(shí)CAN控制器將自動(dòng)向總線發(fā)送數(shù)據(jù),不再需傳感器的微控制器進(jìn)行干預(yù)。
  57. CAN數(shù)據(jù)發(fā)送的程序代碼為:
  58. void CANW(byte adr,byte dat) //寫CAN數(shù)
  59. {
  60.   CAN_ALE=1;
  61.   CAN_PORT=adr;
  62.   CAN_ALE=0;
  63.   CAN_WR=0;
  64.   CAN_PORT=dat;
  65.   CAN_WR=1;
  66. }

  67. byte CANR(byte adr)  //讀CAN數(shù)
  68. {
  69.   byte dat;
  70.   CAN_ALE=1;
  71.   CAN_PORT=adr;
  72.   CAN_ALE=0;
  73.   CAN_PORT=0xff;
  74.   CAN_RD=0;  
  75.   dat=CAN_PORT;
  76.   CAN_RD=1;
  77.   return dat;
  78. }

  79. void CAN_SEND() /*發(fā)送數(shù)據(jù)部分*/
  80. {
  81. byte i,p;
  82. p=CANR(CAN_SR);
  83. if (p&0x04)
  84. {
  85.   p=CAN_TXB;        /*p指向發(fā)送緩存首址*/
  86.   for(i=0;i<10;i++) CANW(p++,TXB[i]);
  87.   CANW(CAN_CMR,0x01);    /*請(qǐng)求發(fā)送*/
  88. }
  89. }
  90. 4.1.3CAN接收數(shù)據(jù)

  91. 數(shù)據(jù)接收,整個(gè)微機(jī)測(cè)控系統(tǒng)中的CAN控制器檢測(cè)到總線上有數(shù)據(jù)時(shí)會(huì)自動(dòng)接收總線上的數(shù)據(jù),存入其接收緩沖區(qū),并向AT89C51微控制器發(fā)送接收中斷,啟動(dòng)中斷接收服務(wù)程序,AT89C51通過(guò)執(zhí)行中斷接收服務(wù)程序,從CAN控制器的接收緩沖區(qū)讀取數(shù)據(jù),并對(duì)其進(jìn)行進(jìn)一步處理工作。
  92.     CAN接收數(shù)據(jù)程序?yàn)椋?br />
  93.      void CAN_INT() interrupt 0 using 1/*接收中斷*/
  94. {
  95.     byte i,p;
  96.     p=CANR(CAN_IR);
  97.      if(p&0x01)
  98.     {
  99.      p=CAN_RXB;
  100.     for(i=0;i<10;i++)
  101.     {
  102.      RXB[i]=CANR(p++);
  103.     }
  104.      CANW(CAN_CMR,0x04);     /*釋放接收緩存*/
  105.     CANBUS=1;// LED2=1;
  106.     }
  107. }
  108. void CAN_SCAN()
  109. {
  110.      TXB[0]=ADDR;
  111.      TXB[1]=8;
  112.    TXB[2]=ADDR;
  113.      TXB[3]=WRIT;
  114.      TXB[4]=2;
  115.      if(KEY1==0) TXB[5]=0; else TXB[5]=1;
  116.      if(KEY2==0) TXB[6]=0; else TXB[6]=1;
  117.      CAN_SEND();
  118. //  while(!CANBUS); //等待接收完標(biāo)志
  119.      CANBUS=0;
  120.      TXB[0]=ADDR;  //總線地址
  121.      TXB[1]=8;     //發(fā)送數(shù)據(jù)字節(jié)個(gè)數(shù)!
  122.      TXB[2]=ADDR;
  123.      TXB[3]=READ;
  124.    TXB[4]=2;
  125.      CAN_SEND();
  126. //  while(!CANBUS);
  127.    CANBUS=0;
  128.      if(RXB[5]==0) LED1=0; else LED1=1;
  129.      if(RXB[6]==0) LED2=0; else LED2=1;                                                                                                                                         
  130. }
  131. 4.2 溫度傳感器18B20

  132.    DS18B20的程序見附錄三。
  133. 4.3 ADC0809轉(zhuǎn)換

  134. ADC0809的轉(zhuǎn)換程序?yàn)椋?br />
  135. #include <reg51.h>
  136. #define uchar unsigned char
  137. #define uint unsigned int
  138. //#define t0 65536-50000
  139. //#define t1 65536-30000
  140. sbit key3 =P2^3;
  141. sbit key2 =P2^2;
  142. sbit key1 =P2^1;
  143. sbit key0 =P2^0;
  144. sbit P30= P3^0;
  145. sbit P31= P3^1;
  146. sbit P32= P3^2;
  147. sbit P33= P3^3;
  148. sbit P34= P3^4;

  149. //uchar scan=0,dis=0,keyx=1,key;
  150. uchar now;
  151. uchar code              scantab[4]              ={0x80,0x40,0x20,0x10};
  152. uchar code              disptab[4]              ={0x01,0x80,0x40,0x20};
  153. uchar                            n[4]                            ={0x00,0x00,0x00,0x00};
  154. uchar code              trantab[18]              =
  155.               {              0x28,0xEE,0x32,0xA2,0xE4,0xA1,0x21,
  156.                             0xEA,0x20,0xA0,0x60,0x25,0x39,0x26,
  157.                             0x31,0x71,0x29,0xff
  158.               };
  159. int              dispnum;
  160. sbit start=P3^1;
  161. sbit oe=P3^2;
  162. #define t0 65536-1000
  163. bit flag;
  164. unsigned long uin,udis;
  165. /*
  166. int temp;
  167. int  get_p1()                            {P1=0xff;return P1;}
  168. int  get_p3()                            {P3=0xff;return P3;}
  169. void put_p1(int h1)              {P1=h1;}
  170. void put_p3(int h2)              {P3=h2;}
  171. */
  172. void delay(uint t)
  173. {              uint i;
  174.               for(i=0;i<t;i++);
  175. }
  176. /*
  177. void dealkey()
  178. {              if(key>0)
  179.               {              switch(key)
  180.                             {              case              1: P3^0=0;                                          break;
  181.                                           case              5: P3^0=1;                                          break;
  182.                                           case              2: P3^1=0;                                          break;
  183.                                           case              6: P3^1=1;                                          break;
  184.                                           case              3: clock=0;                                          break;
  185.                                           case              7: clock=1;                                          break;
  186.                                           case              4: P3^3=0xff;dispnum=P3^3;              break;
  187.                                           case              8: P3^3=temp;                                                        break;
  188.                                           case              9: P31=1;                                                                      break;
  189.                                           case   13: P31=1;                                                                      break;
  190.                                           case   10: P33=1;dispnum=P33;                                                        break;
  191.                                           case   14: temp=get_p1(); dispnum=temp;                            break;
  192.                                           case   11: temp=get_p1(); dispnum=5*P1/255;            
  193.                                                         break;
  194.                                           case   15:              break;
  195.                                           case   12: P32=0;              break;
  196.                                           case   16: P32=!P32;              break;
  197.                             }
  198.                             if(dispnum<0)              dispnum=0;
  199.                             if(dispnum>9999)              dispnum=9999;
  200.                             distran(dispnum);
  201.               }
  202.               key=0;
  203. }
  204. */
  205. void distran(int  dispnum)
  206. {              n[0]              =trantab[dispnum                            %10];
  207.               n[1]              =trantab[(dispnum/10)              %10];
  208.               n[2]              =trantab[(dispnum/100)              %10];
  209.               n[3]              =trantab[(dispnum/1000)              %10];
  210. }
  211. void display()
  212. {              P2=~disptab[now];
  213.               P0=n[now];
  214. }/*
  215. void scankey()
  216. {              P0=trantab[17];
  217.               now=(now+1)%4;
  218.               P2=~scantab[now];
  219.               key0=key1=key2=key3=1;
  220.               if(!key0)keyx=now+1;
  221.               if(!key1)keyx=now+5;
  222.               if(!key2)keyx=now+9;
  223.               if(!key3)keyx=now+13;
  224. }
  225. */
  226. void t0_sever() interrupt 1
  227. {              TH0=t0>>8;TL0=t0;
  228. //              scankey();
  229. //              dealkey();
  230.               display();
  231.               flag=0;
  232. }

  233. /*
  234. void t1_sever() interrupt 2
  235. {              TH1=t1>>8;TL1=t1;
  236. //scankey();
  237. //dealkey();
  238.               display();
  239. }
  240. */
  241. void deal0809()
  242. {              unsigned long u;
  243.               u=(unsigned long)uin;
  244.               udis=((u*5*1000)/256);
  245.               distran(udis);
  246. }
  247. void get0809()
  248. {              //delay(80);
  249.               start=1;//f=(double)((fxx*200000000)/(fcc*16));
  250.               delay(8);
  251.               start=0;
  252.               delay(50);
  253.               oe=1;
  254.               P1=1;
  255.               uin=P1;
  256.               oe=0;
  257. }
  258. void main()
  259. {
  260.               start=0;
  261.               oe=0;
  262.               flag=0;
  263. EA=1;
  264.               ET0=1;              TH0=t0>>8;              TL0=t0;              TR0=1;
  265.               now=0;
  266.               while(1)
  267.               {
  268.                                           if(flag)display();
  269.                                           else
  270.                                           {              get0809();
  271.                                                         deal0809();
  272.                                                         //display();
  273.                                           }
  274.               }
  275. }
  276.                             /*            
  277.                             if(keyx>0)
  278.                             {              key=keyx;
  279.                                           while(keyx!=0){keyx=0;time(10000);}
  280.                                           dealkey();
  281.                             }
  282.                             time(10000);
  283. */
  284. 4.4 數(shù)字顯示

  285. 本模塊功能主要為小區(qū)家庭用戶根據(jù)自家的情況顯示不同的家庭門牌號(hào)碼。具體程序代碼為:
  286.     #include <reg51.h>
  287. #define uint unsigned int
  288. #define uchar unsigned char
  289. #define tim 65536-3000
  290. sbit dis0 =P2^7;
  291. sbit dis1 =P2^6;
  292. sbit dis2 =P2^5;
  293. sbit dis3 =P2^4;
  294. sbit key1 =P2^3;
  295. sbit key0 =P2^2;
  296. int i;
  297. uchar disp[4],dis;
  298. uchar key,keyx,ts;
  299. uint para[8],ptr;
  300. uchar code numtab[4]={0x80,0x40,0x20,0x10};
  301. uchar code distab[16]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,
  302.                                   0x20,0xa0,0x60,0x25,0x39,0x26,0x31,0x71};
  303. int  code param[8]={300,255,300,255,255,255,255,8};
  304. void time(uint t)
  305. {
  306.           uint j;
  307.             for(j=0;j<t;j++);
  308. }

  309. void distran()
  310. {
  311.            disp[0]=distab[para[ptr]%10];
  312.          disp[1]=distab[(para[ptr]/10)%10];
  313.          disp[2]=distab[(para[ptr]/100)%10];
  314.            disp[3]=distab[(para[ptr]/1000)%10];
  315. }
  316. void display()
  317. {
  318.            dis=(dis+1)%4;
  319.            P2=0xff;
  320.            P0=disp[dis];
  321.          P2=~numtab[dis];
  322.          key0=1; key1=1;
  323.            if(!key0) keyx=dis+1;//*************************鍵盤掃描
  324.          if(!key1) keyx=dis+5;
  325. }
  326. void keyproc()
  327. {
  328.   if(key>0)
  329.        {
  330.           switch(key)
  331.             {
  332.                   case 1: para[ptr]--;      break;
  333.                    case 5: para[ptr]++;      break;  //************個(gè)位
  334.                    case 2: para[ptr]-=10;     break;
  335.                    case 6: para[ptr]+=10;     break;  //*************十
  336.                    case 3: para[ptr]-=100;    break;
  337.                    case 7: para[ptr]+=100;    break;  //**************百
  338.                    case 4: ptr--;             break;   
  339.                    case 8: ptr++;             break;      //*********千位
  340.              }
  341.           if(ptr>7) ptr=0;
  342.            if(ptr<0) ptr=7;
  343.            if(para[ptr]<0)   para[ptr]=0;
  344.           if(para[ptr]>param[ptr])   para[ptr]=param[ptr];
  345.            distran();  
  346.          key=0;
  347. }
  348. }
  349. void timer0() interrupt 1
  350. {
  351.              TH0=tim>>8; TL0=tim; display();
  352. }
  353. void main()
  354. {
  355.              TMOD=0x11;IE=0x82;
  356.              dis=0;
  357.              ptr=0;
  358.            distran();
  359.              TH0=tim>>8;  TL0=tim; TR0=1;
  360.            for(i=0;i<7;i++)   para[i]=i;
  361.              for(;;)
  362.                 {
  363. if(keyx>0)                 //有鍵按下
  364.                             {
  365.                                key=keyx;  
  366.                                while(keyx!=0) {keyx=0; time(1000);}
  367.                                  if(keyx!=0)
  368.                             {
  369.      /// if(!key0) {keyx=dis+1;}//*************************鍵盤掃描
  370.     ////  if(!key1) {keyx=dis+5;}
  371.                            }
  372.         keyproc();
  373.        }
  374.       time(1000);
  375.      }
  376. }
復(fù)制代碼

5  系統(tǒng)可靠性設(shè)計(jì)
小區(qū)安防系統(tǒng)的報(bào)警要求準(zhǔn)確無(wú)誤,必須是可靠的,因此可靠性是一個(gè)很重要的指標(biāo),因此,系統(tǒng)的硬件電路、軟件系統(tǒng)的設(shè)計(jì)均應(yīng)圍繞這個(gè)中心進(jìn)行。
5.1 系統(tǒng)抗干擾性設(shè)計(jì)
小區(qū)安防系統(tǒng)主要進(jìn)行小區(qū)內(nèi)各個(gè)住戶的各種突發(fā)事件的報(bào)警。信號(hào)會(huì)受到各種干擾,使系統(tǒng)不能正常工作。
在抗干擾方面,有硬件措施和軟件措施,也有軟硬件結(jié)合的措施。硬件抗干擾有效率高的有優(yōu)點(diǎn),但是增加系統(tǒng)的投資和設(shè)備的體積;軟件抗干擾有投資低的優(yōu)點(diǎn),但會(huì)降低系統(tǒng)的工作效率。
5.1.1硬件抗干擾措施
干擾的渠道有:供電系統(tǒng)的干擾,過(guò)程通道的干擾,空間的干擾等。在印刷電路板設(shè)計(jì)時(shí),考慮到電路板過(guò)大時(shí),印刷線條長(zhǎng),抗噪聲能力下降;過(guò)小時(shí),散熱不好,容易受鄰近線干擾。所有本系統(tǒng)設(shè)計(jì)電路板時(shí),把相關(guān)的器件盡量放靠近些,容易產(chǎn)生噪聲的器件、電流電路、大電流電路盡量遠(yuǎn)離單片機(jī)。同時(shí)整個(gè)系統(tǒng)用一個(gè)電源,并保證其良好的共地。
5.1.2軟件抗干擾措施
軟件抗干擾屬于單片機(jī)系統(tǒng)自身防御行為,其前提條件是:系統(tǒng)中抗干擾軟件不會(huì)因干擾而損壞。
(1)程序結(jié)構(gòu)化,功能模塊化
編程時(shí)不能讓程序任意跳轉(zhuǎn),否則整個(gè)程序會(huì)糾纏在一起,便于程序維護(hù),而且對(duì)軟件抗干擾方案的實(shí)施有著十分重要的意義。在系統(tǒng)中把整個(gè)程序分解為若干個(gè)功能模塊,每個(gè)功能模塊是一個(gè)正規(guī)程序。
(2)狀態(tài)信號(hào)的抗干擾輸入方法
干擾信號(hào)多呈毛刺狀,作用時(shí)間短,在采集某一狀態(tài)信號(hào)時(shí),可以多次重復(fù)采集,只有連續(xù)兩次采集結(jié)果一致時(shí)才視為有效;在各次采集狀態(tài)信號(hào)之間增加一段延時(shí),能對(duì)抗較寬的干擾。
(3)CPU抗干擾技術(shù)
CPU屬于高速數(shù)字器件,易受干擾的有運(yùn)算器、控制器以及控制寄存器,當(dāng)外界干擾串入時(shí),很可能通過(guò)三總線改寫CPU寄存器的內(nèi)容,導(dǎo)致初始化錯(cuò)誤。尋址失敗乃至系統(tǒng)癱瘓;當(dāng)程序受到干擾后,和可能打亂CPU的正常執(zhí)行程序。如果攔截失去控制的程序流程,如果使系統(tǒng)的損失減少,盡可能恢復(fù)系統(tǒng)的正常狀態(tài)是本系統(tǒng)需要考慮的一項(xiàng)重要內(nèi)容。
系統(tǒng)采取的措施是在各段程序中,對(duì)單片機(jī)及片外擴(kuò)展器件的各種功能、斷口、方式、狀態(tài)等采集永久性或臨時(shí)性的設(shè)置。系統(tǒng)不僅要保證上電后系統(tǒng)要初始化,而且在程序中每次使用某種功能,都要再一次對(duì)相應(yīng)的控制寄存器設(shè)定動(dòng)作模式。
5.2 提高元器件的可靠性
提高單片機(jī)應(yīng)用系統(tǒng)中所有元件的質(zhì)量,以提高系統(tǒng)內(nèi)在的可靠性,這也是關(guān)鍵性的措施。采取的措施有:
(1)選用質(zhì)量好的接插件,并設(shè)計(jì)好工藝結(jié)構(gòu),如選用帶屏蔽的接插件;
(2)選用合格的電子元件,并進(jìn)行嚴(yán)格的測(cè)試、篩選;
(3)設(shè)計(jì)時(shí),技術(shù)參數(shù)留有一定的余量;
(4)提高印刷板的組裝質(zhì)量。
5.3 容錯(cuò)技術(shù)
在提高系統(tǒng)可靠性的同時(shí),采取一些容錯(cuò)技術(shù),當(dāng)系統(tǒng)工作出錯(cuò)時(shí),系統(tǒng)可自動(dòng)糾正錯(cuò)誤。在系統(tǒng)中主要應(yīng)用了信息冗余技術(shù)。
(1)奇偶校驗(yàn)。系統(tǒng)通信時(shí)采用偶校驗(yàn),收方根據(jù)校驗(yàn)結(jié)果,決定是否要求對(duì)方重發(fā)。
   (2)循環(huán)碼校驗(yàn)。在發(fā)送數(shù)據(jù)時(shí)按一定的規(guī)則產(chǎn)生循環(huán)冗余碼,并附加在數(shù)據(jù)后一起發(fā)送;接收方按同樣的規(guī)則根據(jù)接收的數(shù)據(jù)產(chǎn)生循環(huán)冗余碼,并和接收到的循環(huán)冗余碼進(jìn)行必比較,校驗(yàn)數(shù)據(jù)傳送是否正確。
6  系統(tǒng)調(diào)試6.1 整體調(diào)試分析
整個(gè)調(diào)試所使用的測(cè)試儀器儀表和工具:
  • 微機(jī)一臺(tái);
  • 示波器;
  • 萬(wàn)用表;
  • 直流穩(wěn)壓電源;
  • 單片機(jī)開發(fā)系統(tǒng)一套;
本系統(tǒng)的調(diào)試主要分為硬件調(diào)試、軟件調(diào)試和聯(lián)機(jī)調(diào)試三大部分。
經(jīng)過(guò)初步的分析設(shè)計(jì)后,在制作硬件電路的同時(shí),軟件調(diào)試也在穿插進(jìn)行。這樣有利于問(wèn)題的分析和解決,不會(huì)造成問(wèn)題的積累,而且不會(huì)因?yàn)橐粋(gè)小問(wèn)題而需要檢查整體電路,從而可以節(jié)約大量的調(diào)試時(shí)間。軟件編程中,作者首先完成的是單元功能模塊的調(diào)試,然后進(jìn)行系統(tǒng)調(diào)試,整體上與硬件調(diào)試的方法差不多。聯(lián)機(jī)調(diào)試是最重要的一部分,同時(shí)也是本裝置成功的關(guān)鍵,有許多問(wèn)題都比較棘手。
6.2 硬件單元電路調(diào)試6.2.1最小系統(tǒng)板調(diào)試
首先檢測(cè)所制作的電路板是否有虛焊,短路等現(xiàn)象。然后接上+5V電源,檢測(cè)各個(gè)芯片的電源是否為+5V,如果是+5V的話,說(shuō)明供電正確。接上電壓,看單片機(jī)是否發(fā)熱,如不發(fā)熱說(shuō)明電源連接正確。測(cè)單片機(jī)30腳(ALE)是否有脈沖波形輸出,如果有說(shuō)明單片機(jī)正常工作。
6.2.2A/D轉(zhuǎn)換電路調(diào)試
先對(duì)A/D進(jìn)行編程調(diào)試,通過(guò)后才能繼續(xù)完成其他模塊的調(diào)試,這一步很關(guān)鍵,也是最難調(diào)試的一步。
給AT89C51燒入A/D轉(zhuǎn)換程序先調(diào)試A/D轉(zhuǎn)換電路。A/D轉(zhuǎn)換電路調(diào)試步驟如下:
1)、給四路模擬電壓輸入信號(hào)和一路數(shù)字電壓輸入信號(hào)分別輸入相應(yīng)的直流電壓,用萬(wàn)用表檢測(cè)電壓是否采集過(guò)來(lái),也就是輸入端電壓與電源所給電壓是否一致。
2)檢測(cè)ADC0809的啟動(dòng)信號(hào)和輸出使能信號(hào)輸出是否正確。
3)測(cè)得輸入端電壓與電源所給電壓一致后,再檢測(cè)ADC0809的通道選擇是否正確:如:給IN5輸入0~5V的電壓,ADC0809的通道選擇端,如果addrc=5V,addrb=0V,addra=5V, 也即:addrc=1,addrb=0,addra=1;表示該通道選擇正確,否則不正確。如果不正確,檢查程序是否正確,如果程序沒有問(wèn)題,再檢查電路是否接對(duì)了。
4)測(cè)得通道選擇正確后,再測(cè)量數(shù)字量輸出,也即ADC0809的D0~D7輸出端的數(shù)字量是否與輸入模擬量相對(duì)應(yīng)。改變模擬電壓量輸入,看數(shù)字信號(hào)變化是否和模擬量變化對(duì)應(yīng),如果輸出數(shù)字量與輸入模擬量相對(duì)應(yīng)說(shuō)明A/D轉(zhuǎn)換正確。
6.2.3光報(bào)警電路調(diào)試
首先先檢查發(fā)光二極管的正負(fù)極有沒有接錯(cuò),發(fā)光二極管有缺口的是負(fù)極。當(dāng)出現(xiàn)低電平時(shí),發(fā)光二極管亮。
當(dāng)接收到傳感器所檢測(cè)的信號(hào)有異樣時(shí),所相應(yīng)的發(fā)光二極管是否亮。例如,當(dāng)溫度傳感器所檢測(cè)到的溫度高于所設(shè)定的最高溫度時(shí),所對(duì)應(yīng)的發(fā)光二極管就發(fā)亮。
6.2.4鍵盤顯示電路調(diào)試
在調(diào)試前,值得提到的是三極管的幾個(gè)極的判斷和數(shù)碼管的a至g所對(duì)應(yīng)的管腳的測(cè)試,這是十分重要的,這直接關(guān)系到此部分的成敗。1、判斷基極和管子類型(PNP或NPN):由于基極與發(fā)射極、基極與集電極,分別是兩上PN結(jié),它們之間的反向電阻值都很小,所以用萬(wàn)用表歐姆檔(R×100或R×1K)測(cè)量時(shí),先將任一表黑筆接到某一個(gè)認(rèn)定的管腳上,另一表筆先后接到其余兩個(gè)管腳上。如果測(cè)量得到的阻值都很大(或都很小),然后對(duì)換表筆,重復(fù)上述測(cè)量時(shí),阻值恰好與上述相反。都很小(或都很大)。則可斷定所認(rèn)定的管腳為基極。若不符合上述結(jié)果,應(yīng)另?yè)Q一個(gè)認(rèn)定管腳重新測(cè)量,直至符合上述結(jié)果為止。測(cè)量時(shí)注意管腳和表筆的極性。當(dāng)黑筆接在基極,紅表筆分別接在其它兩極時(shí),測(cè)得的電阻值都較小,則可判定該三極管為NPN型,反之即為PNP型。2、判斷集電極和發(fā)射極:判斷集電極和發(fā)射極的基本原理是把三極管接成基本單管放大電路。利用測(cè)量管子的電流放大系數(shù)β的大小來(lái)判斷集電極和發(fā)射極。對(duì)于常用的NPN型小功率硅管。若集電極接電源正極,發(fā)射極接電源負(fù)極,這時(shí)表針偏較大。如果電壓極性反接,則表針偏轉(zhuǎn)就比較小。由此即可判斷出集電極和發(fā)射極。另一種更可靠的辦法是,當(dāng)肯定被測(cè)為NPN型硅管后,將黑表筆接于一個(gè)待測(cè)的管腳,紅表筆接另一個(gè)管腳,基極懸空,觀察表針偏轉(zhuǎn)情況。然后將黑表筆所接管腳與已斷定的基極用手捏住(注意不能使其相碰,這時(shí)的人體電阻相當(dāng)于電阻Rb,比較測(cè)量出的阻值變化。然后更換黑、紅表筆,再觀察阻值變化。如前者的變化比較大,則前者黑表筆所接管腳就是集電極。紅表筆所接管腳為發(fā)射極。如為PNP管子與上述情況相反。根據(jù)上面的方法,測(cè)得所使用的三極管是PNP管,其管腳平面對(duì)向自己,管腳從左到右為e,b,c。數(shù)碼管腳的測(cè)試就顯得比較簡(jiǎn)單:如果是共陰極的數(shù)碼管就讓位選接地,然后點(diǎn)亮其它的管腳,通過(guò)顯示結(jié)果來(lái)斷定引腳是a,b,c等,位選也是拿萬(wàn)用表的黑表筆去探試的。如果是共陽(yáng)極的話就用紅表筆來(lái)探試位選,其它的與共陰極的一致。經(jīng)過(guò)以上的判斷,得到正確的管腳接入電路中。
具體調(diào)試步驟為:
(1)鍵盤是否工作正常
(2)當(dāng)按下鍵盤時(shí),數(shù)碼管顯示的數(shù)字是否與軟件設(shè)計(jì)的一樣。
6.2.5傳感器電路調(diào)試
在進(jìn)行傳感器調(diào)試時(shí),首先檢查各個(gè)傳感器的接線電路是否正確,特別是有三個(gè)腳的傳感器。傳感器接到ADC0809時(shí),要接負(fù)載電阻,負(fù)載電阻的阻值大小有傳感器本身決定。
當(dāng)四個(gè)傳感器接收到各種異常信號(hào)時(shí),如,溫度過(guò)高時(shí),溫度傳感器就接收到信號(hào)了,通過(guò)ADC0809將溫度轉(zhuǎn)換成電壓,送單片機(jī),與設(shè)定的溫度進(jìn)行比較,高于設(shè)定溫度時(shí),給發(fā)光二極管一個(gè)低電平,發(fā)光二極管就亮,顯示報(bào)警。
其他傳感器的調(diào)試也是如此。當(dāng)四個(gè)傳感器都能接收異常信號(hào)時(shí),說(shuō)明傳感器電路是正確的,調(diào)試以后就沒問(wèn)題了。
6.3 軟件程序調(diào)試6.3.1軟件系統(tǒng)設(shè)置
對(duì)于本系統(tǒng)而言,軟件程序所實(shí)現(xiàn)的功能比較少,程序的調(diào)試顯得比較簡(jiǎn)單。整個(gè)程序使用的是匯編語(yǔ)言,在keil c51下編寫調(diào)試完成的。Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)的軟件開發(fā)系統(tǒng),其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。
程序要通過(guò)燒寫器燒寫到芯片里。燒寫的過(guò)程為:假定要寫入的文件是“test.hex”。首先,連接編程器主板到計(jì)算機(jī)并口。然后連接電源。編程器指示燈亮,將89C51插入ZIF插座,鎖緊手柄。(請(qǐng)注意芯片的插入方向:缺口向上,朝扳手方向! 否則會(huì)損壞芯片)然后啟動(dòng)軟件,鼠標(biāo)單擊在右邊的“芯片”下拉框,選擇好芯片類型,這里選“89C51”。在“文件”菜單選擇“打開Hex文件”,找到“test.hex”文件,單擊“打開”。窗口中顯示文件內(nèi)容,右下角顯示校驗(yàn)和。單擊“寫芯片”按鈕,編程器的燒寫指示燈亮,燒寫完畢后報(bào)告結(jié)果,寫入之前會(huì)自動(dòng)擦除芯片內(nèi)容,寫入完畢會(huì)自動(dòng)校驗(yàn)。如果是需要加密,可以選擇加密級(jí)別。到此為止整個(gè)軟件程序調(diào)試環(huán)境就已經(jīng)配好了。
6.3.2單片機(jī)系統(tǒng)軟件調(diào)試
雖然在前面的硬件電路調(diào)試過(guò)程中每個(gè)模塊的調(diào)試已經(jīng)穿插了部分模塊的軟件調(diào)試。但是整體單片機(jī)系統(tǒng)的調(diào)試還是有一定的困難的。例如,在對(duì)A/D轉(zhuǎn)換電路的硬件進(jìn)行測(cè)試時(shí),是分別對(duì)單通道采樣測(cè)試。而整體系統(tǒng)要求的是分時(shí)顯示三個(gè)參數(shù)以及他們的上下限。因?yàn)橐@示的數(shù)據(jù)比較多,所以比較麻煩。剛開始時(shí)由于編程時(shí)沒有設(shè)置好各通道顯示的標(biāo)志位,實(shí)現(xiàn)不了數(shù)碼管分時(shí)顯示的功能。于是從主程序開始檢查,發(fā)現(xiàn)A/D轉(zhuǎn)換子程序所用的標(biāo)志位與主程序?qū)ψ映绦蛘{(diào)用的標(biāo)志位不一致。
6.3.3CAN總線軟件調(diào)試
    在調(diào)試CAN總線的程序時(shí),剛開始是在keil c51下進(jìn)行調(diào)試,編譯老是同不過(guò),后來(lái),改了一些程序后,在CAN總線的發(fā)送程序和接收程序的開頭都加上初始化程序,這樣程序就沒有錯(cuò)了。
6.4 調(diào)試過(guò)程中發(fā)現(xiàn)的問(wèn)題及解決方法
(1)硬件電路的詳細(xì)檢測(cè)問(wèn)題。硬件電路的正確接線是整個(gè)系統(tǒng)能夠工作的最基本的前提。在調(diào)試前,一定要詳細(xì)檢查電路的焊接和接線。杜絕虛焊、短路和斷路等現(xiàn)象。使硬件調(diào)試達(dá)到事半功倍的效果。
在檢查過(guò)程中,由于有幾跟焊線比較細(xì),焊盤比較小,在焊的過(guò)程中,跟其他線接觸到了,引起了短路。在發(fā)現(xiàn)問(wèn)題后,又重新焊了一遍,最后檢查無(wú)誤。
(2)接地問(wèn)題。作者原先就由于沒有處理好接地問(wèn)題而嚴(yán)重影響了調(diào)試的進(jìn)程。地沒有接好,影響了數(shù)據(jù)的正確輸出和顯示。
所有的地線都應(yīng)該接在一起,這樣就不會(huì)引起干擾。
(3)ADC0809通道選擇問(wèn)題。通道選擇不正確,就不能把數(shù)據(jù)采集過(guò)來(lái)。在調(diào)A/D轉(zhuǎn)換的過(guò)程中,開始不能把數(shù)據(jù)采集過(guò)來(lái),通過(guò)檢查發(fā)現(xiàn)通道選擇不對(duì)應(yīng)。重新修改程序,改正通道選擇標(biāo)記,使數(shù)據(jù)得以采集過(guò)來(lái)。
(4)延時(shí)問(wèn)題。本系統(tǒng)為了串口通信的方便采用12M的晶振,延時(shí)要比用6M的晶振時(shí)要長(zhǎng)。如果延時(shí)不夠,有可能使得系統(tǒng)顯示不穩(wěn)定。
(5)鍵盤顯示程序問(wèn)題。在第一次把程序燒入到芯片時(shí),接上5V電源后,發(fā)現(xiàn)什么都沒有,檢查硬件電路,是四個(gè)三極管的E極沒有接上電源。把四個(gè)三極管的E極接上5V電源后,數(shù)碼管有顯示。但是不是原先設(shè)計(jì)的那樣。后來(lái),作者檢查軟件,改了一些程序后,就顯示正確了。
(6)CAN總線通信問(wèn)題。CAN控制器SJA1000的RESET腳是低電平的,AT89C51的RESET是高電平,因此,在連接時(shí)要接一個(gè)非門。作者在設(shè)計(jì)電路的時(shí)候,忽略了這一點(diǎn),接上去以后,就正確了。
6.5 聯(lián)機(jī)調(diào)試
下位機(jī)調(diào)試完成后,就進(jìn)行聯(lián)機(jī)調(diào)試。
聯(lián)機(jī)調(diào)試所需要的設(shè)備:
直流穩(wěn)壓電源兩臺(tái);
單機(jī)兩件;
排線若干;
聯(lián)機(jī)調(diào)試是本系統(tǒng)比較關(guān)鍵的部分。在整個(gè)聯(lián)機(jī)調(diào)試過(guò)程中也遇到了不少問(wèn)題。例如,沒注意將程序與上位機(jī)的接收程序相聯(lián)系,導(dǎo)致數(shù)據(jù)不能通過(guò)CAN總線傳給上位機(jī)。
在進(jìn)行聯(lián)機(jī)調(diào)試時(shí),把所有的程序結(jié)合起來(lái),燒到芯片上。在進(jìn)行編譯時(shí),有一些程序不能匹配,作者就另外修改了一些程序,這樣編譯就通過(guò)了。在本系統(tǒng)中,作者所設(shè)計(jì)的鍵盤用來(lái)顯示小區(qū)住戶的門牌房間號(hào),在單獨(dú)調(diào)試鍵盤時(shí),鍵盤顯示正常。但是,聯(lián)機(jī)調(diào)試時(shí),發(fā)現(xiàn)鍵盤顯示不正常,確定硬件電路沒問(wèn)題時(shí),作者就看程序,發(fā)現(xiàn)鍵盤的程序里,存儲(chǔ)器跟ADC0809的存儲(chǔ)器用了同一個(gè)。發(fā)現(xiàn)問(wèn)題后,作者就另外設(shè)了一個(gè)變量,用來(lái)存儲(chǔ)鍵盤的變量。重新編譯后,燒到芯片里,上電后,就顯示正常了。
7  系統(tǒng)使用說(shuō)明
本系統(tǒng)使用起來(lái)非常方便,下面作者就系統(tǒng)的使用方法作一個(gè)簡(jiǎn)單的介紹。首先
小區(qū)的使用用戶將各個(gè)傳感器接在自家的合適位置,例如,將煤氣報(bào)警傳感器接在廚
房,將溫度傳感器和煙霧傳感器接在客廳,將紅外傳感器接在門口。然后接上電源就能工作了。
當(dāng)有報(bào)警時(shí),小區(qū)控制中心的報(bào)警燈就會(huì)亮。例如當(dāng)溫度傳感器檢測(cè)到室內(nèi)溫度過(guò)高時(shí),就會(huì)將這個(gè)異常信號(hào)由ADC0809采集,送單片機(jī)處理,此時(shí),與溫度傳感器相對(duì)應(yīng)的發(fā)光二極管就會(huì)亮。其他情況也是如此。
當(dāng)有報(bào)警信號(hào)時(shí),小區(qū)的住戶可以按下裝在家里的按鍵,按下自己家里的房間號(hào),這樣,房間號(hào)就會(huì)顯示在小區(qū)控制中心,小區(qū)控制中心就可以知道發(fā)生的具體情況和具體房間號(hào)。
本裝置使用起來(lái)簡(jiǎn)單易學(xué),而且功能比較強(qiáng)大。
8  結(jié)論
本文設(shè)計(jì)和實(shí)現(xiàn)了一種基于單片機(jī)AT89C51的小區(qū)安防報(bào)警系統(tǒng)。該系統(tǒng)主要以方便、廉價(jià)、可靠和實(shí)用等為目的,主要以小區(qū)各個(gè)住戶為主要對(duì)象,采用了ADC0809數(shù)據(jù)采集,利用AT89C51作為控制器,通過(guò)簡(jiǎn)易鍵盤設(shè)置報(bào)警上限,共陽(yáng)極四位數(shù)碼顯示,由二極管發(fā)光進(jìn)行報(bào)警。同時(shí),此系統(tǒng)與另外一個(gè)同學(xué)的小區(qū)網(wǎng)站組合成一個(gè)完整的系統(tǒng),能在小區(qū)網(wǎng)站上實(shí)現(xiàn)安防實(shí)時(shí)監(jiān)控。
本文的重點(diǎn)是ADC0809的四路模擬電壓采集以及單片機(jī)鍵盤顯示最小系統(tǒng)。在實(shí)際的實(shí)現(xiàn)過(guò)程中,遵循從易到難,從硬件到軟件的過(guò)程。首先理解設(shè)計(jì)任務(wù)以及系統(tǒng)要求實(shí)現(xiàn)的功能,有針對(duì)性地查閱相關(guān)的資料,熟悉所需芯片以及元器件的工作原理,再著手設(shè)計(jì)硬件電路并根據(jù)硬件電路的設(shè)計(jì)特點(diǎn),有步驟地對(duì)硬件電路進(jìn)行分模塊調(diào)試。
本系統(tǒng)有四個(gè)傳感器來(lái)監(jiān)測(cè)家庭異常情況,如有異常情況發(fā)生時(shí),傳感器就將檢測(cè)到的信號(hào)經(jīng)過(guò)ADC0809采集后,送到AT89C51進(jìn)行處理,同時(shí),報(bào)警燈亮,顯示報(bào)警。在此系統(tǒng)中,鍵盤用來(lái)設(shè)置小區(qū)家庭報(bào)警的門牌房間號(hào),數(shù)碼管用來(lái)顯示。
由于本人的知識(shí)和能力有限,對(duì)其中的某些問(wèn)題,如對(duì)本系統(tǒng)對(duì)講的保密性等,未能進(jìn)行深入分析研究,此系統(tǒng)也只達(dá)到了一部分的實(shí)際效果。
文中定有許多不足之處,敬請(qǐng)各位老師和讀者不吝賜教。
謝  辭
揮手間四年已逝,回首近四年的學(xué)習(xí)生活,其間有失落也有收獲,有艱辛也有快樂(lè),有迷茫也有方向。在桂林電子科技大學(xué)這最美好、最寶貴的四年學(xué)習(xí)生活中,我由一個(gè)當(dāng)初少不更事的孩子成長(zhǎng)為一個(gè)對(duì)社會(huì)、對(duì)人生充滿自信的青年。在這里需要感謝的有很多。
真心地感謝各位老師四年來(lái)的傳道、授業(yè)和解惑,給了我人生一筆永恒的財(cái)富。
本次畢業(yè)設(shè)計(jì),是大學(xué)生涯結(jié)束最后一堂結(jié)業(yè)課,有幸龍超老師作為指導(dǎo)老師,整個(gè)做畢業(yè)設(shè)計(jì)階段,由于平時(shí)多理論,少實(shí)踐的學(xué)習(xí),導(dǎo)致做畢業(yè)設(shè)計(jì)過(guò)程中,常常遇到這樣那樣的問(wèn)題,當(dāng)然除了自己看書,查資料解決問(wèn)題外,也常常求助龍老師,龍老師在幫助學(xué)生解決問(wèn)題的過(guò)程中,態(tài)度親和,并且循循善誘的提示去啟發(fā)學(xué)生自己思考,老師“授之于魚不若授之于漁”的良苦用心學(xué)生體會(huì)很深,故一直心存感激。
感謝畢業(yè)設(shè)計(jì)過(guò)程中所有給我真誠(chéng)幫助的老師和同學(xué)們。
最后感謝我的母校桂林電子科技大學(xué),給我提供學(xué)習(xí)和生活的空間,真心地希望它的明天更加美好!
參考文獻(xiàn)
[1] 尹建華 張惠群 劉魯源 劉迎澍編著.微型計(jì)算機(jī)原理與接口技術(shù)[M].北京:高等教育出版社,2002.
[2] 范逸之編著.Visual Basic與RS-232串行通信控制[M].北京:中國(guó)青年出版社, 2002.
[3] 江思敏編著.Protel電路設(shè)計(jì)教程[M].北京:清華出版社,2002.
[4] 余海生等編著.微型計(jì)算機(jī)控制技術(shù)[M].北京:清華大學(xué)出版社,2003.
[5] 靳達(dá)編著.單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,
2003.
[6] 謝自美編著.電子線路設(shè)計(jì).實(shí)驗(yàn).測(cè)試[M].武漢:華中科技大學(xué)出版社,2000.
[7] 閆玉德 俞虹編著.MCS-51系列單片機(jī)原理與應(yīng)用(C語(yǔ)言版)[M].北京:
北京機(jī)械工業(yè)出版社,2002.
[8] 李朝青編著.PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù)[M].北京:北京航空航天大學(xué)出版社, 2000.
[9] 張?jiān)鰪?qiáng)等編著.突破Delphi 7.0 編程百例[M].北京:中國(guó)水利水電出版社 ,2003.
[10] 石東海編著.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)從入門到精通[M].西安:西安電子科技大學(xué)出版社, 2002.
[11] 崔建華 郭瑞軍編著.Delphi串口通信工程開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵
電出版社,2004.
[12] 李學(xué)海編著.EM78單片機(jī)實(shí)用教程—基礎(chǔ)篇[M].北京:電子工業(yè)出版社,2003.
[13] M . Herry. Analog Integrate Circuits WILEY.2001.
附  錄
附錄一  系統(tǒng)原理圖
附錄二     系統(tǒng)PCB圖


完整的Word格式文檔51黑下載地址:
智能小區(qū)安防系統(tǒng)畢業(yè)設(shè)計(jì)論文.doc (347 KB, 下載次數(shù): 43)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-4-5 04:03 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲九色 | 国产精品免费看 | 97超碰在线播放 | 91精品一区二区三区久久久久久 | 国产精品久久久久久久久久久久 | 超碰人人91 | 午夜www | 亚洲精品成人 | 午夜大片| 99热在这里只有精品 | 国产日韩一区二区三免费高清 | 欧美日韩在线成人 | 中文亚洲视频 | 天天躁日日躁狠狠很躁 | 超碰在线人人干 | 久久久久国产精品一区二区 | 欧美一区成人 | 亚州视频在线 | 日日干日日色 | 亚洲第一在线视频 | 韩日免费视频 | 成人午夜在线 | 日韩伦理电影免费在线观看 | 国产精品精品久久久 | 天天干夜夜操 | 精品1区2区3区4区 | 欧美在线观看一区 | aaa在线 | 国产精品久久久久久妇女 | 日本成人中文字幕在线观看 | 国产欧美一区二区三区免费 | 亚洲欧美日韩一区二区 | 91精品国产色综合久久不卡98 | 超碰在线人人 | 久久精品亚洲一区二区三区浴池 | 一级做a爰片性色毛片16美国 | 欧美在线视频二区 | 精品欧美一区二区在线观看视频 | 欧美二区三区 | 欧美成人精品一区二区男人看 | 国产精品久久久av |