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

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

QQ登錄

只需一步,快速開始

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

51單片機(jī)籃球計(jì)分器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:205021 發(fā)表于 2017-5-26 10:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  • /******************************************************************
  • ***************************籃球計(jì)時(shí)計(jì)分系統(tǒng)************************
  • *************************本系統(tǒng)滿足以下幾點(diǎn)要求********************
  • *1、能設(shè)置整個(gè)賽程的比賽時(shí)間,在比賽過(guò)程中能根據(jù)需要暫停和開始計(jì)時(shí)*
  • *2、能根據(jù)比賽情況刷新比賽雙方的比分*******************************
  • *3、中場(chǎng)交換比賽場(chǎng)地時(shí),能交換A、B兩隊(duì)比分的位置*******************
  • *4、比賽結(jié)束時(shí),能發(fā)出報(bào)警聲***************************************
  • ******************************************************************/
  • #include<reg52.h>
  • #include<intrins.h>
  • #define uchar                 unsigned char
  • #define uint                 unsigned int
  • uchar code HC595_ScanDATE[]=                //定義數(shù)碼管位數(shù)組
  • {
  •         0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
  • };
  • unsigned char code LED_DATE [] =                //定義數(shù)碼管段數(shù)組
  • {
  •         0XC0,        // 0
  •         0XF9,        // 1
  •         0XA4,        // 2
  •         0XB0,        // 3
  •         0X99,        // 4
  •         0X92,        // 5
  •         0X82,        // 6
  •         0XF8,        // 7
  •         0X80,        // 8
  •         0X90        // 9
  • };
  • sbit DS                =P2^0;                        //74HC595各I/O口定義
  • sbit SHCP        =P2^1;
  • sbit STCP        =P2^2;
  • sbit S2                =P3^2;                           //賽前設(shè)定比賽時(shí)間按鍵
  • sbit S3                =P1^0;                        //加1分按鍵
  • sbit S4                =P1^1;                         //加2分按鍵
  • sbit S5                =P1^2;                          //減1分按鍵
  • sbit S6                =P1^3;                        //半場(chǎng)換分按鍵
  • sbit S7                =P1^4;                          //停止蜂鳴器按鍵
  • sbit S8                =P1^5;                         //開始按鍵
  • sbit S9                =P1^6;                           //暫停/繼續(xù)按鍵
  • sbit S10        =P1^7;                          //加分減分隊(duì)伍選擇按鍵
  • sbit LED2        =P3^5;        //A隊(duì)指示燈
  • sbit LED3        =P3^6;        //B隊(duì)指示燈
  • sbit BUZZ        =P3^7;
  • bit Flag_Score=0;                //加分減分隊(duì)伍選擇標(biāo)志位
  • void Display();
  • void HC595(uchar a);
  • void Delay_MS(uint ms);
  • void KEY();
  • void Init();
  • uint time=1200;                //初始時(shí)間20分鐘
  • uchar A_Score=0;                //A隊(duì)得分
  • uchar B_Score=0;                //B隊(duì)得分
  • uchar Time_bit=0;        //用于定時(shí)器溢出標(biāo)志
  • void main()
  • {
  •         Init();
  •         while(1)
  •                 {
  •                         Display();
  •                         KEY();
  •                 }
  • }
  • void Init()                                         //初始化函數(shù)
  • {
  •         LED2=0;
  •         TMOD=0x01;                                //定時(shí)器0 第一種工作方式
  •         TH0=(65536-50000)/256;        //裝初值,定時(shí)50ms
  •         TL0=(65536-50000)%256;
  •         EA=1;                                        //開總中斷
  •         ET0=1;                                        //打開定時(shí)器0
  • }
  • void Timer() interrupt 1           //定時(shí)器函數(shù),時(shí)間處理
  • {
  •         Time_bit++;
  •         if(Time_bit==20)                        //溢出20次,定時(shí)1秒
  •                 {
  •                         Time_bit=0;
  •                         if(time==0)                //當(dāng)比賽結(jié)束時(shí),停止計(jì)時(shí),并發(fā)出警報(bào)
  •                                 {
  •                                         BUZZ=0;
  •                                         //time=0;
  •                                         TR0=0;
  •                                 }
  •                         else
  •                                 time--;
  •                 }
  •         TH0=(65536-50000)/256;        //重裝初值,定時(shí)50ms
  •         TL0=(65536-50000)%256;
  • }
  • void KEY()
  • {
  •         uchar Transposition_Scores=0;                //半場(chǎng)換分使用的緩存數(shù)據(jù)變量
  •         if(S2==0)        //比賽時(shí)間設(shè)定,按一次加5分鐘
  •                 {
  •                         Delay_MS(1000);
  •                         if(S2==0)
  •                                 {
  •                                         while(!S2);
  •                                         if(TR0==0)        //判斷是否開始,以免已經(jīng)開始有誤按
  •                                                 {
  •                                                         time=time+300;
  •                                                         if(time>2700)                //如果時(shí)間超過(guò)45分鐘,重新賦值20分鐘
  •                                                                 time=1200;
  •                                                 }
  •                                 }
  •                 }
  •         if(S3==0)        //加1分按鍵
  •                 {
  •                         Delay_MS(1000);
  •                         if(S3==0)
  •                                 {
  •                                         if(TR0==1)                //判斷是否開始,以免還未開始有誤按
  •                                                 {
  •                                                         while(!S3);
  •                                                         if(Flag_Score==0)
  •                                                                         A_Score++;
  •                                                         else
  •                                                                         B_Score++;
  •                                                 }
  •                                 }
  •                 }
  •         if(S4==0)        //加2分按鍵
  •                 {
  •                         if(TR0==1)                //判斷是否開始,以免還未開始有誤按
  •                                 {
  •                                         Delay_MS(1000);
  •                                         if(S4==0)
  •                                                 {
  •                                                         while(!S4);
  •                                                         if(Flag_Score==0)
  •                                                                         A_Score=A_Score+2;
  •                                                         else
  •                                                                         B_Score=B_Score+2;
  •                                                 }
  •                                 }
  •                 }
  •         if(S5==0)        //減1分按鍵
  •                 {
  •                         if(TR0==1)                //判斷是否開始,以免還未開始有誤按
  •                                 {
  •                                         Delay_MS(1000);
  •                                         if(S5==0)
  •                                                 {
  •                                                         while(!S5);
  •                                                         if(Flag_Score==0)
  •                                                                 {
  •                                                                         if(A_Score==0)                //防止分?jǐn)?shù)是0時(shí)亂碼
  •                                                                                 A_Score=0;
  •                                                                         else
  •                                                                                 A_Score--;
  •                                                                 }
  •                                                         else
  •                                                                 {
  •                                                                         if(B_Score==0)                //防止分?jǐn)?shù)是0時(shí)亂碼
  •                                                                                 B_Score=0;
  •                                                                         else
  •                                                                                 B_Score--;
  •                                                                 }
  •                                                 }
  •                                 }
  •                 }
  •         if(S6==0)        //半場(chǎng)換分
  •                 {
  •                         Delay_MS(1000);
  •                         if(S6==0)
  •                                 {
  •                                         while(!S6);
  •                                         Transposition_Scores=A_Score;        //A隊(duì)的得分先賦給緩存變量
  •                                         A_Score=B_Score;                                //將B隊(duì)的得分賦給A隊(duì)
  •                                         B_Score=Transposition_Scores;        //再把緩存變量的值(也就是原先A隊(duì)的得分)賦給B隊(duì)
  •                                 }
  •                 }
  •         if(S7==0)        //停蜂鳴器
  •                 {
  •                         Delay_MS(1000);
  •                         if(S7==0)
  •                                 {
  •                                         while(!S7);
  •                                         BUZZ=1;
  •                                 }
  •                 }
  •         if(S8==0)        //開始
  •                 {
  •                         Delay_MS(1000);
  •                         if(S8==0)
  •                                 {
  •                                         while(!S8);
  •                                         if(time==0)
  •                                                 time=1200;        //一輪比賽結(jié)束后重新給時(shí)間賦值
  •                                         TR0=1;                        //定時(shí)器開始工作
  •                                 }
  •                 }
  •         if(S9==0)        //暫停繼續(xù)
  •                 {
  •                         Delay_MS(1000);
  •                         if(S9==0)
  •                                 {
  •                                         while(!S9);
  •                                         TR0=~TR0;                        //定時(shí)器暫停/繼續(xù)工作
  •                                 }
  •                 }
  •         if(S10==0)        //切換加分減分隊(duì)伍
  •                 {
  •                         Delay_MS(1000);
  •                         if(S10==0)
  •                                 {
  •                                         while(!S10);
  •                                         Flag_Score=~Flag_Score;
  •                                         if(Flag_Score==0)
  •                                                 {
  •                                                         LED2=0;
  •                                                         LED3=1;
  •                                                 }
  •                                         else
  •                                                 {
  •                                                         LED2=1;
  •                                                         LED3=0;
  •                                                 }
  •                                 }
  •                 }
  • }
  • void Display()        //顯示函數(shù)
  • {
  •         P0=LED_DATE[time/1000];                //得出時(shí)間千位
  •         HC595(HC595_ScanDATE[0]);
  •         Delay_MS(500);
  •         P0=0xff;                                //消隱
  •         P0=LED_DATE[time%1000/100];        //得出時(shí)間百位
  •         HC595(HC595_ScanDATE[1]);
  •         Delay_MS(500);
  •         P0=0xff;                                //消隱
  •         P0=LED_DATE[time%100/10];                //得出時(shí)間十位
  •         HC595(HC595_ScanDATE[2]);
  •         Delay_MS(500);
  •         P0=0xff;                                //消隱
  •         P0=LED_DATE[time%10];                        //得出時(shí)間最個(gè)位
  •         HC595(HC595_ScanDATE[3]);
  •         Delay_MS(500);
  •         P0=0xff;                                //消隱
  •         P0=LED_DATE[A_Score/10];                //得出A隊(duì)得分十位
  •         HC595(HC595_ScanDATE[4]);
  •         Delay_MS(500);
  •         P0=0xff;                                //消隱
  •         P0=LED_DATE[A_Score%10];                //得出A隊(duì)得分個(gè)位
  •         HC595(HC595_ScanDATE[5]);
  •         Delay_MS(500);
  •         P0=0xff;                                //消隱
  •         P0=LED_DATE[B_Score/10];                //得出B隊(duì)得分十位
  •         HC595(HC595_ScanDATE[6]);

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

使用道具 舉報(bào)

沙發(fā)
ID:429157 發(fā)表于 2018-11-27 21:03 | 只看該作者
樓主能私發(fā)給我嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区av | 国产丝袜一区二区三区免费视频 | 国产在线一区二区三区 | 国产精品视频久久久 | 亚洲v日韩v综合v精品v | 天天草天天操 | 日韩精品免费视频 | 久久婷婷香蕉热狠狠综合 | 不卡在线视频 | 中文字幕亚洲视频 | 最新黄色毛片 | 久久久精品影院 | 成人自拍视频网站 | 天堂久久av | 日韩一区二区三区视频 | 亚洲精品乱码 | 国产一区在线免费 | 国产激情一区二区三区 | 日韩一区二区三区精品 | 91精品国产91久久久久久吃药 | 一区二区精品在线 | 国产久 | 亚洲视频在线免费观看 | 欧美福利视频一区 | 亚洲激情在线视频 | 怡红院怡春院一级毛片 | 国产精品中文字幕在线 | 九九热精品在线视频 | 久久一区| 免费一级片 | 欧美精品在线免费 | 欧美视频免费在线 | 日韩激情在线 | 国产成人精品久久二区二区91 | 黄色大片免费网站 | a网站在线观看 | 亚洲精品一二三区 | 91毛片在线观看 | 九九久久久| 午夜国产一级 | 中文字幕 国产 |