微機(jī)課程設(shè)計(jì)小區(qū)樓道開門控制系統(tǒng)方案_第1頁
微機(jī)課程設(shè)計(jì)小區(qū)樓道開門控制系統(tǒng)方案_第2頁
微機(jī)課程設(shè)計(jì)小區(qū)樓道開門控制系統(tǒng)方案_第3頁
微機(jī)課程設(shè)計(jì)小區(qū)樓道開門控制系統(tǒng)方案_第4頁
微機(jī)課程設(shè)計(jì)小區(qū)樓道開門控制系統(tǒng)方案_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)應(yīng)用設(shè)計(jì)與實(shí)踐課程設(shè)計(jì)設(shè)計(jì)題目 小區(qū)樓道開門控制系統(tǒng) 系 別 專 業(yè) 班 級(jí) 學(xué)生學(xué) 號(hào)指導(dǎo)教師2012年 07月 05日目 錄一、設(shè)計(jì)任務(wù)1.1設(shè)計(jì)課題31.2設(shè)計(jì)目的31.3設(shè)計(jì)任務(wù)31.4基本設(shè)計(jì)要求31.5擴(kuò)展功能提示41.6設(shè)計(jì)環(huán)節(jié)與進(jìn)程安排4二、總體方案設(shè)計(jì)與方案論證2.1總體方案設(shè)計(jì)52.2方案論證與選擇5三、總框圖與總體軟件設(shè)計(jì)說明3.1總流程圖73.2總體軟件設(shè)計(jì)說明9四、系統(tǒng)資源分配說明4.1硬件資源分配104.2片系統(tǒng)資源存儲(chǔ)空間分配12五、局部程序設(shè)計(jì)說明5.1入口程序初始化135.2拆字與顯示容送顯緩模塊135.3顯示更新子程序145.4消抖動(dòng)子程序模塊155.5

2、有按鍵時(shí)發(fā)出按鍵聲子程序模塊165.6無按鍵后30秒自動(dòng)返回到時(shí)鐘狀態(tài)模塊165.7定時(shí)器T1中斷服務(wù)模塊175.8房間處理模塊模塊175.9密碼處理子模塊-195.10時(shí)鐘修改子模塊-205.11用戶密碼修改子模塊-20六、系統(tǒng)功能與操作說明6.1系統(tǒng)功能描述與操作說明21七、存在問題與程序改進(jìn)說明7.1按鍵處理問題227.2房號(hào)輸入問題227.3修改密碼問題227.3延時(shí)問題22八、設(shè)計(jì)總結(jié)23九、參考文獻(xiàn)23附錄、源程序24 第一章 設(shè)計(jì)任務(wù)1.1設(shè)計(jì)課題:小區(qū)樓道開門控制系統(tǒng)1.2設(shè)計(jì)目的:通過小型微機(jī)應(yīng)用產(chǎn)品的設(shè)計(jì)與調(diào)試過程,運(yùn)用微機(jī)原理與接口技術(shù)課程所學(xué)的基本知識(shí),在設(shè)計(jì)中加以應(yīng)用

3、,進(jìn)而得到理解、鞏固和提高發(fā)展,通過實(shí)踐的過程學(xué)習(xí)與掌握分析與解決實(shí)際問題的方法與手段,提高設(shè)計(jì)、編程與調(diào)試的實(shí)際動(dòng)手能力,作為工程技術(shù)工作的一次基本訓(xùn)練。1.3設(shè)計(jì)任務(wù):設(shè)計(jì)一個(gè)以單片機(jī)為核心的樓道開門裝置,該裝置平時(shí)顯示時(shí)鐘信息,也可加入按照一定的節(jié)拍交替顯示環(huán)境溫度數(shù)據(jù)功能,住戶通過輸入由物業(yè)管理員預(yù)先設(shè)置的密碼開啟樓道門,住戶也可輸入房號(hào)開啟與相應(yīng)住戶之間的對(duì)講門鈴并可由住戶發(fā)來開門信號(hào)。裝置可由管理員設(shè)置新的通行密碼、時(shí)鐘等參數(shù)。本課程設(shè)計(jì)環(huán)節(jié)進(jìn)行編程并在單片機(jī)實(shí)驗(yàn)板上模擬調(diào)試實(shí)現(xiàn)。 1.4基本設(shè)計(jì)要求:1、八位LED 7段數(shù)碼管顯示時(shí)鐘、密碼輸入界面、房號(hào)輸入面以與設(shè)定修改參數(shù)界面

4、信息。2、基本顯示模式為按照24小時(shí)制動(dòng)態(tài)顯示時(shí)、分、秒實(shí)時(shí)鐘信息。3、4×4鍵盤用于操作與輸入?yún)?shù),應(yīng)回饋短促的按鍵音以提供良好的操作手感。4、住戶輸入6位密碼過程為了而逐位僅顯示“-”符號(hào),按“確定”鍵后在住戶輸入正好6位密碼的情況下進(jìn)行密碼核對(duì),密碼吻合則輸出開門驅(qū)動(dòng)控制信號(hào),5秒鐘后撤銷,輸入位數(shù)不符或密碼不吻合則發(fā)出相應(yīng)提示音。5、住戶輸入3位房號(hào)(101601、102602)過程逐位如實(shí)顯示數(shù)碼,按“確定”鍵后在房號(hào)符合的情況下發(fā)出開啟與相應(yīng)住戶之間的對(duì)講門鈴的控制信號(hào),該信號(hào)維持1秒鐘后撤銷,此后住戶若發(fā)來開門信號(hào),則輸出開門驅(qū)動(dòng)控制信號(hào),5秒鐘后撤銷,輸入的房號(hào)不符則

