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