wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 51022|回復: 27
打印 上一主題 下一主題
收起左側

基于51單片機籃球計時計分器的設計(附源碼)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:444537 發表于 2018-12-11 23:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
摘    要
籃球計時計分器是一種應用非常廣泛比賽計時工具,對現代社會越來越重要。此籃球計時計分器在硬件方面主要采用STC89C51RC單片機作為主控核心,由獨立按鍵、共陽數碼管顯示屏顯示。STC89C51RC單片機是由STC公司推出的,功耗小,電壓可選用4~6V電壓供電;所有程序編寫完成后,在Keil軟件中進行調試,確定沒有問題后,燒寫到單片機上進行測試。
此設計主要由獨立按鍵采集數據到單片機進行處理再通過數碼管顯示出來,本論文主要研究了數碼管及獨立按鍵,對硬件連接方案進行了詳盡的介紹,在軟件方面算法也進行了論述。
目錄
前  言
第一章  工作原理
1.1設計目標
1.1.1基本功能
第二章  硬件設計與原理
2.1 總設計框圖
2.2 硬件設計分析
2.2.1 電源的設計
2.2.2 單片機最小系統
2.2.3 顯示系統
2.2.4 按鍵調整電路
2.2.5 蜂鳴器電路
第三章  軟件設計與分析
3.1 軟件設計的組成
3.2 源程序
第四章  軟件仿真
4.1 PROTEUS簡介
4.2仿真圖
4.3原理圖
4.4 元件清單
4.5 硬件結果圖
總結
致  謝
參考文獻
前  言

最近幾年來,隨著科技的飛速發展,單片機領域正在不斷的走向社會各個角落,還帶動傳統控制檢測日新月異更新。在實時運作和自動控制的單片機應用到系統中,單片機如今是作為一個核心部件來使用,僅掌握單片機方面知識是不夠的,還應根據其具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善。“單片機原理及應用課程設計”是電子類專業的學科基礎科,它是繼“匯編語言程序設計”,“接口技術”等課程之后開出的實踐環節課程。









第一章  工作原理1.1設計目標1.1.1基本功能
  • 51單片機+按鍵+蜂鳴器+數碼管
  • 數碼管:2個4位一體共陽數碼管
  • 具有12分鐘倒計時功能,精確到秒,能夠暫停
  • 最后10秒,聲音和指示燈報警功能
  • 能記錄兩隊分數,并且能夠加減功能
  • 半場比賽結束能夠交換兩隊比分
  • 具有時間暫停功能,可以快進或者快退時間
  • 51單片機型號:STC89C51RC、AT89C51單片機任選一個
  • C語言編程





第二章  硬件設計與原理

以STC89C51RC單片機為核心,起著控制作用。系統包括數碼管顯示電路、復位電路、時鐘電路、按鍵調整電路和蜂鳴器電路。設計思路分為六個模塊:復位電路、晶振電路模、STC89C51RC、數碼管顯示電路、按鍵調整電路和蜂鳴器電路這六個模塊。

2.1 總設計框圖

2.2 硬件設計分析2.2.1 電源的設計

系統電源使用外接直流5伏。

USB是通用串行總線(Universal Serial Bus)接口的簡稱。它是目前使用比較廣泛的電腦接口之一,主要版本有1.0、1.1和最新的2.0三種版本。根據USB總線的工業標準,它可以提供額定功率為5V/500mA的電源供USB設備使用。

2.2.2 單片機最小系統

51單片機是對目前所有兼容intel 8031指令系統的單片機的統稱。該系列單片機的始祖是intel的8031單片機,后來隨著技術的發展,成為目前廣泛應用的8為單片機之一。單片機是在一塊芯片內集成了CPU、RAM、ROM、定時器/計數器和多功能I/O口等計算機所需要的基本功能部件的大規模集成電路,又稱為MCU。51系列單片機內包含以下幾個部件:

一個8位CPU;一個片內振蕩器及時鐘電路;

4KB的ROM程序存儲器;

一個128B的RAM數據存儲器;

尋址64KB外部數據存儲器和64KB外部程序存儲空間的控制電路;

32條可編程的I/O口線;

兩個16位定時/計數器;

一個可編程全雙工串行口;

5個中斷源、兩個優先級嵌套中斷結構。

如圖2-2-1所示為STC89C51RC單片機基本構造,其基本性能介紹如下:

圖2-2-1 STC89C51RC單片機

STC89C51RC本身內含40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中端口,3個16位可編程定時計數器,2個全雙工串行通信口,STC89C51RC可以按照常規方法進行編程,但不可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發成本。

STC89C51RC的主要特性如下表所示:

兼容MCS—51指令系統
32個可編程I/O線
4k字節可編程閃爍存儲器
可編程UARL通道
三個16位可編程定時/計數器中斷
時鐘頻率0-24MHz
2個外部中斷源,共8個中斷源
256×8bit內部RAM
2個讀寫中斷口線
可直接驅動LED
軟件設置睡眠和喚醒功能
低功耗空閑和掉電模式
表2-2-1 STC89C51RC主要功能描述

