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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13214|回復: 18
收起左側

單片機籃球比賽計時計分器程序、仿真、原理圖 程序流程圖 LCD1602顯示

  [復制鏈接]
ID:524923 發表于 2021-12-19 17:43 | 顯示全部樓層 |閱讀模式
計分系統:
(1)分為“A隊”和“B隊”的“3分”,“2分”,“1分”各六個按鍵輸入部分,以及兩隊比分的LED顯示部分。在每次增加分數的同時,“24秒”計時恢復為初始值,“12分鐘”計時暫停,等待比賽的繼續進行
計時系統:
(1)比賽開始/繼續:當“比賽開始/繼續”鍵按下后,“24s”和“12分鐘”計時器開始倒計時;
(2)手動24s復位:當“24s復位” 鍵按下后,“24s”倒計時恢復初始值,“12分鐘”倒計時暫停,等待比賽的繼續;
(3)比賽暫停:“比賽暫停”鍵按下后,“24s”倒計時和“12分鐘”倒計時均暫停,等待比賽的繼續進行;
(4)自動增加比賽節數:當“12分鐘”倒計時完成后,判斷當前節數是否為最后一節,若不是,則節數自動增加,并“12分鐘”和“24s”均恢復默認值,等待下一節比賽的進行。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif

仿真圖

仿真圖


程序例程圖:
按鍵控制部分流程圖.png 計時部分流程圖.png 主程序流程圖.png

