久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2955|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的籃球計(jì)分牌設(shè)計(jì)報(bào)告 附代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:462140 發(fā)表于 2019-3-3 15:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
實(shí)訓(xùn)題目:籃球計(jì)分牌
1  系統(tǒng)設(shè)計(jì)
1.1 設(shè)計(jì)要求
1.1.1 設(shè)計(jì)任務(wù)   
     (1) 按照題目要求獨(dú)立設(shè)計(jì)系統(tǒng)所需電路,并完成硬件電路的制作及調(diào)試。(40分)
    (2)結(jié)合硬件能夠正常計(jì)分(1,2,3)。(10分)
    (3)能夠正常顯示分值。(10分)
    (4)能夠正常修改工作模式(計(jì)分與24秒)。(10分)
    (5)能夠24秒的誤差不小于1秒。(15分)
    能夠兩隊(duì)球員犯規(guī)次數(shù)計(jì)數(shù)。
1.2 設(shè)計(jì)思路及設(shè)計(jì)框圖
1.2.1設(shè)計(jì)思路
       通過(guò)利用STC89C52RC芯片進(jìn)行設(shè)計(jì),7個(gè)按鍵實(shí)現(xiàn)對(duì)應(yīng)功能:
(1)P1^3通過(guò)控制點(diǎn)對(duì)應(yīng)切換1隊(duì)和2隊(duì)加分。
(2)P1^0、P1^1、P1^2分別對(duì)應(yīng)+1、+2、+3分。
(3)P1^4計(jì)分清零
(4)P1^5對(duì)應(yīng)24秒倒計(jì)時(shí)和計(jì)分的轉(zhuǎn)換。
(5)P1^7外接復(fù)位鍵,對(duì)應(yīng)復(fù)位功能。
外加復(fù)位鍵,按下則數(shù)碼管顯示回到比分計(jì)分顯示,并清零;24秒倒計(jì)時(shí)至5秒時(shí)led燈依次點(diǎn)亮,倒計(jì)時(shí)結(jié)束時(shí)全部點(diǎn)亮。倒數(shù)為0時(shí)蜂鳴器響,重新倒數(shù)時(shí)蜂鳴器關(guān)閉。切換加分后24s倒計(jì)時(shí)會(huì)自動(dòng)重新計(jì)時(shí)。24s倒計(jì)時(shí)需要用定時(shí)器中斷方式0實(shí)現(xiàn),采用工作方式一。并且每秒的時(shí)長(zhǎng)要有晶振電路控制。
  將12MHZ的石英晶體振蕩器和單片機(jī)對(duì)應(yīng)的引腳正確連接,將晶振產(chǎn)生的時(shí)鐘信號(hào)作為定時(shí)信號(hào)。籃球計(jì)分牌分為三個(gè)部分:開(kāi)關(guān)控制、數(shù)碼管顯示和警示電路。P主要在籃球比賽中用于記錄24秒犯規(guī)計(jì)時(shí)和顯示紅藍(lán)兩隊(duì)在比賽過(guò)程中的比分情況,本計(jì)時(shí)計(jì)分器有兩部分組成:一部分用來(lái)實(shí)現(xiàn)計(jì)時(shí)功能,其基本原理和定時(shí)鬧鐘相似;另一部分用來(lái)實(shí)現(xiàn)計(jì)分功能,其基本原理和計(jì)數(shù)器相似,只不過(guò)所要記錄和顯示的對(duì)象分別是按鍵按下的次數(shù)和掃描脈沖次數(shù)。
1.2.2總體設(shè)計(jì)框圖

2 各個(gè)模塊程序的設(shè)計(jì)
2.1 AT89S52芯片模塊
本次實(shí)驗(yàn)所用到的主要芯片,AT89S52是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4K bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),期間采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89S52單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。
2.2振蕩電路模塊
晶振模塊給電路提供一定頻率的穩(wěn)定的震蕩(脈沖)信號(hào)。
2.3數(shù)碼管顯示模塊
排阻保護(hù)電路使數(shù)碼管正常輸出相應(yīng)的數(shù)據(jù)信息。
2.4 LED電路
通過(guò)LED燈來(lái)指示隊(duì)伍、提示犯規(guī)、計(jì)時(shí)提示等功能。
2.5按鍵模塊
按鍵控制加分、切換、計(jì)時(shí)控制等。
2.6電源部分
為電路提供電源,使其工作。
2.7復(fù)位模塊
作用是將單片機(jī)復(fù)位,將單片機(jī)初始化。
3  調(diào)試過(guò)程
  3.1制作過(guò)程
