基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)(C語(yǔ)言編程、含proteus仿真圖)_第1頁(yè)
基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)(C語(yǔ)言編程、含proteus仿真圖)_第2頁(yè)
基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)(C語(yǔ)言編程、含proteus仿真圖)_第3頁(yè)
基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)(C語(yǔ)言編程、含proteus仿真圖)_第4頁(yè)
基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器設(shè)計(jì)(C語(yǔ)言編程、含proteus仿真圖)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘要單片機(jī),亦稱單片微電腦或單片微型計(jì)算機(jī)。它是把中央處理器(CPU)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、輸入/輸出端口(I/0)等主要計(jì)算機(jī)功能部件都集成在一塊集成電路芯片上的微型計(jì)算機(jī)。本設(shè)計(jì)是基于AT89S52單片機(jī)的籃球計(jì)時(shí)計(jì)分器,利用7段共陰LED作為顯示器件。在此設(shè)計(jì)中共接入了1個(gè)四位一體7段共陰LED顯示器,2個(gè)兩位一體7段共陰LED顯示器,前者用來記錄賽程時(shí)間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊(duì)的分?jǐn)?shù),每隊(duì)2個(gè)LED顯示器顯示范圍可達(dá)到099分。賽程計(jì)時(shí)采用倒計(jì)時(shí)方式,比賽開始時(shí)啟動(dòng)計(jì)時(shí),直至計(jì)時(shí)到零為止。其次,為了配合計(jì)時(shí)器和計(jì)分器校正調(diào)

2、整時(shí)間和比分,我們特定在本設(shè)計(jì)中設(shè)立了7個(gè)按鍵,用于設(shè)置,調(diào)整時(shí)間,啟動(dòng),調(diào)整分?jǐn)?shù)和暫停等功能。采用單片機(jī)控制是這個(gè)系統(tǒng)按鍵操作使用簡(jiǎn)潔,LED顯示,安裝方便。主控芯片采用AT89S52單片機(jī),采用C語(yǔ)言進(jìn)行編程,編程后利用Keil uVision3來進(jìn)行編譯,再生成的HEX文件裝入芯片中,采用proteus軟件來仿真,檢驗(yàn)功能是否能夠正常實(shí)現(xiàn)。仿真成功后,焊接硬件電路,通過ISP下載器將hex文件燒制到單片機(jī)。目錄1. 概述31.1 背景知識(shí)介紹31.2 設(shè)計(jì)內(nèi)容31.3計(jì)任務(wù)和要求41.4 設(shè)計(jì)意義42.系統(tǒng)總體方案及硬件設(shè)計(jì)52.1 系統(tǒng)總體方案設(shè)計(jì)52.2 硬件電路設(shè)計(jì)6時(shí)鐘電路模塊7

3、2.2.2 復(fù)位電路模塊7顯示模塊82.2.4 報(bào)警模塊9總硬件電路設(shè)計(jì)103 軟件設(shè)計(jì)113.1 軟件總體設(shè)計(jì)方案113.2 軟件設(shè)計(jì)具體過程12延時(shí)模塊設(shè)計(jì)133.2.2 數(shù)碼管動(dòng)態(tài)刷新顯示程序133.2.3 T0中斷程序153.2.4 加分子程序16減分子程序163.2.6 調(diào)整時(shí)間子程序173.2.7 半場(chǎng)交換比分子程序193.2.8 比賽暫停子程序203.2.9 中場(chǎng)指示燈程序213.2.10 主程序224 . PROTEUS仿真244.1 PROTEUS簡(jiǎn)介244.2仿真過程245. 硬件焊接與調(diào)試276.課程設(shè)計(jì)體會(huì)28參考文獻(xiàn)29附1 源程序30附2 系統(tǒng)原理圖401. 概述1

4、.1 背景知識(shí)介紹體育比賽計(jì)時(shí)計(jì)分系統(tǒng)是對(duì)體育比賽過程中所產(chǎn)生的時(shí)間,比分等數(shù)據(jù)進(jìn)行快速采集記錄,加工處理,傳遞利用的信息系統(tǒng)。根據(jù)不同運(yùn)動(dòng)項(xiàng)目的不同比賽規(guī)則要求,體育比賽的計(jì)時(shí)計(jì)分系統(tǒng)包括測(cè)量類,評(píng)分類,命中類,制勝類得分類等多種類型。 籃球比賽是根據(jù)運(yùn)動(dòng)隊(duì)在規(guī)定的比賽時(shí)間里得分多少來決定勝負(fù)的,因此,籃球比賽的計(jì)時(shí)計(jì)分系統(tǒng)是一種得分類型的系統(tǒng)?;@球比賽的計(jì)時(shí)計(jì)分系統(tǒng)由計(jì)時(shí)器,計(jì)分器等多種電子設(shè)備組成,同時(shí),根據(jù)目前高水平籃球比賽要求,完善的籃球比賽計(jì)時(shí)計(jì)分系統(tǒng)設(shè)備應(yīng)能夠與現(xiàn)場(chǎng)成績(jī)處理,現(xiàn)場(chǎng)大屏幕,電視轉(zhuǎn)播車等多種設(shè)備相聯(lián),以便實(shí)現(xiàn)高比賽現(xiàn)場(chǎng)感,表演娛樂觀眾等功能目標(biāo)。由于單片機(jī)的集成度高,