5、發(fā)出相應(yīng)提示音。6、設(shè)置一個(gè)外接的“開門”按鈕開關(guān),安裝于門用于人員出來時(shí)開門操作,檢測(cè)到該按鈕壓下后,發(fā)出開門驅(qū)動(dòng)控制信號(hào),5秒鐘后撤銷。對(duì)開關(guān)量輸入信號(hào)須進(jìn)行軟件消抖動(dòng)處理。7、輸入管理員密碼(6位)經(jīng)判斷吻合的話,進(jìn)入設(shè)定時(shí)鐘、住戶開門密碼參數(shù)界面,先設(shè)定時(shí)鐘參數(shù),按“確定”鍵后保存新時(shí)鐘數(shù)據(jù)轉(zhuǎn)入設(shè)定住戶開門密碼參數(shù),期間按“取消”鍵則不保存且退出設(shè)定界面,設(shè)定參數(shù)的過程可用閃爍方式指示當(dāng)前修改位。8、非基本顯示模式下無操作時(shí)間超過30秒鐘后自動(dòng)恢復(fù)為基本的顯示時(shí)鐘狀態(tài)。1.5功能擴(kuò)展提示:(選做)1、開機(jī)進(jìn)行接口部件與數(shù)碼顯示器、指示燈、訊響器等自檢。2、在基本顯示模式下,每隔一定的時(shí)

6、間,穿插顯示環(huán)境溫度信息,包括溫度值(保留一位小數(shù))與溫度單位符號(hào)“oC”,設(shè)選用的溫度傳感變送器將檢測(cè)的0 oC+100 oC溫度成比例變換為05V電壓信號(hào)。3、判別錯(cuò)誤密碼輸入三次則封鎖密碼開門功能五分鐘,以限制無止境地探測(cè)密碼,此后管理員可通過斷電后重新上電解除封鎖的限制。4、管理員密碼修改功能,應(yīng)判斷輸入兩遍的新密碼一致的情況下才替換密碼。5、其他功能擴(kuò)展。 1.6設(shè)計(jì)環(huán)節(jié)與進(jìn)程安排:1、布置課題,明確任務(wù)、總體方案設(shè)計(jì) 1天2、基本功能控制程序設(shè)計(jì)與調(diào)試 3天3、程序功能完善、改進(jìn)、擴(kuò)展 3天4、答辯與編寫設(shè)計(jì)說明書 3天 第二章 總體方案設(shè)計(jì)與方案論證2.1總體方案設(shè)計(jì)根據(jù)設(shè)計(jì)要求

7、,把各個(gè)功能按模塊式進(jìn)行編寫,注意模塊之間的聯(lián)系??傮w有以下幾個(gè)模塊:有定時(shí)器0中斷服務(wù)子程序、程序的總初值化(自檢包括蜂鳴器,L0-L15和數(shù)碼管)、主流程程序。主流程對(duì)各個(gè)基本子模塊進(jìn)行反復(fù)循環(huán)調(diào)用,其中基本子模塊包括:拆字與顯示容送顯緩子程序、鍵盤掃描子程序、調(diào)用房間處理子程序(包含對(duì)應(yīng)驅(qū)動(dòng)L0-15燈子程序)、調(diào)用密碼處理子程序(對(duì)應(yīng)驅(qū)動(dòng)開門并延時(shí)燈子程序)、調(diào)用時(shí)鐘修改子程序、調(diào)用用戶密碼修改子程序(包含修改住戶開門密碼界面子程序)、對(duì)PB口輸入并消抖子程序、獨(dú)立按鍵PB0-7的檢測(cè)且對(duì)應(yīng)控制門控位子程序、非基本時(shí)鐘顯示界面無操作30S返回子程序、顯示更新子程序、按鍵聲處理子程序。每

8、個(gè)模塊聯(lián)系密切,相輔相成。2.2方案論證2.2.1LED數(shù)碼管顯示方式:LED數(shù)碼管為常用的輸出外設(shè),基本運(yùn)行模式時(shí),2路電壓值通過它來巡回的顯示;節(jié)拍設(shè)定模式的顯示;擴(kuò)展電壓顯示模式時(shí),2路電壓同時(shí)的顯示;擴(kuò)展時(shí)間顯示模式時(shí),實(shí)時(shí)鐘的顯示。實(shí)驗(yàn)板上的LED數(shù)碼管為是8段共陽極的。(1)、LED靜態(tài)顯示方式 LED顯示器工作于靜態(tài)顯示方式時(shí),各位的共陽極連接在一起并接+5V,每位的段碼線分別與一個(gè)8位的鎖存器輸出相連。靜態(tài)顯示方式雖然接口編程容易,但是占用口線較多,如果要增加顯示器的位數(shù),則需要增加I/O口的數(shù)目,而該設(shè)計(jì)中需要用到8個(gè)LED數(shù)碼管,單片機(jī)的I/O口又是有限的,所以靜態(tài)顯示方式

