【《基于AT89C51單片機(jī)的智能圖書館座位管理系統(tǒng)設(shè)計》17000字(論文)】_第1頁
【《基于AT89C51單片機(jī)的智能圖書館座位管理系統(tǒng)設(shè)計》17000字(論文)】_第2頁
【《基于AT89C51單片機(jī)的智能圖書館座位管理系統(tǒng)設(shè)計》17000字(論文)】_第3頁
【《基于AT89C51單片機(jī)的智能圖書館座位管理系統(tǒng)設(shè)計》17000字(論文)】_第4頁
【《基于AT89C51單片機(jī)的智能圖書館座位管理系統(tǒng)設(shè)計》17000字(論文)】_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于AT89C51單片機(jī)的智能圖書館座位管理系統(tǒng)設(shè)計目錄第一章緒論1第二章系統(tǒng)總體功能、結(jié)構(gòu)及硬件設(shè)計2第一節(jié)系統(tǒng)總體功能設(shè)計以及系統(tǒng)結(jié)構(gòu)2第二節(jié)AT89C51單片機(jī)及其最小系統(tǒng)5第三節(jié)紅外線傳感器及其選擇方案7第四節(jié)壓力傳感器及其選擇方案11第五節(jié)密碼鍵盤及其選擇方案16第六節(jié)顯示器及其選擇方案19第七節(jié)單片機(jī)與其它模塊的連接23第八節(jié)用戶界面(端)、小保險箱24第九節(jié)前端界面25第十節(jié)矩陣密碼鍵盤27第十一節(jié)電子鐘模塊28第十二節(jié)電源模塊35第三章開發(fā)軟件及軟件設(shè)計36第一節(jié)開發(fā)軟件簡介36第二節(jié)整體程序思想概述36第三節(jié)計時計數(shù)部分以及倒計時原理36第四節(jié)預(yù)約選座部分38第五節(jié)預(yù)約處理部分39第六節(jié)座位被占時(非預(yù)約情況)處理部分41第七節(jié)清空處理部分43第八節(jié)鍵盤掃描函數(shù)45第九節(jié)密碼臨時保存函數(shù)48第四章系統(tǒng)的調(diào)試51第五章總結(jié)與展望53結(jié)論54參考文獻(xiàn)55緒論在高校中,圖書館是高校生學(xué)習(xí)、查閱文獻(xiàn)的重要場所。然而,圖書館的各種資源有限,特別是其中的座位資源。近些年來,各大高校的圖書館都在不斷擴(kuò)建提升,但是與此同時,各大高校自身又在不斷擴(kuò)招。所以圖書館中的座位資源盡管看似很豐富,但仍遠(yuǎn)遠(yuǎn)滿足不了高校中眾多學(xué)生的需求,座位需求和座位資源存在明顯的供給不平衡。因此,由座位資源緊張引發(fā)的種種不良現(xiàn)象經(jīng)常發(fā)生。這些不良現(xiàn)象嚴(yán)重影響到圖書館座位的使用效率,使得圖書館的座位得不到充分利用,進(jìn)而造成學(xué)校圖書館的資源浪費(fèi)。在座位使用的不良現(xiàn)象中,非常常見且明顯的是占座這種現(xiàn)象。就以占座這種現(xiàn)象為例,很多學(xué)生常常以上廁所、接電話為由長時間占用座位而不使用,這樣就會使圖書館座位造成很大的浪費(fèi),讓真正需要座位的學(xué)生沒有可使用的座位。一般地來說,圖書館的學(xué)習(xí)氛圍、學(xué)習(xí)條件要優(yōu)于宿舍等場所。學(xué)生在圖書館若不能得到座位,他們就會不得不到學(xué)習(xí)氛圍、學(xué)習(xí)環(huán)境不如圖書館的地方去學(xué)習(xí)。這樣一來,學(xué)生的學(xué)習(xí)效率、學(xué)習(xí)質(zhì)量就會有所下降,甚至?xí)绊憣W(xué)校的學(xué)風(fēng)、學(xué)生對于學(xué)校的自信心。合理、有效管理圖書館內(nèi)座位資源,遏制座位資源的不良使用現(xiàn)象至關(guān)重要,管理圖書館座位的方法,理論上存在很多種。不少高校都嘗試過優(yōu)化圖書館內(nèi)座位管理的方法。這些高校很多時候采取的方式是通過人工巡查的辦法來解決問題,但往往收不到理想的效果。人工管理座位,需要高度依賴學(xué)生的自覺性,還會增加學(xué)生與學(xué)生、學(xué)生與管理員之間的爭吵與糾紛,給學(xué)校和學(xué)生帶來諸多負(fù)面效應(yīng)。相對于人工方法,智能化、信息化的圖書館座位管理方法具有一定的優(yōu)勢。其他的管理系統(tǒng)也往往向智能化、信息化的方向發(fā)展。例如,在新冠肺炎疫情防控管理系統(tǒng)中,我們可以利用單片機(jī)系統(tǒng)、傳感器技術(shù)、模-數(shù)轉(zhuǎn)換技術(shù)來實(shí)現(xiàn)對人員體溫的無人化、自動化的高效測量;還可以利用數(shù)字圖像處理技術(shù)來實(shí)現(xiàn)對人員口罩佩戴情況的自動化智能檢查。我們值得嘗試對包括圖書館座位管理系統(tǒng)在內(nèi)系統(tǒng)信息化改進(jìn)?,F(xiàn)已有部分高校圖書館采用了依托信息技術(shù)管理圖書館座位資源的方法。如依托硬件技術(shù)的有東南大學(xué)圖書館。東南大學(xué)圖書館采用了紅外線接近技術(shù)來檢測座位的占用情況。如利用軟件技術(shù)的,通過VB、Flash、ASP、C等軟件技術(shù)實(shí)現(xiàn)座位資源管理,例如溫州醫(yī)科大學(xué)自主研發(fā)的圖書館自習(xí)室管理系統(tǒng),清華大學(xué)自主開發(fā)的智能座位管理系統(tǒng)等[1]。系統(tǒng)總體功能、結(jié)構(gòu)及硬件設(shè)計系統(tǒng)總體功能設(shè)計以及系統(tǒng)結(jié)構(gòu)本系統(tǒng)的硬件部分可分為選座端和座位端。其中選座端包括選座鍵盤、電子鐘、空/占座顯示燈組、座位號顯示器。選座端的空/占座顯示燈組用于顯示當(dāng)前圖書館座位的占用情況;系統(tǒng)還配有一個電子鐘,就像一般的數(shù)字電路結(jié)構(gòu)的鐘表一樣,用于顯示時間。座位端包括紅外線傳感器、壓力傳感器、鍵盤(包括密碼輸入鍵盤和密碼更改鍵盤)、強(qiáng)制免密鍵和一個光警報系統(tǒng),其中的強(qiáng)制免密鍵和部分鍵盤平時封裝在一個小保險箱中,當(dāng)密碼鍵盤出現(xiàn)故障時,管理員可以用鑰匙打開小保險箱,按下強(qiáng)制免密鍵解鎖座位。管理員在管理員模式下,還可以直接通過密碼更改鍵來逐個更改各座位的密碼。選座端和若干個(本實(shí)驗(yàn)系統(tǒng)中為3個)座位端共用一個單片機(jī),兩端也都配有電源模塊來供電。本系統(tǒng)的軟件流程基本上為:對于座位端,在壓力傳感器檢測到信號時,若座位只是暫時無用戶使用(用戶暫時離開)或是座位被預(yù)約,系統(tǒng)會發(fā)出光警報,這時用戶通過鍵盤輸入密碼才能使用該座位;若沒有此情況則開始倒計時t0(實(shí)驗(yàn)系統(tǒng)中默認(rèn)t0=30s),當(dāng)用戶暫時離開時,系統(tǒng)記下從剛開始使用座位到暫時離開時經(jīng)過的時間t1,這時座位上的壓力傳感器沒有信號,而紅外傳感器接收到信號,此時開始計時,若用戶未在規(guī)定的時間t2(實(shí)驗(yàn)系統(tǒng)中默認(rèn)t2=10s)內(nèi)回到座位,此座位則視為空座,可被其他用戶使用;若用戶在規(guī)定的時間內(nèi)回到了座位上,開始倒計時t4(t4=t0-t1)。當(dāng)時間t4已到,系統(tǒng)發(fā)出光警報,此座位視為空座,可被其他用戶使用。對于選座端,用戶可以利用選座鍵(盤)來選擇自己想要預(yù)約的座位,然后該座位被鎖定,用戶需使用該座位對應(yīng)的密碼來解鎖座位。系統(tǒng)的結(jié)構(gòu)框圖見圖2-1,座位使用時人與系統(tǒng)互動基本流程圖見圖2-2,選座步驟基本流程見圖2-3。單片單片機(jī)模塊電子鐘空/占座顯示燈組選座鍵(盤)空/占座顯示燈組選座鍵(盤)座位指示顯示器座位指示顯示器選座端選座端傳感器模塊座位端紅外線傳感器傳感器模塊座位端紅外線傳感器警報(指示燈)系統(tǒng)壓力傳感器警報(指示燈)系統(tǒng)壓力傳感器小保險箱小保險箱密碼鍵盤密碼鍵盤強(qiáng)制免密鍵強(qiáng)制免密鍵電源模塊電源模塊圖2-1系統(tǒng)結(jié)構(gòu)框圖系統(tǒng)的壓力傳感器檢測到信號系統(tǒng)的壓力傳感器檢測到信號座位被預(yù)約/人暫時離開?輸入密碼/管理員強(qiáng)制免密系統(tǒng)開始計時人暫時離開?繼續(xù)使用前輸入密碼/管理員強(qiáng)制免密系統(tǒng)開始計時時間到,人離開座位是是否否是是 否否圖2-2座位使用人與系統(tǒng)互動基本流程圖選擇座位選擇座位鎖定選擇的座位輸入密碼解鎖座位圖2-3選座步驟基本流程圖第二節(jié)AT89C51單片機(jī)及其最小系統(tǒng)AT89C51單片機(jī)本系統(tǒng)是以AT89C51單片機(jī)作為控制核心部件的。單片機(jī)有很多種類型。其中的AT89C51比較實(shí)用,市場供應(yīng)充足,相關(guān)開發(fā)技術(shù)也比較成熟,編程簡單,可支持C語言編程,因此本系統(tǒng)采用AT89C51單片機(jī)。AT89C51單片機(jī)的最小系統(tǒng)最小系統(tǒng)的基本概念單片機(jī)最小系統(tǒng),是指用最少的原件組成的可以工作的系統(tǒng)。AT89C51的最小應(yīng)用系統(tǒng)一般應(yīng)包括:電源、單片機(jī)、時鐘電路、復(fù)位電路[2]。Proteus(一種硬件開發(fā)工具,可用于51系列單片機(jī)的軟硬件開發(fā),詳見第三章)上的最小系統(tǒng)電路圖如圖2-4所示。接復(fù)位電路接RST引腳接復(fù)位電路接RST引腳圖2-4AT89C51的Proteus最小系統(tǒng)電路圖(二)AT89C51的時鐘電路CPU的工作都是在一個統(tǒng)一的時鐘脈沖下進(jìn)行的,時鐘電路用來產(chǎn)生時鐘脈沖信號,因此缺少了時鐘電路,單片機(jī)就無法工作[2]。圖2-5是Proteus上的可用于AT89C51的時鐘電路圖。圖2-5AT89C51的Proteus時鐘電路圖(三)AT89C51的復(fù)位電路復(fù)位電路的作用是在按下復(fù)位鍵時,讓電路回到初始的狀態(tài)。根據(jù)單片機(jī)系統(tǒng)實(shí)際情況,如晶振頻率等因素,合理選擇電阻和電容(的值)就能實(shí)現(xiàn)上電復(fù)位。圖2-6是Proteus上的AT89C51復(fù)位電路圖。圖2-6AT89C51的Proteus復(fù)位電路圖第三節(jié)紅外線傳感器及其選擇方案紅外線傳感器在本系統(tǒng)中主要用于檢測座位的桌面上的占位物存在情況。當(dāng)占位物存在但座位未被使用時,系統(tǒng)會將這種情況判定為用戶臨時離開。市面上常見的紅外線傳感器,主要分為反射式、對射式兩種。反射式紅外線傳感器反射式的紅外線傳感器(下文中簡稱“反射式傳感器”),市面上多售賣的主要是ST188型、ST178型、ST150型等。它們的外觀、工作原理基本上相似。下面以ST188型為例。ST188型紅外線傳感器的外觀如圖2-7所示。圖2-7ST188型紅外傳感器的外觀ST188由紅外發(fā)射二極管和接收管組成。紅外發(fā)射管的外形尺寸示意圖、內(nèi)部電路圖如圖2-8所示。圖2-8ST188紅外線傳感器外觀尺寸示意圖和內(nèi)部電路簡圖上圖中的A、K是紅外發(fā)射二極管的正負(fù)極。紅外發(fā)射二極管可以像普通發(fā)光二極管發(fā)出可見光那樣發(fā)出紅外線。如由紅外發(fā)射二極管發(fā)出的紅外線經(jīng)物體反射到接收管,從而使接收管的特性發(fā)生改變,進(jìn)而改變接收管的導(dǎo)通性,向單片機(jī)輸出高電平或低電平信號。發(fā)射二極管的A極接高電平、K極接低電平,接收管的C極接高電平,E極接低電平,再把傳感器接入如圖2-9所示的電路,方可使傳感器工作。圖2-9ST188紅外線傳感器內(nèi)部及外設(shè)電路圖根據(jù)反射式傳感器的原理及其內(nèi)部電路結(jié)構(gòu),我們可以設(shè)計形如上面的電路,電阻主要起限流作用,電阻值常設(shè)為:R1=510Ω,R2=20kΩ。這樣,如果接收管收到反射回來的紅外線,紅外接收管ce導(dǎo)通,e會輸出高電平信號;如果沒有收到反射回來的紅外線,紅外接收管ce就不導(dǎo)通,e管腳輸出低電平信號。對于對射式傳感器而言,比較理想的情況是遮擋物顏色較深。在這種理想情況下,發(fā)射管發(fā)出的紅外線在有遮擋物的條件下,會被遮擋物吸收,接收管就接收不到反射回來的紅外線,之后接收管輸出低電平信號;在沒有遮擋物的條件下,紅外線不會被遮擋物吸收,接收管就能接收到反射回來的紅外線,之后接收管輸出高電平信號。利用這一點(diǎn),我們可以選擇合適的距離(如10mm),再結(jié)合上面的應(yīng)用電路,這樣就可以通過檢測e管腳的高低電平信號來確定傳感器上方是否遮光,從而達(dá)到判斷的目的。紅外線接收管ce能輸出高/低電平信號。它的e管腳可由紅外線的照射狀況,輸出高/低電平信號,這個e管腳也是傳感器的e腳,所以紅外線傳感器的e管腳應(yīng)與單片機(jī)的I/O口相連。ST188的檢測距離為4-13mm。二、對射式紅外線傳感器市面上銷售的對射式紅外線傳感器(下文中簡稱“對射式傳感器”),大部分屬KB874這一種型號,有少數(shù)屬KB875、KB876這兩種型號。對射式傳感器是一種對射式光電開關(guān)對射式,其各自種類的外觀、基本原理、內(nèi)部構(gòu)造大體上相似,不同種類的對射式傳感器的區(qū)別主要在于引線長度和有效距離這兩個方面上。這類傳感器的引線長度主要有30cm和50cm兩種,有效距離主要集中在30cm~200cm,引線長度和有效距離因傳感器的款式而異。同一款對射式傳感器,有效距離也可能會有浮動。有效距離主要有30cm、50cm、10~200cm這三種。對射式傳感器的外觀圖如圖2-10所示,其外部結(jié)構(gòu)、尺寸、管腳圖如圖2-11所示。圖2-10對射式紅外線傳感器的外觀圖圖2-11對射式紅外線傳感器的內(nèi)部電路圖和外部結(jié)構(gòu)、尺寸、管腳圖由圖2-11可見,對射式傳感器具有發(fā)射端、接收端這兩部分。發(fā)射端發(fā)出紅外線,若接收端接收到了來自于發(fā)射端的紅外線,接收端的管腳2(OUT管腳)就會輸出高電平信號,否則就輸出低電平信號。我們應(yīng)將接收端的管腳2和單片機(jī)I/O口連接。要使用傳感器,一定要按圖2-11所示的管腳圖來連接電路,否則傳感器無法正常工作,甚至?xí)龎膫鞲衅鳌H?、選擇方案反射式傳感器,如上文中所述的理想狀態(tài),若有物體遮擋傳感器,接收管不會接收到反射回來的紅外線信號,接收管輸出低電平信號。但若遮擋物(下文中結(jié)合使用場合,稱為“占座物”)為白色或是顏色過淺,發(fā)射的紅外線可能不會被占座物表面吸收,接收管仍會收到由占座物反射的紅外線,“誤以為”沒有占座物存在,就會輸出高電平,即無占座物時的信號。這時,傳感器就相當(dāng)于失效。另外,反射式傳感器的有效距離僅為4-13mm,這就導(dǎo)致了似乎沒有能使傳感器直接正確反饋占座物的存在情況的擺放方式。用戶只有將黑色的遮光板放在傳感器上,才能實(shí)現(xiàn)臨時占座的目的。對射式傳感器,若有占座物在傳感器的發(fā)射端和接收端之間,就會遮擋住有發(fā)射端發(fā)出的紅外線,接收端也就接收不到發(fā)射的紅外線,進(jìn)而輸出低電平信號,顯示接收管被遮擋,座位被臨時占用。反之則輸出高電平信號,表示無物體遮擋。桌面上沒有占座物,則座位沒有被臨時占用。傳感器對占座物的反饋情況不太會受占座物的顏色影響,占座物不透明即可。而且,對射式傳感器的有效距離通常也有幾十厘米,遠(yuǎn)大于反射式傳感器的4-13mm,這一點(diǎn)使得對射式的更有可用性。綜上所述,對射式紅外線傳感器的有效性、可用性要大于反射式的,所以選擇對射式的。另外,選擇有效距離穩(wěn)定的引線長度為30cm、有效距離為50cm的對射式傳感器。第四節(jié)壓力傳感器及其選擇方案壓力傳感器在本系統(tǒng)中用于檢測座位的占用情況。壓力傳感器,有GML692人體秤50kg體重傳感器、FSR402電阻式薄膜壓力傳感器等可供選擇。GML692人體秤50kg體重傳感器惠斯通電橋很多壓力傳感器的連接都利用的是惠斯通電橋的形式,如圖2-12所示,惠斯通電橋可以使微小的電阻變化值放大。圖2-12惠斯通電橋結(jié)構(gòu)圖應(yīng)變片及其工作原理要用到的稱重傳感器含有應(yīng)變片,當(dāng)傳感器受到外力時,傳感器上的應(yīng)變片阻值發(fā)生變化,繼而使惠斯通電橋的阻值發(fā)生變化。應(yīng)變片原理框圖見圖2-13[3]。圖2-13應(yīng)變片工作原理框圖GML692人體秤50kg體重傳感器GML692人體秤50kg體重傳感器的內(nèi)部為1000Ω半橋應(yīng)變片。其外觀如圖2-14所示。圖2-14GML692人體秤50kg體重傳感器的外觀傳感器中間貼有應(yīng)變片的、有白色覆膠的梁臂是其應(yīng)變梁部分。測量使用時,秤的外側(cè)邊應(yīng)正確施加外力,傳感器的應(yīng)變梁部分與外側(cè)邊形成一個方向相反的剪切力。應(yīng)變梁受力面另一側(cè)不可有阻擋物,中間的應(yīng)變梁在受力下必須可以發(fā)生彎曲變化。HX711模塊該傳感器還需連接稱重傳感器A/D轉(zhuǎn)換模塊HX711,再連入單片機(jī)。HX711模塊的外觀圖如圖2-15所示。圖2-15HX711模塊的外觀示意圖HX711是一種24位高精度的A/D轉(zhuǎn)換器芯片。HX711模塊的基本電路圖(含與單片機(jī)的連接)如圖2-16所示。圖2-16HX711模塊的基本電路圖(含與單片機(jī)的連接)由圖2-16不難發(fā)現(xiàn),HX711模塊一般需要將其DOUT與PD_SCK這兩個腳與單片機(jī)I/O端口相連,以實(shí)現(xiàn)該模塊與單片機(jī)之間信息的互相傳送。(五)傳感器、A/D轉(zhuǎn)換模塊(HX711模塊)、單片機(jī)之間的連接首先,將4只GML692傳感器如圖2-17所示,連接成惠斯通電橋。圖2-17GML692傳感器連接圖由圖2-17不難發(fā)現(xiàn),每只傳感器在連接成惠斯通電橋后,都會留出一根紅色的引線。接下來根據(jù)圖2-18來將這個惠斯通電橋連接到HX711模塊上。圖2-18傳感器惠斯通電橋與HX711模塊的連接圖最后,根據(jù)圖2-16,將HX711模塊上的數(shù)據(jù)線、時鐘線連接到單片機(jī)的I/O口,地線、電源線分別接地、接5V電源。(六)載入HX711模塊的驅(qū)動程序?qū)Ⅱ?qū)動部分程序(該部分參考程序代碼見附錄)加入程序總體,程序中需要進(jìn)行傳感器數(shù)據(jù)A/D轉(zhuǎn)換時,調(diào)用ReadAD函數(shù),載入由A/D轉(zhuǎn)換模塊得到的數(shù)字量。電阻式薄膜壓力傳感器市面上所售的電阻式薄膜傳感器,多屬FSR402、RFP602等型號,使用的場合彼此之間也略有不同。下面就以FSR402為例。FSR402的外觀及其尺寸參數(shù)如圖2-19所示。abab圖2-19FSR402的外觀及其尺寸參數(shù)FSR402能將施加在FSR傳感器薄膜區(qū)域所受壓力的變化轉(zhuǎn)換成電阻值的變化,進(jìn)而獲得壓力信息。壓力越大,電阻越低。FSR402適用于0g~10kg壓力(約合以力學(xué)單位計0~98N壓力)的場合。FSR402的壓力-電阻特性曲線如圖2-20所示,圖中橫軸表示傳感器所受壓力相對大小,縱軸表示傳感器電阻相對大小。圖2-20FSR402電阻式薄膜壓力傳感器壓力-電阻特性曲線[4]像體重秤應(yīng)變片壓力傳感器一樣,電阻式薄膜壓力傳感器也需要A/D轉(zhuǎn)換器,把電阻阻值變化產(chǎn)生的模擬信號轉(zhuǎn)換為數(shù)字信號。這時,我們不妨使用RFP薄膜式壓力傳感器專用電阻-電壓轉(zhuǎn)換模塊(下文中簡稱“RFP轉(zhuǎn)換模塊”)。RFP轉(zhuǎn)換模塊的外觀如圖2-21所示。圖2-21RFP薄膜式壓力傳感器專用電阻-電壓轉(zhuǎn)換模塊及其結(jié)構(gòu)在該模塊的一側(cè)有引腳GND、VCC,它們分別接地、5V電源。DO引腳為高低電平信號輸出接口,接單片機(jī)的I/O接口。圖2-21中的薄膜式傳感器的b腳接轉(zhuǎn)換模塊的“+”腳,a腳接轉(zhuǎn)換模塊的“-”腳。RFP轉(zhuǎn)換模塊兼容FSR402,其供電電源為3.3-5V,輸出電壓范圍為0-5V。當(dāng)傳感器受到足夠大的壓力時,DO腳輸出低電平,否則就輸出高電平。鑒于FSR402的最大適用壓力約為98N,而一般成年人的體重要大于98N(10kg),在應(yīng)用于檢測座位被占用的情況時,不妨將傳感器嵌入海綿坐墊等能夠緩沖壓力的材料中,以使傳感器受到的壓力處于合適的值。FSR402的傳感器部分直徑為12.7mm,總體寬度為19mm,則得出傳感器適用的最大平均壓強(qiáng)約在345kPa(以總體寬度計算)~773kPa(以傳感器部分直徑計算)之間。2020年西安科技大學(xué)的有關(guān)研究結(jié)果[5]表明,平均身高和體重分別為171.6cm和57.4kg的人對座椅最大壓強(qiáng)約為55kPa,小于FSR402以總體寬度計的最大使用壓強(qiáng)345kPa。FSR402對于壓力的檢測不是很準(zhǔn)確,故不建議使用需要測量壓力的場合。選擇方案GML692人體秤50kg傳感器需要連接HX711A/D轉(zhuǎn)換模塊,HX711模塊通常用于高精度電子秤,敏感度較高,HX711模塊的驅(qū)動程序中也含有循環(huán)結(jié)構(gòu),在使用過程中,人體對于座椅的壓力會因使用過程中的坐姿的變化而變化[5],這可能會使HX711不間斷地進(jìn)行A/D轉(zhuǎn)換。應(yīng)用HX711模塊、惠斯通電橋應(yīng)變片與一個單片機(jī)的組合的電子產(chǎn)品并不少見,如智能晾衣架、智能寵物喂食系統(tǒng)、電子秤等,但是這些產(chǎn)品中一般一個單片機(jī)只對應(yīng)一個HX711模塊。系統(tǒng)中像這樣的座位有3個,這會使系統(tǒng)具有微控制器資源被過度占用,進(jìn)而導(dǎo)致系統(tǒng)的其他程序無法正常執(zhí)行,乃至系統(tǒng)整體出現(xiàn)故障的風(fēng)險。使用這種傳感器也增加了編程的復(fù)雜度和難度,這一點(diǎn)也進(jìn)一步增加了系統(tǒng)出現(xiàn)故障的風(fēng)險。FSR402可以只向單片機(jī)輸出高/低電平信號,單片機(jī)可以直接識別,不需要很多額外的軟件資源對信號進(jìn)行處理?;诖颂攸c(diǎn),其A/D轉(zhuǎn)換模塊也只需與單片機(jī)的1只引腳連接,與GML692需連接2只引腳相比,在引腳緊張的情況下更能節(jié)約引腳。綜上所述,最終選用FSR402傳感器。第五節(jié)密碼鍵盤及其選擇方案密碼鍵盤在系統(tǒng)中用于輸入、修改密碼。密碼鍵盤的選擇,也具有兩種方案。4×4矩陣鍵盤4×4矩陣鍵盤的外觀如圖2-22所示。圖2-224×4矩陣鍵盤這種鍵盤的8個腳要和單片機(jī)的8個引腳分別連接,適用于需要多個鍵的情景。需要編寫特別的函數(shù)程序,才能運(yùn)用到系統(tǒng)中,但是其兼容性良好。二、數(shù)字邏輯門電路結(jié)構(gòu)的密碼鎖這種數(shù)字密碼鎖是由邏輯門電路配合電阻、開關(guān)組成的。根據(jù)Proteus上的仿真結(jié)果驗(yàn)證,在理論上可以實(shí)現(xiàn)。該密碼鎖電路結(jié)構(gòu)如圖2-23所示。更清楚的電路結(jié)構(gòu)圖詳見附錄(三)。圖2-23數(shù)字電子電路密碼鎖整體結(jié)構(gòu)開關(guān)開關(guān)開關(guān)非門→開關(guān)三級與門GND→電阻+VCC單碼決定區(qū)單碼電路單位圖2-24碼電路單位結(jié)構(gòu)框圖上圖(圖2-23)的電路結(jié)構(gòu),我們在這里叫做“單碼電路單位”。圖2-23中的電路結(jié)構(gòu),可視為由8個如圖2-24中所示的單碼電路單位組成。然后8個單碼電路單位由下圖(圖2-25)的結(jié)構(gòu)組成數(shù)字電子電路結(jié)構(gòu)的密碼鎖。2個單碼電路單位2個單碼電路單位2個單碼電路單位2個單碼電路單位2個單碼電路單位2個單碼電路單位2個單碼電路單位三級與門三級與門三級與門三級與門二級與門二級與門一級與門圖2-25總體結(jié)構(gòu)然后將圖2-25中的總體電路結(jié)構(gòu)與強(qiáng)制免密鍵接入一個或門,具體結(jié)構(gòu)框架如圖2-26所示??傮w電路結(jié)構(gòu)總體電路結(jié)構(gòu)或門單片機(jī)I/O或門單片機(jī)I/O口強(qiáng)制免密鍵強(qiáng)制免密鍵開關(guān)+VCC開關(guān)+VCCGND→電阻GND→電阻圖2-26總體電路結(jié)構(gòu)的外部連接在圖2-26中的單碼決定區(qū)中的“非門-開關(guān)”結(jié)構(gòu)與另一只開關(guān)并聯(lián),這兩只開關(guān)中只能有一只可以閉合,兩只開關(guān)閉合的情況下,根據(jù)Proteus的仿真結(jié)果,可能會出現(xiàn)短路或電壓不穩(wěn)的現(xiàn)象。非門之輸入端經(jīng)過一只電阻接地,為非門提供低電平電壓。管理員可以閉合單碼決定區(qū)的其中一只開關(guān),來決定該位密碼為0或1。帶非門的一路閉合時,該位密碼為0;另一路閉合時,該位密碼為1。用戶可以操作非單碼決定區(qū)的開關(guān)的方式來決定該位輸入0或是1,閉合時為1,斷開時為0??傮w電路結(jié)構(gòu)連接或門的兩個輸入端之一?;蜷T的另一輸入端通過一只開關(guān)與電源相連,作為強(qiáng)制免密鍵。當(dāng)密碼鎖出現(xiàn)故障時,管理員可以閉合該開關(guān),進(jìn)行強(qiáng)制免密?;蜷T的這一端也通過一只電阻接地,當(dāng)開關(guān)斷開時,能為或門提供低電平電壓,使或門正常輸出信號。三、選擇方案由(二、)中的以邏輯門電路結(jié)構(gòu)為主組接的密碼鎖可操作性較強(qiáng)、可視性較強(qiáng),從外觀上通過自鎖開關(guān)的閉合與否即可觀察到輸入或設(shè)定的密碼,還不需要額外編程。這樣的電路結(jié)構(gòu)理論上應(yīng)該可以實(shí)現(xiàn)正常運(yùn)行,但是兼容性欠佳,有可能出現(xiàn)電壓與單片機(jī)的不兼容的現(xiàn)象,需要額外加上一個電壓轉(zhuǎn)換模塊。4×4矩陣鍵盤雖然會使編程的復(fù)雜程度和難度增加,但其兼容性優(yōu)良,被廣泛應(yīng)用于各種需要多個按鍵的電路系統(tǒng)中。在權(quán)衡利弊后,選擇4×4矩陣鍵盤作為密碼鍵盤。第六節(jié)顯示器及其選擇方案顯示器主要用于前端界面中選中座位的座位號顯示,以及時鐘模塊中的時間顯示。顯示器可選擇LCD1602、傳統(tǒng)的七段數(shù)碼管等。LCD1602LCD1602的外觀如圖2-27所示。圖2-27LCD1602的外觀LCD1602共有16個引腳,引腳圖如圖2-28所示。圖2-28LCD1620LCD1602各引腳的功能如表2-1所示。表2-1LCD1602的引腳功能引腳號功能1VSS引腳為地電源2VCC引腳接5V電源正極3VL引腳為液晶顯示器對比度調(diào)整端,接電源時對比度最弱,接地時對比度最高4RS引腳為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器5RW引腳為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作6E(或EN)引腳為使能(enable)端,高電平時讀取信息,負(fù)跳變時執(zhí)行指令7-14D0~D7引腳為8位雙向數(shù)據(jù)端15-16空腳或背燈電源,15腳背光正極,16腳背光負(fù)極LCD1602顯示面積也較大,能夠顯示更多的字符。LCD1602一般在使用時要利用單片機(jī)上10個以上的引腳,還要編寫相關(guān)的驅(qū)動函數(shù)程序。七段數(shù)碼管七段數(shù)碼管至今仍被廣泛應(yīng)用,當(dāng)下的一些智能電器還在利用它來顯示一些數(shù)值,比如智能熱水器中利用七段數(shù)碼管來顯示當(dāng)前的水溫(圖2-29)。圖2-29至今七段數(shù)碼管仍在被廣泛應(yīng)用七段數(shù)碼管是一種比較傳統(tǒng)的數(shù)字顯示器,其外觀、等效電路、尺寸及引腳位置分別如圖2-30、圖2-31、圖2-32所示。圖2-30七段數(shù)碼管的外觀圖2-31七段數(shù)碼管的等效電路圖2-32七段數(shù)碼管的尺寸及引腳位置圖、與等效電路的對應(yīng)關(guān)系七段數(shù)碼管的每一段線段實(shí)質(zhì)上都是一只發(fā)光二極管。七段數(shù)碼管的尺寸及引腳位置圖、與等效電路的對應(yīng)關(guān)系如圖2-32所示。七段數(shù)碼管只接入一個引腳也可發(fā)揮一定作用,可節(jié)約引腳,相比之下更適合引腳緊張的場合。七段數(shù)碼管也可配合譯碼器74LS48等,來顯示對應(yīng)的數(shù)字、符號等,還可將其直接連入電路當(dāng)做發(fā)光二極管組來使用。選擇方案最終選擇使用占用引腳較少即可達(dá)到一樣效果的七段數(shù)碼管。第七節(jié)單片機(jī)與其他模塊的連接如圖2-33所示,除連接成單片機(jī)最小系統(tǒng)外,P0~P3共有32個引腳,其中的28個引腳連接到了其他模塊。圖2-33單片機(jī)引腳的連接圖P0端口中的8只引腳P0.0~P0.7接入上拉排阻,再接入其他模塊,以確保P0端口輸入、輸出功能正常。另有P1端口的8個引腳P1.0~P1.7接入4×4矩陣鍵盤。圖中P0.0~P0.7、P2.0~P2.7、P3.0~P3.7中均有引腳與用戶使用界面相連。圖中標(biāo)有含有“ocp”、“ovt”、“sensor”等字樣的接頭(Proteus左側(cè)一欄中的TERMINALS中的DEFAULT,下同)與用戶界面(端)有連接,其中的標(biāo)有“sensor”字樣處接傳感器,標(biāo)識以“-1”為結(jié)尾的接壓力傳感器,以“-2”為結(jié)尾的接紅外線傳感器。圖中標(biāo)有含有“seg”、“button”、“ocp”等字樣的接頭與前端界面有連接。P0.4引腳與電子鐘模塊連接,由軟件控制其每0.5秒改變一次高低電平。圖中標(biāo)有含有“box”字樣處與小保險箱相連接,小保險箱再與電源或用戶界面(端)相連。其它相關(guān)內(nèi)容,詳見本章第八、九、十、十一、十二節(jié)。第八節(jié)用戶界面(端)、小保險箱用戶界面(端)包括了本系統(tǒng)的警報(指示燈)模塊和傳感器模塊,用于顯示當(dāng)前座位的解鎖、占位、警報狀態(tài),并利用壓力傳感器紅外線傳感器檢測座位的具體占用情況。小保險箱內(nèi)有管理員專用的密碼更改鍵和強(qiáng)制免密鍵。用戶界面(端)、小保險箱電路圖分別如圖2-34、2-35所示。圖2-34用戶界面(端)電路圖圖2-35小保險箱電路圖其中,標(biāo)有帶有“KEY”字樣的指示燈會在該座位對應(yīng)的密碼輸入正確時亮起,是一盞綠色指示燈。標(biāo)有帶有“OCP”字樣的指示燈是一盞紅色指示燈,會在該座位被預(yù)約或被占用時亮起,其中座位正在被使用和臨時離開占座算作“被占用”的情形。標(biāo)有帶有“OVT”字樣的指示燈也是一盞紅色指示燈,也是一盞光警報燈,會在用戶超時使用座位,或是當(dāng)該座位在處于被預(yù)約,以及臨時離開占座時未輸入正確密碼且壓力傳感器、紅外傳感器之一檢測到被占用的信號時,該燈亮起。圖2-39中的用戶界面(端)選取的是第2個座位的,三盞信號燈分別標(biāo)有“KEY2”、“OCP2”、“OVT2”,它們對應(yīng)的3個接頭也相應(yīng)地標(biāo)有“key2”、“ocp2”、“ovt2”,第一個座位上的則標(biāo)有“key1”、“ocp1”、“ovt1”,第三個座位上的標(biāo)有“key3”、“ocp3”、“ovt3”。傳感器模塊,包括壓力傳感器和紅外線傳感器,已包含在用戶界面(端)中。如圖2-37所示,在Proteus中,它們是用接地的開關(guān)代替模擬的。標(biāo)有“sensor1-1”、“sensor2-1”、“sensor3-1”的分別接座位1、座位2、座位3的壓力傳感器;標(biāo)有“sensor1-2”、“sensor2-2”、“sensor3-2”的分別接座位1、座位2、座位3的紅外線傳感器。小保險箱內(nèi)的電路結(jié)構(gòu)主要有兩個作用:第一個作用是在密碼鍵盤或單片機(jī)部分發(fā)生故障,以致輸入正確密碼后無法使相對應(yīng)的引腳輸出高電平時,管理員可以保持單片機(jī)相連的支路上的開關(guān)(接頭上標(biāo)有帶有“box”字樣的支路,見圖2-38)閉合,(接頭標(biāo)有帶有“key”字樣的)的另一支路上的開關(guān)閉合接電源,來實(shí)現(xiàn)強(qiáng)制免密;第二個作用是供管理員利用被鎖入小保險箱的矩陣鍵盤的4個鍵來改變相應(yīng)座位上的密碼,配合小保險箱外的12個公用鍵使用,詳見本章第九節(jié)。第九節(jié)前端界面本系統(tǒng)中,用戶可以在前端界面進(jìn)行選座操作,還可觀察到各座位的占用情況。前端界面的電路結(jié)構(gòu)如圖2-36所示。圖2-36前端界面電路結(jié)構(gòu)圖前端界面中,有3盞占位信號指示燈,它們是3只紅色發(fā)光二極管,分別與3個用戶界面(端)中的ocp1、ocp2、ocp3燈相并聯(lián)。并且這3盞燈的正極分別通過一只電阻接電源,以增加指示燈的電流。當(dāng)有座位被占用時,前端(界面)中的相應(yīng)的占位指示燈就會亮起。前端還有一只選座按鈕和一個座位號顯示器。座位號顯示器是一只共陰極的七段數(shù)碼管。數(shù)碼管的a管、g管、d管分別對應(yīng)座位1、座位2、座位3。數(shù)碼管與單片機(jī)的P0.6、P0.7、P2.3引腳相連接,它們分別與數(shù)碼管的a引腳、g引腳、d引腳相連,這些二極管在數(shù)碼管上的位置見圖2-37。這a引腳、g引腳、d引腳分別與數(shù)碼管a管、g管、d管相對應(yīng),詳見本章第六節(jié)。a引腳、g引腳、d引腳初始為低電平,當(dāng)其中的某個引腳轉(zhuǎn)至高電平時,與其相應(yīng)的一段二極管就會點(diǎn)亮。每按下一次選座按鈕,數(shù)碼管上發(fā)光的情況就會改變一次:第一次按下按鈕時,a管亮,第二次g管亮,第三次d管亮,第四次所有二極管都不亮,第五次a管又亮,然后開始新一輪的循環(huán)。有二極管亮?xí)r,若在2秒內(nèi)不再按下選座按鈕,由軟件控制二極管熄滅,對應(yīng)的座位被預(yù)約,這個過程如圖3-3所示。當(dāng)處于管理員模式(詳見本章第九節(jié))下時,a管、g管、d管都會發(fā)光。第十節(jié)矩陣密碼鍵盤在本章第五節(jié)中選用的、在本系統(tǒng)中應(yīng)用的4×4矩陣密碼鍵盤電路及其各鍵按鍵名稱如圖2-37所示。圖2-37矩陣密碼鍵盤電路圖矩陣鍵盤共有8只引腳,這8只引腳分別與單片機(jī)上的引腳P1.0~P1.7相連。其中最后一行的4個按鈕平時鎖在小保險箱(詳見本章第七節(jié))中,用于更改密碼。其余的12個鍵是公共的,用戶可通過在此輸入對應(yīng)座位的密碼來解鎖座位,密碼為三位。比如座位2的密碼為“456”,用戶依次按下鍵盤上的“4”、“5”、“6”鍵,座位2上的“KEY2”燈就會發(fā)光,表示該座位已經(jīng)解鎖,可以正常使用。按下“管理員”鍵后,進(jìn)入管理員模式,前端界面的數(shù)碼管的a管、g管、d管都會發(fā)光。之后,管理員把想要改成的密碼一次一位鍵入。例如,管理員想要把座位1的密碼改成“123”,要依次按“1”、“2”、“3”鍵,之后按“改密1”鍵,以使輸入的密碼成為座位1的新密碼,下一步按下“管理員”鍵,退出管理員模式。同樣地,“改密2”、“改密3”鍵也分別能用于改變座位2、座位3的密碼,這時相應(yīng)的密碼燈(“KEY”燈)亮起。管理員模式下按下“自動鎖”鍵后,三盞密碼燈同時取反,改變自動上鎖模式(見第五章第四節(jié)),第3個座位的ovt燈明/暗情況變化:自動上鎖模式下燈點(diǎn)亮,手動上鎖模式下熄滅。自動上鎖模式,也是系統(tǒng)的默認(rèn)模式。自動上鎖模式是指用戶在臨時離開座位時,系統(tǒng)會撤銷座位的解鎖狀態(tài);在手動上鎖模式下就不會這樣。當(dāng)系統(tǒng)處于管理員模式時,我們按下數(shù)字鍵,用戶界面(端)相應(yīng)的燈會點(diǎn)亮。相應(yīng)燈的明滅情況如表2-2所示。這種顯示按下的鍵之鍵值的方法,既能顯示鍵值,又有一定的保密作用。表中,1表示明,0表示滅。鍵值\指示燈ocp1ovt1ocp2ovt210001200103001140100501016011070111810009100101010表2-2燈的明滅情況第十一節(jié)電子鐘模塊電子鐘模塊用于顯示當(dāng)前的時間,是本系統(tǒng)的附加模塊,顯示的時間不受系統(tǒng)內(nèi)部軟件的計時計數(shù)部分程序中的counter變量(見第三章第四節(jié))影響。電子鐘模塊的電路如圖2-38所示。圖2-38電子鐘模塊的整體結(jié)構(gòu)圖更詳細(xì)的電路結(jié)構(gòu),見附錄(四)。電子鐘模塊主要由74LS160芯片、74LS48芯片、七段數(shù)碼管、邏輯門電路構(gòu)成。74LS16074LS160的引腳圖如圖2-39所示。圖2-3974LS160引腳圖十進(jìn)制計數(shù)器芯片74LS160,可以在其Q0~Q3輸出累計的數(shù),最高計入9(1001B),同時在RCO引腳輸出進(jìn)位信號。74LS160芯片相對于十六進(jìn)制的74LS161芯片來說,更能匹配十進(jìn)制的74LS48譯碼器和七段數(shù)碼管。74LS160芯片的邏輯圖如圖2-40所示。74LS160芯片的典型時序圖如圖2-41所示。圖2-4074LS160的邏輯圖圖2-4174LS160的典型時序圖由時序圖可知,74LS160的clk引腳為上升沿觸發(fā)。此外,74LS160還有不同的工作方式,詳見表2-3。表2-374LS160的工作方式選擇表輸入清零置數(shù)使能時鐘工作模式MRLDENTENPCLKL××××清零HL××↑置數(shù)HHHH↑計數(shù)HHL××保持HH×L×保持在電子鐘模塊中,我們主要運(yùn)用了74LS160的計數(shù)功能以及清零功能。74LS4874LS48的引腳圖如圖2-42所示。圖2-4274LS48的引腳圖74LS48芯片的真值表如表2-4所示,表中,以A3A2A1A0表示顯示譯碼器輸入的來自于74LS160的二進(jìn)制碼,并以Ya~Yb表示輸出的7位二進(jìn)制代碼;對于數(shù)碼管線段對應(yīng)的二極管,1表示點(diǎn)亮,0表示熄滅。表2-474LS48的真值表輸入輸出數(shù)字A3A2A1A0YaYbYcYdYeYfYg00000111111010001011000020010110110130011111100140100011001150101101101160110001111170111111000081000111111191001111001174LS48還能使數(shù)碼管輸出其他字形,本設(shè)計中主要使用其10個阿拉伯?dāng)?shù)字的字形。74LS48是一種廣義上的譯碼器。[6]74LS48的邏輯圖如圖2-43所示。圖2-4374LS48的邏輯圖電子鐘模塊計數(shù)器部分的進(jìn)位原理電子鐘計數(shù)器、譯碼器、數(shù)碼管顯示器均可分為秒位、十秒位、分位、十分位、時位、十時位這六部分,各數(shù)位部分占用1個74LS160芯片。秒位的74LS160芯片的clk引腳與單片機(jī)的P0.4引腳相連,該引腳在軟件的控制下每0.5秒轉(zhuǎn)換一次高低電平,這樣每1秒向秒位74LS160的clk引腳輸出一個上升沿。秒位、十秒位、分位、十分位以及這幾者彼此之間的74LS160的連接如圖2-44所示。圖2-44秒位、十秒位、分位、十分位電路結(jié)構(gòu)圖電子鐘的十秒位和十分位都是六進(jìn)制的,每逢“6”就要向更高一位進(jìn)位并歸零,這是因?yàn)?分鐘有60秒,1小時有60分鐘。當(dāng)十秒位或十分位的輸出值Q=6(0110B,Q0=0,Q1=1,Q2=1,Q3=0)時,Q0、Q1、Q2、Q3都要立即置零,與此同時向更高一位發(fā)出進(jìn)位信號。這時可以結(jié)合邏輯門電路,利用異步置零法來布置電路,以滿足進(jìn)位的要求,如圖2-47所示,當(dāng)Q0=0,Q1=1,Q2=1,Q3=0時,與非門同時向更高位的clk引腳和本位的MR引腳輸出低電平。時位、十時位的計數(shù)器部分電路結(jié)構(gòu)如圖2-45所示。圖2-45時位、十時位的電路結(jié)構(gòu)圖雖然M=24是一個合數(shù),但是時位在十時位為0或1時還是十進(jìn)制的,所以時位、十時位的電路連接還是要采取整體置數(shù)法。當(dāng)時位等于4且十時位等于2時,通過與非門向兩位的MR引腳輸出的低電平來將這兩位同時置零。從圖2-44、2-45都能看到,秒位、分位和時位的74LS160計數(shù)器芯片的RCO引腳與更高一位的計數(shù)器clk引腳之間連有一個非門。由于74LS160芯片的clk引腳是上升沿有效,所以若不接入非門,就會造成進(jìn)位超前。這時在十進(jìn)制(秒位、分位)和涉及十進(jìn)制的數(shù)位(時位)在進(jìn)行進(jìn)位時,非門就起到了延時以彌補(bǔ)超前進(jìn)位的作用。在復(fù)位或開機(jī)時,十時位、十分位、十秒位74LS160的clk引腳也會接受到一個上升沿,所以在開機(jī)或復(fù)位時最好把所有計數(shù)器之間的開關(guān)斷開。時間調(diào)整功能分位、十分位、時位、十分位都分別可以通過如圖2-46所示的按鈕組調(diào)整。圖2-46按鈕組這些按鈕一端接地,一端接對應(yīng)計數(shù)器的clk引腳,按下按鈕時,會向clk引腳輸入低電平信號,輸出端口的數(shù)值加1。當(dāng)輸出端的值為9(數(shù)碼管顯示的數(shù)值為9。9=1001B,Q0=1,Q1=0,Q2=0,Q3=1)時,按下按鈕后數(shù)值變回0,開始新一輪的循環(huán)。圖2-46中的這些按鈕由上到下可分別調(diào)整分位、十分位、時位、十時位。根據(jù)Proteus的模擬結(jié)果,這種調(diào)整時間的方法可行。第十二節(jié)電源模塊電源模塊為系統(tǒng)的整個電路供電。電源模塊選用AMS11175V型,其外觀如圖2-47所示。圖2-47AMS1175V電源模塊AMS11175V電源模塊含有這些組成部分:AMS11175.0芯片、DC座、電源指示燈、4路輸出電壓接口。DC座輸入電壓為6.5V~12V。第三章開發(fā)軟件及軟件設(shè)計第一節(jié)開發(fā)軟件簡介Keil3.0是由美國KeilSoftware公司出品的軟件開發(fā)系統(tǒng)。其可用于AT89C51單片機(jī)C語言開發(fā)。與匯編語言相比,C語言易學(xué)易懂。在Keil上利用C語言進(jìn)行軟件設(shè)計有明顯的優(yōu)勢。[7]該軟件能與Proteus進(jìn)行聯(lián)合仿真。Proteus是由英國LabcenterElectronics公司于1989年推出的開發(fā)系統(tǒng)。Proteus能為單片機(jī)應(yīng)用系統(tǒng)提供相應(yīng)的軟硬件設(shè)計、虛擬仿真環(huán)境。Proteus能提供功能強(qiáng)大的軟硬件調(diào)試手段。[8]第二節(jié)整體程序思想概述一、既往先例概述同時基于單片機(jī)和傳感器的智能系統(tǒng)的開發(fā)設(shè)計已有較多的先例可供參考借鑒,例如基于STM32單片機(jī)的發(fā)動機(jī)精確定位系統(tǒng)、基于AT89C52單片機(jī)和傳感器的酒駕監(jiān)測系統(tǒng);還有同時運(yùn)用單片機(jī)和藍(lán)牙設(shè)備的,如基于51系列單片機(jī)的藍(lán)牙防丟失系統(tǒng)等。它們的軟件程序結(jié)構(gòu)普遍上利用選擇結(jié)構(gòu),根據(jù)來自傳感器的不同信號,執(zhí)行不同的程序。二、整體程序概述本程序除具有一個主程序外,還包括兩個鍵盤掃描函數(shù)程序、兩個鍵盤鍵值臨時存儲函數(shù)程序和一個延時函數(shù)。主程序中,又可大致包含這幾部分,都有各自的功能:計時計數(shù)部分、預(yù)約選座部分、預(yù)約處理部分、座位使用(非預(yù)約情況)處理部分、座位清空處理部分。在每一部分中,程序會檢索每一個座位的情況,如遇指定的情況,由程序控制對相應(yīng)座位發(fā)出相應(yīng)信號、做出相應(yīng)處理。本程序具有兩種模式:非管理員模式和管理員模式。在管理員模式中,管理員可修改各座位的密碼。兩種模式下分別有一個鍵盤掃描函數(shù)和一個鍵盤鍵值臨時儲存函數(shù)。第三節(jié)計時計數(shù)部分以及倒計時原理程序采用單片機(jī)內(nèi)部的定時器來進(jìn)行計數(shù)計時。每經(jīng)過0.05秒,程序中的變量n增加1,當(dāng)n>=10時,n清零,然后開始新一輪的循環(huán)。每完成一輪這樣的循環(huán),單片機(jī)引腳P0.4高低電平取反一次,每秒為電子鐘提供一次低電平信號,變量counter增加1。counter既是計數(shù)器,又在本程序中充當(dāng)“軟件時鐘”。從上述描述中,我們不難發(fā)現(xiàn)每0.05×10=0.5秒鐘,變量counter增加1,所以counter的值即為從開機(jī)或復(fù)位到某時刻經(jīng)過的秒數(shù)再乘以2。例如從復(fù)位電路到某時刻,經(jīng)過了2000秒,則counter的值為4000。利用這一點(diǎn),我們可以實(shí)現(xiàn)定時、倒計時的功能。例如,假如圖書館規(guī)定預(yù)約座位后,如20分鐘(1200秒)后不使用該座位,該座位就視為空座,可被其他用戶再次使用。某用戶在counter==5000的時刻預(yù)約了座位1,用戶預(yù)約座位后,程序會同時計算出若用戶未按時使用座位,將預(yù)約的座位解除占用和預(yù)約時,counter==7400。當(dāng)counter==7400且該座位未被使用過時,解除該座位的占用和預(yù)約。這就是counter充當(dāng)“軟件時鐘”的原理。計時計數(shù)部分程序流程如圖3-1所示。開始n>=10?開始n>=10?n++n=0P0.4電平取反counter++是是否否圖3-1計時計數(shù)部分軟件流程圖第四節(jié)預(yù)約選座部分預(yù)約選座的過程,在第三章第八節(jié)已有描述,這里再結(jié)合具體實(shí)際程序進(jìn)一步描述。在非管理員模式下,可以按下預(yù)約選座按鈕來預(yù)約座位。首次按下按鈕時,數(shù)碼管的a管發(fā)光,在2秒內(nèi)若不再按下,座位1被預(yù)約。若要選擇其他的座位,可再次按下預(yù)約選座鍵;若數(shù)碼管不發(fā)光,又不再按下按鈕,之后就沒有座位被預(yù)約;具體過程見第三章第八節(jié)、圖3-3。從按下按鈕到下一次按下按鈕或按下按鈕的2秒內(nèi)的過程,我們在這里稱為“選座詢問”。該部分的算法流程圖見圖3-2?!斑x座詢問”的順序如圖3-3所示。開始開始期間按下按鈕?否是按下按鈕數(shù)碼管發(fā)光,“選座詢問”數(shù)碼管改變,“選座詢問”下一個座位相應(yīng)座位被預(yù)約計算解除預(yù)約時間進(jìn)入下一部分程序圖3-2預(yù)約選座部分流程圖座位1,a管發(fā)光座位2,g管發(fā)光不預(yù)約座位,不發(fā)光座位座位1,a管發(fā)光座位2,g管發(fā)光不預(yù)約座位,不發(fā)光座位3,d管發(fā)光圖3-3“選座詢問”順序示意圖第五節(jié)預(yù)約處理部分座位在被預(yù)約后,數(shù)碼管熄滅,相應(yīng)的占位燈點(diǎn)亮。若用戶未在規(guī)定的時間內(nèi)使用座位,座位的占位和與預(yù)約被解除。被預(yù)約的座位需要用密碼解鎖,若用戶正確輸入了密碼,解鎖燈發(fā)光,該座位被解鎖。若作為未解鎖就有人使用座位(壓力傳感器或紅外線傳感器至少有一檢測到信號),座位會發(fā)出光警報。程序流程圖見圖3-4。否是是否是解除占位和預(yù)約在規(guī)定時間內(nèi)未使用座位?光警報使用座位?檢索其他座位或執(zhí)行下一部分程序座位解鎖座位被預(yù)約數(shù)碼管熄滅占位燈點(diǎn)亮輸入正確密碼?否是是否是解除占位和預(yù)約在規(guī)定時間內(nèi)未使用座位?光警報使用座位?檢索其他座位或執(zhí)行下一部分程序座位解鎖座位被預(yù)約數(shù)碼管熄滅占位燈點(diǎn)亮輸入正確密碼?否否圖3-4預(yù)約部分處理程序流程圖第六節(jié)座位被占時(非預(yù)約情況)處理部分座位正在被使用時(非臨時離開)的處理否是超時使用座位?本部分程序開始開始計時占位燈點(diǎn)亮光警報沒有發(fā)出光警報(ovt燈亮)的座位是可以使用的。當(dāng)用戶坐上座位后,占位燈點(diǎn)亮,并開始計時(計時原理在本章第二節(jié)有述,下文同)。當(dāng)用戶使用座位的時間合計超過一定值(不計中間臨時離開的時間),座位的占位解除,占位燈熄滅,該座位視為空座。否是超時使用座位?本部分程序開始開始計時占位燈點(diǎn)亮光警報占位燈熄滅,解除座位占用占位燈熄滅,解除座位占用該座位該部分程序停止執(zhí)行該座位該部分程序停止執(zhí)行圖3-5座位正在被使用時(非臨時離開)的處理程序流程圖用戶臨時離開時的處理首先記下用戶已使用座位的剩余時間,若用戶沒使用過座位,則跳過這一步。然后程序開始計時,占位燈亮,自動上鎖模式下座位自動上鎖。若座位上鎖后,用戶未輸入正確密碼就坐到座位上,座位就發(fā)出光警報。當(dāng)用戶超出規(guī)定的時間后仍未回到座位上時,座位占用解除,占位燈熄滅,座位視為空座本部分程序開始本部分程序開始記下剩余時間使用過座位?光警報座位被使用且處于未解鎖狀態(tài)?超時且未返回座位?開始臨時離開計時占位燈熄滅,解除座位占用檢索其他座位或進(jìn)入其他部分程序否是否是否是圖3-6用戶臨時離開時的處理程序第七節(jié)清空處理部分這里的“清空”是一種廣義上的清空。座位清空處理部分程序可以根據(jù)作為座位各部分的清空情況來對計時器、指示燈、變量的某種狀態(tài)等做出相應(yīng)的清空、熄滅、解除處理。該部分程序中含有變量situ1~situ3、situ4~situ6,變量situ1~situ3分別對應(yīng)座位1~3,座位倒計時時間計算過的置1;變量situ4~situ6也對應(yīng)座位1~3,用戶臨時離開時置1。若座位被使用且該座位已被解鎖,就解除該座位的預(yù)約。若用戶不在座位(含臨時離開和徹底離開座位兩種情況)時,座位使用倒計時計時器暫停,situ1/2/3=0。若用戶不是處于臨時離開(含徹底離開和正在使用兩種情況)時,situ4/5/6=0。若座位整體未被占用(桌面上既沒有物品(占位物),座位也未被使用),則光警報撤銷(ovt警報燈熄滅),座位剩余時間恢復(fù)默認(rèn),situ4/5/6=0;若在此基礎(chǔ)之上,該座位也未被預(yù)約,就解除該座位的占用,占位燈熄滅,同時為座位上鎖。需要說明的一點(diǎn),在座位沒有被預(yù)約的情況下,上鎖的空座位(未被占用的)也可以正常使用。此部分程序流程圖如圖3-7所示。本座位本部分程序開始座位被使用且解鎖?解除該座位預(yù)約用戶在座位?本座位本部分程序開始座位被使用且解鎖?解除該座位預(yù)約用戶在座位?用戶臨時離開?座位整體未被占用?situ1/2/3=0situ4/5/6=0光警報撤銷剩余時間恢復(fù)默認(rèn)situ4/5/6=0是是是是否否否否座位未被預(yù)約?取消占位,占位燈熄滅;為座位上鎖本座位本部分程序結(jié)束是否圖3-7清空部分程序流程圖第八節(jié)鍵盤掃描函數(shù)非管理員模式下的鍵盤掃描函數(shù)系統(tǒng)掃描鍵盤,若用戶按下是的數(shù)字鍵,把對應(yīng)的數(shù)字鍵值送入密碼臨時保存函數(shù);若按下的是清空鍵,密碼臨時保存函數(shù)內(nèi)的所有變量置空或置零;若按下的是管理員鍵,系統(tǒng)進(jìn)入管理員模式。程序流程圖如圖3-8所示。管理員模式下的鍵盤掃描函數(shù)與非管理員模式下的部分相同。系統(tǒng)掃描鍵盤,若管理員按下的是數(shù)字鍵,把對應(yīng)的數(shù)字的鍵值送入管理員模式專用密碼臨時保存函數(shù);若按下的是清空鍵,密碼臨時保存函數(shù)內(nèi)的所有變量置空或置零;若按下的是改密鍵1/2/3,就把密碼臨時保存函數(shù)中的密碼作為對應(yīng)座位的新密碼;若管理員按下“管理員”鍵,系統(tǒng)就退出管理員模式。程序流程圖如圖3-9所示;若管理員按下“自動鎖”鍵,系統(tǒng)在自動上鎖/手動上鎖這兩種模式之間切換。鍵盤掃描函數(shù)基本原理概述首先,對P1.0~P1.7引腳賦值,P1=11110000。若P1!=11110000,且P1!=11110000超過5~10ms,則程序判定為鍵盤中有鍵被按下。若P1!=11110000未滿5~10ms,則程序視P1的值的變化為機(jī)械抖動,不再檢索鍵值。之后再次對引腳P1.0~P1.7賦值,P1=11111110。然后程序分別對P1.4、P1.5、P1.6、P1.7進(jìn)行檢索。若P1.4==0,則是“0”鍵被按下;若P1.5==0,則是“1”鍵被按下;若P1.6==0,則是“2”鍵被按下;若P1.7==0,則是“3”鍵被按下;若(P1.4==0&&P1.5==0&&P1.6==0&&P1.7==0),則繼續(xù)為P1.0~P1.7賦值,P1=11111101。后面的程序以此類推。鍵盤功能在第二章第九節(jié)也有表述。開始開始按下數(shù)字鍵?按下清空鍵?按下管理員鍵?把鍵入的數(shù)字送入密碼臨時保存函數(shù)清空所有有關(guān)變量進(jìn)入管理員模式是是是否否否圖3-8非管理員模式下的鍵盤掃描函數(shù)程序流程圖開始開始否按下數(shù)字鍵?按下清空鍵?按下管理員鍵?把鍵入的數(shù)字送入密碼臨時保存函數(shù)清空所有有關(guān)變量退出管理員模式是是是否否否按下數(shù)字鍵?按下清空鍵?按下管理員鍵?把鍵入的數(shù)字送入密碼臨時保存函數(shù)清空所有有關(guān)變量退出管理員模式是是是否否按下改密1/2/3按下改密1/2/3鍵?是否否把密碼臨時保存函數(shù)中的密碼作為對應(yīng)作為的新密碼把密碼臨時保存函數(shù)中的密碼作為對應(yīng)作為的新密碼否是按下自動鎖鍵?否是按下自動鎖鍵?切換自動/手動上鎖模式切換自動/手動上鎖模式結(jié)束結(jié)束圖3-9管理員模式下的鍵盤掃描函數(shù)程序流程圖第九節(jié)密碼臨時保存函數(shù)管理員模式下的與非管理員模式下的密碼臨時保存函數(shù)基本相似。函數(shù)收到鍵盤掃描函數(shù)送入的數(shù)字鍵值后,若密碼高位未輸入,則認(rèn)定輸入的鍵值為密碼的高位;若密碼高位已輸入,但中間位未輸入則認(rèn)定輸入的鍵值為密碼的中間位;若密碼的高位、中間位都已輸入,則認(rèn)定輸入的鍵值為密碼的低位。在管理員模式下,輸入的密碼可作為指定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論