籃球賽電子記分牌 摘要:籃球賽電子計(jì)時(shí)記分牌是根據(jù)籃球比賽特點(diǎn)設(shè)計(jì)的獨(dú)立的信息采集、分配、評(píng)判和顯示的系統(tǒng),能實(shí)現(xiàn)比賽時(shí)間和分?jǐn)?shù)的實(shí)時(shí)、準(zhǔn)確、快捷處理和呈現(xiàn)。本設(shè)計(jì)原理簡(jiǎn)單,主要采用AT89C51單片機(jī)作為微控制器,集合控制器、lCD液晶顯示和報(bào)警,控制器控制記分牌的工作狀態(tài),通過(guò)lCD液晶顯示和報(bào)警來(lái)反饋信息。本設(shè)計(jì)在充分考慮了籃球比賽的實(shí)際情況基礎(chǔ)上設(shè)計(jì),具有友好的人機(jī)交互接口,并且可以防止人為誤操作造成的不良后果,具有一定的實(shí)用性。 目錄 1緒論 1.1課題背景及研究意義 1.2設(shè)計(jì)任務(wù)與要求 1.3 單片機(jī)在體育賽事計(jì)分的應(yīng)用 1.4方案設(shè)計(jì)說(shuō)明 2系統(tǒng)概述 2.1顯示模塊 2.2 按鍵控制模塊 2.3 報(bào)警模式 2.4 總體硬件組成框圖 3系統(tǒng)硬件設(shè)計(jì) 3.1 主控電路設(shè)計(jì) 3.2 LCD1602顯示模塊的硬件設(shè)計(jì) 3.2 按鍵控制模塊 3.3 蜂鳴器報(bào)警模塊的硬件設(shè)計(jì) 4 軟件控制系統(tǒng) 4.1主程序設(shè)計(jì) 4.2仿真結(jié)果 5 結(jié)論 參考文獻(xiàn) 附錄1: 附錄2: 1緒論1.1課題背景及研究意義目前球場(chǎng)記分牌在傳統(tǒng)操作模式下,采用記分員手動(dòng)翻動(dòng)記分牌記分,工作方式單一。由于種種弊端,電子記分板已經(jīng)開(kāi)始在一些大型的體育場(chǎng)流行起來(lái),不僅發(fā)展速度迅猛并會(huì)逐漸取代傳統(tǒng)的電子記分牌。電子記分板根據(jù)籃球比賽的特點(diǎn),采用單片機(jī)為核心控制LED數(shù)碼管,具有亮度高、可視性好、功耗小、使用壽命長(zhǎng)等優(yōu)點(diǎn);具有性能穩(wěn)定,尺寸適中,運(yùn)輸安裝方式靈活,物美價(jià)廉等特點(diǎn),特別適用于小型籃球體育館和露天運(yùn)動(dòng)場(chǎng)。 1.2設(shè)計(jì)任務(wù)與要求 設(shè)計(jì)題目:籃球賽電子記分牌 設(shè)計(jì)要求: (1)分別設(shè)計(jì)籃球比賽甲乙兩個(gè)隊(duì)的記分牌; (2)能實(shí)現(xiàn)兩張記分牌的切換; (3)能按照籃球賽記分規(guī)則記分并顯示; (4)將原有的一個(gè)指示燈基礎(chǔ)上進(jìn)一步改進(jìn)為兩個(gè)指示燈,作分別指示。 1.3 單片機(jī)在體育賽事計(jì)分的應(yīng)用 傳統(tǒng)的籃球比賽計(jì)分是由工作人員人工翻動(dòng)記分牌實(shí)現(xiàn)的,而比賽的時(shí)間則由工作人員計(jì)表控制。由于人為因素,人工操作的比賽計(jì)分板難免會(huì)出現(xiàn)誤差。而作為微型控制系統(tǒng)的單片機(jī)具有集成度高,功能強(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)鍵部位。] 3[因此單片機(jī)在體育比賽記分牌的應(yīng)用也成 為了一種不可避免的趨勢(shì)。 1.4方案設(shè)計(jì)說(shuō)明 設(shè)計(jì)方案之前,得先分解設(shè)計(jì)任務(wù)。本次的設(shè)計(jì)任務(wù)是籃球記分牌,據(jù)常識(shí),籃球記分牌應(yīng)有分別給兩隊(duì)加分,暫停,顯示屏既要顯示時(shí)間又要顯示分?jǐn)?shù)。在進(jìn)行設(shè)計(jì)之前,應(yīng)自己提出幾個(gè)問(wèn)題,待問(wèn)題回答之后�;竟Α⒌脑O(shè)計(jì)方案就出來(lái)了。在設(shè)計(jì)之前我提出了一下幾個(gè)問(wèn)題: a:硬件部分如何控制給A對(duì)B對(duì)加分,如何控制時(shí)間與分?jǐn)?shù)的顯示?場(chǎng)地交換的時(shí)候又是如何實(shí)現(xiàn)分?jǐn)?shù)顯示交換的?應(yīng)該如何連接硬件,在硬件上設(shè)置控制端,控制端與單片機(jī)各引腳之間的連,如何選擇? b:?jiǎn)纹瑱C(jī)只有一個(gè)CPU,如何實(shí)現(xiàn)即要掃描按鍵,又要顯示比分,顯示時(shí)間。數(shù)碼管工作的本質(zhì)是將要顯示的數(shù)據(jù)的字型碼送給他,如何采集到變化的分?jǐn)?shù)和時(shí)間并送給數(shù)碼管。用查表嗎? c:分?jǐn)?shù)時(shí)間顯示都應(yīng)該有對(duì)應(yīng)的液晶顯示,如何控制液晶顯示,使時(shí)間和分?jǐn)?shù)都顯示在相對(duì)應(yīng)的液晶顯示屏上?加分與倒計(jì)時(shí)在程序中最本質(zhì)的東西是什么,如何用程序來(lái)說(shuō)明這樣的事件,各事件之間又是如何聯(lián)系的。 雖然這些問(wèn)題看似很普通,似乎在設(shè)計(jì)過(guò)程中都要面對(duì)這樣的問(wèn)題,何不事先就解決這些問(wèn)題呢,在逐一回答這些問(wèn)題的同時(shí),該任務(wù)的設(shè)計(jì)方案已見(jiàn)雛形。以下就是該方案的詳細(xì)內(nèi)容以及我問(wèn)題的答案。 2系統(tǒng)概述本系統(tǒng)采用單片機(jī)AT89C51為控制核心,系統(tǒng)主要包括顯示模塊、按鍵控制模塊、報(bào)警模塊等; 2.1顯示模塊 方案一:采用七段碼數(shù)碼管顯示。數(shù)碼管是指將所有發(fā)光二極管的一極接到一起形成公共極,因此數(shù)碼管有共陰共陽(yáng)之分。以共陽(yáng)數(shù)碼管為例,共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。因此每個(gè)數(shù)碼管有9個(gè)接口。數(shù)碼管的驅(qū)動(dòng)方式有靜態(tài)掃描和動(dòng)態(tài)掃描兩種形式。靜態(tài)掃描編程簡(jiǎn)單,但電路復(fù)雜;動(dòng)態(tài)掃描變成復(fù)雜,而且還需要使用其他芯片。 方案二:采用1602液晶顯示。液晶的物理特性是:當(dāng)通電時(shí)導(dǎo)通,排列變得有秩序,是光線(xiàn)容易通過(guò),不通電時(shí)排列混亂,阻止光線(xiàn)通過(guò)。相比于數(shù)碼管,LCD1602不僅可以顯示的圖形符號(hào)更豐富,而且具有輕薄、無(wú)輻射等優(yōu)點(diǎn)。 比較以上兩種方案,系統(tǒng)設(shè)計(jì)中采用方案二。
2.2 按鍵控制模塊 方案一:采用矩陣鍵盤(pán)。矩陣鍵盤(pán)的長(zhǎng)各分接口分別于單片機(jī)的I/O口連接,可以通過(guò)連接數(shù)量較少的I/O口,擴(kuò)展出多個(gè)按鍵。但其缺點(diǎn)是電路更復(fù)雜,編程更麻煩。 方案二:采用獨(dú)立按鍵。每個(gè)獨(dú)立按鍵與單片機(jī)I/O連接,雖然不能節(jié)省I/O口,但電路簡(jiǎn)單、編程容易 比較以上兩種方案,由于本系統(tǒng)只需要4個(gè)按鍵,因此選者方案二。 2.3 報(bào)警模式 報(bào)警模塊中,信號(hào)由單片機(jī)輸出經(jīng)PNP型三極管放大后進(jìn)入蜂鳴器發(fā)出聲響進(jìn)行比賽時(shí)間的提示功能。 2.4 總體硬件組成框圖
圖1-1 系統(tǒng)基本方框圖 3系統(tǒng)硬件設(shè)計(jì)3.1 主控電路設(shè)計(jì)AT89S51為 ATMEL 所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,在本系統(tǒng)中,AT89S51單片機(jī)內(nèi)部的功能單元已經(jīng)能夠滿(mǎn)足系統(tǒng)設(shè)計(jì)需要,不需要系統(tǒng)擴(kuò)展。 AT89S51具有以下的特點(diǎn): - CPU與MCS-51 兼容
- 1000寫(xiě)/擦循環(huán)
- 8K字節(jié)可編程FLASH存儲(chǔ)器
- 全靜態(tài)工作:0--33MHz
- 三級(jí)加密程序存儲(chǔ)器
- 256*8位內(nèi)部RAM
- 32個(gè)可編程I/O線(xiàn)
- 三個(gè)16位定時(shí)器/計(jì)數(shù)器
- 8個(gè)中斷源
- 可編程串行通道
3.2 LCD1602顯示模塊的硬件設(shè)計(jì) 1602液晶也叫1602字符型液晶它是一種專(zhuān)門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊 圖1-2液晶顯示模塊電路 其中A代表的是甲隊(duì)記分牌、B代表乙隊(duì)記分牌 3.2 按鍵控制模塊 按鍵控制模塊采用4個(gè)獨(dú)立按鍵,K1、K2、K3、K4分別于單片機(jī)的P1^0、P1^1 P1^2、P1^3連接,每個(gè)按鍵的另一端直接與地相連接,因此是低電平有效。其中K1、K2、K3、K4表示暫停、刷新24秒、A加1分、B加1分 圖1-3按鍵控制模塊電路圖 3.3 蜂鳴器報(bào)警模塊的硬件設(shè)計(jì) 蜂鳴器報(bào)警模塊由一個(gè)蜂鳴器和一個(gè)PNP型的三極管組成,接單片機(jī)的P2^7 圖1-4報(bào)警模塊模塊電路圖 4 軟件控制系統(tǒng)4.1主程序設(shè)計(jì)本系統(tǒng)中單片機(jī)的主要功能就是利用內(nèi)部的定時(shí)器計(jì)時(shí),并隨時(shí)接受控制模塊的信息,將比賽的得分和剩余時(shí)間顯示在1602液晶上。 程序流程圖: 圖1-5程序流程圖 4.2仿真結(jié)果1.如圖4-3所示。點(diǎn)擊K3表示給A加分 按下K4表示給B加分 5 結(jié)論這一次的課程設(shè)計(jì),我的課題是《籃球賽電子計(jì)時(shí)記分牌》。由于這一系統(tǒng)包含單片機(jī)基礎(chǔ)、數(shù)碼管動(dòng)態(tài)顯示、矩陣鍵盤(pán)掃描、定時(shí)器和中斷等知識(shí)體系,涉及面較廣,通過(guò)這一課程設(shè)計(jì),可以更好地檢測(cè)和鞏固學(xué)到的知識(shí),加深自己對(duì)電子世界的認(rèn)識(shí)。 在本次的設(shè)計(jì)中,針對(duì)每一個(gè)模塊都曾有好幾個(gè)方案,在反復(fù)比較論證之后,才得出最佳方案并應(yīng)用于系統(tǒng)。在各個(gè)模塊的設(shè)計(jì)中,我除了得到了正確的結(jié)果之外,更多的是面對(duì)錯(cuò)誤和失敗,而這些錯(cuò)誤大多數(shù)是由于自己對(duì)該部分電路原理掌握的不夠透徹而造成的。通過(guò)查閱資料,連接、調(diào)試電路和程序,我得出了一下幾條心得體會(huì),以后在設(shè)計(jì)過(guò)程中可以借鑒: 在Proteus里,電路狀態(tài)不正常且不易發(fā)現(xiàn)問(wèn)題時(shí),使用電流計(jì)和電壓計(jì)可直觀檢測(cè)電路動(dòng)態(tài)變化,這也是Proteus里非常好用的一個(gè)功能;
附錄1: 仿真效果圖 PBC效果 三維效果圖 附錄2:
單片機(jī)源程序如下: - #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code tab1[]="A :";
- uchar code tab2[]="B";
- uchar code tab3[]=" GAME OVER "; //比賽結(jié)束時(shí)顯示
- uchar code tab4[]=" A B "; //比賽結(jié)束時(shí)顯示
- sbit lcden=P2^2;
- sbit lcdrw=P2^1; //1602液晶的3個(gè)端口
- sbit lcdrs=P2^0;
- sbit key1=P1^0;
- sbit key2=P1^1; //四個(gè)按鍵
- sbit key3=P1^2;
- sbit key4=P1^3;
- sbit Bell=P2^7; //蜂鳴器
- uint keyflag,flag; //標(biāo)志位
- uchar i,num,count;
- uchar sec,min,miao;
- uchar Ascore,Bscore; //兩隊(duì)得分
- /*******************液晶函數(shù)****************************/
- void delay(uint z) //液晶延時(shí)函數(shù)
- { uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void write_com(uchar com) //命令子函數(shù)
- { lcdrs=0; //接受指令
- P0=com; //給P0口送指令碼
- delay(5);
- lcden=1; //E變?yōu)楦唠娖?br />
- delay(5); //在此延遲期間,將指令送入
- lcden=0; //E變?yōu)榈碗娖�,高脈沖結(jié)束
- }
- void write_dat(uchar date) //數(shù)據(jù)子函數(shù)data
- {
- lcdrs=1; //接受數(shù)據(jù)
- P0=date; //給P0口送數(shù)據(jù)
- delay(5);
- lcden=1; //E變?yōu)楦唠娖?br />
- delay(5); //在此延遲期間,將數(shù)據(jù)送入
- lcden=0; //E變?yōu)榈碗娖�,高脈沖結(jié)束
- }
- void write_time(uchar add,uchar date) //寫(xiě)入時(shí)間函數(shù)
- {
- uchar shi,ge;
- shi=date/10;
- ge=date%10;
- write_com(0x80+add);
- write_dat(0x30+shi);
- write_dat(0x30+ge);
- }
- void write_miao(uchar add,uchar date) //寫(xiě)入24秒函數(shù)
- {
- uchar shi,ge;
- shi=date/10;
- ge=date%10;
- write_com(0x80+0x40+add);
- write_dat(0x30+shi);
- write_dat(0x30+ge);
- }
- void write_Ascore(uchar add,uchar date) //寫(xiě)入A隊(duì)得分函數(shù)
- {
- uchar bai,shi,ge;
- bai=date/100;
- shi=date/10%10;
- ge=date%10;
- write_com(0x80+add);
- write_dat(0x30+bai);
- write_dat(0x30+shi);
- write_dat(0x30+ge);
- }
- void write_Bscore(uchar add,uchar date) //寫(xiě)入B隊(duì)得分函數(shù)
- {
- uchar bai,shi,ge;
- bai=date/100;
- shi=date/10%10;
- ge=date%10;
- write_com(0x80+0x40+add);
- write_dat(0x30+bai);
- write_dat(0x30+shi);
- write_dat(0x30+ge);
- }
- void write_score(uchar add,uchar date) //比賽結(jié)束寫(xiě)入得分函數(shù)
- { uchar bai,shi,ge;
- bai=date/100;
- shi=date/10%10;
- ge=date%10;
- write_com(0x80+0x40+add);
- write_dat(0x30+bai);
- write_dat(0x30+shi);
- write_dat(0x30+ge);
- }
- void delay_Bell(uint z) //蜂鳴器延時(shí)函數(shù)
- {
- uint x,y; for(x=z;x>0;x--) for(y=255;y>0;y--);
- }
- void init() //初始化函數(shù)
- {
- Bell=1;
- keyflag=0;
- flag=0;
- min=12;
- sec=0;
- miao=25;
- Ascore=0;
- Bscore=0;
- lcdrw=0;
- lcden=0; //E的初始值為低電平,后面的程序給高電平從而滿(mǎn)足E為高脈沖
- write_com(0x38); //寫(xiě)入顯示模式指令
- write_com(0x0e); //顯示是否打開(kāi)以及光標(biāo)的設(shè)置
- write_com(0x06); //地址指針的加減和整屏是否移動(dòng)
- write_com(0x01); //清屏指令
- write_com(0x80+0x00); //顯示字符的初始位置
- for(num=0;num<16;num++)
- { write_dat(tab1[num]); }
- write_com(0x80+0x40); //起始地址為53,將字符調(diào)到了第二行
- for(num=0;num<2;num++)
- { write_dat(tab2[num]); }
- write_Ascore(2,Ascore);
- write_Bscore(2,Bscore);
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1; ET0=1;
- TR0=1; //開(kāi)定時(shí)器
- }
- void keyscan() //按鍵函數(shù)
- { if(key1==0)
- { delay(10);
- if(key1==0)
- { keyflag++; //鍵一按下,標(biāo)志位加一
- while(!key1);
- if(keyflag==1)
- { TR0=0; } //關(guān)中斷
- if(keyflag==2)
- { TR0=1; keyflag=0;
- }
- }
- }
- if(key2==0) //刷新24秒
- { delay(5);
- if(key2==0)
- { while(!key2);
- miao=25;
- }
- }
- if(key3==0)
- { delay(5);
- if(key3==0)
- { while(!key3);
- Ascore++; write_Ascore(2,Ascore);
- } //寫(xiě)入A隊(duì)得分
- }
- if(key4==0)
- { delay(5);
- if(key4==0)
- {
- while(!key4);
- Bscore++; write_Bscore(2,Bscore);
- } //寫(xiě)入B隊(duì)得分
- }
- }
- void main()
- {
- init();
- while(1)
- {
- keyscan();
- if(flag==0)
- {
- write_com(0x80+0x40+7); //寫(xiě)入第一節(jié) FIR
- write_dat('F');
- write_dat('I');
- write_dat('R');
- }
- if(flag==1)
- {
- write_com(0x80+0x40+7); //寫(xiě)入第二節(jié) SEC
- write_dat('S');
- write_dat('E');
- write_dat('C');
- }
-
- if(flag==2)
- {
- write_com(0x80+0x40+7); //寫(xiě)入第三節(jié) THR
- write_dat('T');
- write_dat('H');
- write_dat('R');
- }
- if(flag==3)
- {
- write_com(0x80+0x40+7); //寫(xiě)入第四節(jié) FOU
- write_dat('F');
- write_dat('O');
- write_dat('U');
- }
- if(flag==4) //比賽結(jié)束顯示”GAME OVER“和兩隊(duì)比分
- {
-
- TR0=0;
- write_com(0x80);
- for(i=0;i<16;i++)
- {
- write_dat(tab3[i]); //"GAME OVER"字符串?dāng)?shù)組
- }
- write_com(0x80+0x40); //起始地址為53,將字符調(diào)到了第二行
- for(i=0;i<16;i++)
- {
- write_dat(tab4[i]);
- }
-
- write_score(5,Ascore); //比賽結(jié)束寫(xiě)入兩隊(duì)比分
- write_score(11,Bscore);
- }
- if(miao>=4&&miao<=5) //若只剩5秒,蜂鳴器響1秒
- { Bell=0; delay_Bell(510);
- Bell=1; delay_Bell(510);
- }
- }
- }
- void timer0() interrupt 1 //定時(shí)器
- {
- TH0=(65536-50000)/256;
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
電子記分牌說(shuō)明書(shū).doc
(563.37 KB, 下載次數(shù): 21)
2018-4-9 20:00 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|