9、不能采用。(2)、LED動(dòng)態(tài)顯示方式將所有顯示位的段碼線的相應(yīng)段并聯(lián)在一起,由一個(gè)8位I/O口控制,而各位的共陽極由相應(yīng)的I/O線控制,形成各位的分時(shí)選通,即為L(zhǎng)ED動(dòng)態(tài)顯示方式。采用這種方式雖然犧牲了單片機(jī)的時(shí)間,但是換取了I/O端口的減少。2.2.2數(shù)碼管自檢方案的選擇:方案一:通過逐一檢查一個(gè)數(shù)碼管的每段是否正常,逐個(gè)數(shù)碼管進(jìn)行檢查,達(dá)到自檢目的。這種方法效果很好觀察,是一種不錯(cuò)的選擇,但不好實(shí)現(xiàn)。方案二:讓八段數(shù)碼管都亮“8.”這種方案程序較為簡(jiǎn)單,顯示效果也比較好。只要在總初始化上給30H37H賦全亮的立即數(shù)(0CH),再調(diào)用顯示更新子程序,大約保留顯示2s左右,即可判斷數(shù)碼管是否正

10、常,與第一種相比較容易實(shí)現(xiàn)。2.2.3消抖動(dòng)方案選擇:消抖動(dòng)的方案包含有硬件方法(電容濾波法、RS觸發(fā)器消抖電路),消除抖動(dòng)的軟件方法(表決法、滾動(dòng)濾波法、調(diào)用軟件延時(shí)子程序)。方案一:延時(shí)消抖動(dòng)。通過在按鍵執(zhí)行動(dòng)作后,加入一個(gè)延時(shí)子程序,延時(shí)結(jié)束后再檢測(cè)一下按鍵的動(dòng)作,以此來達(dá)到消抖動(dòng)的目的。即檢測(cè)出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,產(chǎn)生5ms10ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測(cè)鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測(cè)到按鍵釋放后,也要給5ms10ms的延時(shí),待后沿抖動(dòng)消失后才能轉(zhuǎn)入該鍵的處理程序。在鍵數(shù)較少時(shí)可用硬件方法消抖動(dòng)。常利用電容的放電延時(shí),采用并聯(lián)電容法。方案

11、二:滾動(dòng)濾波消抖動(dòng)。比較幾個(gè)連續(xù)的電平值,相等則將其存起來與原態(tài)相比,假如該狀態(tài)與原態(tài)不等就認(rèn)為按鍵有動(dòng)作。在本次程序設(shè)計(jì)中采用了這種消抖動(dòng)。用幾個(gè)連續(xù)的單元存放最近幾次的電平值,比較幾個(gè)電平值,若相等則存起來與原態(tài)相比較,若新態(tài)與原態(tài)不等則認(rèn)為一次電平變化。該子程序簡(jiǎn)單,速度快,所以選擇該方案。2.2.4延時(shí)時(shí)間的選擇:由于主程序要不斷地循環(huán),在每個(gè)子模塊中不允許調(diào)用軟件延時(shí)子程序。在這邊有兩種方法可實(shí)現(xiàn)延時(shí);第一,就是累計(jì)主程序循環(huán)時(shí)間(一個(gè)周期大概10ms),然后借助DJNZ指令,對(duì)某個(gè)單元的容進(jìn)行減1不為0,返回繼續(xù)計(jì)時(shí),只有將這個(gè)單元的容減到等于0時(shí),才執(zhí)行下面的容,這樣就起到了延時(shí)

12、的效果。第二,就是借助定時(shí)器中斷服務(wù)子程序。第三章、總框圖與總體軟件設(shè)計(jì)說明3. 1 總流程圖返回主流層開始延時(shí)等待各芯片退出復(fù)位基本初始化設(shè)備自檢工作初始化顯示內(nèi)容送顯緩顯示更新驅(qū)動(dòng)密碼輸入處理房號(hào)輸入處理開關(guān)量輸入與消抖動(dòng)設(shè)住戶開門密碼輸出控制設(shè)定時(shí)鐘*長(zhǎng)時(shí)間無操作處理鍵盤掃描3.2總體軟件設(shè)計(jì)說明總初始化:主要由自檢包括蜂鳴器,L0-L15LED燈,還有八位LED7段數(shù)碼管。還有U3,U5芯片的初始化,和一些要用到的單元進(jìn)行初始化。拆字與顯示容送顯緩子程序:對(duì)要進(jìn)行顯示的容進(jìn)行拆字,當(dāng)為基本進(jìn)程(01H)讓實(shí)時(shí)鐘3AH、3BH、3CH單元進(jìn)行拆字,為其他進(jìn)程時(shí),不進(jìn)行拆字,直接把需顯示的

