基于51單片機的籃球記分牌設計_第1頁
基于51單片機的籃球記分牌設計_第2頁
基于51單片機的籃球記分牌設計_第3頁
基于51單片機的籃球記分牌設計_第4頁
基于51單片機的籃球記分牌設計_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、合計時器和計分器校正調整時間和比分,我們特定在本設計中設立了7個按鍵,用于設置,調整時間,啟動,調整分數和暫停等功能。采用單片機控制是這個系統按鍵操作使用簡潔,LED顯示,安裝方便。主控芯片采用AT89S52單片機,采用C語言進行編程,編程后利用Keil uVision3來進行編譯,再生成的HEX文件裝入芯片中,采用proteus軟件來仿真,檢驗功能是否能夠正常實現。仿真成功后,焊接硬件電路,通過ISP下載器將hex文件燒制到單片機。關鍵詞:計時,計分;LED;AT89C52目錄1. 緒論21.1技術概述21.2本課題的背景和意義22.系統設計簡介42.1 系統總體方案設計42.2 硬件電路設

3、計52.2.1時鐘電路模塊62.2.2 復位電路模塊62.2.3顯示模塊72.2.4 報警模塊82.2.5總硬件電路設計93 設計語言及軟件介紹103.1 C語言介紹103.2 PROTUES軟件介紹114 軟件設計124.1 概述124.2 系統程序設計模塊134.2.1延時模塊設計144.2.2 數碼管動態刷新顯示程序144.2.3 T0中斷程序164.2.4 加分子程序174.2.5減分子程序174.2.6 調整時間子程序184.2.7 半場交換比分子程序204.2.8 比賽暫停子程序214.2.9 中場指示燈程序224.2.10 主程序234.3 控制源程序254.4 調試及仿真30結

4、論33參考文獻341. 緒論1.1 技術概述 體育比賽計時計分系統是對體育比賽過程中所產生的時間,比分等數據進行快速采集記錄,加工處理,傳遞利用的信息系統。根據不同運動項目的不同比賽規則要求,體育比賽的計時計分系統包括測量類,評分類,命中類,制勝類得分類等多種類型。 籃球比賽是根據運動隊在規定的比賽時間里得分多少來決定勝負的,因此,籃球比賽的計時計分系統是一種得分類型的系統。籃球比賽的計時計分系統由計時器,計分器等多種電子設備組成,同時,根據目前高水平籃球比賽要求,完善的籃球比賽計時計分系統設備應能夠與現場成績處理,現場大屏幕,電視轉播車等多種設備相聯,以便實現高比賽現場感,表演娛樂觀眾等功能

5、目標。由于單片機的集成度高,功能強,通用性好,特別是它具有體積小,重量輕,能耗低,價格便宜,可靠性高,抗干擾能力強和使用方便等獨特的優點,使單片機迅速得到了推廣應用,目前已經成為測量控制應用系統中的優選機種和新電子產品的關鍵部位。世界各大電氣廠家,測控技術企業,機電行業,競相把單片機應用于產品更新,作為實現數字化,智能化的核心部件。籃球計時計分器就是以單片機為核心的計時計分系統,由計時器,計分器,綜合控制器和24秒控制器等組成。1.2 本課題的背景和意義本設計是基于AT89S52單片機的籃球計時計分器,利用7段共陰LED作為顯示器件。在此設計中共接入了1個四位一體7段共陰LED顯示器,2個兩位

6、一體7段共陰LED顯示器,前者用來記錄賽程時間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊的分數,每隊2個LED顯示器顯示范圍可達到099分。賽程計時采用倒計時方式,比賽開始時啟動計時,直至計時到零為止。其次,為了配合計時器和計分器校正調整時間和比分,我們特定在本設計中設立了7個按鍵,用于設置,調整時間,啟動,調整分數和暫停等功能。采用單片機控制是這個系統按鍵操作使用簡潔,LED顯示,安裝方便。任務: 設計一個用于賽場的籃球計時計分器。要求: 1、能記錄整個賽程的比賽時間,并能隨時實現暫停。 2、能隨時刷新甲、乙兩隊在整個過程中的比分。 3、中場交換比賽場地時,能自動交換甲、乙

7、兩隊比分的位置。 4、比賽中場和結束時,能發出報警聲。 5、通過指示燈指示上下半場。 6、當比賽時間需要回倒時,能通過按鍵實現回表。 7、加分有誤時可通過按鍵實現減分調整。課程設計使我們進一步熟悉和掌握了單片機的內部結構和工作原理,了解了單片機應用系統設計的基本方法和步驟,掌握了單片機仿真軟件Proteus的使用方法,鍵盤和顯示器在的單片機控制系統中的應用以及撰寫課程設計報告的方法。此次設計很好的將書本上的理論知識和實踐有機的聯系了起來,是我們對理論知識有了更進一步的掌握,鍛煉了我們的動手能力,同時也讓我們懂得了理論與實際相結合的意義。為以后的工作和學習提供了寶貴的經驗。2.系統設計簡介2.1

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