5、功能強(qiáng),通用性好,特別是它具有體積小,重量輕,能耗低,價(jià)格便宜,可靠性高,抗干擾能力強(qiáng)和使用方便等獨(dú)特的優(yōu)點(diǎn),使單片機(jī)迅速得到了推廣應(yīng)用,目前已經(jīng)成為測(cè)量控制應(yīng)用系統(tǒng)中的優(yōu)選機(jī)種和新電子產(chǎn)品的關(guān)鍵部位。世界各大電氣廠家,測(cè)控技術(shù)企業(yè),機(jī)電行業(yè),競(jìng)相把單片機(jī)應(yīng)用于產(chǎn)品更新,作為實(shí)現(xiàn)數(shù)字化,智能化的核心部件?;@球計(jì)時(shí)計(jì)分器就是以單片機(jī)為核心的計(jì)時(shí)計(jì)分系統(tǒng),由計(jì)時(shí)器,計(jì)分器,綜合控制器和24秒控制器等組成。1.2 設(shè)計(jì)內(nèi)容本設(shè)計(jì)是基于AT89S52單片機(jī)的籃球計(jì)時(shí)計(jì)分器,利用7段共陰LED作為顯示器件。在此設(shè)計(jì)中共接入了1個(gè)四位一體7段共陰LED顯示器,2個(gè)兩位一體7段共陰LED顯示器,前者用來記錄

6、賽程時(shí)間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊(duì)的分?jǐn)?shù),每隊(duì)2個(gè)LED顯示器顯示范圍可達(dá)到099分。賽程計(jì)時(shí)采用倒計(jì)時(shí)方式,比賽開始時(shí)啟動(dòng)計(jì)時(shí),直至計(jì)時(shí)到零為止。其次,為了配合計(jì)時(shí)器和計(jì)分器校正調(diào)整時(shí)間和比分,我們特定在本設(shè)計(jì)中設(shè)立了7個(gè)按鍵,用于設(shè)置,調(diào)整時(shí)間,啟動(dòng),調(diào)整分?jǐn)?shù)和暫停等功能。采用單片機(jī)控制是這個(gè)系統(tǒng)按鍵操作使用簡(jiǎn)潔,LED顯示,安裝方便。1.3計(jì)任務(wù)和要求任務(wù): 設(shè)計(jì)一個(gè)用于賽場(chǎng)的籃球計(jì)時(shí)計(jì)分器。要求: 1、能記錄整個(gè)賽程的比賽時(shí)間,并能隨時(shí)實(shí)現(xiàn)暫停。 2、能隨時(shí)刷新甲、乙兩隊(duì)在整個(gè)過程中的比分。 3、中場(chǎng)交換比賽場(chǎng)地時(shí),能自動(dòng)交換甲、乙兩隊(duì)比分的位置。 4

7、、比賽中場(chǎng)和結(jié)束時(shí),能發(fā)出報(bào)警聲。5、通過指示燈指示上下半場(chǎng)。6、當(dāng)比賽時(shí)間需要回倒時(shí),能通過按鍵實(shí)現(xiàn)回表。7、加分有誤時(shí)可通過按鍵實(shí)現(xiàn)減分調(diào)整。1.4 設(shè)計(jì)意義課程設(shè)計(jì)使我們進(jìn)一步熟悉和掌握了單片機(jī)的內(nèi)部結(jié)構(gòu)和工作原理,了解了單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的基本方法和步驟,掌握了單片機(jī)仿真軟件Proteus的使用方法,鍵盤和顯示器在的單片機(jī)控制系統(tǒng)中的應(yīng)用以及撰寫課程設(shè)計(jì)報(bào)告的方法。此次設(shè)計(jì)很好的將書本上的理論知識(shí)和實(shí)踐有機(jī)的聯(lián)系了起來,是我們對(duì)理論知識(shí)有了更進(jìn)一步的掌握,鍛煉了我們的動(dòng)手能力,同時(shí)也讓我們懂得了理論與實(shí)際相結(jié)合的意義。為以后的工作和學(xué)習(xí)提供了寶貴的經(jīng)驗(yàn)。2.系統(tǒng)總體方案及硬件設(shè)計(jì)2.1

