單片機(jī)課程設(shè)計(jì)-籃球計(jì)時(shí)計(jì)分器_第1頁(yè)
單片機(jī)課程設(shè)計(jì)-籃球計(jì)時(shí)計(jì)分器_第2頁(yè)
單片機(jī)課程設(shè)計(jì)-籃球計(jì)時(shí)計(jì)分器_第3頁(yè)
單片機(jī)課程設(shè)計(jì)-籃球計(jì)時(shí)計(jì)分器_第4頁(yè)
單片機(jī)課程設(shè)計(jì)-籃球計(jì)時(shí)計(jì)分器_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)課程設(shè)計(jì)報(bào)告籃球比賽計(jì)時(shí)計(jì)分器設(shè)計(jì)2009年6月摘要本設(shè)計(jì)是采用AT89C52單片機(jī)為核心設(shè)計(jì)的一個(gè)用于賽場(chǎng)的籃球計(jì)時(shí)計(jì)分器。本設(shè)計(jì)采用定時(shí)器T0中斷計(jì)時(shí),顯示局部分為計(jì)時(shí)和計(jì)分顯示兩局部,均采用共陰極LED顯示。計(jì)時(shí)局部計(jì)時(shí)范圍寬,而且可定時(shí)設(shè)定與小時(shí)、分鐘調(diào)整;計(jì)分局部調(diào)整靈活,顯示范圍寬,足以滿足各種規(guī)模賽程需要。兩個(gè)顯示模塊均采用動(dòng)態(tài)掃描方式顯示。在本設(shè)計(jì)中P3口〔P3.0——P3.3〕是計(jì)時(shí)計(jì)分顯示共用的掃描口,P0口是計(jì)時(shí)數(shù)據(jù)輸出口,P2口是計(jì)分?jǐn)?shù)據(jù)輸出口,計(jì)時(shí)計(jì)分均設(shè)有顯示緩沖區(qū)〔40H——43H計(jì)分顯示緩沖區(qū),30H——33H計(jì)時(shí)顯示緩沖區(qū)〕。本設(shè)計(jì)共有K1——K5六個(gè)設(shè)置按鍵,K1是甲加分建〔按一次加一分〕,K2是乙加分鍵〔按一次加一分〕,K3是定時(shí)切換鍵〔定時(shí)設(shè)置與計(jì)時(shí)調(diào)時(shí)切換〕,K4是分鐘調(diào)整鍵〔計(jì)時(shí)與定時(shí)分鐘調(diào)整〕,K5是分?jǐn)?shù)位置交換鍵〔交換甲、乙兩隊(duì)比分的位置〕。按鍵與P1口相接,低電平輸入有效.。報(bào)警局部由揚(yáng)聲器組成,當(dāng)計(jì)時(shí)時(shí)間到時(shí),輸出低電平有效,由P1.3口輸出脈沖信號(hào)驅(qū)動(dòng)揚(yáng)聲器發(fā)出聲音。計(jì)時(shí)定時(shí)的原理與定時(shí)鬧鐘相同,為定時(shí)設(shè)置定時(shí)分鐘計(jì)數(shù)單元,通過(guò)比擬定時(shí)與計(jì)時(shí)的分計(jì)數(shù)單元判斷比賽是否結(jié)束是否報(bào)警,定時(shí)與計(jì)時(shí)共用一個(gè)顯示緩沖去,通過(guò)K3〔定時(shí)切換鍵〕進(jìn)行顯示切換,本設(shè)計(jì)可通過(guò)定時(shí)顯示的秒位判斷定時(shí)是否有效,如果秒位顯示00說(shuō)明無(wú)效〔上次用過(guò)的定時(shí)〕,顯示11說(shuō)明有效〔本次定時(shí)〕。定時(shí)時(shí)間到,揚(yáng)聲器報(bào)警,比賽結(jié)束,按K3鍵可停止報(bào)警〔否則一直報(bào)警〕。關(guān)鍵詞:?jiǎn)纹瑱C(jī)籃球計(jì)時(shí)計(jì)分器數(shù)碼管按鍵報(bào)警器目錄1概述 31.1單片機(jī)簡(jiǎn)介 31.2課程設(shè)計(jì)的意義 41.3任務(wù)與要求 42系統(tǒng)總體方案與硬件設(shè)計(jì) 52.1、系統(tǒng)總體方案設(shè)計(jì) 52.2、硬件系統(tǒng)設(shè)計(jì) 5單片機(jī)的選擇 5、時(shí)鐘電路模塊 6、復(fù)位電路模塊 7、按鍵控制模塊 8、數(shù)碼管顯示原理 8、定時(shí)報(bào)警模塊 93、軟件設(shè)計(jì) 103.1、程序流程圖 103.2、程序分析 114PROTEUS軟件仿真 124.1、簡(jiǎn)介 124.2、仿真過(guò)程 125、調(diào)試分析 156、課程設(shè)計(jì)心得體會(huì) 16參考文獻(xiàn): 16附1、源程序代碼 17附2、系統(tǒng)原理圖 241概述1.1單片機(jī)簡(jiǎn)介單片機(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)集成在一塊芯片上。單片機(jī)也被稱為微控制器〔Microcontroller〕,是因?yàn)樗钤绫挥迷诠I(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器開(kāi)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專用處理器的開(kāi)展便分道揚(yáng)鑣。早期的單片機(jī)都是8位或4位的。其中最成功的是INTEL的8031,因?yàn)楹?jiǎn)單可靠而性能不錯(cuò)獲得了很大的好評(píng)。此后在8031上開(kāi)展出了MCS51系列單片機(jī)系統(tǒng)?;谶@一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開(kāi)始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大開(kāi)展,單片機(jī)技術(shù)得到了巨大的提高。隨著INTELi960系列特別是后來(lái)的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場(chǎng)。而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。目前,高端的32位單片機(jī)主頻已經(jīng)超過(guò)300MHz,性能直追90年代中期的專用處理器,而普通的型號(hào)出廠價(jià)格跌落至1美元,最高端的型號(hào)也只有10美元。當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開(kāi)發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在全系列的單片機(jī)上。而在作為掌上電腦和核心處理的高端單片機(jī)甚至可以直接使用專用的Windows和Linux操作系統(tǒng)。1.2課程設(shè)計(jì)的意義課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.隨著科學(xué)技術(shù)開(kāi)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活潑的領(lǐng)域,在生活中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握單片機(jī)的開(kāi)發(fā)技術(shù)是十分重要的。1.3任務(wù)與要求設(shè)計(jì)一個(gè)單片機(jī)系統(tǒng)用于籃球比賽計(jì)時(shí)計(jì)分,滿足以下功能要求:〔1〕能記錄整個(gè)賽程的比賽時(shí)間,并能修改比賽時(shí)間?!?〕能隨時(shí)刷新甲、乙兩隊(duì)在整個(gè)比賽過(guò)程中的比分?!?〕中場(chǎng)交換比賽場(chǎng)地時(shí),能交換甲、乙兩隊(duì)比分的位置?!?〕比賽結(jié)束時(shí),能發(fā)出報(bào)警聲。2系統(tǒng)總體方案與硬件設(shè)計(jì)2.1、系統(tǒng)總體方案設(shè)計(jì)本設(shè)計(jì)是采用AT89C52單片機(jī)為核心設(shè)計(jì)的一個(gè)用于賽場(chǎng)的籃球計(jì)時(shí)計(jì)分器。本設(shè)計(jì)采用定時(shí)器T0中斷計(jì)時(shí),顯示局部分為計(jì)時(shí)和計(jì)分顯示兩局部,均采用共陰極LED顯示。單片機(jī)P3口〔P3.0——P3.5〕是計(jì)時(shí)計(jì)分顯示共用的掃描口,P0口是計(jì)時(shí)數(shù)據(jù)輸出口,P2口是計(jì)分?jǐn)?shù)據(jù)輸出口。計(jì)時(shí)局部計(jì)時(shí)范圍寬,而且可定時(shí)設(shè)定與小時(shí)、分鐘調(diào)整;計(jì)分局部調(diào)整靈活,顯示范圍寬,足以滿足各種規(guī)模賽程需要。兩個(gè)顯示模塊均采用動(dòng)態(tài)掃描方式顯示。2.2、硬件系統(tǒng)設(shè)計(jì)單片機(jī)的選擇AT89C52單片機(jī)是美國(guó)ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4Kbytes的可系統(tǒng)編程的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度,非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)與引腳。具有如下特點(diǎn):40個(gè)引腳,4kBytesFlash片內(nèi)程序存儲(chǔ)器,128bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器〔RAM〕,32個(gè)外部雙向輸入/輸出〔I/O〕口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗〔WDT〕電路,片內(nèi)時(shí)鐘振蕩器.。它集Flash程序存儲(chǔ)器,既可在線編程〔ISP〕也可用傳統(tǒng)方法進(jìn)行編程與通用8位微處理器于單片芯片中,ATMEL公司的功能強(qiáng)大,低價(jià)單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。由于AT89C52的上述優(yōu)點(diǎn),結(jié)合本設(shè)計(jì)的功能要求和降低本錢(qián),故本設(shè)計(jì)采用單片機(jī)AT89C5AT89C52管腳圖、時(shí)鐘電路模塊MCS-51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,此放大器的輸入和輸出端分別是引腳XTAL1和XTAL2,在XTAL1和XTAL2上外接時(shí)鐘源即可構(gòu)成時(shí)鐘電路。有內(nèi)部和外部?jī)煞N時(shí)鐘產(chǎn)生方式。本設(shè)計(jì)采用的是外部方式,原理圖如下圖:參數(shù)選擇:C1、C2對(duì)頻率有微調(diào)作用,當(dāng)外接晶振時(shí),C1和C2通常選擇10——30pF;當(dāng)外接陶瓷諧振器時(shí),C1和C2的典型值約為40+/-10pF,在設(shè)計(jì)印刷電路板時(shí),晶體或陶瓷諧振器和電容應(yīng)盡可能安裝在單片機(jī)芯片附近,以減少寄生電容,保證振蕩器穩(wěn)定和可靠的工作。為提高穩(wěn)定性,應(yīng)采用NPO電容。本設(shè)計(jì)采用的震蕩頻率是12MH、復(fù)位電路模塊復(fù)位電路的根本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位。MCS-51單片機(jī)通常采用上電自動(dòng)復(fù)位、按鈕電平復(fù)位、外部脈沖復(fù)位、上電+按鈕電平復(fù)位、程序運(yùn)行監(jiān)視復(fù)位等方式。上電復(fù)位設(shè)利用電容充電來(lái)實(shí)現(xiàn)的,即上電瞬間RST/Vpd端的電位與Vcc相同,隨著充電電流的減少,RST/Vpd的電位下降,最后被嵌位在0V。按鈕電平復(fù)位是當(dāng)按下按鈕后,電源Vcc通過(guò)電阻R施加在單片機(jī)復(fù)位端RST/Vpd上,實(shí)現(xiàn)單片機(jī)復(fù)位。本設(shè)計(jì)采用的是上電+按鈕電平復(fù)位電路,是上電自動(dòng)復(fù)位與按鈕電平復(fù)位電路的組合,當(dāng)振蕩頻率選11.0592MH時(shí)。電容C取10uF,R取10K,Rs取1K。電路如下列圖:、按鍵控制模塊本設(shè)計(jì)采用的是用查詢方式的,也就是把按鍵接在P1口,用程序查詢方式查詢那個(gè)按鍵按下,執(zhí)行相應(yīng)的操作。圖如下:、數(shù)碼管顯示原理數(shù)碼管實(shí)際上是由7個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。我們分別把他命名為A,B,C,D,E,F,G,H。圖2.2數(shù)碼管內(nèi)部結(jié)構(gòu)圖假設(shè)我們要顯示一個(gè)數(shù)字2,那么A、B、G、E、D這5個(gè)段的發(fā)光管亮就可以了,C、F、H不亮,同時(shí)由于接法為共陽(yáng)接法,那么為低電平是亮,為高電平是滅。從高往低排列,P1.7-P1.0寫(xiě)成二進(jìn)制為01111110,把他轉(zhuǎn)化為16進(jìn)制則為A2H。我們可以根據(jù)硬件的接線把數(shù)碼管顯示數(shù)字編制成一個(gè)表格,見(jiàn)下表,以后直接調(diào)用就行了。數(shù)碼管的接口有靜態(tài)接口和動(dòng)態(tài)接口兩種。靜態(tài)接口為固定顯示方式,無(wú)閃爍,其電路可采用一個(gè)并行口接一個(gè)數(shù)碼管,數(shù)碼管的公共端按共陽(yáng)接VCC,本次課程設(shè)計(jì)由于所需數(shù)碼管較少,故可用些種方法接線。這種接法占用接口多,僅能接少量數(shù)碼管。動(dòng)態(tài)接口采用各數(shù)碼管循環(huán)輪流顯示的方法,當(dāng)循環(huán)顯示的頻率較高時(shí),利用人眼的暫留特性,看不出閃爍顯示現(xiàn)象,這種顯示需要一個(gè)接口完成字形碼的輸出,另一接口完成各數(shù)碼管的輪流點(diǎn)亮。本設(shè)計(jì)采用的是數(shù)碼管動(dòng)態(tài)顯示。、定時(shí)報(bào)警模塊3、軟件設(shè)計(jì)3.1、程序流程圖籃球比賽中,得分可分為1分、2分、3分三種情況,但為了方便我們?cè)谶@只設(shè)置加1分,得2分、3分的情況可用按2次、3次加1分得到。還設(shè)置了定是報(bào)警鍵。根據(jù)這樣的設(shè)計(jì)要求,結(jié)合數(shù)碼管的顯示以與52單片機(jī)中計(jì)數(shù)器的工作實(shí)現(xiàn)方式、接口應(yīng)用、中斷控制等可設(shè)計(jì)出程序流程圖如下:3.2、程序分析本設(shè)計(jì)采用AT89S52單片機(jī)中的一個(gè)16位的定時(shí)/計(jì)數(shù)器T0,分別由TH0和TL0組成,它們均是8位存放器,在特殊功能存放器中占地址8AH-8DH。它們用于存放定時(shí)或計(jì)數(shù)的初始值。此外,內(nèi)部還有一個(gè)8位的方式存放器TMOD和一個(gè)8位的控制存放器TCON。用于選擇和控制定時(shí)/計(jì)數(shù)器的工作?;@球比賽計(jì)分器利用單片機(jī)的計(jì)數(shù)器進(jìn)行工作,計(jì)數(shù)器對(duì)外部脈沖的下降沿進(jìn)行加1計(jì)數(shù),直至計(jì)滿回零。作為可編程器件,單片機(jī)中的定時(shí)/計(jì)數(shù)器初始化編程步驟如下:根據(jù)定時(shí)時(shí)間要求或計(jì)數(shù)要求計(jì)算計(jì)數(shù)器初值;將工作方式控制字寫(xiě)入TMOD存放器;將計(jì)數(shù)初值寫(xiě)入THX和TLX存放器;啟動(dòng)定時(shí)器/計(jì)數(shù)器,即將TRX置位。如果工作于中斷方式,需置位EA〔中斷總開(kāi)關(guān)〕與ET〔允許定時(shí)/計(jì)數(shù)器中斷〕,并編寫(xiě)中斷效勞程序。其設(shè)計(jì)中斷子程序圖如下:4PROTEUS軟件仿真4.1、簡(jiǎn)介Proteus軟件是英國(guó)Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)與外圍器件。它是目前最好的仿真單片機(jī)與外圍器件的工具。Protues提供了豐富的資源:仿真元器件資源:仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件,有30多個(gè)元件庫(kù)。仿真儀表資源:示波器、邏輯分析儀、虛擬終端、SPI調(diào)試器、I2C調(diào)試器、信號(hào)發(fā)生器、模式發(fā)生器、交直流電壓表、交直流電流表。理論上同一種儀器可以在一個(gè)電路中隨意的調(diào)用。Proteus還提供了一個(gè)圖形顯示功能,可以將線路上變化的信號(hào),以圖形的方式實(shí)時(shí)地顯示出來(lái),其作用與示波器相似,但功能更多。這些虛擬儀器儀表具有理想的參數(shù)指標(biāo)。另外Proteus還提供了比擬豐富的測(cè)試信號(hào)用于電路的測(cè)試。這些測(cè)試信號(hào)包括模擬信號(hào)和數(shù)字信號(hào)。在Protues中進(jìn)行電路仿真時(shí),先繪制好原理圖,再調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,隨后便可在PROTEUS的原理圖中模擬的實(shí)物運(yùn)行狀態(tài)和過(guò)程,進(jìn)行觀察從而改進(jìn)自己的設(shè)計(jì)方案。操作簡(jiǎn)單,非常適合初學(xué)者進(jìn)行單片機(jī)的仿真,進(jìn)而了解其原理,增強(qiáng)實(shí)踐。4.2、仿真過(guò)程在計(jì)算機(jī)中翻開(kāi)PROTEUS軟件,建立新的工程,在元件庫(kù)中選擇相應(yīng)的元件,放在編輯窗口中,依次連線,組成仿真原理圖。在用Protues進(jìn)行仿真之前,先要用WAVE軟件將我們編寫(xiě)好的匯編程序編譯。具體方法是在WAVE中先新建一工程,之后輸入編寫(xiě)的程序,輸入完成后保存然后執(zhí)行工程、編譯,在目標(biāo)文件夾內(nèi)生成編譯好的程序文件,其中*.HEX文件就是我們所需要的,在之后電路設(shè)計(jì)好后用于放入AT89S51中執(zhí)行其功能。檢查連接好的電路,確保無(wú)誤后,在電路連接好的PROTEUS窗口中雙擊AT89S51,在彈出的對(duì)話框中選擇單片機(jī)中要輸入的程序。用鼠標(biāo)點(diǎn)擊仿真鍵進(jìn)行仿真,在仿真過(guò)程中點(diǎn)擊按鍵,觀察數(shù)碼管的顯示情況,看是否符合設(shè)計(jì)的要求,假設(shè)與要求不符,檢查電路是否連線正確,實(shí)在找不出錯(cuò)誤所在,可以請(qǐng)教老師或請(qǐng)同學(xué)幫助檢查,直到正確為止。計(jì)時(shí)工作仿真狀態(tài)圖:甲乙兩隊(duì)計(jì)分工作仿真狀態(tài)圖:計(jì)時(shí)計(jì)分工作狀態(tài)圖:5、調(diào)試分析在仿真成功之后,便可進(jìn)行實(shí)踐了。實(shí)物和仿真還是有一定的差異的,制作實(shí)物時(shí)要考慮的方面比仿真多的多。做實(shí)物時(shí),不僅要考慮到電路正確同時(shí)也要注意版面的設(shè)計(jì),不僅設(shè)計(jì)功能要求實(shí)現(xiàn),版面的美觀也是必不可少的一方面,這就要注意盡量少的接線。在電路板剛剛焊好后,與以前制作的單片機(jī)板連接在一起,接好電路,烤入程序后發(fā)現(xiàn)第一個(gè)數(shù)碼管的C段一直處于亮的狀態(tài),經(jīng)檢查后確定不是硬件出現(xiàn)的問(wèn)題,但在仿真時(shí)能正確顯示也證明程序也是正確的,找不到問(wèn)題所在讓我非常郁悶。想著原因可能程序讀入時(shí)出現(xiàn)錯(cuò)誤,試著重新將程序烤入單片機(jī)中,顯示結(jié)果果然變得正常,實(shí)踐成功。6、課程設(shè)計(jì)心得體會(huì)這次課程設(shè)計(jì)歷時(shí)二個(gè)星期左右,通過(guò)這兩個(gè)星期的學(xué)習(xí),發(fā)現(xiàn)了自己的很多缺乏,自己知識(shí)的很多漏洞,看到了自己的實(shí)踐經(jīng)驗(yàn)還是比擬缺乏,理論聯(lián)系實(shí)際的能力還急需提高。回憶起此次單片機(jī)課程設(shè)計(jì),我仍感慨頗多,確實(shí),從選題到定稿,從理論到實(shí)踐,在接近兩星期的日子里,可以說(shuō)得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時(shí)不僅可以穩(wěn)固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)效勞,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的缺乏之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,比方說(shuō)不懂一些元器件的使用方法,對(duì)單片機(jī)匯編語(yǔ)言掌握得不好……通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)重新溫故。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問(wèn)題,最后在XXX、XXX、XXX老師的辛勤指導(dǎo)下,終于游逆而解。同時(shí),在XXX、XXX、XXX老師那里我學(xué)得到很多實(shí)用的知識(shí),在次我表示感謝!同時(shí),對(duì)給過(guò)我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!參考文獻(xiàn):[1]余發(fā)山.單片機(jī)原理與應(yīng)用技術(shù).徐州:中國(guó)礦業(yè)大學(xué)出版社,2003.[2]佟云峰,等.單片機(jī)原理與其應(yīng)用.重慶:重慶大學(xué)出版社,2004,1.[3]吳金戌,等.8051單片機(jī)實(shí)踐與應(yīng)用.北京:清華大學(xué)出版社,2001,8.[4]劉瑞新.單片機(jī)原理與應(yīng)用教程.北京:機(jī)械工業(yè)出版社,2005.[5]聶毅.宏匯編語(yǔ)言程序設(shè)計(jì)教程.北京:電子工業(yè)出版社,1998.[6]周航慈.單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù).北京:北京航空航天大學(xué)出版社,2002.附1、源程序代碼scoreDisplayBufferequ40h;設(shè)置計(jì)分顯示緩沖區(qū)的地址為40h-45hascoreequ47h;設(shè)置甲隊(duì)的計(jì)分地址bscoreequ49h;設(shè)置乙隊(duì)的計(jì)分地址akeybitp1.0;設(shè)置甲加分鍵〔按一次加一分〕bkeybitp1.1;設(shè)置乙加分鍵〔按一次加一分〕abkeybitp1.6;設(shè)置分?jǐn)?shù)位置交換鍵〔交換比分位置〕DisplayBufferequ30h;設(shè)置計(jì)、定時(shí)顯示緩沖區(qū)地址30h-35hOneSecondCounterequ39h;設(shè)置1秒計(jì)數(shù)地址Minuteequ3bh;設(shè)置分鐘計(jì)數(shù)地址Secondequ3ch;設(shè)置秒計(jì)數(shù)地址ClockModeequ20h.0;設(shè)置模式〔計(jì)時(shí)/定時(shí)〕存放器地址AlarmOnOffequ20h.1;設(shè)置報(bào)警開(kāi)啟/關(guān)閉標(biāo)志AlarmTimeOnequ20h.2;設(shè)置計(jì)時(shí)時(shí)間到標(biāo)志DispMinuteequ22h;設(shè)置分鐘顯示存放器的地址DispSecondequ23h;設(shè)置秒顯示存放器的地址AlarmMinuteequ2fh;設(shè)置定時(shí)分鐘計(jì)數(shù)地址AlarmSetKeybitp1.2;定義設(shè)置定時(shí)設(shè)置切換鍵MinuteKeybitp1.5;定義分設(shè)置鍵RelayOutequp1.3;定義報(bào)警發(fā)聲輸出引腳;@@@@@@@@@@@@@@中斷入口程序@@@@@@@@@org00hajmpReset;程序開(kāi)始o(jì)rg0bh;T0中斷地址ajmpTimeInt;調(diào)到中斷效勞程序;@@@@@@@@@@@@@@程序開(kāi)始@@@@@@@@@@@org0020hReset:movsp,#70h;工作狀態(tài)\地址初始化setbRelayOutmovOneSecondCounter,#125movMinute,#00movSecond,#00movAlarmMinute,#00movascore,#00movbscore,#00clrAlarmOnOffclrClockModeclrAlarmTimeOnsetbRelayOutmovtmod,#00000001bmovth0,#0E0hmovtl0,#0C0hmovie,#82h;開(kāi)全局中斷setbtr0;定時(shí)器T0開(kāi)始工作;@@@@@@@@@@@@@@@以下為主程序@@@@@@@@@@@@@@@@@MainLoop:jnbakey,bbb1;如甲加分鍵按下,執(zhí)行bbb1后的語(yǔ)句,完成甲分?jǐn)?shù)加一jnbbkey,bbb2;如乙加分鍵按下,執(zhí)行bbb2后的語(yǔ)句,完成乙分?jǐn)?shù)加一jnbabkey,bbb3;如顯示交換鍵按下,執(zhí)行bbb3后的語(yǔ)句,交換顯示ajmpxxx;如果沒(méi)有分?jǐn)?shù)設(shè)置鍵按下,跳到xxx語(yǔ)句bbb1:jnbakey,bbb1;等待按鍵釋放mova,ascoreadda,#1;完成甲分?jǐn)?shù)加一movascore,acallConvertoBuffer;調(diào)用轉(zhuǎn)換到顯示緩沖區(qū)子程序ajmpxxx;跳到xxx語(yǔ)句bbb2:jnbbkey,bbb2;與bbb1的功能類似,完成乙分?jǐn)?shù)加一mova,bscoreadda,#1movbscore,acallConvertoBufferajmpxxxbbb3:jnbabkey,bbb3;完成顯示交換mova,ascoremov48h,amova,bscoremovascore,amova,48hmovbscore,acallConvertoBuffer;調(diào)用轉(zhuǎn)換到顯示緩沖區(qū)子程序xxx:jbAlarmSetKey,CheckMinuteKey;定時(shí)設(shè)置鍵按下了嗎?沒(méi)有則檢測(cè)分鐘設(shè)置鍵callDelayjbAlarmSetKey,CheckMinuteKey;延時(shí)去抖動(dòng)setbClockModecallAlarmSetCheckMinuteKey:jbMinuteKey,CheckAlarm;分設(shè)置鍵按下了嗎?沒(méi)有則轉(zhuǎn)去檢測(cè)小時(shí)設(shè)置鍵mova,Minuteadda,#1movMinute,acjnea,#3ch,NotOver1;到60分鐘了嗎?movMinute,#0;到60分鐘則將分鐘清0NotOver1:jnbMinuteKey,$CheckAlarm:jnbAlarmTimeOn,ToReturncallAlarmProcessToReturn:ajmpMainLoop;跳回主程序;@@@@@@@@@@@@@定時(shí)器Timer0中斷效勞程序@@@@@@@@@@@TimeInt:movth0,#0E0h;重新加載定時(shí)參數(shù)movtl0,#0C0hpushaccpushpswsetbrs0clrrs1djnzOneSecondCounter,NotoneSecond;即夠1秒了嗎?movOneSecondCounter,#125;如夠1秒則重新設(shè)置"OneSecondCounter"計(jì)數(shù)器callClock;調(diào)用將時(shí)鐘內(nèi)容加1秒的子程序callConvertoBuffer;調(diào)用轉(zhuǎn)換到顯示緩沖區(qū)子程序NotoneSecond:callScanDisplay;調(diào)用掃描顯示子程序poppswpopaccreti;中斷返回;@@@@@@@@@@@@掃描顯示子程序@@@@@@@@@@@@@@@@@@ScanDisplay:MOVR1,#DisplayBuffer;指向計(jì)(定)時(shí)顯示數(shù)據(jù)首址MOVR0,#scoreDisplayBuffer;指向分?jǐn)?shù)顯示數(shù)據(jù)首址MOVR4,#11111110b;掃描控制字初值PLAY:MOVA,R4;掃描字放入AMOVp3,A;從p3口輸出MOVA,@R1;取計(jì)時(shí)顯示數(shù)據(jù)到AMOVDPTR,#TAB;取段碼表地址MOVCA,@A+DPTR;查顯示數(shù)據(jù)對(duì)應(yīng)段碼MOVP0,A;段碼放入P0口MOVA,@R0;取計(jì)分顯示數(shù)據(jù)到AMOVDPTR,#TAB;取段碼表地址MOVCA,@A+DPTR;查顯示數(shù)據(jù)對(duì)應(yīng)段碼MOVP2,A;段碼放入P2口LCALLDelayINCR1;指向下一地址INCR0MOVA,R4;掃描控制字放入AJNBACC.4,ENDOUT;掃到第六位時(shí)結(jié)束RLA;A中數(shù)據(jù)循環(huán)左移MOVR4,A;放回R4內(nèi)AJMPPLAYENDOUT:SETBp3.7MOVP0,#0FFHMOVP2,#0FFHRET;子程序返回TAB:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,40H,80H,00H;@@@@@@@@@@@@@計(jì)時(shí)加1秒的子程序@@@@@@@@@@@@@@Clock:mova,Second;將原秒值送入asuba,#1;加1秒movSecond,acjnea,#00H,NotOverFlow;夠60秒了嗎?movSecond,#59;夠了則將秒值清0mova,Minutesuba,#1movMinute,a;分鐘加1cjnea,#00H,NotOverFlow;夠60分了嗎?movMinute,#59;夠了則將分值清0NotOverFlow:jnbAlarmOnOff,NotAlarmmova,SecondjnzNotAlarm;秒為零嗎?mova,Minutecjnea,AlarmMinute,NotAlarm;計(jì)時(shí)分鐘值和定時(shí)設(shè)置分鐘值相等嗎?setbAlarmTimeOn;到了鬧時(shí)時(shí)間則將“鬧時(shí)時(shí)間到〞標(biāo)志設(shè)為1NotAlarm:ret;@@@@@@@計(jì)時(shí)定時(shí)值與計(jì)分轉(zhuǎn)換到顯示緩沖區(qū)子程序@@@@@@@@@@ConvertoBuffer:movr1,#DisplayBuffer;將計(jì)(定)時(shí)緩沖區(qū)地址賦給r1movR0,#scoreDisplayBuffer;將計(jì)分緩沖區(qū)地址賦給r0jnbakey,Convert1jnbbkey,Convert1jbabkey,zzz1ajmpConvert1zzz1:jbClockMode,DispAlarmSet;判斷計(jì)時(shí)模式,以決定是顯示計(jì)時(shí)時(shí)間還是定時(shí)時(shí)間mova,Second;將計(jì)時(shí)數(shù)據(jù)轉(zhuǎn)到顯示存放器movDispSecond,amova,MinutemovDispminute,aajmpConvertDispAlarmSet:jbAlarmOnOff,AlarmOn;將定時(shí)數(shù)據(jù)轉(zhuǎn)到顯示存放器movDispSecond,#00h;秒位顯示00說(shuō)明無(wú)效〔上次用過(guò)的定時(shí)〕ajmpNextAlarmOn:movDispSecond,#11;顯示11說(shuō)明有效〔本次定時(shí)〕Next:mova,AlarmMinutemovDispminute,aConvert:mova,DispSecond;將計(jì)(定)時(shí)顯示存放器中的內(nèi)容賦值給amovb,#10;令b=10divab;a/b商〔十位〕放a中,余數(shù)〔個(gè)位〕放b中mov@r1,b;將b中的個(gè)位賦值給〔〔r1〕〕incr1;r1自加1mov@

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論