9、電路設計單片機AT89S52簡介AT89S52是一個低功耗,高性能CMOS 8位單片機,片內含8k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應用系統提供高性價比的解決方案。    AT89S52單片機引腳圖具有如下特點:40個引腳,8k Bytes Flash片內程序存儲器,

10、256 bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器.如圖2所示: 圖 2 AT89S52單片機引腳圖此模塊電路包括時鐘電路模塊,復位電路模塊及報警顯示模塊。2.2.1時鐘電路模塊 時鐘電路在單片機系統中起著非常重要的作用,是保證系統正常工作的基礎。在一個單片機應用系統中,時鐘是保障系統正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統工作的快慢。為達到振蕩周期是12MHZ的要求,這里要采用12MHZ的晶振,

11、另外有兩個22P的電容,兩晶振引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳。具體連接圖如圖3所示: 圖 3 晶振電路2.2.2 復位電路模塊復位是單片微機的初始化操作,其主要功能是把PC初始化為0000H,使單片微機從0000H單元開始執行程序。除進入系統的正常初始化之外,當由于程序運行出錯或操作錯誤使系統處于死鎖狀態時,為擺脫困境,可以按復位鍵以重新啟動,也可以通過監視定時器來強迫復位。RST引腳是復位信號的輸入端。復位電路在這里采用的是上電+按鈕復位電路形式,具體連接電路如圖4所示: 圖 4 復位電路2.2.3顯示模塊本設計采用共陰極數碼顯示器,通常,共陰極接低電平(一般接地),其它

12、管腳接段驅動電路輸出端。當某段驅動電路的輸出端為高電平時,該端所連接的字符導通并點亮,根據發光字段的不同組合可顯示出各種數字或字符。同樣,要求段驅動電路能提供額定的段導通電流,還需根據外接電源及額定段導通電流來確定相應的限流電阻。本次設計在顯示模塊用到的是一個4位一體和2個兩位一體共陰極數碼管,共有8個代碼輸入口和8個位選輸入口,采用排阻提供上拉電流數碼管,以保證有足夠大的電流點亮數碼管,采用動態驅動,使各位數碼管逐個輪流受控顯示,這就是動態驅動,由于掃描速度極快,顯示效果與靜態驅動相同,其具體圖形如下圖5圖6所示:圖5 計時顯示圖6 計分顯示2.2.4 報警模塊蜂鳴器通過一NPN三極管進行驅

13、動,觸發信號有基極引入。如圖7所示:圖7 蜂鳴器設計部分2.2.5總硬件電路設計本設計的總硬件電路設計圖如圖8所示:圖8總體硬件設計3 設計語言及軟件介紹3.1 C語言介紹C語言的發展過程 C語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為K&R,也有人稱之為K&R標準。但是,在K&R中并沒有定義一個完整的標準C語言,后來由美國國家標準學會在此基礎上制定了一個C 語言標準,于一九

14、八三年發表。通常稱之為ANSI C。 當代最優秀的程序設計語言 早期的C語言主要是用于UNIX系統。由于C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,并很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當代最優秀的程序設計語言之一。 C語言的特點 C語言是一種結構化語言。它層次清晰,便于按模塊化方式組織程序,易于調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便于實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由于C語言實現了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體

15、。既可用于系統軟件的開發,也適合于應用軟件的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。 C語言版本 目前最流行的C語言有以下幾種: ·Microsoft C 或稱 MS C ·Borland Turbo C 或稱 Turbo C ·AT&T C 這些C語言版本不僅實現了ANSI C標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。 面向對象的程序設計語言 在C的基礎上,一九八三年又由貝爾實驗室的Bjarne Strou-strup推出了C+。 C+進一步擴充和完善了C語言,成為

16、一種面向 對象的程序設計語言。C+目前流行的最新版本是Borland C+4.5,Symantec C+6.1,和Microsoft VisualC+ 2.0。C+提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。 C和C 但是,C是C+的基礎,C+語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C+就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。 C源程序的結構特點 為了說明C語言源程序結構的特點,先看以下幾