n 設(shè)計(jì)電路原理圖;
n 上網(wǎng)查閱C51管腳及數(shù)碼管管腳資料;
n 把器件安在打好孔的萬(wàn)用板上,然后焊接;
n 焊接好后,接通5V電源,檢查電路是否顯示正常;
n 根據(jù)硬件寫出實(shí)現(xiàn)實(shí)訓(xùn)要求的對(duì)應(yīng)程序,并進(jìn)行調(diào)試,直到能全部正確實(shí)現(xiàn)要求的功能。
4 功能測(cè)試
4.1 測(cè)試儀器與設(shè)備
n 單片機(jī)程序下載線        1條
n 萬(wàn)用表                  1個(gè)
n PC機(jī)                  1臺(tái)
4.2 性能指標(biāo)測(cè)試
1、指標(biāo)測(cè)試:以實(shí)現(xiàn)兩隊(duì)比分的正確顯示,可以進(jìn)行24S正常倒計(jì)時(shí)并報(bào)警,能記兩隊(duì)的1分2分3分。
2、軟件調(diào)試還算順利,沒(méi)有太大的問(wèn)題。
3、第一次硬件調(diào)試時(shí),發(fā)現(xiàn)有一盞LED沒(méi)有亮,確定是LED燈壞了便從新焊上一個(gè)好的。
4、拆掉所有跳線后,被指出所有的按鍵連接錯(cuò)誤,這些按鍵內(nèi)部結(jié)構(gòu)是對(duì)腳線相連。于是重連按鍵。刪掉原理圖中不需要的元器件,直接按著原理圖焊接跳線。
4.3 誤差分析
   倒計(jì)時(shí)24s在倒計(jì)時(shí)方面時(shí)和現(xiàn)實(shí)的時(shí)間存在點(diǎn)小誤差,但是誤差很小可以忽略.感覺(jué)軟件方面沒(méi)有什么問(wèn)題,硬件上按鍵不是很靈敏,可能是線路接觸不良。數(shù)碼管驗(yàn)收出現(xiàn)小問(wèn)題,是管腳虛焊導(dǎo)致的。
5 實(shí)訓(xùn)心得體會(huì)
通過(guò)這次實(shí)訓(xùn),讓我學(xué)習(xí)了很多。這次實(shí)訓(xùn)應(yīng)該算是目前最難得一次實(shí)訓(xùn)吧。輔導(dǎo)老師給了基本的原理圖,然后經(jīng)過(guò)自己百度和同學(xué)幫助下完善了原理圖。然后自己根據(jù)原理圖焊了很久,最后焊完時(shí)讓同學(xué)幫我下載程序,結(jié)果程序下載不進(jìn)去,最后在學(xué)霸的幫助下解決了這個(gè)下問(wèn)題。驗(yàn)收的時(shí)候我看其他同學(xué)都有好多的功能,感覺(jué)自己的功能略少,心里一陣緊張。不過(guò)幸運(yùn)的是基本功能還是能實(shí)現(xiàn)的。就是驗(yàn)收的時(shí)候出現(xiàn)了一點(diǎn)小問(wèn)題,數(shù)碼管段選除了一些問(wèn)題,應(yīng)該是數(shù)碼管管腳虛焊,但是在宿舍前一晚還好,以后要是在做實(shí)訓(xùn)要加強(qiáng)焊接
總的來(lái)說(shuō)過(guò)程是最重要的,很開(kāi)心自己能夠完成這次實(shí)訓(xùn),在這過(guò)程中又讓我學(xué)很多知識(shí)。每次焊接雖然都要到晚上兩點(diǎn) ,雖然很累但是發(fā)現(xiàn)問(wèn)題解決問(wèn)題讓我信心滿滿,這次實(shí)訓(xùn)讓我明白了不要老想著靠別人自己動(dòng)手操作一根根的去找,按照原理圖一根去接會(huì)發(fā)現(xiàn)問(wèn)題出在哪里,以前只想出現(xiàn)問(wèn)題了去找大神幫忙,但是這次實(shí)訓(xùn)給了我很大的信心,雖然我每次實(shí)訓(xùn)都是一波三折,但是這也代表我不放棄所以以后做實(shí)訓(xùn)一定要自己査好資料,出現(xiàn)問(wèn)題了先自己解決,在回答問(wèn)題上我準(zhǔn)備的還是不夠充分,本來(lái)在前一天晚上看到了兩點(diǎn),一直再看原理圖,但是關(guān)于周期和程序問(wèn)題還是沒(méi)回答上,不過(guò)在動(dòng)手能力上又增強(qiáng)了很多信心!也謝謝兩位老師開(kāi)題的指導(dǎo),衷心謝謝老師。