主函數程序如下
  1. #include"KeyBord.h"
  2. #include"LCD1602.h"
  3. #include"Timer.h"

  4. sbit Beep = P1^5;

  5. char rule_time = 24;   //24S規則

  6. unsigned int A_Score = 0;       //A隊分數
  7. unsigned int B_Score = 0;       //B隊分數
  8. unsigned char match = 1;        //比賽節數
  9. unsigned char rule_flag = 0;    //記錄24S規則是否啟用
  10. unsigned char Beep_flag =0 ;    //判斷蜂鳴器是否報警
  11. unsigned char Start_flag = 0;   //開始標志位

  12. unsigned char Time_Data[4];    //數組用于存放處理的設定時間
  13. unsigned char Score[6];        //用于存儲處理的比賽分數
  14. unsigned char Temp[4];         //用于存儲處理的比賽節數和24S規則

  15. void Key_Control();

  16. void main()
  17. {  
  18.     Beep_flag = 1;            //蜂鳴器報警啟用
  19.         LCD_Init();
  20.     Timer0_Init();

  21.     while(1)
  22.     {
  23.         Key_Control();

  24.         Time_Data[0] = '0' + minute / 10;     //賽程時間 分 十位
  25.         Time_Data[1] = '0' + minute % 10;     //賽程時間 分 個位
  26.         Time_Data[2] = '0' + second / 10;     //賽程時間 秒 十位
  27.         Time_Data[3] = '0' + second % 10;     //賽程時間 秒 個位

  28.         Temp[0] = '0' + match / 10;           //賽程節數   十位
  29.         Temp[1] = '0' + match % 10;           //賽程節數   個位
  30.         Temp[2] = '0' + rule_time / 10;       //24秒倒計時 十位
  31.         Temp[3] = '0' + rule_time % 10;       //24秒倒計時 個位

  32.         Score[0] = '0' + A_Score / 100;         //A隊分數 百位
  33.         Score[1] = '0' + A_Score % 100 / 10;    //A隊分數 十位
  34.         Score[2] = '0' + A_Score % 100 % 10;    //A隊分數 個位
  35.         Score[3] = '0' + B_Score / 100;         //B隊分數 百位
  36.         Score[4] = '0' + B_Score % 100 / 10;    //B隊分數 十位
  37.         Score[5] = '0' + B_Score % 100 % 10;    //B隊分數 個位

  38.         LCD_Write_Str(1,0,"H.T");               //對應的位置顯示
  39.         LCD_Write_Char(5,0,Score[0]);
  40.         LCD_Write_Char(6,0,Score[1]);
  41.         LCD_Write_Char(7,0,Score[2]);
  42.         LCD_Write_Str(8,0,":");
  43.         LCD_Write_Char(9,0,Score[3]);
  44.         LCD_Write_Char(10,0,Score[4]);
  45.         LCD_Write_Char(11,0,Score[5]);
  46.         LCD_Write_Str(13,0,"R.T");

  47.         LCD_Write_Char(0,1,Time_Data[0]);
  48.         LCD_Write_Char(1,1,Time_Data[1]);
  49.         LCD_Write_Str(2,1,":");
  50.         LCD_Write_Char(3,1,Time_Data[2]);
  51.         LCD_Write_Char(4,1,Time_Data[3]);
  52.         LCD_Write_Str(6,1,"SEC-");
  53.         LCD_Write_Char(10,1,Temp[0]);
  54.         LCD_Write_Char(11,1,Temp[1]);
  55.         LCD_Write_Char(13,1,Temp[2]);
  56.         LCD_Write_Char(14,1,Temp[3]);

  57.         if(second < 0)
  58.         {
  59.             if(minute == 0)       //判斷某節點是否結束
  60.             {
  61.                 if(match < MATCH)      //判斷是否為最后一節比賽
  62.                 {
  63.                     //計時系統恢復為默認值,比賽節數加一
  64.                     match++;      
  65.                     minute = SET_TIME;
  66.                     rule_time = RULE_TIME;     
  67.                     second = 0;
  68.                 }
  69.                 else
  70.                 {
  71.                     second = 0;
  72.                 }
  73.                 TR0 = 0;     //停止時鐘,等待下一次比賽開始

  74.                 while(Beep_flag)
  75.                 {
  76.                     Key_Control();
  77.                     Beep = ~Beep;    //板子為無源蜂鳴器
  78.                     DelayUs2x(10);
  79.                 }
  80.   
  81.             }
  82.             else
  83.             {
  84.                 second = 59;
  85.                 minute--;
  86.             }
  87.         }
  88.         
  89.         if(rule_time < 0 && rule_flag)      //24秒結束,球未出手,計時器暫停,24秒復位
  90.         {
  91.             TR0 = 0;
  92.             rule_time = RULE_TIME;
  93.         }
  94.     }
  95. }

  96. /*========================================
  97. 函數名稱:Key_Control
  98. 函數功能:按鍵控制,每個按鍵對應功能
  99. =========================================*/
  100. void Key_Control()
  101. {
  102.         switch(KeyScan())
  103.         {
  104.                 case 0x77:            //比賽開始/繼續
  105.             TR0 = 1;             //定時器開關打開,開始計時
  106.             rule_flag = 1;      //24S規則啟用
  107.             Beep_flag = 1;      //蜂鳴器報警啟用
  108.             break;

  109.                 case 0xb7:            //比賽暫停
  110.             TR0 = 0;          //定時器開關打開,停止計時
  111.             break;

  112.                 case 0x7b:             //手動24S倒計時復位
  113.             if(TR0 == 1)
  114.             {
  115.                 rule_time = 0;      //24秒清零,等待下次球權
  116.                 rule_flag = 0;      //24秒功能停用

  117.             }
  118.             else
  119.             {
  120.                 rule_flag = 0;      ////24秒功能停用

  121.             }
  122.             break;

  123.                 case 0xbb:             //增加比賽節數,同時總計時器和24秒復位
  124.             if((match >= MATCH) && (minute == 0))     //判斷比賽結束是否超過四節以及此節比賽是否結束
  125.             {  
  126.                 TR0 = 0;                   //定時器停止
  127.                 match++;                   //賽程節數加一
  128.                 minute = 5;                //加時賽賽程時間設置 5分鐘
  129.                 second = 0;
  130.                 rule_time = RULE_TIME;     //24秒恢復初值
  131.                 rule_flag = 0;

  132.             }
  133.             break;

  134.                 case 0xdb:
  135.             Beep_flag = 0;      //關閉蜂鳴器
  136.             break;
  137.                                            //每隊加分后賽程停止計時,24秒恢復初值,等待比賽繼續開始
  138.                 case 0x7d:                         //A隊加3分
  139.             TR0 = 0;
  140.             A_Score += 3;                 
  141.             rule_time = RULE_TIME;
  142.             rule_flag = 0;
  143.             break;

  144.                 case 0xbd:                         //A隊加2分
  145.             TR0 = 0;
  146.             A_Score += 2;
  147.             rule_time = RULE_TIME;
  148.             rule_flag = 0;
  149.             break;   
  150.                                  
  151.                 case 0xdd:                         //A隊加1分
  152.             TR0 = 0;
  153.             A_Score += 1;
  154.             rule_time = RULE_TIME;
  155.             rule_flag = 0;
  156.             break;

  157.                 case 0x7e:                         //B隊加3分
  158.             TR0 = 0;
  159.             B_Score += 3;
  160.             rule_time = RULE_TIME;
  161.             rule_flag = 0;
  162.             break;

  163.                 case 0xbe:                         //B隊加2分
  164.             TR0 = 0;
  165.             B_Score += 2;
  166.             rule_time = RULE_TIME;
  167.             rule_flag = 0;
  168.             break;

  169.                 case 0xde:                         //B隊加1分
  170.             TR0 = 0;
  171.             B_Score += 1;
  172.             rule_time = RULE_TIME;
  173.             rule_flag = 0;
  174.             break;

  175.                 default:break;      
  176.         }
  177. }