17、個程序。這幾個程 序由簡到難,表現了C語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式。 main() printf("C語言世界,您好!n"); main是主函數的函數名,表示這是一個主函數。每一個C源程序都必須有,且只能有一個主函數(main函數)。函數調用語句,printf函數的功能是把要輸出的內容送到顯示器去顯示。printf函數是一個由系統定義的標準函數,可在程序中直接調用。3.2 PROTEUS簡介Proteus 是英國Labcenter公司開發的電路分析與實物仿真軟件。它運行于Windows操作系統

18、上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:實現了單片機仿真和SPICE電路仿真相結合。具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真、RS232動態仿真、I2C調試器、SPI調試器、鍵盤和LCD系統仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發生器等。支持主流單片機系統的仿真。目前支持的單片機類型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。提供軟件調試功能。在硬件仿真系統中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態,

19、因此在該軟件仿真系統中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環境,如Keil C51 uVision2、MPLAB等軟件。具有強大的原理圖繪制功能。總之,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。在設計程序之前,我們首先要對單片機應用系統預完成的任務進行深入的分析,明確系統的設計任務、功能要求和技術指標。其次,要對系統的硬件資源和工作環境進行分析。這是單片機應用系統程序設計的基礎和條件。4 軟件設計4.1 概述 本次單片機課程設計軟件設計部分采用模塊化程序設計,程序部分由主程序、T0中斷程序、掃描顯示子程序、計時加(減)1秒的子程序、暫停子程序、快表和回

20、表子程序、延時子程序等組成.其主程序流程圖如圖9所示:圖9 主程序流程圖掃描刷新顯示子程序流程圖如圖10所示:圖10掃描刷新顯示子程序流程圖4.2 軟件設計具體過程 軟件設計部分采用模塊化程序設計,用C語言編寫。Keil是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊

21、,容易理解。在開發大型軟件時更能體現高級語言的優勢。程序部分由主程序、T0中斷程序、掃描顯示子程序、計時加(減)1秒的子程序、暫停子程序、快表和回表子程序、延時子程序等組成。4.2.1延時模塊設計 void delay(int t)調用該子程序能實現延時功能 通過參數t,可以調成延時時間 while(t-) unsigned int i; 設置變量i的變化范圍,能調整延時的單位時間 for(i=0;i<200;i+); 長度,i越小,延時的單位時間越短,精度越高 4.2.2 數碼管動態刷新顯示程序void display(int i,int j,int x,int y) 變量i,j,x,

22、y分別為分,秒,A分數,B分數 if(jie=1&&bujin!=2) 當中間變量jie=1時,為上半場,此時對P1賦值 P1=0xbf; 使P1=0xbf, 即P1=1011 1111B,上半場指示燈對應點亮 P2=0xfe; 數碼管動態刷新顯示程序 P2=1111 1110, i為分鐘 P0=segi%100/10; P2=0xfe,所以刷新顯示時間的分鐘十位,調用延時程序, delay(1); 延時數碼管的點亮 P2=0xff; P0=0; P2=0xfd; 同理,動態刷新時分鐘個位并延時點亮 P0=segi%10; delay(1); P2=0xff; P0=0; P2

23、=0xfb; 同理,動態刷新時秒鐘十位并延時點亮 P0=segj%100/10; delay(1); P0=0; P2=0xff; P2=0xf7; 同理,動態刷新時秒鐘個位并延時點亮 P0=segj%10; delay(1); P0=0; P2=0xff; P2=0xef; 同理,動態刷新A分數十位并延時點亮 P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; 同理,動態刷新A分數個位并延時點亮 P0=segx%10; delay(1); P2=0xff; P0=0; P2=0xbf; 同理,動態刷新B分數十位并延時點亮 P0=segy%100

24、/10; delay(1); P0=0; P2=0xff; P2=0x7f; 同理,動態刷新B分數十位并延時點亮 P0=segy%10; delay(1); P0=0; P2=0xff;本設計中各個數碼管采用動態驅動,使各位數碼管逐個輪流受控顯示,由于掃描速度極快(本實驗中大約每20毫秒刷新一次),所以顯示效果與靜態驅動相同。4.2.3 T0中斷程序void t0(void) interrupt 1本設計調用定時器T0,計時單位為一秒 TH0=0xb1; 對定時器T0送入計數初值,由于TH0=0xb; TL0=0x10; TL0=0x10 故定時器定時為20毫秒,即每 if(n=0) 20毫秒

25、調用一次void t0(void) interrupt 1 n=60;m-; i+; if(i=50) 令i值為50 50*20毫秒=1秒,來實現計時 n-; 單位為一秒 i=0; display(m,n-1,x,y); 調用動態刷新顯示程序,即每20毫秒刷新一 次數碼管4.2.4 加分子程序void keyjiafen1() 當檢測到RXD按鍵按下時,調用延時子程序 if(RXD=0) 實現消除按鍵抖動功能,即,當 delay(1);, 檢測到按鍵按下時候,延時,按鍵仍按下,說明 if(RXD=0) 按鍵確實按下,非抖動,A對應加分 while(RXD=0); x+; if(TXD=0) 檢