13、容直接送給數(shù)碼管顯示緩存單元。鍵盤掃描子程序:利用反轉(zhuǎn)法得鍵碼再進(jìn)行查表得出對(duì)應(yīng)的鍵號(hào),還有按下數(shù)字鍵做出相應(yīng)事情,按下功能鍵置某位以便識(shí)別。按鍵聲處理子程序:當(dāng)檢測(cè)到有按鍵按下時(shí),會(huì)發(fā)出短促的聲音。定時(shí)器T0中斷服務(wù)子程序:此字程序是對(duì)時(shí)間進(jìn)行計(jì)時(shí),以致能時(shí)鐘顯示調(diào)用房間處理子程序:當(dāng)輸入數(shù)據(jù)為三位以的時(shí)候,需要將數(shù)據(jù)按移位的順序?qū)?shù)字存入數(shù)據(jù)緩存單元,并完全在數(shù)碼管上顯示數(shù)據(jù),等到輸入數(shù)據(jù)為三位時(shí),要進(jìn)行跟房號(hào)(101-601,102-602)對(duì)比,正確時(shí)要開啟對(duì)講信號(hào)燈,此時(shí)也有可能是密碼輸入的前三位。調(diào)用密碼處理子程序:當(dāng)輸入數(shù)據(jù)位大于三位時(shí),即為輸入密碼狀態(tài),在此過程中,要對(duì)不同的進(jìn)

14、程下,對(duì)功能鍵(確定,撤銷,退格)和數(shù)字鍵進(jìn)行識(shí)別,并作出不同的處理動(dòng)作。只有在輸入為六位時(shí),才進(jìn)行先用戶密碼后管理員密碼的比對(duì),符合用戶密碼,作出開啟開門信號(hào)控制燈,為管理員密碼時(shí),為時(shí)鐘修改做準(zhǔn)備。顯示更新子程序:三種顯示狀態(tài):正常顯示時(shí)鐘,閃爍顯示某位其它照常顯示,對(duì)輸入的數(shù)字進(jìn)行顯示。有顯示一位數(shù)字,一直到能顯示六位數(shù)字,其中前三位可以直接看見,后三位看不見真正的數(shù)字,只顯示“-”符號(hào)(直接將要顯示的容先存儲(chǔ)在數(shù)據(jù)緩存單元,在送到數(shù)碼管顯示緩沖單元)。調(diào)用時(shí)鐘修改子程序:當(dāng)密碼比對(duì)為管理員密碼時(shí),先進(jìn)入時(shí)鐘修改界面進(jìn)行時(shí)鐘修改,而后進(jìn)行用戶密碼修改。對(duì)PB口輸入并消抖子程序:對(duì)PB口的

15、輸入進(jìn)行滾動(dòng)消抖,就是按下按鈕后,只有檢測(cè)到五次地電平數(shù)據(jù)都相等時(shí),才把這次電平存入新態(tài)2EH中,2EH單元的容推進(jìn)前態(tài)2FH單元中。獨(dú)立按鍵PB0-7的檢測(cè)且對(duì)應(yīng)控制門控位子程序:設(shè)置為PB為按下時(shí)為有效,且當(dāng)相應(yīng)的房號(hào)輸入正確后,按下相應(yīng)的PB按鍵時(shí)開啟開門控制燈。非基本時(shí)鐘顯示界面無操作30S返回子程序:無按鍵操作時(shí),無論數(shù)碼管顯示什么,不為時(shí)鐘顯示時(shí),只要延時(shí)30s后,自動(dòng)會(huì)返回時(shí)鐘顯示。報(bào)警子程序:由于該子程序較小,故直接放在以上需要報(bào)警的子程序里面。第四章、系統(tǒng)資源分配說明4.1硬件資源分配 本次課程設(shè)計(jì)小區(qū)樓道開門控制系統(tǒng)的硬件電路主要由鍵盤輸入模塊,數(shù)碼管顯示控制模塊,LED燈

16、顯示模塊,蜂鳴器模塊組成。 根據(jù)實(shí)驗(yàn)電路板來設(shè)計(jì)各個(gè)模塊的資源分配,使用一片AT89C51芯片作為主驅(qū)動(dòng)的芯片,并使用82C55芯片對(duì)I/O引腳進(jìn)行擴(kuò)展,由82C55的C口(地址為FEFE)作為鍵盤的輸入模塊,由82C55的A口(地址為FEFC)字段碼輸入口和B口(地址為FEFD)字位碼輸入口共同組成數(shù)碼管顯示控制模塊,由89C51的P1口作為L(zhǎng)ED燈的顯示模塊,由P3.2作為蜂鳴器的驅(qū)動(dòng)模塊。硬件資源分配名稱實(shí)現(xiàn)的功能房間號(hào)對(duì)應(yīng)的LED燈PB0- PB5住戶開門按鍵LED燈房間號(hào)PB7外接開門按鈕L0101K0輸入0L1201K1輸入1L2301K2輸入2L3401K3輸入3L4501K4輸