附錄
附錄1:原理圖
附錄2:程序清單
#include<reg52.H>    //*****頭文件*****//
#define ucharunsigned char     //*定義變量*//
#define uint  unsigned int      //*定義uint為無(wú)符號(hào)整形變量*//
unsigned t =0x3cb0;
uchar CZ=24; //*計(jì)時(shí)初值*//
uchar key=0;
uchar score;
uchar mode=1;//*模式變量*//
uchar score1=0;    //*甲隊(duì)得分變量*//
ucharscore2=0;  //*乙隊(duì)得分變量*//  
ucharbittime=0,bitdisplay=0;   //*定義變量*//
uchar codetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //*段碼0,1,2,3,4,5,6,7,8,9*//
sbit J0=P1^0;      //*獨(dú)立按鍵 *//
sbit J1=P1^1;
sbit J2=P1^2;
sbit J3=P1^3;
sbit J4=P1^4;
sbit J5=P1^5;
sbit J6=P1^6;
sbit LED1 = P3^4;
sbit LED2 = P3^5;
sbit LED3 = P3^6;
sbit LED4 = P3^7;
sbit SPK=P1^7;
/********延時(shí)函數(shù)******/
void delay(ucharz)
{
       uchar x,y;
      for(x=z;x>0;x--)
             for(y=110;y>0;y--);
}
/* 服務(wù)程序*/
void timer0 (void)interrupt 1 using 0
{
       TH0=0x3c; //*50ms*//
       TL0=0xb0;
       bittime++; //每來(lái)一次中斷,中斷次數(shù)bittime自加1
       while(bittime==20)
      {
            bittime=0;  //每經(jīng)一秒調(diào)用一次顯示程序
            bitdisplay=1;
              if(bitdisplay)
              {
                     bitdisplay = 0;
                     CZ--;
                     if(-1 == CZ) CZ=24;  
              }
      }
}
/* 甲隊(duì)分?jǐn)?shù)顯示函數(shù)*/
voiddisplay_1(uint z)
{
       P2 = 0XFD; /*11111101甲隊(duì)個(gè)位分?jǐn)?shù)顯示*/
       P0 = tab[z%10];
       delay(10);
       P2 = 0XFE; /*11111110甲隊(duì)十位分?jǐn)?shù)顯示*/
       P0 = tab[z/10];
       delay(10);
}
/* 乙隊(duì)分?jǐn)?shù)顯示函數(shù)*/
voiddisplay_2(uint z)
{
       P2 = 0Xfb; /*11110111乙隊(duì)個(gè)位分?jǐn)?shù)顯示*/
       P0 = tab[z%10];
       delay(10);
       P2 = 0Xf7; /*11111011乙隊(duì)十位分?jǐn)?shù)顯示*/
       P0 = tab[z/10];
       delay(10);
}
/* 甲分?jǐn)?shù)處理函數(shù)*/
int inc1()
{
              
                     if(~J3)
                     {
                            delay(10);
                            score1=score1+1;
                     }while(~J3);
              
              if(~J4)
              {
                     delay(10);
                     score1= score1+2;
                     }while(~J4);
                     if(~J5)
                     {
                            delay(10);
                            score1=score1+3;
                     }while(~J5);
               
              returnscore1;
}
/* 乙分?jǐn)?shù)處理函數(shù)*/
int inc2()
{
                            if(~J3)
                     {
                            delay(10);
                            score2=score2+1;
                     }while(~J3);
              
              if(~J4)
              {
                     delay(10);
                     score2= score2+2;
                     }while(~J4);
                     if(~J5)
                     {
                            delay(10);
                            score2=score2+3;
                     }while(~J5);
               
              returnscore1;
}
/* 甲乙隊(duì)切加分換處理函數(shù)*/
uchar turn()
{
       if(~J2)
       {
              delay(10);
              if(~J2)
              {
                     delay(10);
                     LED1 = 1;
                     LED2 = 1;
                     LED3 = 0;
                     LED4 = 1;
                     key = 1;
              }while(~J2);
       }
       if(~J6)
       {
              delay(10);
              if(~J6)
              {
                     delay(10);
                     LED1 = 1;
                     LED2 = 1;
                     LED3 = 1;
                     LED4 = 0;
                     key = 2;
              }while(~J6);
       }
       return key;   
}
/* 加分顯示函數(shù)*/
void marks()
{
       turn();
              if(key== 1)
              {
                     inc1();
                     if(score1<100)
                     {
                            display_1(score1);
                            display_2(score2);
                     }     
                     else score1 =score1-100;               
              }
              elseif(key == 2)
              {
                     inc2();
                     if(score2<100)
                     {
                            display_1(score1);
                            display_2(score2);     
                     }
                     else score2 = score2-100;               
              }
}
/*模式選擇函數(shù)*/
ucharmode_select()
{
       if(~J0)
       {
              delay(10);
              if(~J0)
              {
                     delay(10);
                     mode = 1;
                     LED1 = 0;
                     LED2 = 1;
                     LED3 = 1;
                     LED4 = 1;
              }while(~J0);
       }
       if(~J1)
       {
              delay(10);
              if(~J1)
              {
                     delay(10);
                     mode = 2;
                     LED1 = 1;
                     LED2 = 0;
                     LED3 = 1;
                     LED4 = 1;
              }while(~J1);
       }
       return mode;
}
  
