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

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

QQ登錄

只需一步,快速開始

搜索
查看: 12895|回復(fù): 18
收起左側(cè)

單片機(jī)籃球比賽計(jì)時(shí)計(jì)分器程序、仿真、原理圖 程序流程圖 LCD1602顯示

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

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

仿真圖

仿真圖


程序例程圖:
按鍵控制部分流程圖.png 計(jì)時(shí)部分流程圖.png 主程序流程圖.png

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

  4. sbit Beep = P1^5;

  5. char rule_time = 24;   //24S規(guī)則

  6. unsigned int A_Score = 0;       //A隊(duì)分?jǐn)?shù)
  7. unsigned int B_Score = 0;       //B隊(duì)分?jǐn)?shù)
  8. unsigned char match = 1;        //比賽節(jié)數(shù)
  9. unsigned char rule_flag = 0;    //記錄24S規(guī)則是否啟用
  10. unsigned char Beep_flag =0 ;    //判斷蜂鳴器是否報(bào)警
  11. unsigned char Start_flag = 0;   //開始標(biāo)志位

  12. unsigned char Time_Data[4];    //數(shù)組用于存放處理的設(shè)定時(shí)間
  13. unsigned char Score[6];        //用于存儲(chǔ)處理的比賽分?jǐn)?shù)
  14. unsigned char Temp[4];         //用于存儲(chǔ)處理的比賽節(jié)數(shù)和24S規(guī)則

  15. void Key_Control();

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

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

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

  28.         Temp[0] = '0' + match / 10;           //賽程節(jié)數(shù)   十位
  29.         Temp[1] = '0' + match % 10;           //賽程節(jié)數(shù)   個(gè)位
  30.         Temp[2] = '0' + rule_time / 10;       //24秒倒計(jì)時(shí) 十位
  31.         Temp[3] = '0' + rule_time % 10;       //24秒倒計(jì)時(shí) 個(gè)位

  32.         Score[0] = '0' + A_Score / 100;         //A隊(duì)分?jǐn)?shù) 百位
  33.         Score[1] = '0' + A_Score % 100 / 10;    //A隊(duì)分?jǐn)?shù) 十位
  34.         Score[2] = '0' + A_Score % 100 % 10;    //A隊(duì)分?jǐn)?shù) 個(gè)位
  35.         Score[3] = '0' + B_Score / 100;         //B隊(duì)分?jǐn)?shù) 百位
  36.         Score[4] = '0' + B_Score % 100 / 10;    //B隊(duì)分?jǐn)?shù) 十位
  37.         Score[5] = '0' + B_Score % 100 % 10;    //B隊(duì)分?jǐn)?shù) 個(gè)位

  38.         LCD_Write_Str(1,0,"H.T");               //對(duì)應(yīng)的位置顯示
  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)       //判斷某節(jié)點(diǎn)是否結(jié)束
  60.             {
  61.                 if(match < MATCH)      //判斷是否為最后一節(jié)比賽
  62.                 {
  63.                     //計(jì)時(shí)系統(tǒng)恢復(fù)為默認(rèn)值,比賽節(jié)數(shù)加一
  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;     //停止時(shí)鐘,等待下一次比賽開始

  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秒結(jié)束,球未出手,計(jì)時(shí)器暫停,24秒復(fù)位
  90.         {
  91.             TR0 = 0;
  92.             rule_time = RULE_TIME;
  93.         }
  94.     }
  95. }

  96. /*========================================
  97. 函數(shù)名稱:Key_Control
  98. 函數(shù)功能:按鍵控制,每個(gè)按鍵對(duì)應(yīng)功能
  99. =========================================*/
  100. void Key_Control()
  101. {
  102.         switch(KeyScan())
  103.         {
  104.                 case 0x77:            //比賽開始/繼續(xù)
  105.             TR0 = 1;             //定時(shí)器開關(guān)打開,開始計(jì)時(shí)
  106.             rule_flag = 1;      //24S規(guī)則啟用
  107.             Beep_flag = 1;      //蜂鳴器報(bào)警啟用
  108.             break;

  109.                 case 0xb7:            //比賽暫停
  110.             TR0 = 0;          //定時(shí)器開關(guān)打開,停止計(jì)時(shí)
  111.             break;

  112.                 case 0x7b:             //手動(dòng)24S倒計(jì)時(shí)復(fù)位
  113.             if(TR0 == 1)
  114.             {
  115.                 rule_time = 0;      //24秒清零,等待下次球權(quán)
  116.                 rule_flag = 0;      //24秒功能停用

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

  121.             }
  122.             break;

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

  132.             }
  133.             break;

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

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

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

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

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

  175.                 default:break;      
  176.         }
  177. }