STC89C51RC為40腳雙列直插封裝的8位通用微處理器,采用工業標準的C51內核,在內部功能及管腳排布上與通用的89c51相同,其主要用于會聚調整時的功能控制。功能包括對會聚主IC內部寄存器、數據RAM及外部接口等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19腳)和XTAL2(18腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9腳)為復位輸入端口,外接電阻電容組成的復位電路。VCC(40腳)和VSS(20腳)為供電端口,分別接+5V電源的正負端。P0~P3 為可編程通用I/O腳,其功能用途由軟件定義,在本設計中,P0端口(32~39腳)被定義為N1功能控制端口,分別與N1的相應功能管腳相連接,13腳定義為IR輸入端,10腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12腳、27腳及28腳定義為握手信號功能端口,連接主板CPU的相應功能端,用于當前制式的檢測及會聚調整狀態進入的控制功能。

P0口:P0口是一組8位漏極開路型雙向I/O 口,也即地址/數據總線復用口。作為輸出口用時,每位能吸收電流的方式驅動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高阻抗輸入端用。在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活內部上拉電阻。在Flash 編程時,P0口接收指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。

P1口:P1是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數器2 的外部計數輸入(P1.0/T2)和輸入(P1.1/T2EX)。Flash編程和程序校驗期間,P1接收低8位地址。

P2口:P2是一個帶有內部上拉電阻的8 位雙向I/O口,P2的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口P2寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數據存儲器(例如執行MOVX @DPTR指令)時,P2口送出高8位地址數據。在訪問8位地址的外部數據存儲器(如執行MOVX @RI指令)時,P2口輸出P2鎖存器的內容。Flash編程或校驗時,P2亦接收高位地址和一些控制信號。

P3口:P3口是一組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能P3口還接收一些用于Flash 閃速存儲器編程和程序校驗的控制信號。

RST:復位輸入。當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。

ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個AL脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條 MOVX 和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執行外部程序時,應設置ALE禁止位無效。

PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當STC89C51RC由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。在此期間,當訪問外部數據存儲器,將跳過兩次PSEN信號。

EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H—FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態。如EA端為高電平(接Vcc端),CPU則執行內部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。

XTAL1:振蕩器反相放大器的及內部時鐘發生器的輸入端。

XTAL2:振蕩器反相放大器的輸出端。

單片機最小原理圖如圖2-2-2所示。

圖2-2-2 單片機最小系統
單片機最小系統說明:

時鐘信號的產生:在MCS-51芯片內部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。而在芯片的外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調電容,從而構成一個穩定的自激振蕩器,這就是單片機的時鐘振蕩電路。

時鐘電路產生的振蕩脈沖經過觸發器進行二分頻之后,才成為單片機的時鐘脈沖信號。

一般地,電容C2和C3取30pF左右,晶體的振蕩頻率范圍是1.2-12MHz。如果晶體振蕩頻率高,則系統的時鐘頻率也高,單片機的運行速度也就快。

單片機復位使CPU和系統中的其他功能部件都處在一個確定的初始狀態下,并從這個狀態開始工作。單片機復位條件:必須使9腳加上持續兩個機器周期(即24個振蕩周期)的高電平。

2.2.3 顯示系統

圖2-2-3 數碼管顯示電路

2.2.4 按鍵調整電路
圖2-2-4 按鍵調整電路
2.2.5 蜂鳴器電路
圖2-2-5 蜂鳴器電路

第三章  軟件設計與分析3.1 軟件設計的組成

該系統由延時子函數、蜂鳴器子函數、初始化子函數、調節比賽時間數碼管顯示子函數、比賽開始數碼管顯示子函數、甲隊得分數碼管顯示子函數、乙隊得分數碼管顯示子函數、按鍵掃描子函數、定時器0中斷子函數、主函數和數據定義這幾部分組成。

圖3-1-1 主程序流程圖

圖3-1-2 倒計時程序流程圖


第四章  軟件仿真4.1 PROTEUS

Proteus ISIS是英國Labcenter公司開發的電路分析與實物仿真軟件。它運行于Windows操作系統上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:

(1)現了單片機仿真和SPICE電路仿真相結合。具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真、RS232動態仿真、I2C調試器、SPI調試器、鍵盤和LCD系統仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發生器等。

(2)支持主流單片機系統的仿真。目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。

(3)提供軟件調試功能。在硬件仿真系統中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態,因此在該軟件仿真系統中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環境,如Keil C51 uVision2等軟件。

(4)具有強大的原理圖繪制功能。

可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設計開發環境。

在PROTEUS繪制好原理圖后,調入已編譯好的目標代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實物運行狀態和過程。 PROTEUS 是單片機課堂教學的先進助手。

PROTEUS不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。

它的元器件、連接線路等卻和傳統的單片機實驗硬件高度對應。這在相當程度上替代了傳統的單片機實驗教學的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調試、運行結果等。

課程設計是學生走向就業的重要實踐環節。由于PROTEUS提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數量、質量上難以相比的虛擬儀器、儀表,因而也提供了培養學生實踐精神、創造精神的平臺。         

4.2仿真
4.3原理圖
4.4 元件清單

4.5 硬件結果圖
總結