復制代碼

Keil代碼與Proteus仿真下載: 籃球計時計分器.7z (479.77 KB, 下載次數: 276)

評分

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

查看全部評分

回復

使用道具 舉報

ID:1043798 發表于 2022-9-4 21:37 | 顯示全部樓層
為什么仿真啟動了,但是屏幕還是不顯示數字呀
2022-09-04 (1).png
回復

使用道具 舉報

ID:262 發表于 2022-9-4 22:19 | 顯示全部樓層
回樓上,需要用Proteus8.8來打開仿真工程,你看我的打開效果
51hei.png
回復

使用道具 舉報

ID:1043798 發表于 2022-9-5 10:23 | 顯示全部樓層
heicad 發表于 2022-9-4 22:19
回樓上,需要用Proteus8.8來打開仿真工程,你看我的打開效果

Proteus8.9可以嗎
回復

使用道具 舉報

ID:348664 發表于 2022-9-6 10:41 | 顯示全部樓層
heicad 發表于 2022-9-4 22:19
回樓上,需要用Proteus8.8來打開仿真工程,你看我的打開效果

我也是8.8的,但是遇到了不顯示同樣的問題
回復

使用道具 舉報

ID:348664 發表于 2022-9-6 10:51 | 顯示全部樓層
abc4 發表于 2022-9-5 10:23
Proteus8.9可以嗎

好了,我解決了,因為我也是剛開始看,估計有個編譯的東西,一直沒找到,然后發現左下角有個開始運行的開關
回復

使用道具 舉報

ID:1019424 發表于 2022-12-5 18:52 | 顯示全部樓層
為什么我下進了開發板內,沒法用?
回復

使用道具 舉報

ID:262 發表于 2022-12-5 21:40 | 顯示全部樓層
六六哥 發表于 2022-12-5 18:52
為什么我下進了開發板內,沒法用?

你的電路有問題吧,以仿真電路為準 改造你的單片機開發板,錯一根線都不行的....再就是每一個廠家的1602的延時可能不同 修改你的延時 慢慢調試
回復

使用道具 舉報

ID:1019424 發表于 2022-12-6 15:47 | 顯示全部樓層
heicad 發表于 2022-12-5 21:40
你的電路有問題吧,以仿真電路為準 改造你的單片機開發板,錯一根線都不行的....再就是每一個廠家的1602的 ...

里面有那個引腳接線圖,跟我開發板一樣,就是不好用,160什么也不顯示
回復

使用道具 舉報

