版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上摘要單片機,亦稱單片微電腦或單片微型計算機。它是把中央處理器(CPU)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、輸入/輸出端口(I/0)等主要計算機功能部件都集成在一塊集成電路芯片上的微型計算機。本設計是基于AT89S52單片機的籃球計時計分器,利用7段共陰LED作為顯示器件。在此設計中共接入了1個四位一體7段共陰LED顯示器,2個兩位一體7段共陰LED顯示器,前者用來記錄賽程時間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊的分數,每隊2個LED顯示器顯示范圍可達到099分。賽程計時采用倒計時方式,比賽開始時啟動計時,直至計時到零為止。其次,為
2、了配合計時器和計分器校正調整時間和比分,我們特定在本設計中設立了7個按鍵,用于設置,調整時間,啟動,調整分數和暫停等功能。采用單片機控制是這個系統(tǒng)按鍵操作使用簡潔,LED顯示,安裝方便。主控芯片采用AT89S52單片機,采用C語言進行編程,編程后利用Keil uVision3來進行編譯,再生成的HEX文件裝入芯片中,采用proteus軟件來仿真,檢驗功能是否能夠正常實現(xiàn)。仿真成功后,焊接硬件電路,通過ISP下載器將hex文件燒制到單片機。目錄1. 概述1.1 背景知識介紹 體育比賽計時計分系統(tǒng)是對體育比賽過程中所產生的時間,比分等數據進行快速采集記錄,加工處理,傳遞利用的信息系統(tǒng)。根據不同運動
3、項目的不同比賽規(guī)則要求,體育比賽的計時計分系統(tǒng)包括測量類,評分類,命中類,制勝類得分類等多種類型。 籃球比賽是根據運動隊在規(guī)定的比賽時間里得分多少來決定勝負的,因此,籃球比賽的計時計分系統(tǒng)是一種得分類型的系統(tǒng)?;@球比賽的計時計分系統(tǒng)由計時器,計分器等多種電子設備組成,同時,根據目前高水平籃球比賽要求,完善的籃球比賽計時計分系統(tǒng)設備應能夠與現(xiàn)場成績處理,現(xiàn)場大屏幕,電視轉播車等多種設備相聯(lián),以便實現(xiàn)高比賽現(xiàn)場感,表演娛樂觀眾等功能目標。由于單片機的集成度高,功能強,通用性好,特別是它具有體積小,重量輕,能耗低,價格便宜,可靠性高,抗干擾能力強和使用方便等獨特的優(yōu)點,使單片機迅速得到了推廣應用,目
4、前已經成為測量控制應用系統(tǒng)中的優(yōu)選機種和新電子產品的關鍵部位。世界各大電氣廠家,測控技術企業(yè),機電行業(yè),競相把單片機應用于產品更新,作為實現(xiàn)數字化,智能化的核心部件?;@球計時計分器就是以單片機為核心的計時計分系統(tǒng),由計時器,計分器,綜合控制器和24秒控制器等組成。1.2 設計內容本設計是基于AT89S52單片機的籃球計時計分器,利用7段共陰LED作為顯示器件。在此設計中共接入了1個四位一體7段共陰LED顯示器,2個兩位一體7段共陰LED顯示器,前者用來記錄賽程時間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊的分數,每隊2個LED顯示器顯示范圍可達到099分。賽程計時采用倒計時方
5、式,比賽開始時啟動計時,直至計時到零為止。其次,為了配合計時器和計分器校正調整時間和比分,我們特定在本設計中設立了7個按鍵,用于設置,調整時間,啟動,調整分數和暫停等功能。采用單片機控制是這個系統(tǒng)按鍵操作使用簡潔,LED顯示,安裝方便。1.3計任務和要求任務: 設計一個用于賽場的籃球計時計分器。要求: 1、能記錄整個賽程的比賽時間,并能隨時實現(xiàn)暫停。 2、能隨時刷新甲、乙兩隊在整個過程中的比分。 3、中場交換比賽場地時,能自動交換甲、乙兩隊比分的位置。 4、比賽中場和結束時,能發(fā)出報警聲。 5、通過指示燈指示上下半場。 6、當比賽時間需要回倒時,能通過按鍵實現(xiàn)回表。 7、加分有誤時可通過按鍵實
6、現(xiàn)減分調整。1.4 設計意義 課程設計使我們進一步熟悉和掌握了單片機的內部結構和工作原理,了解了單片機應用系統(tǒng)設計的基本方法和步驟,掌握了單片機仿真軟件Proteus的使用方法,鍵盤和顯示器在的單片機控制系統(tǒng)中的應用以及撰寫課程設計報告的方法。此次設計很好的將書本上的理論知識和實踐有機的聯(lián)系了起來,是我們對理論知識有了更進一步的掌握,鍛煉了我們的動手能力,同時也讓我們懂得了理論與實際相結合的意義。為以后的工作和學習提供了寶貴的經驗。2.系統(tǒng)總體方案及硬件設計2.1 系統(tǒng)總體方案設計籃球計時計分器主要包括單片機控制系統(tǒng)、計時顯示模塊、計分顯示模塊、定時報警,按鍵控制鍵盤模塊。通過這幾個模塊的協(xié)調
7、工作就可以完成相應的計時計分控制和顯示功能。這四個模塊的相互連接如下圖(圖1)所示:本設計是基于AT89S52單片機的籃球計時計分器,利用7段共陰LED作為顯示器件。在此設計中共接入了1個四位一體7段共陰LED顯示器,2個兩位一體7段共陰LED顯示器,前者用來記錄賽程時間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊的分數,每隊2個LED顯示器顯示范圍可達到099分。賽程計時采用倒計時方式,比賽開始時啟動計時,直至計時到零為止。2.2 硬件電路設計單片機AT89S52簡介AT89S52是一個低功耗,高性能CMOS 8位單片機,片內含8k Bytes ISP(In-system p
8、rogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。 AT89S52(如圖2)具有如下特點:40個引腳,8k Bytes Flash片內程序存儲器,256 bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數
9、器,2個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器. 圖 2 AT89S52單片機引腳圖此模塊電路包括時鐘電路模塊,復位電路模塊及報警顯示模塊。2.2.1時鐘電路模塊 時鐘電路在單片機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎。在一個單片機應用系統(tǒng)中,時鐘是保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢。為達到振蕩周期是12MHZ的要求,這里要采用12MHZ的晶振,另外有兩個22P的電容,兩晶振引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳。具體連接圖如圖3所示: 圖 3 晶振電路2.2.2 復位電路模塊復位是單片
10、微機的初始化操作,其主要功能是把PC初始化為0000H,使單片微機從0000H單元開始執(zhí)行程序。除進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,可以按復位鍵以重新啟動,也可以通過監(jiān)視定時器來強迫復位。RST引腳是復位信號的輸入端。復位電路在這里采用的是上電+按鈕復位電路形式,具體連接電路如圖4 圖 4 復位電路2.2.3顯示模塊本設計采用共陰極數碼顯示器,通常,共陰極接低電平(一般接地),其它管腳接段驅動電路輸出端。當某段驅動電路的輸出端為高電平時,該端所連接的字符導通并點亮,根據發(fā)光字段的不同組合可顯示出各種數字或字符。同樣,要求段驅動電路能提供額定
11、的段導通電流,還需根據外接電源及額定段導通電流來確定相應的限流電阻。本次設計在顯示模塊用到的是一個4位一體和2個兩位一體共陰極數碼管,共有8個代碼輸入口和8個位選輸入口,采用排阻提供上拉電流數碼管,以保證有足夠大的電流點亮數碼管,采用動態(tài)驅動,使各位數碼管逐個輪流受控顯示,這就是動態(tài)驅動,由于掃描速度極快,顯示效果與靜態(tài)驅動相同,其具體圖形如下圖5圖6所示圖5圖62.2.4 報警模塊蜂鳴器通過一NPN三極管進行驅動,如圖觸發(fā)信號有基極引入。(圖7)圖72.2.5總硬件電路設計圖83 軟件設計在設計程序之前,我們首先要對單片機應用系統(tǒng)預完成的任務進行深入的分析,明確系統(tǒng)的設計任務、功能要求和技術
12、指標。其次,要對系統(tǒng)的硬件資源和工作環(huán)境進行分析。這是單片機應用系統(tǒng)程序設計的基礎和條件。3.1 軟件總體設計方案本次單片機課程設計軟件設計部分采用模塊化程序設計,程序部分由主程序、T0中斷程序、掃描顯示子程序、計時加(減)1秒的子程序、暫停子程序、快表和回表子程序、延時子程序等組成.其程序流程圖如圖9圖10。圖9 主程序流程圖圖10掃描刷新顯示子程序流程圖3.2 軟件設計具體過程 軟件設計部分采用模塊化程序設計,用C語言編寫。Keil是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用
13、。Keil C51軟件提供豐富的庫函數和功能強大的集成開發(fā)調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。程序部分由主程序、T0中斷程序、掃描顯示子程序、計時加(減)1秒的子程序、暫停子程序、快表和回表子程序、延時子程序等組成。3.2.1延時模塊設計 void delay(int t)調用該子程序能實現(xiàn)延時功能 通過參數t,可以調成延時時間 while(t-) unsigned int i; 設置變量i的變化范圍,能調整延時的單位
14、時間 for(i=0;i<200;i+); 長度,i越小,延時的單位時間越短,精度越高 3.2.2 數碼管動態(tài)刷新顯示程序void display(int i,int j,int x,int y) 變量i,j,x,y分別為分,秒,A分數,B分數 if(jie=1&&bujin!=2) 當中間變量jie=1時,為上半場,此時對P1賦值 P1=0xbf; 使P1=0xbf, 即P1=1011 1111B,上半場指示燈對應點亮 P2=0xfe; 數碼管動態(tài)刷新顯示程序 P2=1111 1110, i為分鐘 P0=segi%100/10; P2=0xfe,所以刷新顯示時間的分鐘十
15、位,調用延時程序, delay(1); 延時數碼管的點亮 P2=0xff; P0=0; P2=0xfd; 同理,動態(tài)刷新時分鐘個位并延時點亮 P0=segi%10; delay(1); P2=0xff; P0=0; P2=0xfb; 同理,動態(tài)刷新時秒鐘十位并延時點亮 P0=segj%100/10; delay(1); P0=0; P2=0xff; P2=0xf7; 同理,動態(tài)刷新時秒鐘個位并延時點亮 P0=segj%10; delay(1); P0=0; P2=0xff; P2=0xef; 同理,動態(tài)刷新A分數十位并延時點亮 P0=segx%100/10; delay(1); P2=0xff
16、; P0=0; P2=0xdf; 同理,動態(tài)刷新A分數個位并延時點亮 P0=segx%10; delay(1); P2=0xff; P0=0; P2=0xbf; 同理,動態(tài)刷新B分數十位并延時點亮 P0=segy%100/10; delay(1); P0=0; P2=0xff; P2=0x7f; 同理,動態(tài)刷新B分數十位并延時點亮 P0=segy%10; delay(1); P0=0; P2=0xff;本設計中各個數碼管采用動態(tài)驅動,使各位數碼管逐個輪流受控顯示,由于掃描速度極快(本實驗中大約每20毫秒刷新一次),所以顯示效果與靜態(tài)驅動相同。3.2.3 T0中斷程序void t0(void)
17、interrupt 1本設計調用定時器T0,計時單位為一秒 TH0=0xb1; 對定時器T0送入計數初值,由于TH0=0xb; TL0=0x10; TL0=0x10 故定時器定時為20毫秒,即每 if(n=0) 20毫秒調用一次void t0(void) interrupt 1 n=60;m-; i+; if(i=50) 令i值為50 50*20毫秒=1秒,來實現(xiàn)計時 n-; 單位為一秒 i=0; display(m,n-1,x,y); 調用動態(tài)刷新顯示程序,即每20毫秒刷新一 次數碼管3.2.4 加分子程序void keyjiafen1() 當檢測到RXD按鍵按下時,調用延時子程序 if(R
18、XD=0) 實現(xiàn)消除按鍵抖動功能,即,當 delay(1);, 檢測到按鍵按下時候,延時,按鍵仍按下,說明 if(RXD=0) 按鍵確實按下,非抖動,A對應加分 while(RXD=0); x+; if(TXD=0) 檢測TXD加分按鍵時候按下,B加分 delay(1); if(TXD=0) while(TXD=0); y+; 3.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=
19、0); y-; 3.2.6 調整時間子程序調整時間子程序,使時間快速倒退或快進,實現(xiàn)回表功能,同時回表之后能自動暫停void key2() if(INT0=0) 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按下時,使倒計加快, 通常情況下與回表子程序配合使用,即當回表 回過的時候,按此鍵調整時間 dela
20、y(10); chuzanting=0; zanting=1;作用同上 if(INT1=0) chuzanting=0; zanting=1; n-; void shijian() 該程序使回表和快表按鍵松開時候能自動暫停 if(zanting=1&&INT0=1&&INT1=1&&chuzanting=0 ) EA=0; zanting=1&&INT0=1&&INT1=1&&chuzanting=0作用為zanting=0; 當按鍵松開的時候,調用暫停程序條件huzanting=0; zantin
21、g=0;chuzanting=0,初始化,以便下次回表和快表 while(1) 按鍵松開時候仍能調用暫停程序 display(m,n,x,y); if(P1_0=0) 當檢測暫停鍵按下,開中斷,跳出暫停 delay(1); if(P1_0=0) while(P1_0=0); EA=1; break; 3.2.7 半場交換比分子程序void key3() int temp; 定義中間變量temp,檢測到有按鍵按下時候 if(zidong=1&&jie=1) 通過temp交換甲隊,乙隊兩隊比賽分數 temp=x; zidong=1&&jie=1是判斷半場的條件 y=
22、temp; display(m,n,x,y); 刷新數碼管 zidong=0; bujin=0; 3.2.8 比賽暫停子程序void key4() if(P1_0=0) 檢測到暫停按鍵按下時候,令EA=0關閉中斷 delay(1); 同通過死循環(huán)程序while(1),不斷刷新數碼管 if(P1_0=0) 當暫停鍵再次按下時候,開中斷,以使比賽時間 繼續(xù)倒計時,由于在暫停的時候,程序處于死循 while(P1_0=0); EA=0; 無法回到主程序,暫停時,除了暫停鍵 while(1) 其他按鍵按下均無效 display(m,n,x,y); if(P1_0=0) 當暫停鍵再次按下時候,EA=1開
23、中斷,計時數碼管 delay(1); 繼續(xù)倒計時,同時通過break語句,跳出死循環(huán) if(P1_0=0) while(P1_0=0); EA=1; break; 3.2.9 中場指示燈程序void over() if(m=0)&&(n=0) 當m,n均為0的時候,通過變量jie的值判斷比賽 是否結束 if(jie>1) 如果jie>1,說明半場到了,比賽沒有結束, 令m=2,n=0,關中斷,再次按下暫停鍵時候繼續(xù)倒計時 m=2; 同是T1=1;delay(400) ; delay(400);,是蜂鳴器 n=0; 發(fā)聲報警 EA=0; T1=1; delay(400
24、); T1=0; while(1) display(m,n,x,y); 刷新數碼管,等待暫停減再次按下,跳出暫停 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,說明比賽結束了, 關閉中斷,比賽秒表不再走動,同時不短刷新數碼管, EA=0; m=0; n=0;T1=1; 全場比賽結束蜂鳴器開始報警 delay(400); T1=0; P1=0x3f; P1=0x3f上下半場指示燈同時點亮,比賽結束 while
25、(1) display(m,n,x,y); 同時應當不斷刷新數碼管 3.2.10 主程序void main() TMOD=0x01; 首先設置定時器工作方式 EA=1; ET0=1; TH0=0xb1; 定時器送計數初值,EA=1,開中斷,P3口電平拉高TL0=0x10; P1=0x7f, 上半場指示燈點亮TR0=1; TR0=1啟動定時器P3=0xff; P1=0x7f; T1=0;while(1) 主程序通過 while(1),反復調用循環(huán)體內的子程序 來執(zhí)行相應的功能 keyjiafen1(); keyjianfen1(); key2(); if(zidong=1) zidong=1為k
26、ey3()執(zhí)行條件 key3(); key3()半場交換場地時自動交換雙方 if(n=18&&bujin=0) 比賽分數子程序,所以僅當中場時調用 bujin=2; 修改變量bujin的值,目的是設定over() 中第二個if語句的執(zhí)行條件 shijian(); key4(); over(); 4 . PROTEUS仿真4.1 PROTEUS簡介Proteus 是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:實現(xiàn)了單片機仿真和SPICE電路仿真相結合。具有模擬電路仿真
27、、數字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調試器、SPI調試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。提供軟件調試功能。在硬件仿真系統(tǒng)中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環(huán)境,如Keil C51 uVision2、MPLAB等軟
28、件。具有強大的原理圖繪制功能。總之,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。 4.2仿真過程接通電源,計時顯示即開始倒計時工作,上半場指示燈亮,計時初始設計為2分鐘,按下A+1鍵實現(xiàn)對A的加分,每按下一次加1分,如圖11.圖11同樣可實現(xiàn)A和B的加減分,按下暫停/啟動鍵可實現(xiàn)暫停和啟動。 圖12 圖13上半場結束后,停止計時,蜂鳴器報警,按下暫停啟動按鍵啟動下半場計時,同時可實現(xiàn)甲隊和乙隊交換分數,下半場指示燈亮。5. 硬件焊接與調試對照原理圖進行焊接工作,把硬件先依次正確插到相應的位置,然后再次檢查器件是否都正確,確定無誤后進行焊接.在焊接的過程中要注意不要將相臨
29、的兩個引腳焊接在一起,防止短路影響使用。硬件連接好以后,通過ISP下載線向單片機內燒制HEX程序,觀察各部分工作情況。硬件連接如圖.6.課程設計體會通過這幾天的單片機的實訓,我在理論的基礎上更深刻的掌握了單片機的深層內容及實際生活中的應用,實訓鍛煉了自己動手能力和思維能力,還有在軟件方面的編程能力,讓我受益匪淺,同時也暴露出一些平時學習上的問題,讓我深刻反思。這些問題的發(fā)現(xiàn)將為我以后的學習和工作找明道路,查漏補缺為進一步學習作好準備。 通過實訓,讓我更熟悉掌握了Keil uVision3, proteus ISIS這些應用程序的運用,讓我懂得了如何編寫一些簡單的程序,學會了如何制作單
30、片機應用程序,還有焊接和程序下載,。但在中間暴露出很多問題:對平時上課講的理論知識沒有完全掌握消化,到了實際操作中還得請教同學,在焊接中焊接的基本工夫掌握不到家,手上工夫還是很欠缺的,使得電路板不是很美觀。 這些問題的發(fā)現(xiàn),有助于提高我在以后的工作和學習中對此類問題的認識,確保不在同一問題上再次犯錯。嚴謹求實、踏實務實,是我這次實訓的深刻總結。做課程設計的這幾天翻閱了很多書,也上了很多網站去尋找自己需要的資料。這種尋找有很強的目的性,只是為了自己選定的課題內容而查閱,所以除了自己課題以外的其他方面幾乎還是一無所知。這讓我深刻的認識到了自己專業(yè)知識的貧乏。為我對自己大四生活的規(guī)劃敲響了
31、警鐘。我對單片機的學習不會因為課程設計的結束而結束,在接觸的眾多資料里,做設計只是走馬觀花般的點到。 通過單片機課程設計,我加深了對單片機理論的理解,學回了怎樣將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的不畏困難的挑戰(zhàn)精神,從而不斷地戰(zhàn)勝自己,超越自己,我在這一設計過程中,學會了堅持不懈,不輕易言棄。設計過程,也好比是我們人類成長的歷程,常有一些不如意,也許這就是在對我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會為我們而敲響。 參考文獻【1】余發(fā)山,單片機原理及應用技術:中國礦業(yè)大學出社,2003【2】 河南理工大學電氣學院:單片機實驗報告指導冊,2008【3】劉法治,
32、常用電子器件及典型芯片應用技術:機械工業(yè)出版社,2007【4】何立民,MSC-51系列單片機應用系統(tǒng)設計:北京航空航天大學出版社,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,0x7f,0x6f/分別對應數碼管顯示的字形0到9int m=1,n=60,x=0,
33、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分別表示分鐘與秒計時,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) / 數碼管動態(tài)刷新顯示程序 if(jie=1
34、&&bujin!=2) /中間變量jie=1時,為上半場,對P1賦值 P1=0xbf; /P1=0xbf, 即P1=1011 1111B,點亮對應上半場指示燈 P2=0xfe; /數碼管動態(tài)刷新顯示程序 P2=1111 1110,i為分鐘 P0=segi%100/10; /刷新顯示時間顯示分鐘十位,調用延時程序, delay(1); /延時數碼管的點亮 P2=0xff; P0=0; P2=0xfd; /同理,動態(tài)刷新時分鐘個位并延時點亮 P0=segi%10; delay(1); P2|=0xff; P0=0; P2=0xfb; /同理,動態(tài)刷新時秒鐘十位并延時點亮 P0=se
35、gj%100/10; delay(1); P0=0; P2=0xff; P2=0xf7; /同理,動態(tài)刷新時秒鐘個位并延時點亮 P0=segj%10; delay(1); P0=0; P2=0xff; P2=0xef; /同理,動態(tài)刷新甲隊分數十位并延時點亮 P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; /同理,動態(tài)刷新甲隊分數個位并延時點亮 P0=segx%10; delay(1); P2=0xff; P0=0; P2=0xbf; / /同理,動態(tài)刷新乙隊分數十位并延時點亮 P0=segy%100/10; delay(1); P0=0;
36、P2=0xff; P2=0x7f; /同理,動態(tài)刷新乙隊分數十位并延時點亮 P0=segy%10; delay(1); P0=0; P2=0xff;void t0(void) interrupt 1 /調用定時器T0 基本計時單位秒 TH0=0xb1; /利用定時器T0,送入計數初值TH0=0xb1; TL0=0x10; TL0=0x10; /定時器定時單位為20毫秒 if(n=0) /分鐘與秒時間調整 當秒減到0以后分鐘減1 n=60;m-; i+; if(i=50) /利用中間變量i 令i值為50 50*20毫秒=1秒 n-; /以實現(xiàn)一秒計時 i=0; display(m,n-1,x,y
37、); /調用動態(tài)刷新顯示程序 void keyjiafen1() /加分按鍵子程序,在主程序中不斷調用該子程序 /當檢測到甲隊加分按鍵按下時,對應加分 if(RXD=0) /調用延時子程序 實現(xiàn)消除按鍵抖動功能,即,當 delay(1); /檢測到按鍵按下時候,延時,按鍵仍按下,說明按鍵 if(RXD=0) /確實按下,非抖動,甲隊對應加分 while(RXD=0); x+; if(TXD=0) /同理,檢測乙隊加分按鍵時候按下,并加分 delay(1); if(TXD=0) while(TXD=0); y+; void keyjianfen1()/減分按鍵檢測子程序,其基本算法及功能與加 i
38、f(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) /在比賽中有時經常需要回表,故寫此程序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) chuzanting=0; zanting=1; n-; void shijian() / /該程序使回表和快表按鍵松開時候能自動暫停 if(zanting=1&&INT0=1&&INT1=1&&chuzan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度高性能建筑鋼材銷售專營合同3篇
- 2025年度股權激勵協(xié)議:上市公司員工股權激勵與業(yè)績考核3篇
- 2025便利店智能倉儲物流配送服務合同2篇
- 2025年度食品行業(yè)投資分析與風險評估合同范本3篇
- 二零二五版?zhèn)€人住房按揭貸款合同與商業(yè)貸款合同有何差異3篇
- 二零二五年度汽車救援車輛運輸合作協(xié)議范本3篇
- 二零二五版彩鋼房租賃與配套設施合同3篇
- 2024版樓棟移交協(xié)議書的重要性
- 二零二五年度高校與企業(yè)合作辦學項目合同3篇
- 二零二五年度特種車輛安裝與安全培訓合同3篇
- 銀行會計主管年度工作總結2024(30篇)
- 教師招聘(教育理論基礎)考試題庫(含答案)
- 2024年秋季學期學校辦公室工作總結
- 上海市12校2025屆高三第一次模擬考試英語試卷含解析
- 三年級數學(上)計算題專項練習附答案集錦
- 長亭送別完整版本
- 《鐵路軌道維護》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡版wps
- 職業(yè)學校視頻監(jiān)控存儲系統(tǒng)解決方案
- 《銷售心理學培訓》課件
- 2024年安徽省公務員錄用考試《行測》真題及解析
評論
0/150
提交評論