17、入4L5601K5輸入5L7開門信號(hào)指示燈K6輸入6 L8102K7輸入7 L9202K8輸入8 L10302K9輸入9 L11 402KA確定鍵 L12502KB撤消鍵 L13602KC退格鍵P3.2接蜂鳴器鍵盤表0123456789確定撤銷退格無無無4.2片系統(tǒng)資源存儲(chǔ)空間分配AT89C51片的數(shù)據(jù)存儲(chǔ)空間的圍是00H-7FH,其中00H-1FH為4組通用工作寄存器區(qū),20H-2FH的16個(gè)單元的128位可進(jìn)行位尋址,30H-7FH為用戶的RAM區(qū),所以,選擇29H-2FH作為滾動(dòng)濾波的地址單元1CH:存放進(jìn)程單元1DH,1EH,1FH:為用戶密碼存儲(chǔ)單元2DH,2EH,2FH:為管理員密

18、碼存儲(chǔ)單元22H:為101601各用戶對(duì)講標(biāo)志位23H:為102602各用戶對(duì)講標(biāo)志位16H 1BH: 六位輸入數(shù)字緩存單元26H.0:為確定鍵標(biāo)志位26H.1: 為撤銷鍵標(biāo)志位26H.2: 為退格鍵標(biāo)志位29H2FH:開關(guān)量與消抖動(dòng)30H37H:顯緩38H3CH:實(shí)時(shí)鐘4EH,4FH:為30s無鍵按下返回子程序的存放新舊態(tài)50H56H:為利用軟件延時(shí)控制單元64H,65H:為鍵盤掃描的新態(tài)和舊態(tài)的存放單元進(jìn)程碼安排:基本時(shí)鐘進(jìn)程:01H 輸房號(hào)進(jìn)程:10H、11H、12H輸密碼進(jìn)程:13H、14H、15H設(shè)時(shí)鐘進(jìn)程:20H25H設(shè)住戶開門密碼:30H35H 第五章、局部程序設(shè)計(jì)說明5.1入口

19、程序初始化(包含數(shù)碼管自檢程序)單片機(jī)上電后,第一步,調(diào)用30ms的延時(shí)程序,使實(shí)驗(yàn)板上的各個(gè)芯片都能完成復(fù)位功能,第二步,讓蜂鳴器響1秒以檢測(cè)蜂鳴器的好壞,接著給八個(gè)數(shù)碼管置亮碼,驅(qū)動(dòng)八個(gè)數(shù)碼管全亮,檢測(cè)數(shù)碼管能否正常顯示,第三步,對(duì)兩片外擴(kuò)的8255芯片的接口模式以與工作方式進(jìn)行初始化,第四步,對(duì)顯示緩沖單元以與存放時(shí)鐘的單元進(jìn)行初始化,以確定上電后八個(gè)數(shù)碼管顯示數(shù)據(jù),第五步,將定時(shí)計(jì)數(shù)器T1賦初值,開啟定時(shí)計(jì)數(shù)中斷,所賦值的初值要實(shí)現(xiàn)定時(shí)計(jì)數(shù)器T1精確定時(shí),在數(shù)碼管上顯示精確時(shí)鐘信號(hào),第六步,對(duì)所用到的存儲(chǔ)單元進(jìn)行初始化,例如,存放用于用戶初始密碼單元(1 DH-1FH),存放用于管理員

20、初始密碼單元(2 DH-2FH),數(shù)碼管緩存單元(30H-37H),標(biāo)志單元(22H,23H),循環(huán)次數(shù)存放單元(50H-56H)。5.2拆字與顯示容送顯緩子程序模塊CZ:MOV A,1CH ;對(duì)進(jìn)程單元容進(jìn)行判斷,只有(1CH)=01H時(shí)才進(jìn)行拆字 CJNE A,#01H,CZN ; MOV R0,#3AH ;顯示容送顯緩子程序(拆字子程序)。置時(shí)鐘數(shù)據(jù)單元首地址(秒單元)MOV R1,#30H ;置顯示緩沖單元首地址(對(duì)應(yīng)于最右顯示位) CZ1:MOV A,R0 ;取當(dāng)前數(shù)據(jù)單元BCD碼 ANL A,#0FH ;保留低4位(個(gè)位) MOV R1,A ;送顯緩當(dāng)前個(gè)位單元 INC R1 ;指

21、向顯緩當(dāng)前十位單元 MOV A,R0 ;再取當(dāng)前數(shù)據(jù)單元BCD碼 ANL A,#0F0H ;保留高4位(十位)SWAP A ;交換到低4位 MOV R1,A ;送顯緩當(dāng)前十位單元 INC R1 ;指向顯緩下一個(gè)個(gè)位單元INC R1 INC R0 ;指向下一個(gè)時(shí)鐘數(shù)據(jù)單元 CJNE R0,#3DH,CZ1;未完繼續(xù) MOV 32H,#10H ;32H單元顯示“-”,對(duì)應(yīng)的值為10H MOV 35H,#10H ;35H單元顯示“-”,對(duì)應(yīng)的值為10HCZN:RET ;子程序返回工作原理 :只有當(dāng)進(jìn)程單元為01H(為顯示時(shí)鐘進(jìn)程),才進(jìn)行拆字,其他進(jìn)程直接把需要顯示的數(shù)據(jù)送到數(shù)碼管顯示緩存單元(30

