版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)技術(shù)及其應(yīng)用課程設(shè)計(jì)報(bào)告題 目: 籃球計(jì)時(shí)計(jì)分器 班 級(jí): 通信本科1班 學(xué) 號(hào): 姓 名: 同組人員: 指導(dǎo)教師: 敏 2014 年 12 月 15 日目 錄1概述11.1單片機(jī)簡(jiǎn)介11.2課程設(shè)計(jì)的意義21.3設(shè)計(jì)的任務(wù)和要求22系統(tǒng)總體方案及硬件設(shè)計(jì)22.1 系統(tǒng)總體方案設(shè)計(jì)22.2 單片機(jī)選擇33 系統(tǒng)的硬件設(shè)計(jì)43.1 時(shí)鐘電路模塊43.2 鍵盤控制模塊43.3 顯示模塊53.4定時(shí)報(bào)警模塊64 系統(tǒng)的軟件設(shè)計(jì)64.1軟件設(shè)計(jì)總流程圖64.2 定時(shí)初值計(jì)算74.3 各部分程序功能分析85 系統(tǒng)的Proteus仿真136 總結(jié)147 指導(dǎo)老師意見(jiàn)15參考書目:15附錄 C語(yǔ)言源程
2、序16籃球計(jì)時(shí)計(jì)分器1概述1.1單片機(jī)簡(jiǎn)介 單片機(jī),全稱為單片微型計(jì)算機(jī)(Single Chip Microcomputer),即把組成微型計(jì)算機(jī)的各個(gè)功能部件如中央處理器(CPU)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、輸入/輸出端口(I/0)、定時(shí)器/計(jì)數(shù)器以及串行通信接口等(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)都集成在一塊芯片上,構(gòu)成的一個(gè)完整的微型計(jì)算機(jī)。由于單片機(jī)的集成度很高、功能強(qiáng)、通用性好、特別是它的體積小、重量輕、功耗低、價(jià)格便宜、可靠性高、抗干擾能力強(qiáng)和使用方便等優(yōu)點(diǎn)、使得單片機(jī)得到了迅速推廣應(yīng)用、已遠(yuǎn)遠(yuǎn)超出了計(jì)算機(jī)科學(xué)的領(lǐng)域。
3、單片機(jī)自20世紀(jì)70年代問(wèn)世以來(lái),以極其高的性價(jià)比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機(jī)以其一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費(fèi)類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民生活的各層次中,如車間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器等。而美國(guó)ATMEL公司開發(fā)生產(chǎn)了新型的8位單片機(jī)AT89系列單片機(jī)。它不但具有一般MCS-51單片機(jī)的所有特性,而且還擁有一些獨(dú)特的優(yōu)點(diǎn)。此次設(shè)計(jì)中所用到的AT89S52就是其中典型的代表。由于單片機(jī)的集成度高,功能強(qiáng),通用性好,特別是它具有體積小,重量輕
4、,能耗低,價(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秒控制器等組成。本次設(shè)計(jì)的籃球計(jì)時(shí)計(jì)分器就是以單片機(jī)為核心的計(jì)時(shí)計(jì)分系統(tǒng),由計(jì)時(shí)器,計(jì)分器,綜合控制器等組成。1.2課程設(shè)計(jì)的意義單片機(jī)的應(yīng)用是具有高度現(xiàn)實(shí)意義的。單片機(jī)極高的可靠性,微型性和智能性(我們只要編寫不同的程序后就能夠完成不同的控制工作),單片
5、機(jī)已成為工業(yè)控制領(lǐng)域中普遍采用的智能化控制工具,已經(jīng)深深地滲入到我們的日常生活當(dāng)中。通過(guò)此次基于單片機(jī)設(shè)計(jì)的籃球計(jì)時(shí)計(jì)分系統(tǒng),我們可以進(jìn)一步熟悉和掌握單片機(jī)的內(nèi)部結(jié)構(gòu)和工作原理,更清楚詳細(xì)的了解單片機(jī)程序設(shè)計(jì)的基本指令功能、編程步驟和技巧。對(duì)此次的單片機(jī)課程設(shè)計(jì),我們可以在將來(lái)的工作和學(xué)習(xí)中加以應(yīng)用。1.3設(shè)計(jì)的任務(wù)和要求任務(wù): 設(shè)計(jì)一個(gè)用于賽場(chǎng)的籃球計(jì)時(shí)計(jì)分器。要求: 1、能記錄整個(gè)賽程的比賽時(shí)間,并能修改比賽時(shí)間。 2、能隨時(shí)刷新甲、乙兩隊(duì)在整個(gè)過(guò)程中的比分。3、中場(chǎng)交換比賽場(chǎng)地時(shí),能交換甲、乙兩隊(duì)比分的位置。4、比賽結(jié)束時(shí),能發(fā)出報(bào)警聲。2系統(tǒng)總體方案2.1 系統(tǒng)總體方案設(shè)計(jì)本設(shè)計(jì)籃球計(jì)
6、時(shí)計(jì)分器主要包括一下五部分:按鍵輸入模塊,單片機(jī)控制系統(tǒng)、計(jì)時(shí)時(shí)間顯示模塊、計(jì)分分?jǐn)?shù)顯示模塊和定時(shí)報(bào)警模塊。通過(guò)單片機(jī)控制系統(tǒng)輸出信號(hào)來(lái)控制計(jì)時(shí)顯示模塊、計(jì)分顯示模塊和定時(shí)報(bào)警模塊的正常顯示和工作,同時(shí)單片機(jī)還不斷掃描鍵盤輸入狀態(tài),接收鍵盤的輸入控制信號(hào),進(jìn)而調(diào)整輸出。系統(tǒng)總體框圖如下圖(圖2-1)所示。分?jǐn)?shù)顯示定時(shí)報(bào)警時(shí)間設(shè)定時(shí)間顯示單片機(jī)控制系統(tǒng)加分設(shè)定場(chǎng)地交換開始暫停圖2-1 系統(tǒng)總體框圖2.2 單片機(jī)選擇STC89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用STC
7、公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的STC89C52單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)合。STC89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,STC89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程(S系列的才支持在線編程)。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。 STC89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RA
8、M, 32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。3 系統(tǒng)的硬件設(shè)計(jì)3.1 時(shí)鐘電路模塊在單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘電路提供保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào)。主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢。這里采用的是12MHz的
9、晶振,兩個(gè)電容選用的是330pF的瓷片電容,晶振的兩個(gè)引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳。具體連接電路如圖3-1所示。圖3-1 時(shí)鐘電路3.2 鍵盤控制模塊本設(shè)計(jì)中共設(shè)有7個(gè)按鍵,各個(gè)按鍵均有對(duì)應(yīng)的功能。仿真電路如下圖所示:圖3-2 按鍵控制電路3.3 顯示模塊本設(shè)計(jì)中計(jì)時(shí)時(shí)間顯示模塊采用一個(gè)4位一體7段式共陰極數(shù)碼管顯示,計(jì)分分?jǐn)?shù)顯示模塊采用兩個(gè)兩位一體7段式共陰極數(shù)碼管分別顯示甲乙兩隊(duì)得分。并且使用74hc573芯片驅(qū)動(dòng)該數(shù)碼管,使數(shù)碼管正常顯示。其具體電路如圖3-3所示。(a)時(shí)間顯示模塊(b)甲、乙對(duì)分?jǐn)?shù)顯示圖3-3 顯示模塊電路3.4定時(shí)報(bào)警模塊報(bào)警電路模塊由蜂鳴器加
10、三極管驅(qū)動(dòng)組成,不僅實(shí)現(xiàn)了定時(shí)報(bào)警功能,而且還可以在按下按鍵時(shí)發(fā)出按鍵聲音。具體電路如圖3-4所示:圖3-4 報(bào)警模塊電路4 系統(tǒng)的軟件設(shè)計(jì)4.1軟件設(shè)計(jì)總流程圖本設(shè)計(jì)軟件設(shè)計(jì)部分采用模塊化程序設(shè)計(jì),程序部分由主程序、延時(shí)子程序、T0中斷服務(wù)程序、按鍵掃描子程序、數(shù)碼管顯示子程序、定時(shí)設(shè)置子程序、結(jié)束報(bào)警顯示子程序。程序的總流程圖如圖4-1所示。分?jǐn)?shù)調(diào)整鍵是否按下?初始化工作狀態(tài)計(jì)時(shí)開始是否到1秒Y定時(shí)是否到了?報(bào)警N刷新顯示執(zhí)行相應(yīng)的操作,調(diào)整計(jì)分是否有時(shí)間調(diào)整鍵按下?N執(zhí)行相應(yīng)的操作,調(diào)整時(shí)間YN開始圖4-1 程序流程圖4.2 定時(shí)初值計(jì)算單片機(jī)的定時(shí)初值計(jì)算公式為:定時(shí)初值 = 6553
11、6 - 定時(shí)時(shí)間/機(jī)器周期則最大定時(shí)時(shí)間=65536us = 0.065536s本設(shè)計(jì)中采用晶振頻率為f = 12MHz,則機(jī)器周期=1us (1微秒)。程序中采用的是定時(shí)器T0,工作在方式1,取定時(shí)器1次定時(shí)0.02s,50次定時(shí)為1s.定時(shí)初值=65536 - 20000 = 45536 = B1E0H,那么可以對(duì)單片機(jī)定時(shí)器0賦初值為:TH0 = 0xb1H; TL0 = 0xe0H;4.3 各部分程序功能分析本設(shè)計(jì)程序部分由主程序、延時(shí)子程序、T0中斷服務(wù)程序、按鍵掃描子程序、數(shù)碼管顯示子程序、定時(shí)設(shè)置子程序、結(jié)束報(bào)警顯示子程序等幾部分組成。各個(gè)程序模塊的功能如下。4.3.1 主程序模
12、塊程序就是從主程序開始執(zhí)行的,在主程序里可以調(diào)用子程序,調(diào)用完成后還要返回主程序繼續(xù)執(zhí)行。我們?cè)谥鞒绦蚶飳?duì)各個(gè)模塊進(jìn)行初始化,用一個(gè)while循環(huán)不斷地循環(huán)執(zhí)行各個(gè)子程序,例如按鍵掃描程序在這里可以一次一次地掃描按鍵,這樣實(shí)現(xiàn)簡(jiǎn)單易行。本程序主函數(shù)如下:void main() / 主程序 TMOD=0x01; /設(shè)置定時(shí)器工作方式 EA=1; ET0=1; TH0=0xb1; /定時(shí)器送計(jì)數(shù)初值,EA=1,開中斷,P3口電平拉高TL0=0x10; TR0=1;P3=0xff; P1=0x7f; / P1=0x7f, 上半場(chǎng)指示燈點(diǎn)亮 T1=0;while(1) /通過(guò) while(1),反復(fù)調(diào)
13、用循環(huán)體內(nèi)的子程序 keyjiafen1(); /執(zhí)行相應(yīng)的功能 keyjianfen1(); key2(); if(zidong=1) /zidong=1為key3()執(zhí)行條件,僅當(dāng)半場(chǎng)結(jié)束時(shí)候執(zhí)行 key3(); if(n=18&&bujin=0) bujin=2; /修改變量bujin的值,設(shè)定over()中第二個(gè)if語(yǔ)句的執(zhí)行條件 shijian(); key4(); over(); 4.3.2 延時(shí)子程序本程序中單獨(dú)設(shè)立了一個(gè)帶有參數(shù)傳輸?shù)难訒r(shí)子程序,以供其他程序塊的調(diào)用,且延時(shí)可以通過(guò)參數(shù)方便的控制,使程序更加的簡(jiǎn)潔。延時(shí)子程序如下:void delay(int t
14、) /延時(shí)程序,t為參數(shù)方便控制延時(shí)的長(zhǎng)度while(t-) /循環(huán)t次 unsigned int i; /定義無(wú)符號(hào)整形變量 for(i=0;i<200;i+); /循環(huán)200次空操作 4.3.3 中斷服務(wù)子程序當(dāng)T0中斷發(fā)生時(shí)轉(zhuǎn)入執(zhí)行中斷服務(wù)子程序,本程序主要用于提供一個(gè)精確的時(shí)鐘實(shí)現(xiàn)定時(shí)。另外還用對(duì)數(shù)碼管的循環(huán)掃描顯示,每中斷一次就對(duì)數(shù)碼管進(jìn)行掃描一次,從而提供一個(gè)穩(wěn)定的顯示輸出,不受其他程序的延時(shí)影響。 void t0(void) interrupt 1 /T0中斷服務(wù)程序 TH0=0xb1; /定時(shí)器初始化TL0=0x10;if(k1) i+; if(i=50) n-; i=0
15、; /到一秒時(shí)秒顯示加1 display(m,n,x,y); /動(dòng)態(tài)顯示時(shí)間和比分 if(k3) if(n=0-1) /倒計(jì)時(shí)秒位為0時(shí)借位 n=n1-1;m-; 4.3.4 數(shù)碼管顯示子程序數(shù)碼管顯示采用動(dòng)態(tài)顯示方式,這樣占用I/O口資源比較少,且易于實(shí)現(xiàn)。在運(yùn)行中可以隨時(shí)修改顯示分?jǐn)?shù)及時(shí)間,另外在比賽結(jié)束后還可以將時(shí)間顯示變?yōu)轱@示字符串“End”來(lái)提示比賽結(jié)束,這樣比較實(shí)用。其中倒計(jì)時(shí)的分鐘顯示程序塊如下:P2=0xfe; /顯示倒計(jì)時(shí)分鐘十位 P0=segm%100/10; delay(1); /顯示延時(shí) P2=0xff; /復(fù)位 P0=0; P2=0xfd; /顯示倒計(jì)時(shí)分鐘個(gè)位 P0
16、=segm%10; delay(1); P2=0xff; /復(fù)位 P0=0;4.3.5 按鍵掃描子程序本設(shè)計(jì)中采用的是獨(dú)立式按鍵,一個(gè)按鍵對(duì)應(yīng)一個(gè)單片機(jī)管腳,單獨(dú)掃描。通過(guò)P3口掃描,共設(shè)有K1K7七個(gè)按鍵,實(shí)現(xiàn)功能分別加分、調(diào)時(shí)、加速調(diào)時(shí)、開始/暫停、組合減分鍵等功能。其軟件設(shè)計(jì)流程圖如下(見(jiàn)圖4-2):其中調(diào)整加分按鍵掃描程序如下:void key1() /按鍵調(diào)整兩隊(duì)得分 if(P3_0=0) /若甲隊(duì)加分鍵按下 delay(1); /延時(shí)if(P3_0=0) /若還在按下 P3_6=1; /蜂鳴器響while(P3_0=0); /等待松鍵x+; /甲隊(duì)加一分P3_6=0; /關(guān)蜂鳴器
17、if(P3_1=0) /若乙隊(duì)加分鍵按下 delay(1); /延時(shí)if(P3_1=0) /若還在按下 P3_6=1; /蜂鳴器響while(P3_1=0); /等待松鍵y+; /乙隊(duì)加一分P3_6=0; /關(guān)蜂鳴器 是是否是否否是否是是否狀態(tài)初始化 啟動(dòng)主程序甲加分鍵按下了嗎乙加分鍵按下了嗎分?jǐn)?shù)位置交換鍵按下了嗎甲加分乙加分交換定時(shí)設(shè)計(jì)鍵按了嗎計(jì)時(shí)調(diào)整了嗎調(diào)用定時(shí)調(diào)整程序計(jì)時(shí)調(diào)整調(diào)用顯示程序display()倒計(jì)時(shí)是否為0調(diào)用報(bào)警子程序圖4-2 主程序流程圖4.3.6 結(jié)束報(bào)警顯示子程序與延時(shí)子程序報(bào)警服務(wù)子程序通過(guò)對(duì)P1_6輸出高電平驅(qū)動(dòng)蜂鳴器報(bào)警,另外,本報(bào)警程序?qū)崿F(xiàn)了報(bào)警時(shí)數(shù)碼管跟隨閃
18、動(dòng)。具體程序如下void alarm(int i) /結(jié)束時(shí)數(shù)碼管閃動(dòng)加聲音while(i-) /循環(huán)執(zhí)行i次 int j; /定義變量j P3_6=!P3_6;/開(或者關(guān))蜂鳴器 for(j=0;j<25;j+)/循環(huán)25次 display(m,n,x,y); /調(diào)用顯示函數(shù) P3_6=!P3_6;/關(guān)(或者開)蜂鳴器 delay(200); /保持狀態(tài)延時(shí)一定時(shí)間 5 系統(tǒng)的Proteus仿真本課程設(shè)計(jì)采用Keil uVisoin3軟件將c語(yǔ)言源代碼生產(chǎn)hex格式的文件,然后使用Proteus軟件仿真該系統(tǒng)。如圖,開始仿真,時(shí)間、分?jǐn)?shù)顯示模塊顯示初始時(shí)間、分?jǐn)?shù)。按下加分按鈕,分?jǐn)?shù)顯
19、示模塊,分?jǐn)?shù)會(huì)發(fā)生對(duì)應(yīng)的改變,仿真成功。圖5-1 初始狀態(tài)圖5-2 按鍵加分6 總結(jié)通過(guò)對(duì)本系統(tǒng)的設(shè)計(jì),讓我更熟悉掌握了Keil uVision3, proteus 這些應(yīng)用程序的運(yùn)用,讓我懂得了如何編寫一些簡(jiǎn)單的程序,學(xué)會(huì)了如何制作單片機(jī)應(yīng)用程序,還有焊接和程序下載,但在中間暴露出很多問(wèn)題:對(duì)平時(shí)上課講的理論知識(shí)沒(méi)有完全掌握消化,到了實(shí)際操作中還得請(qǐng)教同學(xué),在焊接中焊接的基本工夫掌握不到家,手上工夫還是很欠缺的,使得電路板不是很美觀。另外,本設(shè)計(jì)雖然已經(jīng)實(shí)現(xiàn)了時(shí)間的倒計(jì)時(shí)、回表、快進(jìn),以及兩隊(duì)的加分和減分,但現(xiàn)在籃球比賽的每一次進(jìn)攻都是24秒制的,因此,這一點(diǎn)是一個(gè)很大的缺陷,希望在以后對(duì)此
20、系統(tǒng)進(jìn)行進(jìn)一步完善。同時(shí),做設(shè)計(jì)的這幾個(gè)月翻閱了很多書,也上了很多網(wǎng)站去尋找自己需要的資料。這種尋找有很強(qiáng)的目的性,只是為了自己選定的課題內(nèi)容而查閱,所以除了自己設(shè)計(jì)以外的其他方面幾乎還是一無(wú)所知。這讓我深刻的認(rèn)識(shí)到了自己專業(yè)知識(shí)的貧乏。為我對(duì)自己以后生活的規(guī)劃敲響了警鐘。我對(duì)單片機(jī)的學(xué)習(xí)不會(huì)因?yàn)楸驹O(shè)計(jì)的結(jié)束而結(jié)束,在接觸的眾多資料里,做設(shè)計(jì)只是走馬觀花般的點(diǎn)到,希望以后能夠進(jìn)行更系統(tǒng)的學(xué)習(xí)。這些問(wèn)題的發(fā)現(xiàn),有助于提高我在以后的工作和學(xué)習(xí)中對(duì)此類問(wèn)題的認(rèn)識(shí),確保不在同一問(wèn)題上再次犯錯(cuò)。嚴(yán)謹(jǐn)求實(shí)、踏實(shí)務(wù)實(shí),是我這次設(shè)計(jì)的深刻總結(jié)7 指導(dǎo)老師意見(jiàn)參考書目:1 李群芳,肖看,單片微型計(jì)算機(jī)與接口技術(shù)
21、,北京,電子工業(yè)出版社,2012年2 康華光,秦臻,電子技術(shù)基礎(chǔ)(數(shù)字部分),北京,高等教育出本社,2006年3 譚浩強(qiáng),c語(yǔ)言課程設(shè)計(jì),北京,清華大學(xué)出版社,2010年附錄 C語(yǔ)言源程序#include <reg52.h> code unsigned seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;int m=24,n=10; /計(jì)時(shí)m為分,n為秒int x=0,y=0; /甲乙兩隊(duì)得分int i=0,j=0,jie=2,zidong=1,bujin=1,zanting=0;int chuzanting=0;sbit P
22、1_0=P10;sbit dula=P11;/*延時(shí)*/void delay(int t) while(t-) unsigned int i; for(i=0;i<200;i+); /*數(shù)碼管動(dòng)態(tài)顯示*/ void display(int i,int j,int x,int y) if(jie=1&&bujin!=2) /中間變量jie=1時(shí),為上半場(chǎng),對(duì)P1賦值 P1=0xbd; /P1=0xbf, 即P1=1011 1111B,點(diǎn)亮對(duì)應(yīng)下半場(chǎng)指示燈 P2=0xfe; / P0=0x7d; /數(shù)碼管動(dòng)態(tài)刷新顯示程序 P2=1111 1110,i為分鐘 dula=1; P
23、0=segi%100/10; /刷新顯示時(shí)間顯示分鐘十位,調(diào)用延時(shí)程序, dula=0; delay(1); /延時(shí)數(shù)碼管的點(diǎn)亮 P2=0xff; P0=0; P2=0xfd; dula=1; /同理,動(dòng)態(tài)刷新時(shí)分鐘個(gè)位并延時(shí)點(diǎn)亮 P0=segi%10; delay(1); dula=0; P2=0xff; P0=0; P2=0xfb; dula=1; /同理,動(dòng)態(tài)刷新時(shí)秒鐘十位并延時(shí)點(diǎn)亮 P0=segj%100/10; delay(1); dula=0; P0=0; P2=0xff; P2=0xf7; dula=1; /同理,動(dòng)態(tài)刷新時(shí)秒鐘個(gè)位并延時(shí)點(diǎn)亮 P0=segj%10; dula=0
24、; delay(1); P0=0; P2=0xff; P2=0xef; /同理,動(dòng)態(tài)刷新甲隊(duì)分?jǐn)?shù)十位并延時(shí)點(diǎn)亮 dula=1; P0=segx%100/10; dula=0; delay(1); P2=0xff; P0=0; P2=0xdf; dula=1; /同理,動(dòng)態(tài)刷新甲隊(duì)分?jǐn)?shù)個(gè)位并延時(shí)點(diǎn)亮 P0=segx%10; dula=0; delay(1); P2=0xff; P0=0; P2=0xbf; /動(dòng)態(tài)刷新乙隊(duì)分?jǐn)?shù)十位并延時(shí)點(diǎn)亮 dula=1; P0=segy%100/10; dula=0; delay(1); P0=0; P2=0xff; P2=0x7f; /同理,動(dòng)態(tài)刷新乙隊(duì)分?jǐn)?shù)十
25、位并延時(shí)點(diǎn)亮 dula=1; P0=segy%10; dula=0; delay(1); P0=0; P2=0xff; /*中斷程序*/void t0(void) interrupt 1 /調(diào)用定時(shí)器T0 基本計(jì)時(shí)單位秒 TH0=(65536-20000)/256; /利用定時(shí)器T0,送入計(jì)數(shù)初值TH0=0xb1; TL0=0x10; TL0=(65536-20000)%256; /定時(shí)器定時(shí)單位為20毫秒 i+;/進(jìn)入中斷次數(shù) if(i=50) /利用中間變量i 令i值為50 50*20毫秒=1秒 if(n=0) /當(dāng)秒減到0以后分鐘減1 n=59;if(m=0)m=0;else m-; e
26、lse n-; /秒減1 i=0; display(m,n,x,y); /調(diào)用動(dòng)態(tài)刷新顯示程序/*加分*/ /RXD、TXD對(duì)應(yīng)的P3.0和P3.1,為加減分鍵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í),按鍵仍按下,說(shuō)明按鍵 if(RXD=0) /確實(shí)按下,非抖動(dòng),甲隊(duì)對(duì)應(yīng)加分 while(RXD=0); /等待松手 x+; if(TXD=0) /同理,檢測(cè)乙隊(duì)加分按鍵時(shí)候按下,并加分 delay(1);
27、 if(TXD=0) while(TXD=0); y+; /*減分*/WR和RD對(duì)應(yīng)的P3.6和P3.7void keyjianfen1()/減分按鍵檢測(cè)子程序,其基本算法及功能與加 if(WR=0) /相同 delay(1); if(WR=0) while(WR=0); if(x=0) x=0; elsex-; if(RD=0) delay(1); if(RD=0) while(RD=0); if(y=0) y=0; else y-; /*回表和快表*/INTO INT1對(duì)應(yīng)的P3.2和P3.3void key2() /顯示時(shí)間調(diào)整程序,即回表和快表 if(INT0=0) /在比賽中有時(shí)經(jīng)常
28、需要回表,故寫此程序 delay(1); if(INT0=0) /回表子程序,檢測(cè)到INT0按下時(shí),使時(shí)間回倒 chuzanting=0; / chuzanting=0; zanting=1;為附加變量,當(dāng)回表按鍵zanting=1; /松開時(shí),表暫停,這兩個(gè)變量用來(lái)調(diào)用暫停 if(m=2) m=2;n=0; else if(n=59) m+; n=0; else n+; if(INT1=0) /快表子程序,檢測(cè)到INT1按下時(shí),使倒計(jì)加快, /通常情況下與回表子程序配合使用,即當(dāng)回表 /回過(guò)的時(shí)候,按此鍵調(diào)整時(shí)間 delay(10); / chuzanting=0; zanting=1;作用
29、同上 if(INT1=0) chuzanting=0; zanting=1; if(n=0) if(m=0) m=0;n=0; else m-; n=59; else n-; /*回表和快表按鍵松開時(shí)候能自動(dòng)暫停*/ void shijian()/回表和快表按鍵松開時(shí)候能自動(dòng)暫停 if(zanting=1&&INT0=1&&INT1=1&&chuzanting=0) EA=0; zanting=0; chuzanting=0; while(1) display(m,n,x,y); if(P1_0=0) delay(1); if(P1_0=0) w
30、hile(P1_0=0); EA=1;break; /*交換場(chǎng)地,換分*/zidong=1&&jie=1 滿足這個(gè)條件,交換分?jǐn)?shù)void key3() /半場(chǎng)交換場(chǎng)地時(shí)自動(dòng)交換雙方比賽分?jǐn)?shù)子程序int temp1,temp2; /定義中間變量temp,檢測(cè)到有按鍵按下時(shí)候 if(zidong=1&&jie=1) /交換甲隊(duì),乙隊(duì)比賽分?jǐn)?shù) temp1=x; / zidong=1&&jie=1是判斷半場(chǎng)的條件 / temp2=y; y=temp1; x=temp2; display(m,n,x,y); zidong=0; bujin=0; /*比賽暫停子程序*/void key4() if(P1_0=0) /檢測(cè)到暫停按鍵按下時(shí)候,令EA=0關(guān)閉中斷 delay(1); /同通過(guò)死循環(huán)程序while(1),不斷刷新數(shù)碼管 if(P1_0=0) /當(dāng)暫停鍵再次按下時(shí)候,開中斷,以使比賽時(shí)間 /繼續(xù)倒計(jì)時(shí),由于在暫停的時(shí)候,程序處于死循 while(P1_0=0); EA=0; /無(wú)法回到主程序,故主程序中檢測(cè)按鍵按下的 while(1) /無(wú)法回到主程序,即實(shí)現(xiàn)了暫停時(shí),除了暫停鍵 /其他按鍵按下均無(wú)效 display(m,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)人才2024年薪金聘用協(xié)議書版
- 二零二五版冷鏈物流車輛貨物運(yùn)輸安全協(xié)議2篇
- 二零二五年藝術(shù)品搬運(yùn)運(yùn)輸服務(wù)合同3篇
- 二零二五版數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展合同范本2篇
- 2024施工合同匯集
- 二零二五年度鋼板租賃與節(jié)能減排服務(wù)協(xié)議3篇
- 個(gè)性化旅游顧問(wèn)服務(wù)協(xié)議2024版版A版
- 2024版產(chǎn)品銷售協(xié)議6篇
- 二零二五年度高科技產(chǎn)業(yè)合伙人分家協(xié)議書3篇
- 二零二五年度智能工廠安全生產(chǎn)服務(wù)外包合同2篇
- 《用銳角三角函數(shù)解決問(wèn)題(3)》參考課件
- 房地產(chǎn)營(yíng)銷策劃 -佛山龍灣壹號(hào)學(xué)區(qū)房項(xiàng)目推廣策略提案方案
- 產(chǎn)品共同研發(fā)合作協(xié)議范本5篇
- 風(fēng)水學(xué)的基礎(chǔ)知識(shí)培訓(xùn)
- 吸入療法在呼吸康復(fù)應(yīng)用中的中國(guó)專家共識(shí)2022版
- 1-35kV電纜技術(shù)參數(shù)表
- 信息科技課程標(biāo)準(zhǔn)測(cè)(2022版)考試題庫(kù)及答案
- 施工組織設(shè)計(jì)方案針對(duì)性、完整性
- 2002版干部履歷表(貴州省)
- DL∕T 1909-2018 -48V電力通信直流電源系統(tǒng)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論