經過近三個月的努力,終于順利完成了設計。剛開始,我們頭緒不是很清楚,不知道從哪里入手,但通過老師的耐心指導并和同學認真研究設計課題,跑圖書館查資料、確定基本設計方案、對所用芯片功能進行查找、調試、上機仿真等,經歷了一次次的困難,卻積累了很多寶貴的經驗。在整個設計的過程中遇到的問題主要有以下三點,第一:基礎知識掌握的不牢固,主要表現在一些常用的電路的形式和功能不清楚,對書本上的內容理解不夠透徹。第二:對一些常用的應用軟件缺少應用,體現在畫電路圖和系統的仿真的時候,對這些軟件的操作不熟練,浪費了很多時間。第三:相關知識掌握的不夠全面,缺少系統設計的經驗。

這次設計進一步端了我的學習態度,學會了實事求是,嚴謹的作風,對自己要嚴格要求,不能夠一知半解,要力求明明白白。急于求成是不好的,我有所感受。如果省略了那些必要的步驟,急于求成,不僅會浪費時間,還會適得其反。我覺得動手之前,頭腦里必須清楚該怎么做,這一點是很重要的。就目前來說,我的動手能力雖然差一點,但我想,通過我的不懈努力,在這方面,我總會得到提高。這一點,我堅信。因為別人能做到的,我也一定能做到。

在此次的設計中我最大的體會就是進一步認識到了理論聯系實踐的重要性。一份耕耘,一份收獲。通過這段時間的設計,讓我明白科學的思維方法和學習方法是多么重要,只有這樣才能夠有很高的效率,才能夠讓自己的工作更完美。總而言之,此次設計讓我學到了好多平時在課堂上學不到的東西,增加了我的知識運用能力,增強我的實際操作能力。謝謝老師給我們提供這么好的機會,為我們之后走向社會奠定了一個好的基礎。

本次設計讓我學到了很多,也學會到了要怎么樣去面對困難,不要對知識一知半截,要有的求實的能力,通過老師的幫助我學到了很多在平時的沒有注意到的動東西及知識,更美沒有深入的的去理解,通過這次我要更加的明確自己。更要注重自己在各方面的鍛煉能力,把握機會。這次的設計非常的感謝老師們。