/*倒計(jì)時(shí)處理*/
void time_count()
{
       TR0 = 1;
       P2 = 0XFD; /*11111010甲乙十位顯示*/
       P0 = tab[CZ/10];
       delay(10);
       P2 = 0XFB; /*11110101甲乙個(gè)位顯示*/
       P0 = tab[CZ%10];
       delay(10);   
}
/* 主函數(shù)*/
int main()
{
       TMOD= 0x01;
       TH0=0x3c;
    TL0=0xb0;
       EA = 1; //cpu允許所有中斷
       ET0 =1;//定時(shí)器T0中斷允許
       TR0 = 0;//關(guān)閉定時(shí)器T0
       P2 = 0XF0;
       P0 = 0x3f;
       SPK=0;
       while(1)
       {   
              mode_select();
              if(1 == mode)          //加分功能
              {   
                     TR0 = 0;//關(guān)閉定時(shí)器
                     CZ = 24; //重新賦初值24秒
                     display_1(score1);
                     delay(10);
                     display_2(score2);
                     marks();
              }
              if(2== mode)       //計(jì)時(shí)功能
              {   
                     if(CZ == 0){TR0 = 0,SPK=1;delay(30);SPK =0;
                                                  foul_sever();
                                                   }
                     time_count();}   
        
       }
       return 0;
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-3-3 17:03 | 只看該作者
能回帖傳個(gè)word嗎 缺圖
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久国产成人午夜av影院武则天 | 国产精品日韩欧美一区二区三区 | 久久精品视频9 | 香蕉视频91 | 精品国产伦一区二区三区观看方式 | 浮生影院免费观看中文版 | 欧美h| 青青草这里只有精品 | 亚洲一区二区三区观看 | 国产一级一级 | 久久一区 | 日韩欧美在线观看 | 亚洲精品欧美 | 免费高清成人 | 免费一级片 | 国产一区精品 | 亚洲精品一区二 | 免费在线一区二区三区 | 99热在线免费 | 国产精品色 | 亚洲国产激情 | 日本一区二区高清不卡 | 免费一区二区三区 | 99精品国产一区二区三区 | 香蕉视频在线播放 | 中文在线a在线 | 91久久久久久久 | 国产精品久久99 | 欧美a级成人淫片免费看 | 欧美二区在线 | 成人妇女免费播放久久久 | 久久久精品一区 | 国产精品成人一区二区 | 午夜影院网站 | 国产成人jvid在线播放 | 国产免费一级一级 | 精品av| 国产免费拔擦拔擦8x高清 | 不卡一区二区三区四区 | 国产日韩精品在线 | 91久久精品国产91久久 |