8、 系統(tǒng)總體方案設(shè)計(jì)籃球計(jì)時(shí)計(jì)分器主要包括單片機(jī)控制系統(tǒng)、計(jì)時(shí)顯示模塊、計(jì)分顯示模塊、定時(shí)報(bào)警,按鍵控制鍵盤模塊。通過這幾個(gè)模塊的協(xié)調(diào)工作就可以完成相應(yīng)的計(jì)時(shí)計(jì)分控制和顯示功能。這四個(gè)模塊的相互連接如下圖(圖1)所示:本設(shè)計(jì)是基于AT89S52單片機(jī)的籃球計(jì)時(shí)計(jì)分器,利用7段共陰LED作為顯示器件。在此設(shè)計(jì)中共接入了1個(gè)四位一體7段共陰LED顯示器,2個(gè)兩位一體7段共陰LED顯示器,前者用來記錄賽程時(shí)間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊(duì)的分?jǐn)?shù),每隊(duì)2個(gè)LED顯示器顯示范圍可達(dá)到099分。賽程計(jì)時(shí)采用倒計(jì)時(shí)方式,比賽開始時(shí)啟動(dòng)計(jì)時(shí),直至計(jì)時(shí)到零為止。2.2 硬件電路設(shè)計(jì)單

9、片機(jī)AT89S52簡(jiǎn)介AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。    AT89S52(如圖2)具有如下特點(diǎn):40個(gè)引腳,8k Bytes Flash片內(nèi)程序存儲(chǔ)器,256 by

10、tes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器.圖 2 AT89S52單片機(jī)引腳圖此模塊電路包括時(shí)鐘電路模塊,復(fù)位電路模塊及報(bào)警顯示模塊。2.2.1時(shí)鐘電路模塊時(shí)鐘電路在單片機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘是保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢。為達(dá)到振蕩周期是12MHZ的要求,這里要采用12MHZ的晶振,另外有兩個(gè)22P的電容,兩晶

11、振引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳。具體連接圖如圖3所示: 圖 3 晶振電路2.2.2 復(fù)位電路模塊復(fù)位是單片微機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片微機(jī)從0000H單元開始執(zhí)行程序。除進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,可以按復(fù)位鍵以重新啟動(dòng),也可以通過監(jiān)視定時(shí)器來強(qiáng)迫復(fù)位。RST引腳是復(fù)位信號(hào)的輸入端。復(fù)位電路在這里采用的是上電+按鈕復(fù)位電路形式,具體連接電路如圖4圖 4 復(fù)位電路2.2.3顯示模塊本設(shè)計(jì)采用共陰極數(shù)碼顯示器,通常,共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電

12、路的輸出端為高電平時(shí),該端所連接的字符導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。同樣,要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。本次設(shè)計(jì)在顯示模塊用到的是一個(gè)4位一體和2個(gè)兩位一體共陰極數(shù)碼管,共有8個(gè)代碼輸入口和8個(gè)位選輸入口,采用排阻提供上拉電流數(shù)碼管,以保證有足夠大的電流點(diǎn)亮數(shù)碼管,采用動(dòng)態(tài)驅(qū)動(dòng),使各位數(shù)碼管逐個(gè)輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng),由于掃描速度極快,顯示效果與靜態(tài)驅(qū)動(dòng)相同,其具體圖形如下圖5圖6所示圖5圖62.2.4 報(bào)警模塊蜂鳴器通過一NPN三極管進(jìn)行驅(qū)動(dòng),如圖觸發(fā)信號(hào)有基極引入。(圖7)圖72.2.5總硬件電

13、路設(shè)計(jì)圖83 軟件設(shè)計(jì)在設(shè)計(jì)程序之前,我們首先要對(duì)單片機(jī)應(yīng)用系統(tǒng)預(yù)完成的任務(wù)進(jìn)行深入的分析,明確系統(tǒng)的設(shè)計(jì)任務(wù)、功能要求和技術(shù)指標(biāo)。其次,要對(duì)系統(tǒng)的硬件資源和工作環(huán)境進(jìn)行分析。這是單片機(jī)應(yīng)用系統(tǒng)程序設(shè)計(jì)的基礎(chǔ)和條件。3.1 軟件總體設(shè)計(jì)方案本次單片機(jī)課程設(shè)計(jì)軟件設(shè)計(jì)部分采用模塊化程序設(shè)計(jì),程序部分由主程序、T0中斷程序、掃描顯示子程序、計(jì)時(shí)加(減)1秒的子程序、暫停子程序、快表和回表子程序、延時(shí)子程序等組成.其程序流程圖如圖9圖10。圖9 主程序流程圖圖10掃描刷新顯示子程序流程圖3.2 軟件設(shè)計(jì)具體過程 軟件設(shè)計(jì)部分采用模塊化程序設(shè)計(jì),用C語(yǔ)言編寫。Keil是美國(guó)Keil Software公