單片機源程序如下:




  1. #include<reg51.h>
  2. typedef unsigned char uchar;
  3. typedef unsigned int  uint;
  4. uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. //對應數碼管顯示數字0-9
  6. int m=1,n=0,x=0,y=0,i=0,h=0,k;
  7. //定義全局變量并初始化,m,n表示分鐘與秒,x,y表示甲乙兩隊分數
  8. sbit P1_0=P1^0;
  9. sbit P1_1=P1^1;
  10. sbit P1_2=P1^2;
  11. sbit P1_3=P1^3;
  12. sbit P1_4=P1^4;
  13. sbit P1_5=P1^5;
  14. sbit P1_6=P1^6;
  15. sbit P1_7=P1^7;
  16. sbit P3_0=P3^0;
  17. sbit P3_1=P3^1;
  18. sbit P3_2=P3^2;
  19. sbit P3_3=P3^3;
  20. sbit P3_6=P3^6;
  21. sbit P3_7=P3^7;
  22. void delay(uint x)//定義延時程序,通過設置參數x,改變延時時間長度
  23. {
  24.               while(x--)
  25.               {
  26.                             uint y;
  27.                             for(y=0;y<200;y++);
  28.               }
  29. }
  30. void display(int i,int j,int x,int y)//顯示子程序 變量i,j分別是分秒,變量x,y是甲乙兩隊的分數
  31. {                           
  32.               P2=~0xfe;                                                  
  33.               //數碼管刷新顯示時間的分鐘十位,調用延時程序
  34.               P0=~seg[i%100/10];
  35.               delay(1);                                                                      //延時數碼管點亮
  36.               P2=0x00;
  37.               P0=0xff;
  38.             
  39.               P2=~0xfd;                                                                      //同上,刷新數碼管的分鐘位的個位
  40.               P0=~seg[i%10];
  41.               delay(1);
  42.               P2=0x00;
  43.               P0=0xff;
  44.             
  45.               P2=~0xfb;                                                                      //同上。刷新數碼管秒位的十位
  46.               P0=~seg[j%100/10];
  47.               delay(1);
  48.               P2=0x00;
  49.               P0=0xff;
  50.             
  51.               P2=~0xf7;                                                                      //同上,刷新數碼管秒位的個位
  52.               P0=~seg[j%10];
  53.               delay(1);
  54.               P2=0x00;
  55.               P0=0xff;
  56.             
  57.               P2=~0xef;                                                                      //同上。刷新數碼管甲隊分數的十位
  58.               P0=~seg[x%100/10];
  59.               delay(1);
  60.               P2=0x00;
  61.               P0=0xff;
  62.             
  63.               P2=~0xdf;                                                                      //同上。刷新數碼管甲隊分數的個位
  64.               P0=~seg[x%10];
  65.               delay(1);
  66.               P2=0x00;
  67.               P0=0xff;
  68.             
  69.               P2=~0xbf;                                                                      //同上。刷新數碼管乙隊分數的十位
  70.               P0=~seg[y%100/10];
  71.               delay(1);
  72.               P2=0x00;
  73.               P0=0xff;
  74.             
  75.               P2=~0x7f;                                                                      //同上。刷新數碼管乙隊分數的個位
  76.               P0=~seg[y%10];
  77.               delay(1);
  78.               P2=0x00;
  79.               P0=0xff;
  80. }
  81. void t0() interrupt 1 //定義中斷程序,調用定時器TO
  82. {
  83.               TH0=0xb1;                                                           //對定時器T0送入初值,THO=0xb1
  84.               TL0=0x10;                                                                      //TL0=0X10 故定時器定時為20毫秒,
  85.               if(n==0)                                                                      //即每20毫秒調用一次
  86.               {
  87.                             n=60;
  88.                             m--;
  89.               }
  90.               i++;
  91.               if(i==50)                                          //定義i的值為50,即50*20毫秒=1秒
  92.               {
  93.                             n--;
  94.                             i=0;
  95.               }
  96.               display(m,n,x,y);//調用數碼管顯示程序,即每20毫秒刷
  97. }
  98. void jiafen()                                                                                                                //定義加分程序
  99. {
  100.               if(P1_1==0)//當按下P1_1的時候
  101.               {
  102.                             delay(1);//延時去抖
  103.                             while(P1_1==0);
  104.                             x++;//甲隊加一分
  105.               }                 
  106.               if(P1_2==0)//當按下P1_2的時候
  107.               {
  108.                             delay(1);
  109.                             while(P1_2==0);
  110.                             x+=2;//甲隊加兩分
  111.               }
  112.               if(P1_3==0)              //當按下P1_3的時候
  113.               {
  114.                             delay(1);
  115.                             while(P1_3==0);                                         
  116.                             x+=3;//甲隊加三分
  117.               }            
  118.               if(P1_4==0)              //當按下P1_4的時候
  119.               {
  120.                             delay(1);                                                            //延時去抖
  121.                             while(P1_4==0);
  122.                             y++;                                                                                      //乙隊加一分
  123.               }            
  124.               if(P1_5==0)              //當按下P1_5的時候
  125.               {
  126.                             delay(1);
  127.                             while(P1_5==0);
  128.                             y+=2;                //乙隊加兩分
  129.               }               
  130.               if(P1_6==0)              //當按下P1_6的時候
  131.               {
  132.                             delay(1);
  133.                             while(P1_6==0);
  134.                             y+=3;  //乙隊加三分
  135.               }
  136. }
  137. void jianfen()                                                                                                  //定義減分程序
  138. {
  139.               if(P3_0==0&&x>0)              //當按下P3_0并且甲隊分數大于0的時候
  140.               {
  141.                             delay(1);                                                                      //延時去抖
  142.                             while(P3_0==0);
  143.                             x--;                                                                         //甲隊減1分
  144.               }            
  145.               if(P3_1==0&&x>0)              //當按下P3_1并且乙隊分數大于0的時候
  146.               {
  147.                             delay(1);
  148.                             while(P3_1==0);
  149.                             y--;                                                                         //乙隊減1分
  150.               }
  151. }
  152. void tiaoshi()                                                                                                  //定義調時程序
  153. {
  154.               if(P3_2==0)                                                                                    //當按下P3_2的時候
  155.               {
  156.                             delay(1);                                                                      //延時去抖
  157.                             if(P3_2==0)
  158.                             {
  159.                                           n++;                                                                      //秒位加1
  160.                                           if(n==60)//當秒位到60的時候
  161.                                           {
  162.                                                         m++;//分位加1,并且秒位變1
  163.                                                         n=1;
  164.                                           }
  165.                             }
  166.               }
  167.               if(P3_3==0)                                                                                    //當按下P3_3的時候
  168.               {
  169.                             delay(1);            
  170.                             if(P3_3==0)
  171.                             {
  172.                                           n--;//秒位減一
  173.                                           if(n==0)                       
  174.                                                                       //當秒位減到0的時候,分位減一,并且秒位變59
  175.                                           {
  176.                                                         m--;            
  177.                                                         n=59;
  178.                                           }
  179.                             }
  180.               }
  181. }
  182. void jiaohuan()                                                                                      //定義比分交換程序
  183. {
  184.               int t;                                                                                                    //定義中間變量t
  185.               if(P1_7==0)                                                                                      //當P1_7按下的時候
  186.               {
  187.                             delay(1);                                                                        //延時去抖
  188.                             while(P1_7==0);
  189.                             t=x;                                                                      //利用中間變量t,將甲乙兩隊比分交換
  190.                             x=y;
  191.                             y=t;
  192.                             display(m,n,x,y);                                          //刷新數碼管
  193.               }
  194. }
  195. void zanting()                                                                                                  //定義暫停程序
  196. {
  197.               if(P1_0==0)                                                                                                                //當P1_0按下的時候
  198.               {
  199.                             delay(1);                                                                                      //延時去抖
  200.                             while(P1_0==0);
  201.                             EA=0;                                                                                                    //關中斷,進入死循環
  202.                             while(1)
  203.                             {
  204.                                           display(m,n,x,y);
  205.                                           if(P1_0==0)                            //當P1_0再次按下的時候,跳出死循環
  206.                                           {            
  207.                                                         delay(1);
  208.                                                         while(P1_0==0)
  209.                                                         EA=1;
  210.                                                         break;            
  211.                                           }
  212.                             }
  213.               }
  214. }
  215. void baojing()                                                                                    //定義報警程序
  216. {
  217.               if((m==0)&&(n<=10)&&(n>1))              //判斷當倒計時只剩下10秒的時候
  218.               {
  219.                             P3_7=1;                                                      
  220.                             //使P3_7和P3_6同時間隔輸出高低電平,點亮發光二極管和使蜂鳴器蜂鳴
  221.                             P3_6=1;
  222.                             delay(20);
  223.                             P3_7=0;
  224.                             P3_6=0;
  225.                             delay(20);
  226.               }
  227. }
  228. void jieshu()                                                                                    //定義結束子程序
  229. {
  230.               M:              if(h==1)                                         
  231.                             //當時間條件滿足時,關閉中斷,使數碼管保持狀態顯示
  232.                             {
  233.                                           EA=0;
  234.                                           delay(20);
  235.             m=0;
  236.                                 n=0;
  237.                                 P3_6=1;
  238.                                 P3_7=1;
  239.                                 delay(200);
  240.                                           P3_7=0;
  241.                                           P3_6=0;
  242.                                 while(1)
  243.                                 {
  244.                                                         display(m,n,x,y);
  245.                                                           jiafen();
  246.                                                           jianfen();
  247.                                                           jiaohuan();
  248.                                                           if(P1_0==0)                                          //當P1_0再次按下的時候,跳出循環
  249.                                               {                    
  250.                                                                       delay(1);
  251.                                                                       while(P1_0==0)
  252.                                                                       {
  253.                                                                                     EA=1;
  254.                                                                                     m=10;    //重新賦予時間初始值開始下半場比賽
  255.                                                                                     n=0;
  256.                                                                                     h=0;
  257.                                                                                     goto M ;
  258.                                                                       }                           
  259.                                                         }
  260.                                           }
  261.                             }
  262. }
  263. void main()                                                                                                                //定義主程序
  264. {
  265.               TMOD=0x01;                                                                                                  //初始化程序
  266.               EA=1;                                                      
  267.               ET0=1;
  268.               P3_7=0;
  269.               P0=0xff;
  270.               P2=0x00;
  271.               if(P1_0==0)                            //第一次按下P1_0,單片機啟動,并顯示初始值
  272.               {                                                                                                    //由于調用了一次暫停功能,會顯示初始值
  273.                             TH0=0xb1;
  274.                             TL0=0x10;
  275.                             TR0=1;                                                                                                                //啟動定時器
  276.                             P3=0xff;            
  277.                             P1=0x7f;
  278.                             P3_7=0;
  279.                             P1_7=1;
  280.                             while(1)
  281.                             {
  282.                                           jiafen();                                       //加分子程序
  283.                                           jianfen();                                   //減分子程序
  284.                                           tiaoshi();                                              //調時子程序
  285.                                           jiaohuan();                                   //比分交換子程序
  286.                                           zanting();                                             //暫停子程序
  287.                                           baojing();                                             //報警子程序
  288.                                           if((m==0)&&(n==1))                 //判斷結束子程序的調用條件
  289.                                           {
  290.                                                         h=1;
  291.                                           }
  292.                                           jieshu();                                                //結束子程序
  293.                             }
  294.               }
  295. }