22、H-37H),拆字時(shí),將實(shí)時(shí)鐘的單元(3AH,3BH,3CH)對(duì)應(yīng)的各自拆完后存放于(30H,31H),(32H,33H),(34H,35H);利用R0指向?qū)崟r(shí)鐘單元,R1指向數(shù)碼管顯示緩存單元,逐次的將時(shí)鐘高低字節(jié)拆開后分別存放于高低位單元。5.3顯示更新子程序模塊源程序如下:DISP:MOV R0,#30H ;顯示更新子程序。置顯示緩沖單元首地址 MOV R3,#01H ;字位碼初值(從最右位起) MOV A,R3DISP1:MOV DPTR,#0FEFDH ; 8255-B口(字位碼輸出口) MOVX DPTR,A ; 輸出當(dāng)前字位碼 JNB 21H.5,DISP2 ;判斷是否有輸入正確

23、管理員密碼,如無跳轉(zhuǎn) MOV A,R0 CJNE A,5FH,DISP2 ;跟5FH中的容比較哪位需要閃爍 21H.6,DISP2 ;判斷該位要顯示還是不顯示 MOV A,#0FFH ;顯示空格 LJMP NEXTPC DISP2:MOV A,R0 ; 取當(dāng)前位顯示數(shù)據(jù)碼 ADD A,#TAB-NEXTPC ; 加TAB與NEXTPC差址 MOVC A,A+PC ; 查表得相應(yīng)字段碼 NEXTPC:MOV DPTR,#0FEFCH ; 8255-A口(字段碼輸出口) MOVX DPTR,A ; 輸出字段碼LCALL D1MS ; 保持顯示1毫秒INC R0 ; 指向下一顯示緩沖單元MOV A,

24、#0FFH ;關(guān)掉段碼MOVX DPTR,AMOV A,R3 ; 取出字位碼 ACC.7,DISP3 ; 判已顯示到最左位否RL A ; 未完,字位碼左移1位MOV R3,A ; 回存新字位碼LJMP DISP1 ; 轉(zhuǎn)下一位的顯示驅(qū)動(dòng)DISP3:RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;顯示字段碼表。"0""9" DB 0BFH,0FFH,00H;"-","空格","全亮"工作原理 : 顯示模塊的作用是將顯示緩存的單元(30

25、H37H)中的容在數(shù)碼顯示管上顯示出來。首先將顯示緩存第一個(gè)單元中的容(30H)的字段碼送入到82C55的B口,之后將右邊第一位的位碼送入到82C55的A口,則30H單元中的容可以顯示在顯示數(shù)碼管的最左邊,在利用循環(huán)控制語句就可以將30H37H中的容從左到右依次顯示在數(shù)碼管上了。5.4消抖動(dòng)子程序用幾個(gè)連續(xù)的單元存放最近幾次的電平值,比較幾個(gè)電平值,若相等則存起來與原態(tài)相比較,若新態(tài)與原態(tài)不等則認(rèn)為一次電平變化。源程序清單如下:XDPB : MOV 2FH,2EH ;PB口輸入并消抖子程序。原新態(tài)存為前態(tài) MOV 2DH,2CH ;前4次輸入的電平值前推至2AH2DH單元 MOV 2CH,2B

26、H MOV 2BH,2AH MOV 2AH,29H ;29H-2FH遞存 MOV DPTR,#0FDFDH ;輸入PB07新電平值存29H單元 MOVX A,DPTR ;取P0到P7的值 MOV 29H,A ;存入首單元 MOV A,2DH ;比較近5次輸入的電平值不一致則新態(tài)照舊 CJNE A,2CH,XDR CJNE A,2BH,XDR CJNE A,2AH,XDR CJNE A,29H,XDR ;取29H-2CH與2DH分別比較 MOV 2EH,A ;遞存 XDR:RET ;循環(huán)子程序說明: 執(zhí)行這條子程序時(shí),先把前4次輸入的電平值前推至2AH2DH單元,然后從地址0FDFDH中讀取P0

27、到P7的值,然后對(duì)29H,2AH,2BH,2CH,2DH這五個(gè)單元進(jìn)行比較,只有這五個(gè)單元的容一樣時(shí),才能把2DH中的容存入2EH中,這樣就比較有效地避免開關(guān)量抖動(dòng)的影響了。5.5 有按鍵時(shí)發(fā)出按鍵聲子程序AJYHANDLE: MOV A,65H ;判斷是否是(65H)=10H且(64H)10H,有則說明有新鍵按下,否則無鍵按下直接跳出子程序CJNE A,#10H,AHH MOV A,64HCJNE A,#10H,AHHCLR P3.2 DJNZ 50H, AHH ;軟件延時(shí)30ms,主流程大概10msMOV 50H,#3SETB P3.2 AHH:RET工作原理 :首先先識(shí)別有鍵按下,但(6