14、司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。程序部分由主程序、T0中斷程序、掃描顯示子程序、計(jì)時(shí)加(減)1秒的子程序、暫停子程序、快表和回表子程序、延時(shí)子程序等組成。3.2.1延時(shí)模塊設(shè)計(jì)void delay(int t)調(diào)用該子程序能實(shí)現(xiàn)延時(shí)功

15、能 通過參數(shù)t,可以調(diào)成延時(shí)時(shí)間 while(t-) unsigned int i; 設(shè)置變量i的變化范圍,能調(diào)整延時(shí)的單位時(shí)間 for(i=0;i<200;i+); 長(zhǎng)度,i越小,延時(shí)的單位時(shí)間越短,精度越高 3.2.2 數(shù)碼管動(dòng)態(tài)刷新顯示程序void display(int i,int j,int x,int y) 變量i,j,x,y分別為分,秒,A分?jǐn)?shù),B分?jǐn)?shù) if(jie=1&&bujin!=2) 當(dāng)中間變量jie=1時(shí),為上半場(chǎng),此時(shí)對(duì)P1賦值 P1=0xbf; 使P1=0xbf, 即P1=1011 1111B,上半場(chǎng)指示燈對(duì)應(yīng)點(diǎn)亮 P2=0xfe; 數(shù)碼管動(dòng)態(tài)

16、刷新顯示程序 P2=1111 1110, i為分鐘 P0=segi%100/10;P2=0xfe,所以刷新顯示時(shí)間的分鐘十位,調(diào)用延時(shí)程序, delay(1); 延時(shí)數(shù)碼管的點(diǎn)亮 P2=0xff; P0=0; P2=0xfd; 同理,動(dòng)態(tài)刷新時(shí)分鐘個(gè)位并延時(shí)點(diǎn)亮 P0=segi%10; delay(1); P2=0xff; P0=0; P2=0xfb; 同理,動(dòng)態(tài)刷新時(shí)秒鐘十位并延時(shí)點(diǎn)亮 P0=segj%100/10; delay(1); P0=0; P2=0xff; P2=0xf7; 同理,動(dòng)態(tài)刷新時(shí)秒鐘個(gè)位并延時(shí)點(diǎn)亮 P0=segj%10; delay(1); P0=0; P2=0xff;

17、 P2=0xef; 同理,動(dòng)態(tài)刷新A分?jǐn)?shù)十位并延時(shí)點(diǎn)亮 P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; 同理,動(dòng)態(tài)刷新A分?jǐn)?shù)個(gè)位并延時(shí)點(diǎn)亮 P0=segx%10; delay(1); P2=0xff; P0=0; P2=0xbf; 同理,動(dòng)態(tài)刷新B分?jǐn)?shù)十位并延時(shí)點(diǎn)亮 P0=segy%100/10; delay(1); P0=0; P2=0xff; P2=0x7f; 同理,動(dòng)態(tài)刷新B分?jǐn)?shù)十位并延時(shí)點(diǎn)亮 P0=segy%10; delay(1); P0=0; P2=0xff;本設(shè)計(jì)中各個(gè)數(shù)碼管采用動(dòng)態(tài)驅(qū)動(dòng),使各位數(shù)碼管逐個(gè)輪流受控顯示,由于掃描速

18、度極快(本實(shí)驗(yàn)中大約每20毫秒刷新一次),所以顯示效果與靜態(tài)驅(qū)動(dòng)相同。3.2.3 T0中斷程序void t0(void) interrupt 1本設(shè)計(jì)調(diào)用定時(shí)器T0,計(jì)時(shí)單位為一秒 TH0=0xb1; 對(duì)定時(shí)器T0送入計(jì)數(shù)初值,由于TH0=0xb; TL0=0x10;TL0=0x10 故定時(shí)器定時(shí)為20毫秒,即每 if(n=0) 20毫秒調(diào)用一次void t0(void) interrupt 1 n=60;m-; i+; if(i=50) 令i值為50 50*20毫秒=1秒,來實(shí)現(xiàn)計(jì)時(shí) n-; 單位為一秒 i=0; display(m,n-1,x,y); 調(diào)用動(dòng)態(tài)刷新顯示程序,即每20毫秒刷新