復制代碼

以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便保存):

基于51單片機籃球計時計分器的設計.doc (808.29 KB, 下載次數: 475)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏18 分享淘帖 頂8 踩
回復

使用道具 舉報

沙發
ID:402548 發表于 2019-5-26 16:18 | 只看該作者
自己做的一個較新版的

1558857682028.docx

80.79 KB, 下載次數: 224, 下載積分: 黑幣 -5

回復

使用道具 舉報

板凳
ID:548996 發表于 2019-5-28 09:03 | 只看該作者
Jorge 發表于 2019-5-26 16:18
自己做的一個較新版的

可以可以
回復

使用道具 舉報

地板
ID:562183 發表于 2019-6-13 22:07 | 只看該作者
樓主,這個源程序STC8A8K64S4A12單片機能用嗎?
回復

使用道具 舉報

5#
ID:564270 發表于 2019-6-17 10:36 | 只看該作者
大佬大佬
回復

使用道具 舉報

6#
ID:570840 發表于 2019-6-24 15:40 來自觸屏版 | 只看該作者
樓主,有仿真軟件嗎
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
8#
無效樓層,該帖已經被刪除
9#
無效樓層,該帖已經被刪除
10#
ID:602563 發表于 2019-8-22 09:02 | 只看該作者
你好樓主 你發的籃球計分器的帖子為什么我的51用不了啊哥  你有連線的視頻么  可以給大家發一下么
回復

使用道具 舉報

11#
ID:602563 發表于 2019-8-22 10:10 | 只看該作者
樓主  請問這個代碼我要自己連線的話怎么辦啊 我有板子需要自己連線
回復

使用道具 舉報

