搶答器畢業(yè)設(shè)計(jì)論文
《搶答器畢業(yè)設(shè)計(jì)論文》由會員分享,可在線閱讀,更多相關(guān)《搶答器畢業(yè)設(shè)計(jì)論文(45頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
畢 業(yè) 設(shè) 計(jì) 專 業(yè): 機(jī)電一體化 班級學(xué)號: 1707342 學(xué)生姓名: 馬忠 指導(dǎo)教師: 王國賓老師 二〇一九年 九 月 甘肅有色冶金職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 搶答器 Responder 專業(yè)班級:機(jī)電1703班 學(xué)生姓名:馬忠 指導(dǎo)教師:王國賓老師 系 別:機(jī)電工程系 2019 年 9月 摘 要 近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時(shí)檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來使用,作為嵌入式控制系統(tǒng)的主體與核心,代替了傳統(tǒng)的控制系統(tǒng)的常規(guī)電子線路。但僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。 本設(shè)計(jì)是以六路搶答為基本理念,應(yīng)用以單片機(jī)作為核心部件進(jìn)行邏輯控制及信號的產(chǎn)生,考慮到依需設(shè)定限時(shí)回答的功能,利用AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時(shí)間和回答問題的時(shí)間可在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,滿時(shí)后系統(tǒng)計(jì)時(shí)自動復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。 由于計(jì)算機(jī)的普及和電子信息技術(shù)的迅猛發(fā)展,對智能搶答器有了更高的要求,如何有效的保證許多公開競爭場合裁決的公平,公正。單片機(jī)智能搶答器為之提供了條件和發(fā)展空間。建立一個(gè)價(jià)格適宜、智能化、自動化、數(shù)字化等特點(diǎn)的智能搶答器具有重要意義。 【關(guān)鍵詞】單片機(jī);智能;六路;搶答 Abstract With the rapid development of science and technology in recent years, SCM applications are 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, instead 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 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 software 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 commencement 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 prompt 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 technology, 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 and other characteristics of the intelligent Responder of great significance. Key words: SCM;intelligence;For 6 Player;To answer first 目 錄 引 言 1 第1章 方案論證 2 1.1 系統(tǒng)的主要功能 2 1.1.1 系統(tǒng)功能分析 3 1.1.2 搶答器的工作流程 3 1.2 器件選型方案 5 1.2.1 控制器模塊的選取 5 1.2.2 顯示器模塊的選取 5 1.3 AT89C51的簡介及使用 6 1.3.1 89系列單片機(jī)的概況 6 1.3.2 AT89C51單片機(jī)的內(nèi)部結(jié)構(gòu)圖 7 1.3.3 AT89C51特殊功能寄存器 8 1.3.4 AT89C51單片機(jī)使用方法 9 第2章 系統(tǒng)總體方案的設(shè)計(jì) 11 2.1 硬件電路的設(shè)計(jì) 11 2.2 時(shí)鐘頻率電路的設(shè)計(jì) 12 2.3 復(fù)位電路的設(shè)計(jì) 12 2.4 顯示電路的設(shè)計(jì) 13 2.4.1 LED數(shù)碼管顯示原理 13 2.5 鍵盤掃描電路的設(shè)計(jì) 14 2.5.1 鍵盤抖動的軟件處理 14 2.6 發(fā)聲報(bào)警 15 2.7 系統(tǒng)復(fù)位 15 2.8 電源設(shè)計(jì) 16 第3章 軟件設(shè)計(jì) 17 3.1軟件任務(wù)分析 17 3.2主程序系統(tǒng)結(jié)構(gòu)圖 18 3.3主要程序說明 19 總 結(jié) 27 致 謝 28 參考文獻(xiàn) 29 附錄:硬件系統(tǒng)原理圖 30 甘肅有色冶金職業(yè)技術(shù)學(xué)院2017屆畢業(yè)設(shè)計(jì) 引 言 單片機(jī)是指一個(gè)集成在一塊芯片上的完整計(jì)算機(jī)系統(tǒng)。盡管他的大部分功能集成在一塊小芯片上,但是它具有一個(gè)完整計(jì)算機(jī)所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會具有外存。同時(shí)集成諸如通訊接口、定時(shí)器,實(shí)時(shí)時(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ì)的各個(gè)部門和領(lǐng)域,現(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會集成有單片機(jī)。手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機(jī)。而個(gè)人電腦中也會有為數(shù)不少的單片機(jī)在工作。汽車上一般配備40多部單片機(jī)。它已成為工業(yè)控制領(lǐng)域、智能儀器儀表、尖端武器、日常生活中最廣泛使用的計(jì)算機(jī)。 在本設(shè)計(jì)中,單片機(jī)識別多路搶答信號采用外中斷,當(dāng)外中斷信號來臨時(shí)執(zhí)行中斷處理程序,將搶答標(biāo)志位置位。即所謂的掃描。同時(shí)電子智能搶答器用單片機(jī)控制,功能分別為計(jì)分和搶答。計(jì)分的工作原理是采用最小系統(tǒng),用4x4鍵盤來輸入是選手需要加減進(jìn)行分?jǐn)?shù)的加減輸入。主板上的6個(gè)數(shù)碼顯示,加幾分的數(shù),按確定鍵后分?jǐn)?shù)值從I/O口P2傳到計(jì)分器顯示模塊上再通過數(shù)碼管驅(qū)動模塊顯示。搶答的工作原理是采用單片機(jī)最小系統(tǒng),用查詢式鍵盤進(jìn)行搶答。采用鎖存顯示組號。搶答器也可稱為第一信號鑒別器,利用了單片機(jī)本身的優(yōu)勢使競賽達(dá)到公平,公正,公開。因此具有重要意義。 第1章 方案論證 1.1 系統(tǒng)的主要功能 本系統(tǒng)是借用單片機(jī)采用模塊化設(shè)計(jì)的智能搶答器,主控與參賽者設(shè)為終端分系統(tǒng)。參賽者分系統(tǒng)設(shè)有:搶答按紐、計(jì)時(shí)計(jì)分顯示、提示功能等(根據(jù)需要可另設(shè)或多設(shè)相關(guān)功能);主控分系統(tǒng)有:開始與結(jié)束控制按鈕、計(jì)分功能、各種相關(guān)顯示調(diào)控功能等(根據(jù)需要也可另設(shè)或多設(shè)相關(guān)功能)。 參賽者系統(tǒng),除享有搶答按紐的權(quán)利功能外,還有人性化的提示功能和時(shí)間提示功能,也可設(shè)定由參賽者終端表現(xiàn)的趣味性功能等;主控系統(tǒng)的控制按鈕做開始與結(jié)束控制,根據(jù)活動參賽者的層次,對提前掄答者的行為設(shè)定為非法或阻隔,若設(shè)有非法搶答控制功能時(shí),在主控處帶有公示性顯示的非法掄答者的臺位號,對搶答限時(shí)及回答問題限時(shí)設(shè)為倒計(jì)時(shí)式,并有公示性顯示。 搶答器同時(shí)供6名選手或6個(gè)代表隊(duì)比賽,分別用6個(gè)按鈕S1~S6表示。設(shè)置一個(gè)系統(tǒng)清除和搶答控制按扭,該按扭由主持人控制。搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,并在LED數(shù)碼管上顯示,同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。計(jì)分器的工作原理是采用最小系統(tǒng),用4x4鍵盤來輸入是選手需要加減進(jìn)行分?jǐn)?shù)的加減輸入。主板上的6個(gè)數(shù)碼顯示,加幾分的數(shù),按確定鍵后分?jǐn)?shù)值從I/O口P2傳到計(jì)分器顯示模塊上再通過數(shù)碼管驅(qū)動模塊顯示。 本系統(tǒng)采用模塊化設(shè)計(jì)智能搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個(gè)搶答按鈕。主持人有開始和結(jié)束復(fù)位鍵。在后臺主持人可以修改,搶答時(shí)間和選手回答問題的時(shí)間設(shè)置,搶答時(shí)間為連續(xù)可調(diào)的0~9秒??梢酝ㄟ^軟件編程自行修改時(shí)間,主持人按鍵開始后,選手開始搶答為有效,數(shù)碼顯示屏顯示搶答時(shí)間倒計(jì)時(shí)和選手號,在最 后五秒揚(yáng)聲器發(fā)生提示。如果主持人沒有按下開始鍵而選手就搶答視為犯規(guī),數(shù)碼顯示屏顯示犯規(guī)者的代號,揚(yáng)聲器持續(xù)發(fā)生。主持人可按鍵結(jié)束,新一輪搶答開始。系統(tǒng)的主要功能模 主 控 制 器 LED顯示 發(fā)聲器 鍵盤顯示 時(shí)鐘頻率 復(fù)位電路 塊方框圖如1-1所示。 圖1-1 系統(tǒng)主要功能模塊 搶答主板:搶答主板是整個(gè)搶答器的核心,其關(guān)鍵是單片機(jī)AT89C51。內(nèi)部電路設(shè)計(jì)用C語言與匯編語言編寫。它完成了時(shí)間參數(shù)的設(shè)定,搶按號碼的譯碼,保存;顯示;輸出,搶按及計(jì)分功能等。 顯示及指示:本設(shè)計(jì)中,有六個(gè)共陽數(shù)碼管??捎糜陲@示時(shí)間,分?jǐn)?shù),搶答號碼。主持人依次按下開始鍵后開始搶答??梢該尠矗喝粲羞x手在規(guī)定時(shí)間內(nèi)搶按成功,則可以答題,數(shù)碼管顯示搶答時(shí)間的同時(shí)也顯示選手號碼。若在按開始鍵前搶答表示違規(guī),發(fā)出報(bào)警聲。 1.1.1 系統(tǒng)功能分析 1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效。 2、搶答限定時(shí)間和回答問題的時(shí)間可以通過軟件編程自己設(shè)定的。 3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有聲音提示。 4、搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,時(shí)間完后系統(tǒng)可以進(jìn)行復(fù)位。 5、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。 1.1.2 搶答器的工作流程 搶答器識別搶答信號可用外部中斷的方式,當(dāng)外中斷信號到來時(shí),將強(qiáng)答標(biāo)志位置位,同時(shí)內(nèi)部寄存器工作,記錄有關(guān)時(shí)間并產(chǎn)生超時(shí)信號。在整個(gè)搶答器工作過程中,顯示電路、語音電路等還要根據(jù)現(xiàn)場的實(shí)際情況向外電路輸出相應(yīng)信號。它的工作流程如圖1-2所示,下面分別予以介紹。 搶答器的工作過程: 1、如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,可以在軟件編程的時(shí)候?qū)⑾嚓P(guān)的變量控制設(shè)定好,調(diào)整范圍為連續(xù)可調(diào)的0~9s。 掃描 第一組 第二組 第六組 顯示組號 報(bào)警聲 是 是 是 否 開始化化化 否 2、主持人按"搶答開始"鍵,并立刻進(jìn)入搶答倒計(jì)時(shí),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進(jìn)入回答倒計(jì)時(shí),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。同時(shí)數(shù)碼管鎖存相應(yīng)的選手號。 直到主持人將號碼清零然后開始下一輪 的搶答。 3、如果主持人未按"搶答開始"鍵, 而有人按了搶答按鍵,犯規(guī)搶答,則顯 示報(bào)警聲,直到按下"停止" 鍵為止。 總而言之,本課題利用AT89C51單 片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng)設(shè)計(jì)了搶 答器,該搶答器增加了新功能、提高了系 統(tǒng)的可靠性、簡化了電路結(jié)構(gòu)、節(jié)約了成 本,是一個(gè)實(shí)用的工程設(shè)計(jì)。 圖1-2 搶答器工作流程 1.2 器件選型方案 1.2.1 控制器模塊的選取 微控制器是整個(gè)系統(tǒng)的核心部件,控制對顯示、搶答、音樂、計(jì)分等??刂破鞯倪x擇主要有以下兩鐘方案。 方案一:采用FPGA(現(xiàn)場可編程門列陣)或PLC器件作為系統(tǒng)的控制器。FPGA可以實(shí)現(xiàn)各種復(fù)雜的邏輯功能,規(guī)模大,密度高,它將所有器件集成在一塊芯片上,減小了體積,提高了穩(wěn)定性,并且可以應(yīng)用EDA軟件仿真、調(diào)試,易于進(jìn)行功能擴(kuò)展。FPGA采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)模實(shí)時(shí)系統(tǒng)的控制核心。。PLC是一種新型的通用自動化控制裝置,它將傳統(tǒng)的繼電器控制技術(shù)、計(jì)算機(jī)技術(shù)和通訊技術(shù)融為一體,具有控制功能強(qiáng),可靠性高,使用靈活方便,但由于本設(shè)計(jì)對 數(shù)據(jù)處理的速度要求不高,F(xiàn)PGA與PLC的高速處理的優(yōu)勢得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時(shí)由于芯片的引腳較多,實(shí)物硬件電路板布線復(fù)雜,加重了電路設(shè)計(jì)和實(shí)際焊接的工作。 方案二:利用KeilC開發(fā)平臺,采用ATMEL公司的AT89C51作為系統(tǒng)控制器的CPU方案。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可以用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛?;谝陨戏治鰯M訂方案二。 1.2.2 顯示器模塊的選取 顯示器主要負(fù)責(zé)數(shù)據(jù)的輸出顯示。我們考慮有以下兩種顯示方案。 方案一:使用液晶屏顯示時(shí)間。液晶顯示屏(LCD)具有輕薄短小、低耗電量、無輻射危險(xiǎn),平面直角顯示以及影像穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好,分辨率高,抗干擾能力強(qiáng)的特點(diǎn)。但由于只需要顯示時(shí)間等這樣的數(shù)字,信息量比較少,且由于液晶是以點(diǎn)陣的模式顯示各種符號,需要利用控制芯片創(chuàng)建字符庫,編程工作量大, 控制器的資源占用較多,其成本也偏高。在使用時(shí),不能有靜電干擾,否則易燒壞液晶顯示芯片,不易維護(hù)。 方案二:在使用傳統(tǒng)的數(shù)碼管顯示。數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護(hù),同時(shí)其精度高,稱量快,精確可靠,操作簡單。數(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存儲器,用途十分廣泛,特別是在生產(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)時(shí)鐘方式,可以節(jié)省電能,降低便攜式設(shè)備的功耗。 (2) 89系列單片機(jī)的結(jié)構(gòu)簡介 89系列單片機(jī)的內(nèi)部結(jié)構(gòu)與AT80C51相近,主要有以下部件: 1 8031CPU 2 振蕩電路 3 總線控制部件 4 中斷控制部件 5 片內(nèi)Flash存儲器 6 片內(nèi)RAM 7 并行I/O接口 8 定時(shí)器 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)的串行口,還有一個(gè)串行的外圍接口SPI,Watchdog定時(shí)器,雙數(shù)據(jù)指針等部件,以及電源下降的中斷恢復(fù)功能。 89系列的單片機(jī)一共有五種型號,分別為AT89C51,AT89LV51,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,有3級程序鎖存器,內(nèi)部含有128-256字節(jié)的RAM,有32條可編程I/O口線,2-3個(gè)16位定時(shí)/計(jì)數(shù)器,6-8個(gè)中斷源,通用的串行接口,低電壓空閑及電源下降方式。 AT89C51是基本型,具有4KB的Flash存儲器,128字節(jié)的片內(nèi)RAM,32條可編程I/O口,兩個(gè)16位定時(shí)/計(jì)數(shù)器,6個(gè)中斷源,3位存儲器加密,一個(gè)可編程串行接口。AT89C52在AT89C52的基礎(chǔ)上,增加了一個(gè)定時(shí)/計(jì)數(shù)器,2個(gè)中斷源,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,兩個(gè)16位的定時(shí)/計(jì)數(shù)器T0和T1,4個(gè)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)算器和控制器兩部分。控制器由程序計(jì)數(shù)器PC、指令儲存器、指令譯碼器、實(shí)時(shí)控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進(jìn)行譯碼,通過實(shí)時(shí)控制電路,在規(guī)定的時(shí)刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運(yùn)算器由算術(shù)邏輯器部件ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW,BCD碼運(yùn)算調(diào)整電路等組成。如圖1.3所示: 通道2驅(qū)動器 通道2驅(qū)動器 通道0驅(qū)動器 程序地址寄存器 程序計(jì)數(shù)器 EPROM RAM地址寄存器 B寄存器 ACC TMP2 ALU TMP1 PSW 堆棧指針 中斷,串行口定時(shí)器邏輯 DPTR PC 通道3鎖存器 通道1鎖存器 通道1驅(qū)動器器 通道3驅(qū)動器器 P1.0-P1.7 P3.0-P3.7 定時(shí)和控制邏輯 指令寄存器 OSC P0.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個(gè)不同寄存器。它們的地址分配在80H~FFH中,即在RAM地址中。雖然特殊功能寄存器地址在80H~FFH之中,但在80H~FFH的地址單元中,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的,如果對這些單元進(jìn)行操作,得到的是一些隨機(jī)數(shù),而寫入則無效。所以,用戶編程時(shí)不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元,它們是公司留待將來開發(fā)新產(chǎn)品時(shí)使用的。這些寄存器的名稱和地址見表1.1 表1.1 AT89C51特殊功能寄存器列表 注:帶*號的特殊功能寄存器都是可以位尋址的寄 1.3.4 AT89C51單片機(jī)使用方法 AT89C51是一種低功耗、高性能的含有4KB閃速可編程電擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的8位CMOS微控制器,使用高密度、非易失存儲技術(shù)制造,并且與80C51指令系統(tǒng)和引腳完成兼容。芯片上的FPEROM允許在線或采用通用的非易失存儲編程器對程序存儲器重復(fù)編程。 (1)AT89C51的主要性能包括:AT89C51與MCS—51控制器系列產(chǎn)品兼容,片內(nèi)有4K可在線重復(fù)編程閃速電擦除存儲器(Flash Memory),存儲器可循環(huán)寫入/擦除1000次;存儲器數(shù)據(jù)保存時(shí)間可達(dá)10年;工作電壓范圍寬:Vcc可由2.7V到6V;全靜態(tài)工作可由0Hz到16MHz;程序存儲器具有3級鎖存保護(hù);128*8位內(nèi)部RAM;32條可編程I/O線;兩個(gè)16位定時(shí)器/計(jì)數(shù)器;中斷結(jié)構(gòu)具有5個(gè)中斷源和2個(gè)中斷優(yōu)先級;可編程全雙工串行通信;空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲內(nèi)容。 (2)FPEROM的編程:AT89C51的I/O口P0、P1、P2和P3除具有與80C51相同的一些性能和用途外,在FPEROM編程時(shí),P0口接收代碼字節(jié),并在程序檢驗(yàn)時(shí)輸出代碼字節(jié),但在程序校驗(yàn)時(shí)需要外部上拉負(fù)載電阻,在FPEROM編程和程序校驗(yàn)期間,P1口接收低位地址字節(jié),P2口接收高位地址字節(jié)和一些控制信號,P3口也接收一些FPEROM編程和校驗(yàn)用的信號,此時(shí)ALE/PROG引腳是編程脈沖輸入(PROG)端,在FPEROM編程期間,如果選擇12V編程電壓、那么EA/Vpp引腳也允許接受12V編程電壓(Vpp)。 第2章 系統(tǒng)總體方案的設(shè)計(jì) 2.1 硬件電路的設(shè)計(jì) 一般說來,一個(gè)控制系統(tǒng)的設(shè)計(jì)主要分硬件設(shè)計(jì)與軟件設(shè)計(jì)。根據(jù)它的工作原理與技術(shù)性能。硬件設(shè)計(jì)要畫出它的原理圖,電路板圖,合理選擇元器件。然后對硬件進(jìn)行調(diào)試、測試,以達(dá)到設(shè)計(jì)要求。從時(shí)間上看,硬件設(shè)計(jì)的絕大部分工作量是在最初階段, 到后期往往還要做一些修改。只要技術(shù)準(zhǔn)備充分,硬件設(shè)計(jì)的大返工是比較少的,軟件設(shè)計(jì)的任務(wù)貫徹始終,到中后期基本上都是軟件設(shè)計(jì)任務(wù),隨著集成電路技術(shù)的飛速發(fā)展,各種功能很強(qiáng)的芯片不斷出現(xiàn),使硬件電路的集成度越來越高,硬件設(shè)計(jì)的工作量在整個(gè)項(xiàng)目中的所占的比重逐漸下降。為使硬件電路設(shè)計(jì)盡可能合理,應(yīng)注意以下幾方面: (1) 盡可能采用功能強(qiáng)的芯片,以簡化電路,功能強(qiáng)的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價(jià)格不斷下降,并不一定比若干普通芯片價(jià)格的總和高。 (2) 留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路時(shí),要考慮到將來修改擴(kuò)展的方便。因?yàn)楹苌儆幸诲N定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來可能要為一點(diǎn)小小的修改或擴(kuò)展而被迫進(jìn)行全面返工。 (3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計(jì)采用AT89C51單片機(jī)。 (4) RAM空間,AT89C51內(nèi)部RAM不多,當(dāng)要增強(qiáng)軟件數(shù)據(jù)處理功能時(shí),往往覺得不足。如果系統(tǒng)配置了外部RAM,則建議多留一些空間。如選用8155作I/O接口,就可以增強(qiáng)256字節(jié)RAM.如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的RAM,如6264,62256等。隨著軟件設(shè)計(jì)水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級換代。只要在硬件電路設(shè)計(jì)初期考慮到這一點(diǎn),就應(yīng)該為系統(tǒng)將來升級留足夠的RAM空間,哪怕多設(shè)計(jì)一個(gè)RAM的插座,暫不插芯片也好。 (5) I/O端口:在樣機(jī)研制出來后進(jìn)行現(xiàn)場試用時(shí),往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計(jì)就預(yù)留出一些I/O端口,雖然當(dāng)時(shí)空著沒用,那么用的時(shí)候就派上用場了。 硬件系統(tǒng)原理圖見附錄一 2.2 時(shí)鐘頻率電路的設(shè)計(jì) 所有的單片機(jī)必須在時(shí)鐘的驅(qū)動下才能正常工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。本系統(tǒng)中采用的是內(nèi)部振蕩的方式,外振蕩源一般選用石英晶體。在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 C1,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為20PF。單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為12MHz,即fosc=12MHz,則時(shí)鐘周期為1/12μs。電路如圖2-1所示: 圖2-1振蕩電路 2.3 復(fù)位電路的設(shè)計(jì) 單片機(jī)的第9腳RST為硬件復(fù)位端,當(dāng)8951通電,時(shí)鐘電路開始工作,在RESET引腳上出現(xiàn)4個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(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è)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲器的值都恢復(fù)到了初始值,而前面的功能介紹中提到了倒計(jì)時(shí)時(shí)間的記憶功能,該功能的實(shí)現(xiàn)的前提條件就是不能對單片機(jī)進(jìn)行硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。 2.4 顯示電路的設(shè)計(jì) 2.4.1 LED數(shù)碼管顯示原理 LED是由條形發(fā)光二極管組成“8”字形的LED顯示器,也稱數(shù)碼管。它通常有7段與8段之分。8段數(shù)碼管是在7段發(fā)光二極管的基礎(chǔ)上再加一個(gè)圓點(diǎn)型發(fā)光二極管(在圖中以dp表示),用于顯示小數(shù)點(diǎn)。LED數(shù)碼管分共陽與共陰兩種:共陰管使用時(shí)把陰極連在一起,接低電平,再在陽極接高電平,這樣就能導(dǎo)通點(diǎn)亮。而共陽管則剛好相反,把陽極連在一起,接高電平,陰極需接低電平,這樣才能正常導(dǎo)通。如圖2-3: 由以上原理可知,數(shù)碼管要顯示對應(yīng)的數(shù)字,則要求與之各腳連接的單片機(jī)管腳對應(yīng)為高低電平,這則需要用軟件編程的方法實(shí)現(xiàn)。具體過程會在后面進(jìn)一步的講到。 圖2-3 數(shù)碼管電路 圖2-4 矩陣式鍵盤電路 2.5 鍵盤掃描電路的設(shè)計(jì) 鍵盤是人機(jī)交流的工具,是信息準(zhǔn)確輸入的重要保證,是單片機(jī)不可缺少的人機(jī)交換設(shè)備。但這里所指的鍵盤不是PC機(jī)使用的標(biāo)準(zhǔn)鍵盤??紤]到經(jīng)濟(jì)適用等因素,在單片機(jī)系統(tǒng)中通常使用的是價(jià)格便宜的非編碼矩陣式鍵盤。矩陣式鍵盤的鍵排列成矩陣形式,在行與列的每個(gè)交點(diǎn)上對應(yīng)有一個(gè)鍵。顯然,在按鍵數(shù)量較多時(shí),矩陣式鍵盤較之獨(dú)立式按鍵鍵盤要節(jié)省很多I/O口。 由于本系統(tǒng)要求能提供6位搶答的信號,因此可采用4×4矩陣式鍵盤,它可以構(gòu)成一個(gè)含有16個(gè)按鍵的鍵盤,這樣能滿足系統(tǒng)的要求。 矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,在進(jìn)行鍵盤掃描時(shí),首先把矩陣鍵盤行線的第一根線置高,然后分別再檢測矩陣鍵盤列線是否有高電平的信號,如果有信號,那么就證明這根行線與第一根列線相交處的按鍵被按下了,單片機(jī)就讀入這個(gè)鍵值。如果所有的四根列線都沒有信號,那么就把第一根行線置低,把第二根行線置高,再一次檢測行線有沒有信號,然后依次類推。如圖2-4所示: 2.5.1 鍵盤抖動的軟件處理 按鍵的觸點(diǎn)在閉合和斷開時(shí)均會產(chǎn)生抖動,這是觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不妥善處理,將會引起按鍵命令的錯誤執(zhí)行或重復(fù)執(zhí)行?,F(xiàn)在一般均用軟件延時(shí)的方法來避開抖動階段,這一延時(shí)過程一般大于5ms,例如取10-20ms。延時(shí)的選擇非常重要,太快了,起不到消除抖動的效果,太慢了又讓鍵盤太不靈活,錯過較多的按鍵信號。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺程序)或鍵盤中斷(外部中斷)子程序中,則該延時(shí)子程序便可直接插入讀鍵過程中。如果讀鍵過程安排在定時(shí)中斷子程序中,就可省去專門的延時(shí)子程序,利用兩次定時(shí)中斷的時(shí)間間隔來完成抖動處理。 2.6 發(fā)聲報(bào)警 我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。因此由P3.7輸出一個(gè)低電平。延時(shí)10~20毫秒,再輸出一個(gè)高電平,延時(shí)10~20秒則可以發(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í)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個(gè)事實(shí)卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從0000H地址開始執(zhí)行。對各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實(shí)際需要去主程序初始化過程中完成。而對中斷激活標(biāo)志的清除工作常被遺忘,因?yàn)樗鼪]有明確的位地址可供編程。有的編程人員用020000(LJMP 0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000H地址就完成了軟件復(fù)位,就是這類錯誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進(jìn)行的工作,這時(shí)程序出錯完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級中斷響應(yīng)。由于軟件看門是高級中斷,它將阻止說要中斷響應(yīng),由此可見清除中斷激活標(biāo)志的重要性。 在所有的指令中,只有RETI指令能夠清除中斷激活標(biāo)志。前文各處提案到的出錯處理程序ERR主要完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。這部分程序如下: POWER DATA 67H ;上電標(biāo)志存放單元 ERR: CLR EA ;關(guān)中斷 MOV DPTR,#ERR1 ;準(zhǔn)備返回地址 PUSH DPL PUSH DPH RETI ;清除高級中斷激活標(biāo)志 ERR1: MOV POWER,#0AAH;重建上電標(biāo)志 CLR A ;準(zhǔn)備復(fù)位地址 PUSH ACC ;壓入復(fù)位地址0000H PUSH ACC RETI ;清除低級中斷激活標(biāo)志,從程序0000H開始執(zhí)行。 這段程序先關(guān)中斷,以便后續(xù)處理能順利進(jìn)行,然后用兩個(gè)RETI指令代替兩個(gè)LJMP指令,從而清除了兩級中斷激活標(biāo)志。有相應(yīng)軟件陷阱捕捉來的程序可能沒有全部激活兩個(gè)標(biāo)志,這也無妨。 有復(fù)位時(shí)系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動”和“熱啟動”。 “冷啟動”時(shí),系統(tǒng)的狀態(tài)全部無效,進(jìn)行徹底的初始化操作;而“熱啟動”時(shí),對系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運(yùn)行時(shí),必須是“冷啟動”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動”初次上電投入運(yùn)行時(shí),必須是“冷啟動”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動”。為了使系統(tǒng)能正確決定采用何種啟動方式,常用上電標(biāo)志來區(qū)分。 圖2-5 電源電路 2.8 電源設(shè)計(jì) 系統(tǒng)要正常工作,需要多個(gè)電源。AT89C51使用5V穩(wěn)壓電源,驅(qū)動芯片需要5-50V電壓驅(qū)動。要獲得持續(xù)與穩(wěn)定的直流電壓。較常用的穩(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)定可靠。 第3章 軟件設(shè)計(jì) 3.1軟件任務(wù)分析 軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測量,計(jì)算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。 軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(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)一個(gè)廠長就比較難了。 軟件任務(wù)分析的另一個(gè)內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個(gè)系統(tǒng)軟件可分為后臺程序(背景程序)和前臺程序。后臺程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時(shí)性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實(shí)時(shí)性要求較高的內(nèi)容,如定時(shí)系統(tǒng)和外部中斷(如掉電中斷)。也可以將全部程序均安排在前臺,后臺程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和 抗干擾。 特別值得注意的是,在系統(tǒng)設(shè)計(jì)方法的選用是系統(tǒng)設(shè)計(jì)能否成功的關(guān)鍵。硬件電路是采用結(jié)構(gòu)化設(shè)計(jì)方法,使電路標(biāo)準(zhǔn)化、模塊化。本設(shè)計(jì)中硬件電路的設(shè)計(jì)最重要的在于選擇合適的單片機(jī)與外圍芯片,使系統(tǒng)既經(jīng)濟(jì)又性能。硬件電路設(shè)計(jì)還包括輸入輸出接口設(shè)計(jì),畫出詳細(xì)電路圖,標(biāo)出芯片的型號、器件參數(shù)值,根據(jù)電路圖在仿真機(jī)上進(jìn)行調(diào)試,發(fā)現(xiàn)設(shè)計(jì)不當(dāng)及時(shí)修改,最終達(dá)到設(shè)計(jì)目的。軟件設(shè)計(jì)的方法與開發(fā)環(huán)境的選取有著非常重要的關(guān)系,本系統(tǒng)由于是采用51系列單片機(jī),因此主程序用C語言進(jìn)行編寫,利用Keil C語言進(jìn)行開發(fā)。C51 程序設(shè)計(jì)語言,編程者只需了解變量和常量的存儲類型與80C51 單片機(jī)存儲空間的對應(yīng)關(guān)系。而不必深入了解單片機(jī)的硬件和接口。C51 編譯器會自動完成變量的存儲單元的分配。編譯調(diào)試靈活方便,生成的代碼編譯效率高,完全模塊化??梢浦残院?便于項(xiàng)目維護(hù)管理。 3.2主要程序說明 計(jì)分器顯示程序//搶答器加減記分顯示程序// DBUF EQU 30H ;三位顯示緩沖區(qū)首址 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV SP,#60H ACALL KEYSCAN ;調(diào)用鍵盤掃描子程序判斷是加分或減分 CJNE A,#0EH,NEXT2 ;不是加分鍵,則轉(zhuǎn)移判斷是減分鍵? NEXT1: ACALL KEYSZ ;是加分鍵 ACALL DISPLAY ;調(diào)用顯示子程序 SJMP MAIN NEXT2: CJNE A,#0FH,MAIN ;都不是,則轉(zhuǎn)MAIN AJMP NEXT1 ;是減分鍵, ORG 0100H KEYSZ: PUSH PSW ;鍵盤設(shè)置子程序 PUSH ACC SETB RS1 MOV R0,#DBUF ;R0指向顯示緩沖區(qū)首地址 MOV R7,#3 ;設(shè)置鍵盤輸入位數(shù) T1: CLR RS1 ACALL KEYSCAN ;調(diào)用鍵盤掃描子程序取按下鍵的鍵號 SETB RS1 CJNE A,#0AH,L2 ;鍵入數(shù)合法性檢測(是否大于9) T2: JNC L1 ;大于9,重新鍵入 MOV R0,A ;鍵號送顯示緩沖區(qū) INC R0 DJNZ R7,L1 ;3位數(shù)值輸入完否?未完繼續(xù),否則返回 POP ACC POP PSW CLR RS1 RET KEYSCAN:MOV R3, #0F7H ;掃描初值 MOV R1, #00H ;取碼指針 T3: MOV A, R3 ;開始掃描 MOV P1, A ;將掃描值輸出 MOV A, P1 ;讀入值,判斷是否有鍵按下 MOV R4, A ;存入R4,以判斷按鍵是否放開 SETB C ;C=1 MOV R5, #04H ;掃描 T4: RLC A ;將按鍵左移一位 JNC KEYIN ;判斷C=0?有鍵按下則C=0,跳至KEYIN INC R1 ;C=1,則無鍵按下,將取碼指針值加1 DJNZ R5, L4 ;4列掃描完畢了嗎? MOV A, R3 ;掃描值載入 SETB C ;C=1 RRC A ;掃描下一行 MOV R3, A ;存回掃描寄存器 JC L3 ;C=1?是則P1.0尚未掃描到 SJMP KEYSCAN ;C=0,則四行已掃描完畢 KEYIN: MOV R7, #60 ;延時(shí)消除抖動 D2: MOV R6, #248 ; DJNZ R6, $ ; DJNZ R7, D2 ; D3: MOV A, P1 ;延時(shí)后再讀入值 XRL A, R4 ;與上次讀入值作比較 JZ D3 ;A=0,表示按鍵未放,等待按鍵釋放 MOV A, R1 ;按鍵已放開,取碼指針載入累加器 MOV DPTR,#TABLE ;鍵盤碼表首地址送DPTR MOVC A, @A+DPTR ;查鍵碼 RET ;返回 TABLE: DB 00H,01H,02H,03H ;鍵碼安排表與鍵盤相同 DB 04H,05H,06H,07H DB 08H,09H,0AH,0BH DB 0CH,0DH,0EH,0FH ORG 0200H DISPLAY:MOV R0, #DBUF ;顯示子程序 MOV R2,#3 ;顯示3位數(shù)碼 MOV DPTR,#SEGTAB; DISP: MOV A,@R0 ; MOVC A,@A+DPTR ;取字段碼 MOV SCON,#0 ; MOV SBUF,A ;開始 JNB TI,$ ;等待完畢 CLR TI ;完畢,標(biāo)志位清零 INC R0 ;緩沖單元地址增1 DJNZ R2,DISP ;三位數(shù)碼發(fā)送完否? RET ;完畢,則返回 SEGTAB: DB 0FCH,60H,0DAH,0F2H ;0,1,2,3(共陽極字段碼表) DB 66H,0B6H, 0BEH,0E0H ;4,5,6,7 DB 0FEH,0F6H,0EEH,3EH ;8,9,A,B DB 9CH,7AH,9EH,8EH ;C,D,+,- END DBUF EQU 30H ;三位顯示緩沖區(qū)首址 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV SP,#60H ACALL KEYSCAN ;調(diào)用鍵盤掃描子程序判斷是加分或減分 CJNE A,#0EH,NEXT2 ;不是加分鍵,則轉(zhuǎn)移判斷是減分鍵? NEXT1: ACALL KEYSZ ;是加分鍵, ACALL DISPLAY ;顯示子程序 SJMP MAIN NEXT2: CJNE A,#0FH,MAIN ;都不是,則轉(zhuǎn)MAIN AJMP NEXT1 ;是減分鍵, ORG 0100H KEYSZ: PUSH PSW ; PUSH ACC SETB RS1 MOV R0,#DBUF ;R0指向顯示緩沖區(qū)首地址 MOV R7,#3 ;設(shè)置鍵盤輸入位數(shù) T1: CLR RS1 ACALL KEYSCAN ;調(diào)用鍵盤掃描子程序取按下鍵的鍵號 SETB RS1 CJNE A,#0AH,L2 ;鍵入數(shù)合法性檢測(是否大于9) T2: JNC L1 ;大于9,重新鍵入 MOV R0,A ;鍵號送顯示緩沖區(qū) INC R0 DJNZ R7,L1 ;3位數(shù)值輸入完否?未完繼續(xù),否則返回 POP ACC POP PSW CLR RS1 RET KEYSCAN: MOV R3, #0F7H ;掃描初值(P0.3=0) MOV R1, #00H ;取碼指針 T3: MOV A, R3 ;開始掃描 MOV P0, A ;將掃描值輸出至 MOV A, P0 ;讀入值,判斷是否有鍵按下 MOV R4, A ;存入R4,以判斷按鍵是否放開 SETB C ;C=1 MOV R5, #04H ;掃描 T4: RLC A ;將按鍵左移一位 JNC KEYIN ;判斷C=0?有鍵按下則C=0,跳至KEYIN INC R1 ;C=1,則無鍵按下,將取碼指針值加1 DJNZ R5, L4 ;4列掃描完畢了嗎? MOV A, R3 ;掃描值載入 SETB C ;C=1 RRC A ;掃描下一行 MOV R3, A ;存回掃描寄存器 JC L3 ;C=1?是則尚未掃描到 SJMP KEYSCAN ;C=0,則四行已掃描完畢 KEYIN: MOV R7, #60 ;延時(shí)消除抖動 D2: MOV R6, #248 ; DJNZ R6, $ ; DJNZ R7, D2 ; D3: MOV A, P0 ;延時(shí)后再讀入值 XRL A, R4 ;與上次讀入值作比較 JZ D3 ;A=0,表示按鍵未放,等待按鍵釋放 MOV A, R1 ;按鍵已放開,取碼指針載入累加器 MOV DPTR,#TABLE ;鍵盤碼表首地址送DPTR MOVC A, @A+DPTR ;查鍵碼 RET ;返回 TABLE: DB 00H,01H,02H,03H ;鍵碼安排表與鍵盤相同 DB 04H,05H,06H,07H DB 08H,09H,0AH,0BH DB 0CH,0DH,0EH,0FH ORG 0200H DISPLAY:MOV R0, #DBUF ;顯示子程序 MOV R2,#3 ;顯示3位數(shù)碼 MOV DPTR,#SEGTAB; DISP: MOV A,@R0 ; MOVC A,@A+DPTR ;取字段碼 MOV SCON,#0 ; MOV SBUF,A ;開始 JNB TI,$ ;等待 CLR TI ;完畢 INC R0 ;緩沖單元地址增1 DJNZ R2,DISP ;三位數(shù)碼否? RET ;完畢,則返回 SEGTAB: DB 0FCH,60H,0DAH,0F2H ;0,1,2,3(共陽極字段碼表) DB 66H,0B6H, 0BEH,0E0H ;4,5,6,7 DB 0FEH,0F6H,0EEH,3EH ;8,9,A,B DB 9CH,7AH,9EH,8EH ;C,D,+,- END 搶答器軟件程序 #include- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
5 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 搶答 畢業(yè)設(shè)計(jì) 論文
鏈接地址:http://ioszen.com/p-722968.html