28、5H)=10H且(64H)10H才是有鍵按下,再對(duì)蜂鳴器進(jìn)行清0,利用軟件延時(shí),50H單元控制延時(shí)時(shí)間(主流程大約為10ms),延時(shí)30ms。5.6 無按鍵后30秒自動(dòng)返回到時(shí)鐘狀態(tài)WCZ:MOV A,1CH ;判斷3AH的前后態(tài)來計(jì)時(shí) CJNE A,#01H,WCZK MOV 4DH,#30 RET WCZK:MOV R6,65H CJNE R6,#10H,WCZ3MOV R6,64H CJNE R6,#10H,WCZ3 MOV 4EH,3AH MOV A,4EH CJNE A,4FH,WCZ1 RET WCZ1:MOV 4FH,4EHDJNZ 4DH,WCZ2 MOV 1CH,#01H M

29、OV 3EH,#80H MOV P1,#0FFH WCZ3:MOV 4DH,#20 WCZ2:RET 工作原理 :只有在非時(shí)鐘顯示情況下,利用秒單元3AH,4EH,4 FH用于存放實(shí)時(shí)鐘的新舊態(tài),當(dāng)新舊態(tài)不同時(shí),說明有1s時(shí)間,在利用一個(gè)控制次數(shù)的4DH來控制延時(shí)時(shí)間5.7定時(shí)器T1中斷服務(wù)子程序:IT1P:PUSH ACC ;定時(shí)器1服務(wù)子程序。保護(hù)現(xiàn)場(chǎng) PUSH PSW INC 38H ;每200uS加1 MOV A,38H CJNE A,#50,DONE ;滿10mS? MOV 38H,#0;200uS計(jì)數(shù)單元清0 INC 39H ;每10mS加1 MOV A,39H CJNE A,#1

30、00,DONE ;滿1S? MOV 39H,#0 ;10mS計(jì)數(shù)單元清0 MOV A,3AH ;秒單元(按BCD碼)加1ADD A,#1 DA AMOV 3AH,A CJNE A,#60H,DONE ;滿1分鐘? MOV 3AH,#0 ;秒單元清零 MOV A,3BH ;分鐘單元(按BCD碼)加1ADD A,#1 DA AMOV 3BH,A CJNE A,#60H,DONE ;滿1小時(shí)? MOV 3BH,#0 ;分鐘單元清零 MOV A,3CH ;小時(shí)單元(按BCD碼)加1ADD A,#1 DA AMOV 3CH,A CJNE A,#24H,DONE ;滿24小時(shí)? MOV 3CH,#0 ;小

31、時(shí)單元清零 DONE:POP PSW ;恢復(fù)現(xiàn)場(chǎng)POP ACC RETI ;中斷返回工作原理 :中斷服務(wù)程序流程,其中每277.77777778us中斷一次對(duì)38H單元進(jìn)行加1.當(dāng)38H單元滿36時(shí),就對(duì)39H單元容加1,同時(shí)對(duì)38H單元清0,重新計(jì)數(shù)。當(dāng)39H單元的容滿100時(shí),就對(duì)3AH單元容加1,同時(shí)對(duì)39H單元清0,重新計(jì)數(shù).當(dāng)3AH單元的容滿60時(shí),就對(duì)3BH單元容加1,同時(shí)對(duì)3AH單元清0,重新計(jì)數(shù). 當(dāng)3BH單元的容滿60時(shí),就對(duì)3CH單元容加1,同時(shí)對(duì)3BH單元清0,重新計(jì)數(shù). 當(dāng)3CH單元的容滿24時(shí),只對(duì)3CH單元容清0,回到初始繼續(xù)這樣循環(huán)下去。5.8房間處理模塊 工作原

32、理:對(duì)應(yīng)房號(hào)輸入處理的流程圖如上所示,通過在不同的進(jìn)程里面來判斷是否是功能鍵(確定鍵,退格鍵,撤消鍵)或者數(shù)字鍵(0-9),在01H進(jìn)程里,是功能鍵時(shí)直接返回(進(jìn)程改為01H),數(shù)字鍵時(shí),將數(shù)據(jù)送到數(shù)據(jù)緩存單元16H(進(jìn)程改為01H) ;在10H進(jìn)程里,是功能鍵的確定鍵時(shí),直接返回,進(jìn)程改為01H,為撤消鍵時(shí),直接返回(進(jìn)程改為01H),為退格鍵時(shí),也直接返回(進(jìn)程改為01H),為數(shù)字鍵時(shí),數(shù)據(jù)往高位滾存(到達(dá)17H),進(jìn)程加1(變?yōu)?1H)。以此,在不同進(jìn)程里判斷不同按鍵后,做出相應(yīng)的動(dòng)作,當(dāng)進(jìn)程為12H時(shí),按下確定鍵時(shí),要注意比對(duì)房間號(hào),比對(duì)正確就開啟對(duì)講信號(hào)燈(進(jìn)程碼變?yōu)?1H),為其他