12#
無效樓層,該帖已經被刪除
13#
ID:553625 發表于 2019-8-24 22:25 | 只看該作者
你這個仿真用的8051哇
回復

使用道具 舉報

14#
ID:612469 發表于 2019-9-17 11:15 | 只看該作者
可以看看

籃球計時器 (1).zip

77.02 KB, 下載次數: 120, 下載積分: 黑幣 -5

回復

使用道具 舉報

15#
ID:562892 發表于 2019-9-17 22:46 | 只看該作者

大哥    89c51可以用嗎   有沒有連線圖  仿真程序  以及說明書   有的話我明天就夠分了
回復

使用道具 舉報

16#
ID:626287 發表于 2019-10-18 19:55 | 只看該作者
牛人!!這個時間和比分能用不同顏色的數碼管來顯示就好了!!
回復

使用道具 舉報

17#
無效樓層,該帖已經被刪除
18#
ID:626287 發表于 2019-10-20 00:14 | 只看該作者
Jorge 發表于 2019-5-26 16:18
自己做的一個較新版的

這個沒有電路圖呀!!還有比分顯示能不能用六位數碼管啊???
回復

使用道具 舉報

19#
ID:626287 發表于 2019-10-20 00:15 | 只看該作者

有六位比分顯示的嗎???
回復

使用道具 舉報

20#
無效樓層,該帖已經被刪除
21#
無效樓層,該帖已經被刪除
22#
無效樓層,該帖已經被刪除
23#
無效樓層,該帖已經被刪除
24#
ID:659974 發表于 2019-12-9 19:53 | 只看該作者
咋樣更改為80c51啊
回復

使用道具 舉報

25#
無效樓層,該帖已經被刪除
26#
無效樓層,該帖已經被刪除
27#
無效樓層,該帖已經被刪除
28#
ID:677047 發表于 2019-12-30 14:13 | 只看該作者
能發一份給我嗎?
回復

使用道具 舉報

29#
無效樓層,該帖已經被刪除
30#
ID:731677 發表于 2020-4-17 21:17 | 只看該作者
我怎么用開發板運行之后  只有末位數碼管有顯示啊
回復

使用道具 舉報

31#
無效樓層,該帖已經被刪除
32#
無效樓層,該帖已經被刪除
33#
ID:741054 發表于 2020-4-29 16:52 | 只看該作者
這個原理圖還有嗎?可以發給我嗎
回復

使用道具 舉報

34#
ID:739870 發表于 2020-5-1 17:45 | 只看該作者
非常感謝大佬,
回復

使用道具 舉報

35#
無效樓層,該帖已經被刪除
36#
ID:768039 發表于 2020-6-3 07:03 | 只看該作者
謝謝大佬
回復

使用道具 舉報

37#
ID:541403 發表于 2020-6-23 11:55 | 只看該作者
很強很強
回復

使用道具 舉報

