畢業(yè)設(shè)計(論文)-基于AT89C51單片機(jī)的六路智能搶答器的設(shè)計.doc
《畢業(yè)設(shè)計(論文)-基于AT89C51單片機(jī)的六路智能搶答器的設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計(論文)-基于AT89C51單片機(jī)的六路智能搶答器的設(shè)計.doc(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 2010屆本科生畢業(yè)論文 學(xué) 號:成 績:單片機(jī)智能搶答器的設(shè)計院 部: 電子信息工程學(xué)院 專 業(yè): 電子信息工程 姓 名: 指導(dǎo)教師: 二一年一月畢業(yè)論文誠信聲明本人鄭重聲明:所呈交的畢業(yè)論文單片機(jī)智能搶答器的設(shè)計是本人在指導(dǎo)老師的指導(dǎo)下,獨(dú)立研究、寫作的成果。論文中所引用是他人的無論以何種方式發(fā)布的文字、研究成果,均在論文中以明確方式標(biāo)明。本聲明的法律結(jié)果由本人獨(dú)自承擔(dān)。 畢業(yè)論文作者簽名: 年 月 日摘 要近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個核心部件來使用,作為嵌入式控制系統(tǒng)的主
2、體與核心,代替了傳統(tǒng)的控制系統(tǒng)的常規(guī)電子線路。但僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。本設(shè)計是以六路搶答為基本理念,應(yīng)用以單片機(jī)作為核心部件進(jìn)行邏輯控制及信號的產(chǎn)生,考慮到依需設(shè)定限時回答的功能,利用AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計時,同時使數(shù)碼管能夠正確地顯示時間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶
3、答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒記時顯示,滿時后系統(tǒng)計時自動復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。由于計算機(jī)的普及和電子信息技術(shù)的迅猛發(fā)展,對智能搶答器有了更高的要求,如何有效的保證許多公開競爭場合裁決的公平,公正。單片機(jī)智能搶答器為之提供了條件和發(fā)展空間。建立一個價格適宜、智能化、自動化、數(shù)字化等特點(diǎn)的智能搶答器具有重要意義?!娟P(guān)鍵詞】單片機(jī);智能;六路;搶答AbstractWith the rapid development of science and technology in recent years, SCM applications are
4、deepening at the same time promote ,the growing of traditional control detection technology updates. In real-time detection and automatics control of the microcomputer application sys- tem, the microcontroller is often used as a core component, as the main embedded control to systems and core, inste
5、ad of the traditional control system of conventional electronic circuits. But only SCM knowledge is not enough, should be based on specific hardware structure of hardware and software combination to be improved. This design is based on six road to answer in the basic concepts used to MCU as the core
6、 co- mponents for logic control and signal generation, taking into account the need to set timebou- nd to answer according to the function, using AT89C51 microcontroller and external interface of the answer in his system, using SCM Timer / Counter Timing and count of the principle, It hardware and s
7、oftware together organically, allowing the system to correctly time, and while the digital control to correctly display the time. Switching to do with the keyboard output The speaker prompts occur. At the same time the system can be achieved: The answer in his place, only to be effective after the c
8、ommencement of answer in his place, if the answer in his place before the answer in his place at the beginning null and void; to answer in a limited time and answer the question time can be set in 1-99s; can display is an effective answer in which pla- yers and Invalid answer in the correct button p
9、rompt after the music; time and answer the qu- estions to answer in time for ups shows, full-time hours after the system automatically reset and master reset forces; keys locked in the effective state, the button is not illegal. Due to the proliferation of computers and electronic information techno
10、logy, the rapid devel- opment of smart Responder have higher requirements, how to effectively guarantee open the competition in many occasions, the ruling fair and just. SCM Smart Responder furnish the c- onditions and development. The establishment of an affordable, intelligent, automated, digital
11、and other characteristics of the intelligent Responder of great significance. Key words: SCM;intelligence;For 6 Player;To answer first目 錄引 言1第1章 方案論證21.1 系統(tǒng)的主要功能21.1.1 系統(tǒng)功能分析31.1.2 搶答器的工作流程31.2 器件選型方案51.2.1 控制器模塊的選取51.2.2 顯示器模塊的選取51.3 AT89C51的簡介及使用61.3.1 89系列單片機(jī)的概況61.3.2 AT89C51單片機(jī)的內(nèi)部結(jié)構(gòu)圖71.3.3 AT89C
12、51特殊功能寄存器81.3.4 AT89C51單片機(jī)使用方法9第2章 系統(tǒng)總體方案的設(shè)計112.1 硬件電路的設(shè)計112.2 時鐘頻率電路的設(shè)計122.3 復(fù)位電路的設(shè)計122.4 顯示電路的設(shè)計132.4.1 LED數(shù)碼管顯示原理132.5 鍵盤掃描電路的設(shè)計142.5.1 鍵盤抖動的軟件處理142.6 發(fā)聲報警152.7 系統(tǒng)復(fù)位152.8 電源設(shè)計16第3章 軟件設(shè)計173.1軟件任務(wù)分析173.2主程序系統(tǒng)結(jié)構(gòu)圖183.3主要程序說明19總 結(jié)27致 謝28參考文獻(xiàn)29附錄:硬件系統(tǒng)原理圖30 單片機(jī)智能搶答器的設(shè)計引 言單片機(jī)是指一個集成在一塊芯片上的完整計算機(jī)系統(tǒng)。盡管他的大部分功
13、能集成在一塊小芯片上,但是它具有一個完整計算機(jī)所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會具有外存。同時集成諸如通訊接口、定時器,實(shí)時時鐘等外圍設(shè)備。而現(xiàn)在最強(qiáng)大的單片機(jī)系統(tǒng)甚至可以將聲音、圖像、網(wǎng)絡(luò)、復(fù)雜的輸入輸出系統(tǒng)集成在一塊芯片上。隨著電子技術(shù)的發(fā)展,單片機(jī)的應(yīng)用已經(jīng)滲透到國民經(jīng)濟(jì)的各個部門和領(lǐng)域,現(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會集成有單片機(jī)。手機(jī)、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機(jī)。而個人電腦中也會有為數(shù)不少的單片機(jī)在工作。汽車上一般配備40多部單片機(jī)。它已成為工業(yè)控制領(lǐng)域、智能儀器儀表、尖端武器、
14、日常生活中最廣泛使用的計算機(jī)。在本設(shè)計中,單片機(jī)識別多路搶答信號采用外中斷,當(dāng)外中斷信號來臨時執(zhí)行中斷處理程序,將搶答標(biāo)志位置位。即所謂的掃描。同時電子智能搶答器用單片機(jī)控制,功能分別為計分和搶答。計分的工作原理是采用最小系統(tǒng),用4x4鍵盤來輸入是選手需要加減進(jìn)行分?jǐn)?shù)的加減輸入。主板上的6個數(shù)碼顯示,加幾分的數(shù),按確定鍵后分?jǐn)?shù)值從I/O口P2傳到計分器顯示模塊上再通過數(shù)碼管驅(qū)動模塊顯示。搶答的工作原理是采用單片機(jī)最小系統(tǒng),用查詢式鍵盤進(jìn)行搶答。采用鎖存顯示組號。搶答器也可稱為第一信號鑒別器,利用了單片機(jī)本身的優(yōu)勢使競賽達(dá)到公平,公正,公開。因此具有重要意義。第1章 方案論證1.1 系統(tǒng)的主要功
15、能本系統(tǒng)是借用單片機(jī)采用模塊化設(shè)計的智能搶答器,主控與參賽者設(shè)為終端分系統(tǒng)。參賽者分系統(tǒng)設(shè)有:搶答按紐、計時計分顯示、提示功能等(根據(jù)需要可另設(shè)或多設(shè)相關(guān)功能);主控分系統(tǒng)有:開始與結(jié)束控制按鈕、計分功能、各種相關(guān)顯示調(diào)控功能等(根據(jù)需要也可另設(shè)或多設(shè)相關(guān)功能)。參賽者系統(tǒng),除享有搶答按紐的權(quán)利功能外,還有人性化的提示功能和時間提示功能,也可設(shè)定由參賽者終端表現(xiàn)的趣味性功能等;主控系統(tǒng)的控制按鈕做開始與結(jié)束控制,根據(jù)活動參賽者的層次,對提前掄答者的行為設(shè)定為非法或阻隔,若設(shè)有非法搶答控制功能時,在主控處帶有公示性顯示的非法掄答者的臺位號,對搶答限時及回答問題限時設(shè)為倒計時式,并有公示性顯示。搶
16、答器同時供6名選手或6個代表隊比賽,分別用6個按鈕S1S6表示。設(shè)置一個系統(tǒng)清除和搶答控制按扭,該按扭由主持人控制。搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,并在LED數(shù)碼管上顯示,同時揚(yáng)聲器發(fā)出報警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。計分器的工作原理是采用最小系統(tǒng),用4x4鍵盤來輸入是選手需要加減進(jìn)行分?jǐn)?shù)的加減輸入。主板上的6個數(shù)碼顯示,加幾分的數(shù),按確定鍵后分?jǐn)?shù)值從I/O口P2傳到計分器顯示模塊上再通過數(shù)碼管驅(qū)動模塊顯示。 主 控 制 器LED顯示發(fā)聲器鍵盤顯示時鐘頻率復(fù)位電路 圖1-1 系統(tǒng)主要功能模塊本系統(tǒng)采用模塊化設(shè)計智能
17、搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個搶答按鈕。主持人有開始和結(jié)束復(fù)位鍵。在后臺主持人可以修改,搶答時間和選手回答問題的時間設(shè)置,搶答時間為連續(xù)可調(diào)的09秒??梢酝ㄟ^軟件編程自行修改時間,主持人按鍵開始后,選手開始搶答為有效,數(shù)碼顯示屏顯示搶答時間倒計時和選手號,在最后五秒揚(yáng)聲器發(fā)生提示。如果主持人沒有按下開始鍵而選手就搶答視為犯規(guī),數(shù)碼顯示屏顯示犯規(guī)者的代號,揚(yáng)聲器持續(xù)發(fā)生。主持人可按鍵結(jié)束,新一輪搶答開始。系統(tǒng)的主要功能模塊方框圖如1-1所示。搶答主板:搶答主板是整個搶答器的核心,其關(guān)鍵是單片機(jī)AT89C51。內(nèi)部電路設(shè)計用C語言與匯編語言編寫。它完成了時間參數(shù)的設(shè)定,搶按號碼的譯碼
18、,保存;顯示;輸出,搶按及計分功能等。顯示及指示:本設(shè)計中,有六個共陽數(shù)碼管。可用于顯示時間,分?jǐn)?shù),搶答號碼。主持人依次按下開始鍵后開始搶答??梢該尠矗喝粲羞x手在規(guī)定時間內(nèi)搶按成功,則可以答題,數(shù)碼管顯示搶答時間的同時也顯示選手號碼。若在按開始鍵前搶答表示違規(guī),發(fā)出報警聲。1.1.1 系統(tǒng)功能分析1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效。2、搶答限定時間和回答問題的時間可以通過軟件編程自己設(shè)定的。3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有聲音提示。4、搶答時間和回答問題時間倒記時顯示,時間完后系統(tǒng)可以進(jìn)行復(fù)位。5、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。1.1.
19、2 搶答器的工作流程搶答器識別搶答信號可用外部中斷的方式,當(dāng)外中斷信號到來時,將強(qiáng)答標(biāo)志位置位,同時內(nèi)部寄存器工作,記錄有關(guān)時間并產(chǎn)生超時信號。在整個搶答器工作過程中,顯示電路、語音電路等還要根據(jù)現(xiàn)場的實(shí)際情況向外電路輸出相應(yīng)信號。它的工作流程如圖1-2所示,下面分別予以介紹。掃描第一組第二組第六組顯示組號 報警聲是是是否開始化化化否圖1-2 搶答器工作流程搶答器的工作過程:1、如果想調(diào)節(jié)搶答時間或答題時間,可以在軟件編程的時候?qū)⑾嚓P(guān)的變量控制設(shè)定好,調(diào)整范圍為連續(xù)可調(diào)的09s。2、主持人按搶答開始鍵,并立刻進(jìn)入搶答倒計時,如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進(jìn)入回答倒計時,不進(jìn)行搶
20、答查詢,所以只有第一個按搶答的選手有效。同時數(shù)碼管鎖存相應(yīng)的選手號。直到主持人將號碼清零然后開始下一輪的搶答。3、如果主持人未按搶答開始鍵,而有人按了搶答按鍵,犯規(guī)搶答,則顯示報警聲,直到按下停止 鍵為止??偠灾菊n題利用AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng)設(shè)計了搶答器,該搶答器增加了新功能、提高了系統(tǒng)的可靠性、簡化了電路結(jié)構(gòu)、節(jié)約了成本,是一個實(shí)用的工程設(shè)計。1.2 器件選型方案1.2.1 控制器模塊的選取微控制器是整個系統(tǒng)的核心部件,控制對顯示、搶答、音樂、計分等??刂破鞯倪x擇主要有以下兩鐘方案。方案一:采用FPGA(現(xiàn)場可編程門列陣)或PLC器件作為系統(tǒng)的控制器。FPGA可以
21、實(shí)現(xiàn)各種復(fù)雜的邏輯功能,規(guī)模大,密度高,它將所有器件集成在一塊芯片上,減小了體積,提高了穩(wěn)定性,并且可以應(yīng)用EDA軟件仿真、調(diào)試,易于進(jìn)行功能擴(kuò)展。FPGA采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)模實(shí)時系統(tǒng)的控制核心。PLC是一種新型的通用自動化控制裝置,它將傳統(tǒng)的繼電器控制技術(shù)、計算機(jī)技術(shù)和通訊技術(shù)融為一體,具有控制功能強(qiáng),可靠性高,使用靈活方便,但由于本設(shè)計對數(shù)據(jù)處理的速度要求不高,F(xiàn)PGA與PLC的高速處理的優(yōu)勢得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時由于芯片的引腳較多,實(shí)物硬件電路板布線復(fù)雜,加重了電路設(shè)計和實(shí)際焊接的工作。方案二:利用KeilC開發(fā)平臺
22、,采用ATMEL公司的AT89C51作為系統(tǒng)控制器的CPU方案。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可以用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個領(lǐng)域應(yīng)用廣泛。基于以上分析擬訂方案二。1.2.2 顯示器模塊的選取顯示器主要負(fù)責(zé)數(shù)據(jù)的輸出顯示。我們考慮有以下兩種顯示方案。方案一:使用液晶屏顯示時間。液晶顯示屏(LCD)具有輕薄短小、低耗電量、無輻射危險,平面直角顯示以及影像穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好,分辨率高,抗干擾能力強(qiáng)的特點(diǎn)。但由于只需要顯示時間等這樣的數(shù)字,信息量比較少,且由于液晶是以點(diǎn)陣的模式顯示各種符號,需要利
23、用控制芯片創(chuàng)建字符庫,編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時,不能有靜電干擾,否則易燒壞液晶顯示芯片,不易維護(hù)。方案二:在使用傳統(tǒng)的數(shù)碼管顯示。數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護(hù),同時其精度高,稱量快,精確可靠,操作簡單。數(shù)碼顯示是采用七段BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。根據(jù)以上的論述,采用方案二。1.3 AT89C51的簡介及使用1.3.1 89系列單片機(jī)的概況AT89C51單片機(jī)是ATMAL公司89系列單片機(jī)的一種8位Flash單片機(jī)。它最大特點(diǎn)是片內(nèi)含有Flash存儲器,用途十分
24、廣泛,特別是在生產(chǎn)便攜式商品,手提式儀器等方面,有著十分廣泛的應(yīng)用。(1) 89系列單片機(jī)的特點(diǎn)89系列單片機(jī)是以8031為內(nèi)核的產(chǎn)品,它與51系列單片機(jī)是兼容的。89系列單片機(jī)具有以下特點(diǎn):a) 內(nèi)部含有Flash存儲器,使用戶在開發(fā)過程中十分容易修改程序縮短系統(tǒng)的開發(fā)周期??梢灾貜?fù)多次編程,可根據(jù)需要對內(nèi)部程序進(jìn)行更新或升級。b) 89系列單片機(jī)的引腳和AT80C51引腳座兼容,用89系列單片機(jī)可以代替同檔次的AT80C51單片機(jī),不需要對外圍電路進(jìn)行改動。c) 89系列單片機(jī)采用靜態(tài)時鐘方式,可以節(jié)省電能,降低便攜式設(shè)備的功耗。(2) 89系列單片機(jī)的結(jié)構(gòu)簡介89系列單片機(jī)的內(nèi)部結(jié)構(gòu)與A
25、T80C51相近,主要有以下部件:1 8031CPU 2 振蕩電路 3 總線控制部件4 中斷控制部件 5 片內(nèi)Flash存儲器 6 片內(nèi)RAM7 并行I/O接口 8 定時器 9 串行I/O接口89系列的各種型號單片機(jī),內(nèi)部差別很大。例如,AT89C1051片內(nèi)Flash存儲器只有1KB,而AT89C52、AT89LV52和AT89S8252的片內(nèi)Flash存儲器有8KB。AT89S8252的結(jié)構(gòu)最復(fù)雜,它的內(nèi)部含有標(biāo)準(zhǔn)的串行口,還有一個串行的外圍接口SPI,Watchdog定時器,雙數(shù)據(jù)指針等部件,以及電源下降的中斷恢復(fù)功能。89系列的單片機(jī)一共有五種型號,分別為AT89C51,AT89LV5
26、1,AT89C52,AT89LV52和AT89S8252,其中AT89LV51和AT89LV52分別是AT89C51和AT89C52的低壓產(chǎn)品,最低電壓可以低2.7V,AT89C1051和AT89C2051則是抵擋的低壓產(chǎn)品,只有20根引腳。89系列單片機(jī)的型號編碼中字母的意義是:AT表示該器件是ATMEL公司的產(chǎn)品,C表示該器件是CMOS產(chǎn)品,LV表示該器件是低電壓產(chǎn)品,S表示該器件含可以下載的Flash存儲器。AT89C51是89系列單片機(jī)的標(biāo)準(zhǔn)型,它是與MSC-51系列單片機(jī)兼容的。在內(nèi)部含有4KB或8KB可重復(fù)編程的Flash存儲器,可進(jìn)行1000次擦寫操作。全靜態(tài)工作為0-24MHZ
27、,有3級程序鎖存器,內(nèi)部含有128-256字節(jié)的RAM,有32條可編程I/O口線,2-3個16位定時/計數(shù)器,6-8個中斷源,通用的串行接口,低電壓空閑及電源下降方式。AT89C51是基本型,具有4KB的Flash存儲器,128字節(jié)的片內(nèi)RAM,32條可編程I/O口,兩個16位定時/計數(shù)器,6個中斷源,3位存儲器加密,一個可編程串行接口。AT89C52在AT89C52的基礎(chǔ)上,增加了一個定時/計數(shù)器,2個中斷源,128字節(jié)的片內(nèi)RAM,4KB的Flash存儲器。1.3.2 AT89C51單片機(jī)的內(nèi)部結(jié)構(gòu)圖AT89C51單片機(jī)內(nèi)部由CPU、4KB的FPEROM ,128B的RAM,兩個16位的定
28、時/計數(shù)器T0和T1,4個8位的I/O端P0、P1、P2、P3等組成。單片微機(jī)內(nèi)部最核心的部分是CPU。CPU主要功能是產(chǎn)生各種控制信號,控制存儲器、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算以及位操作處理等,CPU按其功能可分為運(yùn)算器和控制器兩部分??刂破饔沙绦蛴嫈?shù)器PC、指令儲存器、指令譯碼器、實(shí)時控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進(jìn)行譯碼,通過實(shí)時控制電路,在規(guī)定的時刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運(yùn)算器由算術(shù)邏輯器部件ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW,BCD碼運(yùn)算調(diào)整電路等組成。如圖
29、1.3所示: 通道2驅(qū)動器通道2驅(qū)動器通道0驅(qū)動器程序地址寄存器程序計數(shù)器EPROM RAM地址寄存器B寄存器ACCTMP2ALUTMP1PSW堆棧指針中斷,串行口定時器邏輯DPTRPC通道3鎖存器通道1鎖存器通道1驅(qū)動器器通道3驅(qū)動器器P1.0-P1.7P3.0-P3.7定時和控制邏輯指令寄存器OSCP0.0-P0.7緩沖器RAW通道0驅(qū)動器P2.0-P2.7圖1-3 MCS-51結(jié)構(gòu)框圖1.3.3 AT89C51特殊功能寄存器特殊功能寄存器也稱專用寄存器,是具有特殊功能的所有寄存器的集合,簡稱SFR(Special Function Register)。特殊功能寄存器共含有22個不同寄存器
30、。它們的地址分配在80HFFH中,即在RAM地址中。雖然特殊功能寄存器地址在80HFFH之中,但在80HFFH的地址單元中,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的,如果對這些單元進(jìn)行操作,得到的是一些隨機(jī)數(shù),而寫入則無效。所以,用戶編程時不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元,它們是公司留待將來開發(fā)新產(chǎn)品時使用的。這些寄存器的名稱和地址見表1.1表1.1 AT89C51特殊功能寄存器列表 注:帶*號的特殊功能寄存器都是可以位尋址的寄存器1.3.4 AT89C51單片機(jī)使用方法AT89C51是一種低功耗、高性能的含有4KB閃速可編程電擦除只讀存儲器(FPEROMFl
31、ash Programmable and Erasable Read Only Memory)的8位CMOS微控制器,使用高密度、非易失存儲技術(shù)制造,并且與80C51指令系統(tǒng)和引腳完成兼容。芯片上的FPEROM允許在線或采用通用的非易失存儲編程器對程序存儲器重復(fù)編程。(1)AT89C51的主要性能包括:AT89C51與MCS51控制器系列產(chǎn)品兼容,片內(nèi)有4K可在線重復(fù)編程閃速電擦除存儲器(Flash Memory),存儲器可循環(huán)寫入/擦除1000次;存儲器數(shù)據(jù)保存時間可達(dá)10年;工作電壓范圍寬:Vcc可由2.7V到6V;全靜態(tài)工作可由0Hz到16MHz;程序存儲器具有3級鎖存保護(hù);128*8位
32、內(nèi)部RAM;32條可編程I/O線;兩個16位定時器/計數(shù)器;中斷結(jié)構(gòu)具有5個中斷源和2個中斷優(yōu)先級;可編程全雙工串行通信;空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲內(nèi)容。(2)FPEROM的編程:AT89C51的I/O口P0、P1、P2和P3除具有與80C51相同的一些性能和用途外,在FPEROM編程時,P0口接收代碼字節(jié),并在程序檢驗時輸出代碼字節(jié),但在程序校驗時需要外部上拉負(fù)載電阻,在FPEROM編程和程序校驗期間,P1口接收低位地址字節(jié),P2口接收高位地址字節(jié)和一些控制信號,P3口也接收一些FPEROM編程和校驗用的信號,此時ALE/PROG引腳是編程脈沖輸入(PROG)端,在FPEROM編程
33、期間,如果選擇12V編程電壓、那么EA/Vpp引腳也允許接受12V編程電壓(Vpp)。第2章 系統(tǒng)總體方案的設(shè)計2.1 硬件電路的設(shè)計一般說來,一個控制系統(tǒng)的設(shè)計主要分硬件設(shè)計與軟件設(shè)計。根據(jù)它的工作原理與技術(shù)性能。硬件設(shè)計要畫出它的原理圖,電路板圖,合理選擇元器件。然后對硬件進(jìn)行調(diào)試、測試,以達(dá)到設(shè)計要求。從時間上看,硬件設(shè)計的絕大部分工作量是在最初階段,到后期往往還要做一些修改。只要技術(shù)準(zhǔn)備充分,硬件設(shè)計的大返工是比較少的,軟件設(shè)計的任務(wù)貫徹始終,到中后期基本上都是軟件設(shè)計任務(wù),隨著集成電路技術(shù)的飛速發(fā)展,各種功能很強(qiáng)的芯片不斷出現(xiàn),使硬件電路的集成度越來越高,硬件設(shè)計的工作量在整個項目中
34、的所占的比重逐漸下降。為使硬件電路設(shè)計盡可能合理,應(yīng)注意以下幾方面:(1) 盡可能采用功能強(qiáng)的芯片,以簡化電路,功能強(qiáng)的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價格不斷下降,并不一定比若干普通芯片價格的總和高。(2) 留有設(shè)計余地。在設(shè)計硬件電路時,要考慮到將來修改擴(kuò)展的方便。因為很少有一錘定音的電路設(shè)計,如果現(xiàn)在不留余地,將來可能要為一點(diǎn)小小的修改或擴(kuò)展而被迫進(jìn)行全面返工。(3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計采用AT89C51單片機(jī)。(4) RAM空間,AT89C51內(nèi)部RAM不多,當(dāng)要增強(qiáng)軟件數(shù)據(jù)處理功能時,往往覺得不足。如果系統(tǒng)配置了外部RAM,則建
35、議多留一些空間。如選用8155作I/O接口,就可以增強(qiáng)256字節(jié)RAM.如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的RAM,如6264,62256等。隨著軟件設(shè)計水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級換代。只要在硬件電路設(shè)計初期考慮到這一點(diǎn),就應(yīng)該為系統(tǒng)將來升級留足夠的RAM空間,哪怕多設(shè)計一個RAM的插座,暫不插芯片也好。(5) I/O端口:在樣機(jī)研制出來后進(jìn)行現(xiàn)場試用時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端
36、。如果在硬件電路設(shè)計就預(yù)留出一些I/O端口,雖然當(dāng)時空著沒用,那么用的時候就派上用場了。硬件系統(tǒng)原理圖見附錄一2.2 時鐘頻率電路的設(shè)計所有的單片機(jī)必須在時鐘的驅(qū)動下才能正常工作。在單片機(jī)內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機(jī)內(nèi)部的各個單元,決定單片機(jī)的工作速度。本系統(tǒng)中采用的是內(nèi)部振蕩的方式,外振蕩源一般選用石英晶體。在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為20PF
37、。單片機(jī)在工作時,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),常用fosc表示。如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12s。電路如圖2-1所示:圖2-1振蕩電路2.3 復(fù)位電路的設(shè)計單片機(jī)的第9腳RST為硬件復(fù)位端,當(dāng)8951通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)4個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,
38、初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8951的初始態(tài)。8951的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見下圖3.4。此外,RESET/VPD還是一復(fù)用腳,VCC掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。其電路圖如圖2-2所示: 圖2-2 8951的復(fù)位電路值得注意的是,在設(shè)計當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲器的值都恢復(fù)到了初始值,而前面的功能介紹中提到了倒計時時間的記憶功能,該功能的實(shí)現(xiàn)的前提條件就是不能對單片機(jī)進(jìn)行硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過
39、一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。2.4 顯示電路的設(shè)計2.4.1 LED數(shù)碼管顯示原理 LED是由條形發(fā)光二極管組成“8”字形的LED顯示器,也稱數(shù)碼管。它通常有7段與8段之分。8段數(shù)碼管是在7段發(fā)光二極管的基礎(chǔ)上再加一個圓點(diǎn)型發(fā)光二極管(在圖中以dp表示),用于顯示小數(shù)點(diǎn)。LED數(shù)碼管分共陽與共陰兩種:共陰管使用時把陰極連在一起,接低電平,再在陽極接高電平,這樣就能導(dǎo)通點(diǎn)亮。而共陽管則剛好相反,把陽極連在一起,接高電平,陰極需接低電平,這樣才能正常導(dǎo)通。如圖2-3: 圖2-3 數(shù)碼管電路由以上原理可知,數(shù)碼管要顯示對應(yīng)的數(shù)字,則要求與之各腳連接的單片機(jī)管腳對應(yīng)為高低電平,這則需要用
40、軟件編程的方法實(shí)現(xiàn)。具體過程會在后面進(jìn)一步的講到。2.5 鍵盤掃描電路的設(shè)計鍵盤是人機(jī)交流的工具,是信息準(zhǔn)確輸入的重要保證,是單片機(jī)不可缺少的人機(jī)交換設(shè)備。但這里所指的鍵盤不是PC機(jī)使用的標(biāo)準(zhǔn)鍵盤。考慮到經(jīng)濟(jì)適用等因素,在單片機(jī)系統(tǒng)中通常使用的是價格便宜的非編碼矩陣式鍵盤。矩陣式鍵盤的鍵排列成矩陣形式,在行與列的每個交點(diǎn)上對應(yīng)有一個鍵。顯然,在按鍵數(shù)量較多時,矩陣式鍵盤較之獨(dú)立式按鍵鍵盤要節(jié)省很多I/O口。 由于本系統(tǒng)要求能提供6位搶答的信號,因此可采用44矩陣式鍵盤,它可以構(gòu)成一個含有16個按鍵的鍵盤,這樣能滿足系統(tǒng)的要求。矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,在進(jìn)行鍵盤掃描時,首
41、先把矩陣鍵盤行線的第一根線置高,然后分別再檢測矩陣鍵盤列線是否有高電平的信號,如果有信號,那么就證明這根行線與第一根列線相交處的按鍵被按下了,單片機(jī)就讀入這個鍵值。如果所有的四根列線都沒有信號,那么就把第一根行線置低,把第二根行線置高,再一次檢測行線有沒有信號,然后依次類推。如圖2-4所示:圖2-4 矩陣式鍵盤電路2.5.1 鍵盤抖動的軟件處理 按鍵的觸點(diǎn)在閉合和斷開時均會產(chǎn)生抖動,這是觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不妥善處理,將會引起按鍵命令的錯誤執(zhí)行或重復(fù)執(zhí)行?,F(xiàn)在一般均用軟件延時的方法來避開抖動階段,這一延時過程一般大于5ms,例如取10-20ms。延時的選擇非常重要,太快了,起不到消除抖
42、動的效果,太慢了又讓鍵盤太不靈活,錯過較多的按鍵信號。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺程序)或鍵盤中斷(外部中斷)子程序中,則該延時子程序便可直接插入讀鍵過程中。如果讀鍵過程安排在定時中斷子程序中,就可省去專門的延時子程序,利用兩次定時中斷的時間間隔來完成抖動處理。2.6 發(fā)聲報警我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機(jī)某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。因此由P3.7輸出一個低電平。延時10
43、20毫秒,再輸出一個高電平,延時1020秒則可以發(fā)出聲音。2.7 系統(tǒng)復(fù)位使CPU進(jìn)入初始狀態(tài),從0000H地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。從實(shí)現(xiàn)系統(tǒng)復(fù)位的方法來看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個事實(shí)卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從0000H
44、地址開始執(zhí)行。對各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實(shí)際需要去主程序初始化過程中完成。而對中斷激活標(biāo)志的清除工作常被遺忘,因為它沒有明確的位地址可供編程。有的編程人員用020000(LJMP 0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000H地址就完成了軟件復(fù)位,就是這類錯誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進(jìn)行的工作,這時程序出錯完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級中斷響應(yīng)。由于軟件看門是高級中斷,它將阻止說要中斷響應(yīng),由此可見清除中斷激活標(biāo)志的重要性。在所有的指令中,只有RETI指令能夠清除中斷激活標(biāo)志。前文各處提案到的出錯處
45、理程序ERR主要完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。這部分程序如下:POWER DATA 67H ;上電標(biāo)志存放單元 ERR: CLR EA ;關(guān)中斷 MOV DPTR,#ERR1 ;準(zhǔn)備返回地址PUSH DPLPUSH DPHRETI ;清除高級中斷激活標(biāo)志ERR1: MOV POWER,#0AAH;重建上電標(biāo)志 CLR A ;準(zhǔn)備復(fù)位地址 PUSH ACC ;壓入復(fù)位地址0000HPUSH ACCRETI ;清除低級中斷激活標(biāo)志,從程序0000H開始執(zhí)行。這段程序先關(guān)中斷,以便后續(xù)處理能順利進(jìn)行,然后用兩個RETI指令代替兩個LJMP指令,從而清除了兩級中斷激活標(biāo)志。有相應(yīng)
46、軟件陷阱捕捉來的程序可能沒有全部激活兩個標(biāo)志,這也無妨。有復(fù)位時系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動”和“熱啟動”。 “冷啟動”時,系統(tǒng)的狀態(tài)全部無效,進(jìn)行徹底的初始化操作;而“熱啟動”時,對系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運(yùn)行時,必須是“冷啟動”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動”初次上電投入運(yùn)行時,必須是“冷啟動”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動”。為了使系統(tǒng)能正確決定采用何種啟動方式,常用上電標(biāo)志來區(qū)分。2.8 電源設(shè)計系統(tǒng)要正常工作,需要多個電源。AT89C51使用5V穩(wěn)壓電源,驅(qū)動芯片需要5-50V電壓驅(qū)動。要獲得持續(xù)與穩(wěn)定的直流
47、電壓。較常用的穩(wěn)壓方法是采用穩(wěn)壓管。這里采用一種非常普遍的方法。用三端穩(wěn)壓集成7805與7812分別得到5V和12V的穩(wěn)定電壓。將220V市電經(jīng)過橋式整流,濾波,穩(wěn)壓后便可得到穩(wěn)定的直流5V與12V電壓。經(jīng)檢測發(fā)現(xiàn)該方法方便簡單,工作穩(wěn)定可靠。如圖2-5所示:圖2-5 電源電路第3章 軟件設(shè)計3.1軟件任務(wù)分析軟件設(shè)計部分,則要在總設(shè)計中完成各模塊的功能設(shè)計,畫出各模塊流程圖。選擇合適的編程語言和工具,進(jìn)行代碼設(shè)計等;最后是對軟件進(jìn)行調(diào)試、測試,達(dá)到所需功能要求。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測量,計算,顯
48、示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計方法各有特色,執(zhí)行軟件的設(shè)計偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時,應(yīng)將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進(jìn)行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進(jìn)行定義時,將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個廠長就比較難了。軟件任
49、務(wù)分析的另一個內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個系統(tǒng)軟件可分為后臺程序(背景程序)和前臺程序。后臺程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實(shí)時性要求較高的內(nèi)容,如定時系統(tǒng)和外部中斷(如掉電中斷)。也可以將全部程序均安排在前臺,后臺程序為“使系統(tǒng)進(jìn)入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾。特別值得注意的是,在系統(tǒng)設(shè)計方法的選用是系統(tǒng)設(shè)計能否成功的關(guān)鍵。硬件電路是采用結(jié)構(gòu)化設(shè)計方法,使電路標(biāo)準(zhǔn)化、模塊化。本設(shè)計中硬件電路的設(shè)計最重要
50、的在于選擇合適的單片機(jī)與外圍芯片,使系統(tǒng)既經(jīng)濟(jì)又性能。硬件電路設(shè)計還包括輸入輸出接口設(shè)計,畫出詳細(xì)電路圖,標(biāo)出芯片的型號、器件參數(shù)值,根據(jù)電路圖在仿真機(jī)上進(jìn)行調(diào)試,發(fā)現(xiàn)設(shè)計不當(dāng)及時修改,最終達(dá)到設(shè)計目的。軟件設(shè)計的方法與開發(fā)環(huán)境的選取有著非常重要的關(guān)系,本系統(tǒng)由于是采用51系列單片機(jī),因此主程序用C語言進(jìn)行編寫,利用Keil C語言進(jìn)行開發(fā)。C51 程序設(shè)計語言,編程者只需了解變量和常量的存儲類型與80C51 單片機(jī)存儲空間的對應(yīng)關(guān)系。而不必深入了解單片機(jī)的硬件和接口。C51 編譯器會自動完成變量的存儲單元的分配。編譯調(diào)試靈活方便,生成的代碼編譯效率高,完全模塊化。可移植性好,便于項目維護(hù)管理
51、。3.2主程序系統(tǒng)結(jié)構(gòu)圖初始化開始檢測P3.7的狀態(tài)掃描鍵盤S1S6是哪一組要加分,并顯示組號加分按鍵 S12減分按鍵 S13鍵盤錄入分?jǐn)?shù),顯示在數(shù)碼管上加分按鍵 S14減分按鍵 S15鍵盤錄入分?jǐn)?shù),顯示在數(shù)碼管上確定S16輸入一單次脈沖,保持高電平(鎖存由I/O口P2輸出顯示分?jǐn)?shù))為1都加減分為0單組加減加減分圖3-1主程序系統(tǒng)結(jié)構(gòu)圖3.3主要程序說明計分器顯示程序/搶答器加減記分顯示程序/DBUFEQU30H;三位顯示緩沖區(qū)首址ORG0000HAJMPMAINORG0030HMAIN:MOVSP,#60HACALLKEYSCAN;調(diào)用鍵盤掃描子程序判斷是加分或減分CJNEA,#0EH,NE
52、XT2;不是加分鍵,則轉(zhuǎn)移判斷是減分鍵?NEXT1:ACALLKEYSZ;是加分鍵ACALLDISPLAY;調(diào)用顯示子程序SJMPMAINNEXT2:CJNEA,#0FH,MAIN;都不是,則轉(zhuǎn)MAINAJMPNEXT1;是減分鍵,ORG0100HKEYSZ:PUSHPSW;鍵盤設(shè)置子程序PUSHACCSETBRS1MOVR0,#DBUF;R0指向顯示緩沖區(qū)首地址MOVR7,#3;設(shè)置鍵盤輸入位數(shù)T1:CLRRS1ACALLKEYSCAN;調(diào)用鍵盤掃描子程序取按下鍵的鍵號SETBRS1CJNEA,#0AH,L2;鍵入數(shù)合法性檢測(是否大于9)T2:JNCL1;大于9,重新鍵入MOVR0,A;鍵
53、號送顯示緩沖區(qū)INCR0DJNZR7,L1;3位數(shù)值輸入完否?未完繼續(xù),否則返回POPACCPOPPSWCLRRS1RETKEYSCAN:MOVR3, #0F7H;掃描初值MOVR1,#00H;取碼指針T3:MOVA,R3;開始掃描MOVP1,A;將掃描值輸出MOVA,P1;讀入值,判斷是否有鍵按下MOVR4,A;存入R4,以判斷按鍵是否放開SETBC;C=1MOVR5,#04H;掃描T4:RLCA;將按鍵左移一位JNCKEYIN;判斷C=0?有鍵按下則C=0,跳至KEYININCR1;C=1,則無鍵按下,將取碼指針值加1DJNZR5,L4;4列掃描完畢了嗎?MOVA,R3;掃描值載入SETB
54、C;C=1RRCA;掃描下一行MOVR3,A;存回掃描寄存器JCL3;C=1?是則P1.0尚未掃描到SJMPKEYSCAN;C=0,則四行已掃描完畢KEYIN:MOVR7,#60;延時消除抖動D2:MOVR6,#248;DJNZR6,$;DJNZR7,D2;D3:MOVA,P1;延時后再讀入值XRLA,R4;與上次讀入值作比較JZD3;A=0,表示按鍵未放,等待按鍵釋放MOVA,R1;按鍵已放開,取碼指針載入累加器MOVDPTR,#TABLE;鍵盤碼表首地址送DPTRMOVCA,A+DPTR;查鍵碼RET;返回TABLE:DB00H,01H,02H,03H;鍵碼安排表與鍵盤相同DB04H,05
55、H,06H,07HDB08H,09H,0AH,0BHDB0CH,0DH,0EH,0FHORG0200HDISPLAY:MOVR0,#DBUF;顯示子程序 MOVR2,#3;顯示3位數(shù)碼 MOVDPTR,#SEGTAB;DISP: MOVA,R0; MOVCA,A+DPTR;取字段碼 MOVSCON,#0; MOVSBUF,A;開始 JNBTI,$;等待完畢 CLRTI;完畢,標(biāo)志位清零 INCR0;緩沖單元地址增1 DJNZR2,DISP;三位數(shù)碼發(fā)送完否? RET;完畢,則返回SEGTAB: DB0FCH,60H,0DAH,0F2H ;0,1,2,3(共陽極字段碼表) DB66H,0B6H,
56、 0BEH,0E0H;4,5,6,7 DB0FEH,0F6H,0EEH,3EH;8,9,A,B DB9CH,7AH,9EH,8EH ;C,D,+,- ENDDBUFEQU30H;三位顯示緩沖區(qū)首址ORG0000HAJMPMAINORG0030HMAIN:MOVSP,#60HACALLKEYSCAN;調(diào)用鍵盤掃描子程序判斷是加分或減分CJNEA,#0EH,NEXT2;不是加分鍵,則轉(zhuǎn)移判斷是減分鍵?NEXT1:ACALLKEYSZ;是加分鍵,ACALLDISPLAY;顯示子程序SJMPMAINNEXT2:CJNEA,#0FH,MAIN;都不是,則轉(zhuǎn)MAINAJMPNEXT1;是減分鍵,ORG01
57、00HKEYSZ:PUSHPSW;PUSHACCSETBRS1MOVR0,#DBUF;R0指向顯示緩沖區(qū)首地址MOVR7,#3;設(shè)置鍵盤輸入位數(shù)T1:CLRRS1ACALLKEYSCAN;調(diào)用鍵盤掃描子程序取按下鍵的鍵號SETBRS1CJNEA,#0AH,L2;鍵入數(shù)合法性檢測(是否大于9)T2:JNCL1;大于9,重新鍵入MOVR0,A;鍵號送顯示緩沖區(qū)INCR0DJNZR7,L1;3位數(shù)值輸入完否?未完繼續(xù),否則返回POPACCPOPPSWCLRRS1RETKEYSCAN:MOVR3, #0F7H;掃描初值(P0.3=0)MOVR1,#00H;取碼指針T3:MOVA,R3;開始掃描MOVP
58、0,A;將掃描值輸出至MOVA,P0;讀入值,判斷是否有鍵按下MOVR4,A;存入R4,以判斷按鍵是否放開SETBC;C=1MOVR5,#04H;掃描T4:RLCA;將按鍵左移一位JNCKEYIN;判斷C=0?有鍵按下則C=0,跳至KEYININCR1;C=1,則無鍵按下,將取碼指針值加1DJNZR5,L4;4列掃描完畢了嗎?MOVA,R3;掃描值載入SETBC;C=1RRCA;掃描下一行MOVR3,A;存回掃描寄存器JCL3;C=1?是則尚未掃描到SJMPKEYSCAN;C=0,則四行已掃描完畢KEYIN:MOVR7,#60;延時消除抖動D2:MOVR6,#248;DJNZR6,$;DJNZ
59、R7,D2;D3:MOVA,P0;延時后再讀入值XRLA,R4;與上次讀入值作比較JZD3;A=0,表示按鍵未放,等待按鍵釋放MOVA,R1;按鍵已放開,取碼指針載入累加器MOVDPTR,#TABLE;鍵盤碼表首地址送DPTRMOVCA,A+DPTR;查鍵碼RET;返回TABLE:DB00H,01H,02H,03H;鍵碼安排表與鍵盤相同DB04H,05H,06H,07HDB08H,09H,0AH,0BHDB0CH,0DH,0EH,0FHORG0200HDISPLAY:MOVR0,#DBUF;顯示子程序 MOVR2,#3;顯示3位數(shù)碼 MOVDPTR,#SEGTAB;DISP: MOVA,R0; MOV
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)械設(shè)計基礎(chǔ)知識課件
- 績效改進(jìn)工具46頁課件
- 企業(yè)生產(chǎn)系統(tǒng)管理詳述
- 護(hù)理禮儀實(shí)習(xí)禮儀
- 燃燒與滅火(第1課時)課件
- 2-1荒漠化的危害與治理課件(教育精品)
- 胎兒前腹壁畸形超聲診斷
- 羅庫溴銨注射液
- 定稿物理選修3-1電源和電流課件(教育精品)
- 教師師德講座
- 新人教版五年級下冊數(shù)學(xué)第四單元整理和復(fù)習(xí)PPT
- 費(fèi)馬引理與羅爾中值定理
- 新人教版《生物與環(huán)境組成生態(tài)系統(tǒng)》
- 商業(yè)銀行服務(wù)文化
- 天津中新生態(tài)城設(shè)計詳述