復(fù)制代碼

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

Proteus8.9可以嗎
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

ID:348664 發(fā)表于 2022-9-6 10:51 | 顯示全部樓層

好了,我解決了,因?yàn)槲乙彩莿傞_始看,估計(jì)有個(gè)編譯的東西,一直沒找到,然后發(fā)現(xiàn)左下角有個(gè)開始運(yùn)行的開關(guān)
回復(fù)

使用道具 舉報(bào)

ID:1019424 發(fā)表于 2022-12-5 18:52 | 顯示全部樓層
為什么我下進(jìn)了開發(fā)板內(nèi),沒法用?
回復(fù)

使用道具 舉報(bào)

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

你的電路有問題吧,以仿真電路為準(zhǔn) 改造你的單片機(jī)開發(fā)板,錯(cuò)一根線都不行的....再就是每一個(gè)廠家的1602的延時(shí)可能不同 修改你的延時(shí) 慢慢調(diào)試
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

大佬教一下,該怎么搞
回復(fù)

使用道具 舉報(bào)

ID:262 發(fā)表于 2022-12-6 16:22 | 顯示全部樓層
仿真通過基本可以排除是軟件問題
既然你確定你的接線和延時(shí)沒有問題 那就只有一個(gè)可能:硬件壞掉了 用替換法 逐個(gè)排除掉
開發(fā)板不適合初學(xué)者做板載例程以外的其他項(xiàng)目,因?yàn)榫太多容易搞錯(cuò),器件相互串?dāng)_,影響 還未入門的初學(xué)者難以察覺..  你用最小系統(tǒng)重做一個(gè)吧,我還是懷疑你電路接線和樓主不同,因?yàn)閺母怕噬蟻碚f,遇到一模一樣電路的可能性微乎其微,一般運(yùn)氣沒這么好到爆棚的
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

我的也不顯示,可以教我一下嗎
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:1101896 發(fā)表于 2023-12-3 11:57 | 顯示全部樓層
為什么我用8.0點(diǎn)進(jìn)去就閃退啊
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:1107170 發(fā)表于 2023-12-30 16:07 來自手機(jī) | 顯示全部樓層
為什么代碼一樣,但第一行就報(bào)錯(cuò)了,sbit Beep=P1^5,P1未定義
回復(fù)

使用道具 舉報(bào)

ID:1124247 發(fā)表于 2024-6-8 15:17 來自手機(jī) | 顯示全部樓層
hiccup 發(fā)表于 2022-9-6 10:51
好了,我解決了,因?yàn)槲乙彩莿傞_始看,估計(jì)有個(gè)編譯的東西,一直沒找到,然后發(fā)現(xiàn)左下角有個(gè)開始運(yùn)行的開 ...

怎么整得,我也是能運(yùn)行不顯示
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩欧美中文 | 91精品久久久久久久久 | 亚洲精品一区中文字幕乱码 | 国产精品综合视频 | 韩日精品在线观看 | 欧美专区在线视频 | 99视频在线免费观看 | 久久精品黄色 | 在线中文字幕av | 黄网站免费在线看 | 国产精品特级毛片一区二区三区 | 看毛片网站 | caoporn免费在线视频 | 国产精品美女久久久久久久网站 | 五月激情综合 | 天天操夜夜操免费视频 | 免费视频二区 | 淫片一级国产 | 天天操夜夜看 | 国产美女一区二区 | 亚洲精品在线国产 | 曰韩三级 | 久热精品在线播放 | 久久精品这里精品 | 中文字幕一区二区三区不卡 | 成人免费网站 | 大伊人久久 | 黄色毛片免费视频 | 日韩中文字幕在线视频 | 免费的色网站 | 欧美手机在线 | 特黄特色大片免费视频观看 | 久久久久久亚洲精品不卡 | 国产日韩欧美一区二区 | 国产精品久久7777777 | 天天拍天天草 | 亚洲一二三视频 | 亚洲一级av毛片 | 午夜综合 | 国产十日韩十欧美 | 国产精品一区在线 |