38#
無效樓層,該帖已經被刪除
39#
無效樓層,該帖已經被刪除
40#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日本怡春院一区二区| 日日天天久久| 精品国产一二三区| 久久精品视频18| h片在线观看视频免费| 日本黄色一区二区| 成熟妇人a片免费看网站| 性欧美ⅴideo另类hd| 欧美在线免费播放| 国产熟妇久久777777| 四虎4545www国产精品| 亚洲黄色成人网| 国产一级片网址| 美女主播精品视频一二三四| 欧美精品在线免费| 一级特黄录像免费看| 亚洲va在线| 成人性教育视频在线观看| 亚洲国产成人在人网站天堂| 久久成人免费电影| 一区二区三区偷拍| 少妇高潮露脸国语对白| 亚洲天堂av老司机| 黄色aaaaaa| 看黄在线观看| 日韩av在线天堂网| 91精品国产乱码久久久张津瑜| 九九精品在线| 日本欧美中文字幕| 日本久久国产| 大胆亚洲人体视频| 国产一二三在线视频| 青青青免费视频在线2| 麻豆成人在线| 日本精品一区| 女同互忝互慰dv毛片观看| 亚洲欧美日韩一区| 岛国大片在线免费观看| 成人黄色免费短视频| 亚洲天堂av网| 中文字幕男人天堂| 亚洲精品一二| 欧美日韩无遮挡| 美女露隐私免费网站| 亚洲一区二区三区视频在线| 182在线视频| 成人豆花视频| 久久久久久12| 最好2018中文免费视频| 夫妻av一区二区| 日韩欧美一区三区| 少女频道在线观看免费播放电视剧| 日韩精品最新网址| 久久国产黄色片| 亚洲人metart人体| 国产亚洲福利社区| 成年人羞羞的网站| 亚洲一二三专区| 不卡一区二区在线观看| 香蕉成人app| 国产999精品| 超碰91在线| 国产精品区一区二区三区| 午夜诱惑痒痒网| 国语自产精品视频在线看抢先版结局| 日韩亚洲成人av在线| 午夜精品一区二区三| 日韩电影在线免费观看| 91手机视频在线| 成人18在线| 日韩美一区二区三区| 国产一区二区99| 亚洲午夜久久久久久尤物| 日本一区二区在线视频| 无圣光视频在线观看| 在线电影院国产精品| 全部毛片永久免费看| 精品成人在线| 亚洲综合第一| 午夜视频成人| 日韩精品在线免费观看视频| 国产女无套免费视频| 麻豆精品久久久| 妺妺窝人体色www看人体| 爽爽影院免费观看视频| 久久精品一区四区| 国产精品嫩草69影院| 玖玖玖视频精品| 国产精品男女猛烈高潮激情| xvideos入口| 午夜精品国产更新| 污软件在线观看| 91tv官网精品成人亚洲| 日韩性感在线| 3p视频在线观看| 亚洲欧美中文日韩v在线观看| 午夜精品久久久久久久爽 | 丝瓜app色版网站观看| 一区二区三区成人| 国产激情无码一区二区三区| 亚洲电影影音先锋| 亚洲精美视频| а√天堂在线官网| 色妞一区二区三区| www四虎com| 国产精品久久久久影院亚瑟| xxxx日本黄色| 日韩一区二区在线| 午夜精品区一区二区三| 免费的黄网站在线观看| 午夜激情影院在线观看| 一级日韩一级欧美| av片哪里在线观看| 蜜桃av噜噜一区二区三区小说| 精品99一区二区三区| 亚洲视频在线二区| 中文字幕精品视频在线观看| 国产三区四区在线观看| 一区二区三区国产盗摄| 日韩西西人体444www| 一区二区欧美日韩| 91青青草视频| 在线视频91p| 日韩成人免费看| 精品一区精品二区| 日韩av三级在线| 人妻少妇精品无码专区久久| 欧美少妇精品| 91麻豆成人久久精品二区三区| 99色在线播放| 欧美日韩亚洲精品内裤| 午夜精品久久久久久久蜜桃| 国产成人啪免费观看软件| 老司机av网站| 欧美色蜜桃97| 在线视频不卡一区二区| 国产丝袜视频在线播放| 91精品国产色综合| 加勒比一区二区三区| 日韩免费视频一区二区| 无码精品在线观看| 成人欧美一区二区三区黑人麻豆| 丝袜美腿小色网| 久久婷婷一区| 日本高清一区二区视频| 久久99国产成人小视频| 亚洲啪啪av| 综合久久2023| 成人黄色在线播放| 国产黄色在线| 欧美另类极品videosbest最新版本| 嫩草影院在线观看未满十八| 欧美日韩精品一区二区三区四区| 麻豆av免费观看| 久久精品免费一区二区三区| 国产精品av免费观看| 欧美一区二区三区久久综合| 黄色片免费观看| 久久婷婷激情| 粉嫩aⅴ一区二区三区四区| 国产 porn| 黄色网一区二区| 日本欧美色综合网站免费| 免费电影视频在线看| 欧美怡红院视频一区二区三区 | 成人免费在线| 欧美亚洲在线观看| 精品一二三四| 中日韩午夜理伦电影免费| 天堂在线观看| 制服视频三区第一页精品| 天堂在线视频观看| 亚洲一区二区三区视频在线播放 | 一片黄亚洲嫩模| 国产又大又粗又爽| 91天堂素人约啪| 欧美手机在线观看| 精品影视av免费| 国产又爽又黄无码无遮挡在线观看| 亚洲天堂激情| 一道本在线免费视频| 热久久天天拍国产| 国产免费黄色av| 欧美精品密入口播放| 中文字幕第50页| 高清久久精品| 日韩视频在线观看国产| 高清欧美日韩| 欧美不卡在线一区二区三区| 成人性生交大片免费网站 | 九色porny丨精品自拍视频| 色综合久久中文综合久久牛| www.激情五月.com| 亚洲一区二区三区国产| 国产精品毛片一区视频播 | 久久久精品三级| 国产一区二区观看| 国产av人人夜夜澡人人爽麻豆| 国产福利资源一区| 欧美一级特黄aaaaaa在线看片| 日韩在线成人| 国产精品12p| 999久久精品| 久久久久久久久久久久久国产| 香蕉成人app| 在线观看污视频| 国产精品网站在线看| 无码毛片aaa在线| 国产精品zjzjzj在线观看| 成年人三级视频| 国产精品白丝av嫩草影院| 黄色三级中文字幕| 日韩高清一级| 国产精品国产亚洲精品看不卡| 国产成人ay| 成人午夜视频免费在线观看| 久久理论电影| 色一情一区二区三区| 国产免费不卡| 欧美日韩一区二区三区在线观看免| 不卡亚洲精品| 亚洲一区二区精品在线观看| 96sao在线精品免费视频| 青草网在线观看| 国产欧美日韩免费观看| 熟女少妇精品一区二区| 91tv精品福利国产在线观看| 亚洲综合中文网| 老司机精品久久| 少妇视频在线播放| 成人性色生活片| 国产免费观看av| 中文字幕一区二区三区色视频| 91九色蝌蚪91por成人| 图片区小说区区亚洲影院| 亚洲欧洲成人在线| 宅男噜噜噜66一区二区66| 天堂资源最新版在线视频观看免费网| 日韩久久精品电影| 午夜爽爽视频| 91av中文字幕| 3d玉蒲团在线观看| 好吊妞www.84com只有这里才有精品| 日韩精品免费观看视频| 免费看av软件| 精品大片一区二区| 亚洲国产欧美91| 日本大胆欧美人术艺术动态| 日韩va亚洲va欧美va清高| 国产欧美一区二区精品婷婷| 国产美女自慰在线观看| 欧洲精品视频在线观看| 一个人看的日本免费视频 | 污视频在线看操| 国产精品入口免费视| 竹内纱里奈兽皇系列在线观看| 性欧美.com| 久久成人av| 三级黄色片免费看| 九九久久精品视频| 国产无码精品在线播放| 亚洲精品高清在线| 免费永久视频| 亚洲精品视频网上网址在线观看| 天堂在线看视频| 国产精品成人久久久久| 高清不卡av| 国产av熟女一区二区三区| 欧美fxxxxxx另类| 香蕉视频久久久| 久久久久久久综合日本| 精品人妻一区二区三区浪潮在线| 欧美精品免费视频| 91久久精品国产性色| 欧日韩不卡在线视频| 色偷偷偷在线视频播放| 日本一二三区视频在线| 日韩国产一区二区| 午夜一区二区三区免费| 97se狠狠狠综合亚洲狠狠| av 一区二区三区| 日韩一卡二卡三卡国产欧美| 伦理电影国产精品| 国产免费一区视频观看免费| 日韩免费在线电影| 色婷婷综合久久久久中文字幕| 美女91精品| 国产成人亚洲精品自产在线 | 亚洲一级片网站| 久久精品国产精品青草| 日本黄色三级网站| 麻豆成人av在线| 香蕉污视频在线观看| 欧美在线色视频| 又黄又爽毛片免费观看| 国产成人精品优优av| 日本h片久久| 成人在线看视频| 日本vs亚洲vs韩国一区三区| 免费看毛片网站| 欧美日韩精品欧美日韩精品一 | 久久久综合九色合综国产精品| 国产黄色免费大片| 亚洲国产成人精品久久久国产成人一区 | 天堂v在线观看| 亚洲精品一区二区网址| 成人亚洲性情网站www在线观看| 美乳视频一区二区| 成人在线国产| 日韩av片在线| 亚洲美女视频在线观看| 99re6在线视频精品免费| 久久久久久免费精品| 欧美特黄aaaaaaaa大片| 色诱视频在线观看| 国产一区二区视频在线播放| 99精品在线看| 亚洲女人初尝黑人巨大| 国产区在线观看| 狠狠精品干练久久久无码中文字幕| 亚洲美女一区| 91丝袜一区二区三区| 欧美一区二区三区四区五区| 欧美新色视频| 亚洲精品在线视频观看| 欧美日本二区| 亚欧洲精品在线视频| 欧美午夜电影网| 丁香花高清电影在线观看完整版| 国产精品毛片va一区二区三区| 欧美精品一区二区久久| 日本免费网站视频| 欧美日韩午夜激情| 美女av网站| 久久精品ww人人做人人爽| 久久久久国产| 久久精品女人毛片国产| 欧美日韩和欧美的一区二区| 亚洲日本va中文字幕久久| 欧美日韩精品中文字幕一区二区| 亚洲色图国产| 日韩av在线播| 日韩一区二区三区四区| 国产永久免费高清在线观看 | 国产国产国产国产国产国产| 岛国视频一区免费观看| 四季av一区二区凹凸精品| 欧美日韩人妻精品一区二区三区| 欧美亚洲国产一区二区三区 | 亚洲乱码中文字幕综合| 俺去啦俺在线观看| 亚洲xxxxx| 99精品综合| 久草国产精品视频| 精品精品国产高清a毛片牛牛| 麻豆免费在线视频| 欧美日韩精品在线一区二区| 国产成人免费在线视频| 四虎成人精品在永久在线观看 | 性xxxx搡xxxxx搡欧美| 欧美乱大交xxxxx另类电影| 精品视频一区二区三区四区五区| 色哟哟免费视频| 亚洲欧美日韩国产另类专区| 完整版免费av片| 国产免费一区二区三区| 午夜久久福利| 艳妇乳肉豪妇荡乳av无码福利| 亚洲精品中文字幕女同| 欧美亚洲日本精品| 日韩欧美一区二区三区四区五区 | 99se婷婷在线视频观看| 五月婷婷六月综合| 日韩精品一区二区亚洲av| 亚洲精品久久视频| 国产美女高潮在线观看| 国产女同无遮挡互慰高潮91| 欧美国产成人在线| 天天色天天色| 久久亚洲高清| 久久久青草婷婷精品综合日韩| www.国产免费| 欧美精品videofree1080p| 日韩一区二区三区在线看| 九一在线免费观看| 在线观看日韩毛片| 中文字幕在线观看日本| 免费在线观看毛片网站| 久久精品一区八戒影视| 草莓视频app18在线视频| 国产一区在线观| 亚洲经典视频在线观看| 99国产成人精品| 欧美激情视频网址| 日韩av网站在线免费观看| 国产一级淫片免费| 亚洲色图17p| 亚洲综合伊人| 久久久久麻豆v国产| 日韩一级高清毛片|