ID:1019424 發表于 2022-12-6 16:19 | 顯示全部樓層
92A1A16B800FF14B0AA2990EB13B7FBA.jpg RDWX)WG0G$OK)$U6[S{_]0X.png 這是我的開發板實物跟原理圖,哪位大佬幫忙檢查一下。
回復

使用道具 舉報

ID:1019424 發表于 2022-12-6 16:20 | 顯示全部樓層
heicad 發表于 2022-12-5 21:40
你的電路有問題吧,以仿真電路為準 改造你的單片機開發板,錯一根線都不行的....再就是每一個廠家的1602的 ...

大佬教一下,該怎么搞
回復

使用道具 舉報

ID:262 發表于 2022-12-6 16:22 | 顯示全部樓層
仿真通過基本可以排除是軟件問題
既然你確定你的接線和延時沒有問題 那就只有一個可能:硬件壞掉了 用替換法 逐個排除掉
開發板不適合初學者做板載例程以外的其他項目,因為線太多容易搞錯,器件相互串擾,影響 還未入門的初學者難以察覺..  你用最小系統重做一個吧,我還是懷疑你電路接線和樓主不同,因為從概率上來說,遇到一模一樣電路的可能性微乎其微,一般運氣沒這么好到爆棚的
回復

使用道具 舉報

ID:1056078 發表于 2022-12-6 17:24 | 顯示全部樓層
為什么我下進51中,顯示有問題
回復

使用道具 舉報

ID:1076156 發表于 2023-5-8 21:17 | 顯示全部樓層
hiccup 發表于 2022-9-6 10:41
我也是8.8的,但是遇到了不顯示同樣的問題

我的也不顯示,可以教我一下嗎
回復

使用道具 舉報

ID:1097248 發表于 2023-11-10 15:16 | 顯示全部樓層
為什么用protues8.9版本,蜂鳴器不響?有大佬可以解釋一下嗎?
回復

使用道具 舉報

ID:1101896 發表于 2023-12-3 11:57 | 顯示全部樓層
為什么我用8.0點進去就閃退啊
回復

使用道具 舉報

ID:1104747 發表于 2023-12-24 21:21 | 顯示全部樓層
我的也顯示不了,8.9的是不是不行丫
回復

使用道具 舉報

ID:1107170 發表于 2023-12-30 16:07 來自觸屏版 | 顯示全部樓層
為什么代碼一樣,但第一行就報錯了,sbit Beep=P1^5,P1未定義
回復

使用道具 舉報

ID:1124247 發表于 2024-6-8 15:17 來自觸屏版 | 顯示全部樓層
hiccup 發表于 2022-9-6 10:51
好了,我解決了,因為我也是剛開始看,估計有個編譯的東西,一直沒找到,然后發現左下角有個開始運行的開 ...

怎么整得,我也是能運行不顯示
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费毛片网站 | 国产日韩欧美中文字幕 | 国产做a爱片久久毛片 | 91看片在线观看 | 国产精品av久久久久久久久久 | 欧美99久久精品乱码影视 | 日韩在线h | 日本一区二区高清不卡 | 久久午夜国产精品www忘忧草 | 午夜影院毛片 | 色婷婷精品国产一区二区三区 | 亚洲精彩免费视频 | 亚洲精品久久久久久国产精华液 | 91精品国产乱码久久久久久久 | 精国产品一区二区三区四季综 | 国产精品99久久久久久www | 国产欧美日韩视频 | 中文字幕日韩专区 | 国产精品久久久久久久久久免费看 | 凹凸日日摸日日碰夜夜 | 日日干夜夜干 | www久久| 欧美日韩精品一区二区天天拍 | a免费观看| 亚洲精品视频一区 | 91精品国产综合久久久亚洲 | 日韩在线播放一区 | 在线精品观看 | 精品一区二区三区在线观看国产 | 91在线免费观看网站 | 九色网址| 超碰导航 | 日韩高清一区二区 | 在线观看免费观看在线91 | 日韩在线播放av | 国产成人综合在线 | 国产成人精品免费 | 久久精品久久久久久 | 欧美一区视频 | 久久成人精品一区二区三区 | 91在线电影 |