19、一 次數(shù)碼管3.2.4 加分子程序void keyjiafen1() 當(dāng)檢測(cè)到RXD按鍵按下時(shí),調(diào)用延時(shí)子程序 if(RXD=0) 實(shí)現(xiàn)消除按鍵抖動(dòng)功能,即,當(dāng)delay(1);, 檢測(cè)到按鍵按下時(shí)候,延時(shí),按鍵仍按下,說明 if(RXD=0) 按鍵確實(shí)按下,非抖動(dòng),A對(duì)應(yīng)加分 while(RXD=0); x+; if(TXD=0) 檢測(cè)TXD加分按鍵時(shí)候按下,B加分 delay(1); if(TXD=0) while(TXD=0); y+; 3.2.5減分子程序void keyjianfen1()減分按鍵檢測(cè)子程序,其基本算法及功能與加分 相同 if(WR=0) delay(1); if(W

20、R=0) while(WR=0); x-; if(RD=0) delay(1); if(RD=0) while(RD=0); y-; 3.2.6 調(diào)整時(shí)間子程序調(diào)整時(shí)間子程序,使時(shí)間快速倒退或快進(jìn),實(shí)現(xiàn)回表功能,同時(shí)回表之后能自動(dòng)暫停void key2() if(INT0=0) delay(10);if(INT0=0) 回表子程序,檢測(cè)到INT0按下時(shí),使時(shí)間回倒 chuzanting=0;chuzanting=0; zanting=1;為附加變量,當(dāng)回表按鍵zanting=1; 松開時(shí),表暫停,這兩個(gè)變量用來調(diào)用暫停n+;if(n=60) m+; n=1; if(INT1=0) 快表子程序,

21、檢測(cè)到INT1按下時(shí),使倒計(jì)加快, 通常情況下與回表子程序配合使用,即當(dāng)回表 回過的時(shí)候,按此鍵調(diào)整時(shí)間 delay(10);chuzanting=0; zanting=1;作用同上 if(INT1=0) chuzanting=0; zanting=1; n-; void shijian() 該程序使回表和快表按鍵松開時(shí)候能自動(dòng)暫停 if(zanting=1&&INT0=1&&INT1=1&&chuzanting=0 ) EA=0;zanting=1&&INT0=1&&INT1=1&&chuzant

22、ing=0作用為zanting=0; 當(dāng)按鍵松開的時(shí)候,調(diào)用暫停程序條件huzanting=0; zanting=0;chuzanting=0,初始化,以便下次回表和快表 while(1) 按鍵松開時(shí)候仍能調(diào)用暫停程序 display(m,n,x,y); if(P1_0=0) 當(dāng)檢測(cè)暫停鍵按下,開中斷,跳出暫停 delay(1); if(P1_0=0) while(P1_0=0); EA=1; break; 3.2.7 半場(chǎng)交換比分子程序void key3() int temp; 定義中間變量temp,檢測(cè)到有按鍵按下時(shí)候 if(zidong=1&&jie=1) 通過temp交

23、換甲隊(duì),乙隊(duì)兩隊(duì)比賽分?jǐn)?shù) temp=x;zidong=1&&jie=1是判斷半場(chǎng)的條件 y=temp; display(m,n,x,y); 刷新數(shù)碼管 zidong=0; bujin=0; 3.2.8 比賽暫停子程序void key4() if(P1_0=0) 檢測(cè)到暫停按鍵按下時(shí)候,令EA=0關(guān)閉中斷 delay(1); 同通過死循環(huán)程序while(1),不斷刷新數(shù)碼管 if(P1_0=0) 當(dāng)暫停鍵再次按下時(shí)候,開中斷,以使比賽時(shí)間 繼續(xù)倒計(jì)時(shí),由于在暫停的時(shí)候,程序處于死循 while(P1_0=0); EA=0; 無(wú)法回到主程序,暫停時(shí),除了暫停鍵 while(1) 其