26、測TXD加分按鍵時候按下,B加分 delay(1); if(TXD=0) while(TXD=0); y+; 4.2.5減分子程序void keyjianfen1() 減分按鍵檢測子程序,其基本算法及功能與加分相同 if(WR=0) delay(1); if(WR=0) while(WR=0); x-; if(RD=0) delay(1); if(RD=0) while(RD=0); y-; 4.2.6 調整時間子程序調整時間子程序,使時間快速倒退或快進,實現回表功能,同時回表之后能自動暫停,程序如下:void key2() if(INT0=0) delay(10);if(INT0=0) 回表

27、子程序,檢測到INT0按下時,使時間回倒 chuzanting=0; chuzanting=0; zanting=1;為附加變量,當回表按鍵 zanting=1; 松開時,表暫停,這兩個變量用來調用暫停n+;if(n=60) m+; n=1; if(INT1=0) 快表子程序,檢測到INT1按下時,使倒計加快, 通常情況下與回表子程序配合使用,即當回表 回過的時候,按此鍵調整時間 delay(10); chuzanting=0; zanting=1;作用同上 if(INT1=0) chuzanting=0; zanting=1; n-; void shijian() 該程序使回表和快表按鍵松開

28、時候能自動暫停 if(zanting=1&&INT0=1&&INT1=1&&chuzanting=0 ) EA=0; zanting=1&&INT0=1&&INT1=1&&chuzanting=0作用為zanting=0; 當按鍵松開的時候,調用暫停程序條件huzanting=0; zanting=0;chuzanting=0,初始化,以便下次回表和快表 while(1) 按鍵松開時候仍能調用暫停程序 display(m,n,x,y); if(P1_0=0) 當檢測暫停鍵按下,開中斷,跳出暫停 de

29、lay(1); if(P1_0=0) while(P1_0=0); EA=1; break; 4.2.7 半場交換比分子程序void key3() int temp; 定義中間變量temp,檢測到有按鍵按下時候 if(zidong=1&&jie=1) 通過temp交換甲隊,乙隊兩隊比賽分數 temp=x; zidong=1&&jie=1是判斷半場的條件 y=temp; display(m,n,x,y); 刷新數碼管 zidong=0; bujin=0; 4.2.8 比賽暫停子程序void key4() if(P1_0=0) 檢測到暫停按鍵按下時候,令EA=0關閉

30、中斷 delay(1); 同通過死循環程序while(1),不斷刷新數碼管 if(P1_0=0) 當暫停鍵再次按下時候,開中斷,以使比賽時間 繼續倒計時,由于在暫停的時候,程序處于死循 while(P1_0=0); EA=0; 無法回到主程序,暫停時,除了暫停鍵 while(1) 其他按鍵按下均無效 display(m,n,x,y); if(P1_0=0) 當暫停鍵再次按下時候,EA=1開中斷,計時數碼管 delay(1); 繼續倒計時,同時通過break語句,跳出死循環 if(P1_0=0) while(P1_0=0); EA=1; break; 4.2.9 中場指示燈程序void over

31、() if(m=0)&&(n=0) 當m,n均為0的時候,通過變量jie的值判斷比賽是否結束 if(jie>1) 如果jie>1,說明半場到了,比賽沒有結束, 令m=2,n=0,關中斷,再次按下暫停鍵時候繼續倒計時 m=2; 同是T1=1;delay(400) ;delay(400);,是蜂鳴器 n=0; 發聲報警 EA=0; T1=1; delay(400); T1=0; while(1) display(m,n,x,y); 刷新數碼管,等待暫停減再次按下,跳出暫停 if(P1_0=0) delay(1); if(P1_0=0) while(P1_0=0); EA

32、=1; break; jie-; if(jie=1&&bujin=2) 如果jie=1&&bujin=2,說明比賽結束了, 關閉中斷,比賽秒表不再走動,同時不短刷新數碼管, EA=0; m=0; n=0;T1=1; 全場比賽結束蜂鳴器開始報警 delay(400); T1=0; P1=0x3f; P1=0x3f上下半場指示燈同時點亮,比賽結束 while(1) display(m,n,x,y); 同時應當不斷刷新數碼管 4.2.10 主程序void main() TMOD=0x01; 首先設置定時器工作方式 EA=1; ET0=1; TH0=0xb1; 定時器送