33、鍵時(shí),做出其他的相應(yīng)動(dòng)作。5.9密碼處理子模塊工作原理:密碼輸入流程圖如上所示,它是建立在房間處理模塊的基礎(chǔ)之上,在進(jìn)程為12H時(shí),還繼續(xù)輸入數(shù)字鍵時(shí),必為要輸入用戶密碼或者管理員密碼,一次將數(shù)字繼續(xù)往高地址的數(shù)據(jù)緩存單元緩存后返回(進(jìn)程碼加1)。依次下去,退格鍵時(shí),直接將數(shù)據(jù)從高位往低位滾存,最低位覆蓋掉(進(jìn)程碼減1);撤消鍵時(shí),直接返回(進(jìn)程碼為01H)。當(dāng)進(jìn)程為15H時(shí),按下確定鍵時(shí),先進(jìn)行用戶密碼的比對(duì),相符時(shí)開啟相應(yīng)的對(duì)講信號(hào)燈(進(jìn)程碼變?yōu)?1H), 不符時(shí)再進(jìn)行管理員密碼的核對(duì),相符時(shí)進(jìn)入時(shí)鐘修改界面,不符時(shí)直接告警(進(jìn)程碼變?yōu)?1H)后返回。5.10時(shí)鐘修改子模塊工作原理:時(shí)鐘修

34、改模塊流程圖如上所示,也是通過在不同的進(jìn)程里面進(jìn)行判斷相應(yīng)鍵后作出不同的動(dòng)作,在時(shí)鐘修改進(jìn)程(20H-25H),一旦確定鍵按下就要直接保存修改數(shù)據(jù)于數(shù)據(jù)緩存單元,按下數(shù)字鍵時(shí),要在不同進(jìn)程里判斷輸入的數(shù)據(jù)是否符合實(shí)際情況,不符時(shí)不讓該位執(zhí)行修改并停留在該位修改的位置,等待修改。5.10用戶密碼修改子模塊工作原理:在設(shè)時(shí)鐘進(jìn)程,20H25H,按下確定鍵,則改進(jìn)程為30H,每輸入1位數(shù)字,則進(jìn)程碼加1,進(jìn)程為35H時(shí),再輸1位數(shù)字,進(jìn)程仍為35H。進(jìn)程35H時(shí),按下確定鍵,則保存住戶開門密碼,進(jìn)程改為設(shè)管理員密碼40H,30H 35H時(shí),按下取消鍵則不保存退出,進(jìn)程改為01H。第六章、系統(tǒng)功能與操

35、作說明6.1系統(tǒng)功能描述1總初始化自檢功能:把由keil軟件生成的.HEX文件下載到實(shí)驗(yàn)板上單板機(jī)中,先上電等待各芯片均上電復(fù)位后自檢,先是蜂鳴器響1S后關(guān)閉, U3和U5芯片初始化,L8-L15點(diǎn)亮,L0-L7點(diǎn)亮1S后熄滅,數(shù)碼管每段全亮大約1S檢測(cè)設(shè)備是否完好。2.自檢完后顯示時(shí)鐘初始為08:59:45,如果不進(jìn)行任何操作,一直顯示時(shí)鐘。當(dāng)你輸入正確用戶密碼,P1.7會(huì)亮,延時(shí)5s后熄滅,輸入位數(shù)不符或密碼不正確都會(huì)報(bào)警。密碼在界面上前三位可看見,后三位看不見(用“”表示)。也可以通過按下P B7(外接開門按鈕)來使P1.7亮,同樣延時(shí)5s后熄滅。3.用鍵盤做輸入時(shí),按下鍵的瞬間,會(huì)發(fā)出

36、短促的按鍵聲。4.設(shè)置了取消鍵,按下此鍵無論數(shù)碼管顯示什么,都會(huì)返回時(shí)鐘顯示。5.輸入正確的房間號(hào)(12間)會(huì)讓對(duì)應(yīng)的LED(對(duì)講門鈴)亮1s后熄滅,此后再按下P B6也可使P1.7點(diǎn)亮,同樣5s后會(huì)自動(dòng)熄滅。沒有輸入正確房間號(hào),按下P B6,P1.7不會(huì)亮。6.當(dāng)輸入出錯(cuò)時(shí)會(huì)報(bào)警,就是蜂鳴器響1s后停止。7.無任何操作時(shí),經(jīng)過30s會(huì)自動(dòng)返回時(shí)鐘顯示。8.按下輸管理員按鍵時(shí),就可以輸入管理員密碼,如果輸入正確,變成時(shí)鐘界面,可通過鍵盤進(jìn)行修改時(shí)間。改完時(shí)間后按確定鍵,如果修改正確,則進(jìn)入住戶開門密碼參數(shù)界面,否則返回時(shí)鐘繼續(xù)修改。進(jìn)入住戶開門密碼參數(shù)界面,當(dāng)你通過鍵盤輸入六位數(shù)時(shí),再按確定鍵,就把你剛才輸入的六位數(shù)變成了用戶密碼,如果不想改用戶密碼按取消鍵即可返回時(shí)鐘顯示。第七章、存在問題與程序改進(jìn)說明 問題1:在輸入按鍵后,只能執(zhí)行一輪 解決方法:出現(xiàn)這種問題的主要原因是用來作標(biāo)志位的存儲(chǔ)單元在用完之后沒有與時(shí)的清零,由于執(zhí)行第一輪執(zhí)行時(shí),在初始化時(shí)已經(jīng)將標(biāo)志位清零了,所以可以正常執(zhí)行,但是在后面的程序中,如果沒有軟件將它清零,會(huì)導(dǎo)致該模塊一直執(zhí)行,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論