24、他按鍵按下均無(wú)效 display(m,n,x,y); if(P1_0=0) 當(dāng)暫停鍵再次按下時(shí)候,EA=1開中斷,計(jì)時(shí)數(shù)碼管 delay(1); 繼續(xù)倒計(jì)時(shí),同時(shí)通過break語(yǔ)句,跳出死循環(huán) if(P1_0=0) while(P1_0=0); EA=1; break; 3.2.9 中場(chǎng)指示燈程序void over() if(m=0)&&(n=0) 當(dāng)m,n均為0的時(shí)候,通過變量jie的值判斷比賽 是否結(jié)束 if(jie>1) 如果jie>1,說明半場(chǎng)到了,比賽沒有結(jié)束, 令m=2,n=0,關(guān)中斷,再次按下暫停鍵時(shí)候繼續(xù)倒計(jì)時(shí) m=2; 同是T1=1;delay(4

25、00) ; delay(400);,是蜂鳴器 n=0; 發(fā)聲報(bào)警 EA=0; T1=1; delay(400); T1=0;while(1) display(m,n,x,y); 刷新數(shù)碼管,等待暫停減再次按下,跳出暫停 if(P1_0=0) delay(1); if(P1_0=0) while(P1_0=0); EA=1; break; jie-; if(jie=1&&bujin=2) 如果jie=1&&bujin=2,說明比賽結(jié)束了, 關(guān)閉中斷,比賽秒表不再走動(dòng),同時(shí)不短刷新數(shù)碼管,EA=0;m=0;n=0;T1=1; 全場(chǎng)比賽結(jié)束蜂鳴器開始報(bào)警 delay(

26、400); T1=0;P1=0x3f;P1=0x3f上下半場(chǎng)指示燈同時(shí)點(diǎn)亮,比賽結(jié)束 while(1) display(m,n,x,y); 同時(shí)應(yīng)當(dāng)不斷刷新數(shù)碼管 3.2.10 主程序void main() TMOD=0x01; 首先設(shè)置定時(shí)器工作方式 EA=1; ET0=1;TH0=0xb1; 定時(shí)器送計(jì)數(shù)初值,EA=1,開中斷,P3口電平拉高TL0=0x10;P1=0x7f, 上半場(chǎng)指示燈點(diǎn)亮TR0=1;TR0=1啟動(dòng)定時(shí)器P3=0xff; P1=0x7f; T1=0;while(1) 主程序通過 while(1),反復(fù)調(diào)用循環(huán)體內(nèi)的子程序 來執(zhí)行相應(yīng)的功能 keyjiafen1(); k

27、eyjianfen1(); key2(); if(zidong=1)zidong=1為key3()執(zhí)行條件 key3(); key3()半場(chǎng)交換場(chǎng)地時(shí)自動(dòng)交換雙方 if(n=18&&bujin=0) 比賽分?jǐn)?shù)子程序,所以僅當(dāng)中場(chǎng)時(shí)調(diào)用 bujin=2; 修改變量bujin的值,目的是設(shè)定over() 中第二個(gè)if語(yǔ)句的執(zhí)行條件 shijian(); key4(); over(); 4 . PROTEUS仿真4.1 PROTEUS簡(jiǎn)介Proteus 是英國(guó)Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件

28、和集成電路,該軟件的特點(diǎn)是:實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;

29、同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2、MPLAB等軟件。具有強(qiáng)大的原理圖繪制功能??傊?,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。4.2仿真過程接通電源,計(jì)時(shí)顯示即開始倒計(jì)時(shí)工作,上半場(chǎng)指示燈亮,計(jì)時(shí)初始設(shè)計(jì)為2分鐘,按下A+1鍵實(shí)現(xiàn)對(duì)A的加分,每按下一次加1分,如圖11.圖11同樣可實(shí)現(xiàn)A和B的加減分,按下暫停/啟動(dòng)鍵可實(shí)現(xiàn)暫停和啟動(dòng)。圖12圖13上半場(chǎng)結(jié)束后,停止計(jì)時(shí),蜂鳴器報(bào)警,按下暫停啟動(dòng)按鍵啟動(dòng)下半場(chǎng)計(jì)時(shí),同時(shí)可實(shí)現(xiàn)甲隊(duì)和乙隊(duì)交換分?jǐn)?shù),下半場(chǎng)指示燈亮。5. 硬件焊接與調(diào)試對(duì)照原理圖進(jìn)行焊接工作,把硬件先依次正確插到相應(yīng)的位

30、置,然后再次檢查器件是否都正確,確定無(wú)誤后進(jìn)行焊接.在焊接的過程中要注意不要將相臨的兩個(gè)引腳焊接在一起,防止短路影響使用。硬件連接好以后,通過ISP下載線向單片機(jī)內(nèi)燒制HEX程序,觀察各部分工作情況。硬件連接如圖.6.課程設(shè)計(jì)體會(huì)通過這幾天的單片機(jī)的實(shí)訓(xùn),我在理論的基礎(chǔ)上更深刻的掌握了單片機(jī)的深層內(nèi)容及實(shí)際生活中的應(yīng)用,實(shí)訓(xùn)鍛煉了自己動(dòng)手能力和思維能力,還有在軟件方面的編程能力,讓我受益匪淺,同時(shí)也暴露出一些平時(shí)學(xué)習(xí)上的問題,讓我深刻反思。這些問題的發(fā)現(xiàn)將為我以后的學(xué)習(xí)和工作找明道路,查漏補(bǔ)缺為進(jìn)一步學(xué)習(xí)作好準(zhǔn)備。 通過實(shí)訓(xùn),讓我更熟悉掌握了Keil uVision3, proteu