33、計數初值,EA=1,開中斷,P3口電平拉高TL0=0x10; P1=0x7f, 上半場指示燈點亮TR0=1; TR0=1啟動定時器P3=0xff; P1=0x7f; T1=0;while(1) 主程序通過 while(1),反復調用循環體內的子程序 來執行相應的功能 keyjiafen1(); keyjianfen1(); key2(); if(zidong=1) zidong=1為key3()執行條件 key3(); key3()半場交換場地時自動交換雙方 if(n=18&&bujin=0) 比賽分數子程序,所以僅當中場時調用 bujin=2; 修改變量bujin的值,目的是

34、設定over() 中第二個if語句的執行條件 shijian(); key4(); over(); 4.3控制源程序#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,0x7f,0x6f/分別對應數碼管顯示的字形0到9int m=1,n=60,x=0,y=0,i=0,jie=2,zidon

35、g=1,bujin=1,zanting=0,chuzanting=0; /定義全局變量m,n,x,y,i,jie,zidong,bujin,zanting,chuzanting/并初始化,其中m,n分別表示分鐘與秒計時,x,y分別表示甲乙/兩隊的分數,其余中間變量void delay(int t) / 延時子程序 通過參數t,可以調整暫停時間 while(t-) unsigned int i; for(i=0;i<200;i+); void display(int i,int j,int x,int y) / 數碼管動態刷新顯示程序 if(jie=1&&bujin!=2)

36、 /中間變量jie=1時,為上半場,對P1賦值 P1=0xbf; /P1=0xbf, 即P1=1011 1111B,點亮對應上半場指示燈 P2=0xfe; /數碼管動態刷新顯示程序 P2=1111 1110,i為分鐘 P0=segi%100/10; /刷新顯示時間顯示分鐘十位,調用延時程序, delay(1); /延時數碼管的點亮 P2=0xff; P0=0; P2=0xfd; /同理,動態刷新時分鐘個位并延時點亮 P0=segi%10; delay(1); P2|=0xff; P0=0; P2=0xfb; /同理,動態刷新時秒鐘十位并延時點亮 P0=segj%100/10; delay(1)

37、; P0=0; P2=0xff; P2=0xf7; /同理,動態刷新時秒鐘個位并延時點亮 P0=segj%10; delay(1); P0=0; P2=0xff; P2=0xef; /同理,動態刷新甲隊分數十位并延時點亮 P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; /同理,動態刷新甲隊分數個位并延時點亮 P0=segx%10; delay(1); P2=0xff; P0=0; P2=0xbf; / /同理,動態刷新乙隊分數十位并延時點亮 /調用延時子程序 實現消除按鍵抖動功能,即,當 delay(1); /檢測到按鍵按下時候,延時,按鍵仍

38、按下,說明按鍵 if(RXD=0) /確實按下,非抖動,甲隊對應加分 while(RXD=0); x+; if(TXD=0) /同理,檢測乙隊加分按鍵時候按下,并加分 delay(1); if(TXD=0) while(TXD=0); y+; void keyjianfen1()/減分按鍵檢測子程序,其基本算法及功能與加 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() /顯示時間調整程序,即回表和快表 if(INT0=0) /在比賽

39、中有時經常需要回表,故寫此程序delay(10);if(INT0=0) /回表子程序,檢測到INT0按下時,使時間回倒 chuzanting=0; / chuzanting=0; zanting=1;為附加變量,當回表按鍵zanting=1; /松開時,表暫停,這兩個變量用來調用暫停n+;if(n=60) m+; n=1; if(INT1=0) /快表子程序,檢測到INT1按下時,使倒計加快, /通常情況下與回表子程序配合使用,即當回表 /回過的時候,按此鍵調整時間 delay(10); / chuzanting=0; zanting=1;作用同上 if(INT1=0) chuz jie-;

40、if(jie=1&&bujin=2) /如果jie=1&&bujin=2,說明比賽結束了,令EA=0, /比關閉中斷,比賽秒表不再走動,同時不短刷新數碼管,EA=0; /全場比賽結束蜂鳴器開始報警m=0;n=0;T1=1; delay(400); T1=0;P1=0x3f; / P1=0x3f上下半場指示燈同時點亮,比賽結束while(1) display(m,n,x,y); /不斷刷新數碼管 void main() / 主程序 TMOD=0x01; /設置定時器工作方式 EA=1; ET0=1; TH0=0xb1; /定時器送計數初值,EA=1,開中斷,P3口電平拉高TL0=0x10; / P1=0x7f, 上半場指示燈點亮TR0=1;P3=0xff; P1=0x7f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論