31、s ISIS這些應(yīng)用程序的運(yùn)用,讓我懂得了如何編寫一些簡(jiǎn)單的程序,學(xué)會(huì)了如何制作單片機(jī)應(yīng)用程序,還有焊接和程序下載,。但在中間暴露出很多問題:對(duì)平時(shí)上課講的理論知識(shí)沒有完全掌握消化,到了實(shí)際操作中還得請(qǐng)教同學(xué),在焊接中焊接的基本工夫掌握不到家,手上工夫還是很欠缺的,使得電路板不是很美觀。 這些問題的發(fā)現(xiàn),有助于提高我在以后的工作和學(xué)習(xí)中對(duì)此類問題的認(rèn)識(shí),確保不在同一問題上再次犯錯(cuò)。嚴(yán)謹(jǐn)求實(shí)、踏實(shí)務(wù)實(shí),是我這次實(shí)訓(xùn)的深刻總結(jié)。做課程設(shè)計(jì)的這幾天翻閱了很多書,也上了很多網(wǎng)站去尋找自己需要的資料。這種尋找有很強(qiáng)的目的性,只是為了自己選定的課題內(nèi)容而查閱,所以除了自己課題以外的其他方面幾乎還

32、是一無(wú)所知。這讓我深刻的認(rèn)識(shí)到了自己專業(yè)知識(shí)的貧乏。為我對(duì)自己大四生活的規(guī)劃敲響了警鐘。我對(duì)單片機(jī)的學(xué)習(xí)不會(huì)因?yàn)檎n程設(shè)計(jì)的結(jié)束而結(jié)束,在接觸的眾多資料里,做設(shè)計(jì)只是走馬觀花般的點(diǎn)到。通過單片機(jī)課程設(shè)計(jì),我加深了對(duì)單片機(jī)理論的理解,學(xué)回了怎樣將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我們的不畏困難的挑戰(zhàn)精神,從而不斷地戰(zhàn)勝自己,超越自己,我在這一設(shè)計(jì)過程中,學(xué)會(huì)了堅(jiān)持不懈,不輕易言棄。設(shè)計(jì)過程,也好比是我們?nèi)祟惓砷L(zhǎng)的歷程,常有一些不如意,也許這就是在對(duì)我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會(huì)為我們而敲響。參考文獻(xiàn)【1】余發(fā)山,單片機(jī)原理及應(yīng)用技術(shù):中國(guó)礦業(yè)大學(xué)出社,20

33、03【2】 河南理工大學(xué)電氣學(xué)院:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)報(bào)告指導(dǎo)冊(cè),2008【3】劉法治,常用電子器件及典型芯片應(yīng)用技術(shù):機(jī)械工業(yè)出版社,2007【4】何立民,MSC-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì):北京航空航天大學(xué)出版社,1993附1 源程序#include <REGX51.H> /#include <REGX51.H>為頭文件P1口各位分別用P1_0等表示code unsigned seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /其中0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7

34、f,0x6f/分別對(duì)應(yīng)數(shù)碼管顯示的字形0到9int m=1,n=60,x=0,y=0,i=0,jie=2,zidong=1,bujin=1,zanting=0,chuzanting=0;/定義全局變量m,n,x,y,i,jie,zidong,bujin,zanting,chuzanting/并初始化,其中m,n分別表示分鐘與秒計(jì)時(shí),x,y分別表示甲乙/兩隊(duì)的分?jǐn)?shù),其余中間變量void delay(int t) / 延時(shí)子程序 通過參數(shù)t,可以調(diào)整暫停時(shí)間 while(t-) unsigned int i; for(i=0;i<200;i+); void display(int i,int

35、 j,int x,int y) / 數(shù)碼管動(dòng)態(tài)刷新顯示程序 if(jie=1&&bujin!=2) /中間變量jie=1時(shí),為上半場(chǎng),對(duì)P1賦值 P1=0xbf; /P1=0xbf, 即P1=1011 1111B,點(diǎn)亮對(duì)應(yīng)上半場(chǎng)指示燈 P2=0xfe; /數(shù)碼管動(dòng)態(tài)刷新顯示程序 P2=1111 1110,i為分鐘 P0=segi%100/10; /刷新顯示時(shí)間顯示分鐘十位,調(diào)用延時(shí)程序, delay(1); /延時(shí)數(shù)碼管的點(diǎn)亮 P2=0xff; P0=0; P2=0xfd; /同理,動(dòng)態(tài)刷新時(shí)分鐘個(gè)位并延時(shí)點(diǎn)亮 P0=segi%10; delay(1); P2|=0xff; P

36、0=0; P2=0xfb; /同理,動(dòng)態(tài)刷新時(shí)秒鐘十位并延時(shí)點(diǎn)亮 P0=segj%100/10; delay(1); P0=0; P2=0xff; P2=0xf7; /同理,動(dòng)態(tài)刷新時(shí)秒鐘個(gè)位并延時(shí)點(diǎn)亮 P0=segj%10; delay(1); P0=0; P2=0xff; P2=0xef; /同理,動(dòng)態(tài)刷新甲隊(duì)分?jǐn)?shù)十位并延時(shí)點(diǎn)亮 P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; /同理,動(dòng)態(tài)刷新甲隊(duì)分?jǐn)?shù)個(gè)位并延時(shí)點(diǎn)亮 P0=segx%10; delay(1); P2=0xff; P0=0; P2=0xbf; / /同理,動(dòng)態(tài)刷新乙隊(duì)分?jǐn)?shù)十位

37、并延時(shí)點(diǎn)亮 P0=segy%100/10; delay(1); P0=0; P2=0xff; P2=0x7f; /同理,動(dòng)態(tài)刷新乙隊(duì)分?jǐn)?shù)十位并延時(shí)點(diǎn)亮 P0=segy%10; delay(1); P0=0; P2=0xff;void t0(void) interrupt 1 /調(diào)用定時(shí)器T0 基本計(jì)時(shí)單位秒 TH0=0xb1; /利用定時(shí)器T0,送入計(jì)數(shù)初值TH0=0xb1; TL0=0x10; TL0=0x10; /定時(shí)器定時(shí)單位為20毫秒 if(n=0) /分鐘與秒時(shí)間調(diào)整 當(dāng)秒減到0以后分鐘減1 n=60;m-; i+; if(i=50) /利用中間變量i 令i值為50 50*20毫秒=

38、1秒 n-; /以實(shí)現(xiàn)一秒計(jì)時(shí) i=0; display(m,n-1,x,y); /調(diào)用動(dòng)態(tài)刷新顯示程序void keyjiafen1() /加分按鍵子程序,在主程序中不斷調(diào)用該子程序 /當(dāng)檢測(cè)到甲隊(duì)加分按鍵按下時(shí),對(duì)應(yīng)加分 if(RXD=0) /調(diào)用延時(shí)子程序 實(shí)現(xiàn)消除按鍵抖動(dòng)功能,即,當(dāng) delay(1); /檢測(cè)到按鍵按下時(shí)候,延時(shí),按鍵仍按下,說明按鍵 if(RXD=0) /確實(shí)按下,非抖動(dòng),甲隊(duì)對(duì)應(yīng)加分 while(RXD=0); x+; if(TXD=0) /同理,檢測(cè)乙隊(duì)加分按鍵時(shí)候按下,并加分 delay(1); if(TXD=0) while(TXD=0); y+; void

39、 keyjianfen1()/減分按鍵檢測(cè)子程序,其基本算法及功能與加 if(WR=0) /相同 delay(1); if(WR=0) while(WR=0); x-; if(RD=0) delay(1); if(RD=0) while(RD=0); y-; void key2() /顯示時(shí)間調(diào)整程序,即回表和快表 if(INT0=0) /在比賽中有時(shí)經(jīng)常需要回表,故寫此程序delay(10);if(INT0=0) /回表子程序,檢測(cè)到INT0按下時(shí),使時(shí)間回倒 chuzanting=0; / chuzanting=0; zanting=1;為附加變量,當(dāng)回表按鍵zanting=1; /松開時(shí)

40、,表暫停,這兩個(gè)變量用來調(diào)用暫停n+;if(n=60) m+; n=1; if(INT1=0) /快表子程序,檢測(cè)到INT1按下時(shí),使倒計(jì)加快, /通常情況下與回表子程序配合使用,即當(dāng)回表 /回過的時(shí)候,按此鍵調(diào)整時(shí)間 delay(10); / chuzanting=0; zanting=1;作用同上 if(INT1=0) chuzanting=0; zanting=1; n-; void shijian() / /該程序使回表和快表按鍵松開時(shí)候能自動(dòng)暫停 if(zanting=1&&INT0=1&&INT1=1&&chuzanting=0 ) EA=0; / zanting=1&&INT0=1&&INT1=1&&chuzanting=0作用為zanting=0; /當(dāng)按鍵松開的時(shí)候,調(diào)用暫停程序條件chuzanting=0; /zanting=0;chuzanting=0,初始化,以便下次回表和快表 while(1) /按鍵松開時(shí)候仍能調(diào)用暫停程序 display(m,n,x,y); if(P1_0=0) /檢測(cè)暫停鍵按下,開中斷,跳出

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論