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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

籃球計分器(單片機仿真設計)

  [復制鏈接]
跳轉到指定樓層
樓主
籃球計分器(設計)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code table[]=".. Play ball! ....";
  5. uchar code table1[]="Welcome to here!" ;
  6. sbit key_ST=P1^5;                 //功能鍵(開始/暫停)
  7. sbit key_A1=P1^0;                 //功能鍵(A隊分數加1)
  8. sbit key_A2=P1^3;                 //功能鍵(A隊分數加2)
  9. sbit key_1A=P1^6;                 //功能鍵(A隊分數減1)
  10. sbit key_B1=P1^1;                 //功能鍵(B隊分數加1)
  11. sbit key_B2=P1^4;                 //功能鍵(B隊分數加2)
  12. sbit key_1B=P1^7;                 //功能鍵(B隊分數減1)
  13. sbit key_EX=P1^2;                 //功能鍵(交換場地,A/B兩隊分數交換)
  14. sbit key_JS=P3^0;                 //功能鍵(比賽節數加1)
  15. sbit FMQ=P3^3;                         //蜂鳴器
  16. sbit lcdrs=P3^5;                 //LCD顯示的數據/命令選擇端
  17. sbit lcden=P3^4;                 //LCD顯示的使能信號
  18. uchar flag,ms,mg,ss,sg,ags,agg,bgs,bgg,num,num1,num2,js=1,C,D,t,min=0,time_fmq;        
  19. int sec=12;
  20. void delayms(uint xms)//定義延時函數
  21. {
  22.         uint i,j;
  23.         for(i=xms;i>0;i--)
  24.                 for(j=110;j>0;j--);
  25. }
  26. void write_data(uchar date)//定義為數據模式
  27. {
  28.         lcdrs=1;
  29.         P0=date;
  30.         delayms(5);
  31.         lcden=1;
  32.         delayms(5);
  33.         lcden=0;
  34. }
  35. void write_com(uchar com)//定義為命令模式
  36. {
  37.         lcdrs=0;
  38.         P0=com;
  39.         delayms(5);
  40.         lcden=1;
  41.         delayms(5);
  42.         lcden=0;
  43. }

  44. void lcd_init() //LCD顯示屏的初始化
  45. {
  46.         lcden=0;
  47.         write_com(0x38);
  48.         write_com(0x0c);
  49.         write_com(0x06);
  50.         write_com(0x01);
  51. }
  52. void init()        //LCD顯示屏的初始化2(即輸出“T-”、“Q-”、“A:”、“B:”)
  53. {
  54.         lcden=0;
  55.         write_com(0x82);
  56.         write_data('T');
  57.         write_data('-');

  58.         write_com(0x8a);
  59.         write_data('Q');
  60.         write_data('-');

  61.         write_com(0x80+0x43);
  62.         write_data('A');
  63.         write_data(':');

  64.         write_com(0x80+0x49);
  65.         write_data('B');
  66.         write_data(':');
  67. }
  68. void init_start()//LCD顯示屏的初始化2(即輸出“T-”、“Q-”、“A:”、“B:”)
  69. {
  70.         lcden=0;
  71.         write_com(0x80+0x10);
  72.         for(num2=0;num2<16;num2++)
  73.         {
  74.                 write_data(table1[num2]);
  75.                 delayms(5);
  76.         }

  77.         write_com(0x80+0x50);
  78.         for(num2=0;num2<17;num2++)
  79.         {
  80.                 write_data(table[num2]);
  81.                 delayms(5);
  82.         }
  83.         for(num2=0;num2<16;num2++)
  84.         {
  85.                 write_com(0x18);
  86.                 delayms(400);
  87.         }
  88. }
  89. void display(uchar min,int sec,uchar C,uchar D,uchar js)//顯示函數
  90. {
  91.         ss=sec/10;
  92.         sg=sec%10;
  93.         ms=min/10;
  94.         mg=min%10;
  95.         ags=C/10;
  96.         agg=C%10;
  97.         bgs=D/10;
  98.         bgg=D%10;

  99.         write_com(0x84);
  100.         write_data(0x30+ms);

  101.         write_data(0x30+mg);

  102.         write_data(':');

  103.         write_data(0x30+ss);

  104.         write_data(0x30+sg);

  105.         write_com(0x8d-1);
  106.         write_data(0x30+js);

  107.         write_com(0x80+0x45);
  108.         write_data(0x30+ags);
  109.         write_data(0x30+agg);

  110.         write_com(0x80+0x4b);
  111.         write_data(0x30+bgs);
  112.         write_data(0x30+bgg);               
  113. }
  114. void main()
  115. {
  116.         TMOD=0x11;//定義定時器0的工作方式為0001
  117.         TH0=(65536-45872)/256;//裝初值
  118.         TL0=(65536-45872)%256;
  119.         TH1=(65536-45872)/256;//裝初值
  120.         TL1=(65536-45872)%256;
  121.         EA=1;//打開總中斷
  122.         ET0=1;//打開定時器0的中斷
  123.         TR0=0;
  124.         ET1=1;
  125.         TR1=0;
  126.         lcd_init();
  127.         init_start();                                                
  128.         while(1)
  129.         {
  130.                 TR1=0;

  131.                 if(key_ST==0)                                                
  132.                 {
  133.                         delayms(5);
  134.                         if(key_ST==0)
  135.                         {
  136.                                 FMQ=0;
  137.                                 if(flag==0)
  138.                                 {
  139.                                         lcd_init();
  140.                                         init();
  141.                                 }
  142.                                 flag=1;
  143.                                 TR0=~TR0;        
  144.                         }
  145.                         while(!key_ST)
  146.                                 display(min,sec,C,D,js);
  147.                         FMQ=1;
  148.                 }

  149.                 if(key_A1==0)
  150.                 {
  151.                         delayms(5);
  152.                         if(key_A1==0)
  153.                         {        
  154.                                 FMQ=0;
  155.                                 C++;
  156.                         }
  157.                         while(!key_A1)
  158.                                 display(min,sec,C,D,js);
  159.                         FMQ=1;
  160.                 }

  161.                 if(key_A2==0)
  162.                 {
  163.                         delayms(5);
  164.                         if(key_A2==0)
  165.                         {
  166.                                 FMQ=0;
  167.                                 C+=2;
  168.                         }
  169.                         while(!key_A2)
  170.                                 display(min,sec,C,D,js);
  171.                         FMQ=1;
  172.                 }

  173.                 if(key_1A==0)
  174.                 {
  175.                         delayms(5);
  176.                         if(key_1A==0)
  177.                         {
  178.                                 FMQ=0;
  179.                                 C--;
  180.                         }
  181.                         while(!key_1A)
  182.                                 display(min,sec,C,D,js);
  183.                         FMQ=1;
  184.                 }

  185.                 if(key_B1==0)
  186.                 {
  187.                         delayms(5);
  188.                         if(key_B1==0)
  189.                         {
  190.                                 FMQ=0;
  191.                                 D++;
  192.                         }
  193.                         while(!key_B1)
  194.                                 display(min,sec,C,D,js);
  195.                         FMQ=1;
  196.                 }

  197.                 if(key_B2==0)
  198.                 {
  199.                         delayms(5);
  200.                         if(key_B2==0)
  201.                         {
  202.                                 FMQ=0;
  203.                                 D+=2;
  204.                         }
  205.                         while(!key_B2)
  206.                                 display(min,sec,C,D,js);
  207.                         FMQ=1;
  208.                 }

  209.                 if(key_1B==0)
  210.                 {
  211.                         delayms(5);
  212.                         if(key_1B==0)
  213.                         {
  214.                                 FMQ=0;
  215.                                 D--;
  216.                         }
  217.                         while(!key_1B)
  218.                                 display(min,sec,C,D,js);
  219.                         FMQ=1;
  220.                 }

  221.                 while(min==0&&sec==0)
  222.                 {
  223.                         TR0=0;
  224.                         TR1=1;
  225.                         if(key_ST==0)
  226.                         {
  227.                                 delayms(5);
  228.                                 if(key_ST==0)
  229.                                 {
  230.                                         FMQ=0;
  231.                                         min=11;
  232.                                         sec=60;
  233.                                         TR0=~TR0;
  234.                                 }
  235.                                 while(!key_ST)
  236.                                         display(min,sec,C,D,js);
  237.                                 FMQ=1;
  238.                         }
  239.                         if((key_EX==0)&&(js==2))
  240.                         {
  241.                                 delayms(10);
  242.                                 if((key_EX==0)&&(js=2))
  243.                                 {
  244.                                         FMQ=0;

  245.                                         write_com(0x80+0x43);
  246.                                         write_data('B');
  247.                                         write_com(0x80+0x49);
  248.                                         write_data('A');

  249.                                         t=C;
  250.                                         C=D;
  251.                                         D=t;
  252.                                 }
  253.                                 while(!key_EX)
  254.                                         display(min,sec,C,D,js);
  255.                                 FMQ=1;
  256.                         }
  257.                         if(key_JS==0)
  258.                         {
  259.                                 delayms(10);
  260.                                 if(key_JS==0)
  261.                                 {
  262.                                         FMQ=0;
  263.                                         js++;
  264.                                 }
  265.                                 while(!key_JS)
  266.                                         display(min,sec,C,D,js);
  267.                                 FMQ=1;
  268.                         }
  269. ……………………

  270. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
籃球計分器.zip (77.53 KB, 下載次數: 132)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:351161 發表于 2018-6-13 15:45 | 只看該作者
111111111111111111111111111111
回復

使用道具 舉報

板凳
ID:436437 發表于 2018-11-30 15:01 | 只看該作者
發的對的,,,但是有沒有不用液晶屏用四位一體數碼管記時,三位一體數碼管x2記分的程序
回復

使用道具 舉報

地板
ID:447718 發表于 2018-12-17 09:57 | 只看該作者
真的很不錯,可以直接用
回復

使用道具 舉報

5#
ID:447718 發表于 2018-12-17 10:18 | 只看該作者
這個很好用,對自己的學習幫助很大
回復

使用道具 舉報

6#
ID:446960 發表于 2018-12-17 12:45 | 只看該作者
我的不能運行,請問怎么解決啊
回復

使用道具 舉報

7#
ID:447942 發表于 2018-12-17 14:42 | 只看該作者
請問一下 ,交換場地怎么點,實現不了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩一 | 一区二区三区免费 | 1级黄色大片 | 日韩中字幕 | 超碰人人人 | 91婷婷韩国欧美一区二区 | 亚洲不卡在线观看 | 亚洲天堂色 | 国产精品中文字幕在线观看 | 国产一区二区视频在线 | 无码一区二区三区视频 | 成人免费观看视频 | 亚洲aⅴ| 国产精品久久久久久久久久东京 | 国产一区 在线视频 | 精品乱码一区二区三四区 | 在线看av的网址 | 视频一区二区三区四区五区 | 亚州毛片| 精品国产精品一区二区夜夜嗨 | 亚洲高清av | 亚洲成人免费视频在线观看 | 日韩视频a| 在线一区二区三区 | 亚洲一区二区三区福利 | 超碰成人免费 | 少妇一级淫片免费放播放 | 亚州春色| 成人在线免费网站 | 男女视频免费 | 国产真实乱对白精彩久久小说 | www.色.com| 久久久久久亚洲 | 欧美中国少妇xxx性高请视频 | 日韩小视频在线 | 国产精品91网站 | 欧美白人做受xxxx视频 | 男女污污动态图 | 亚洲精品一区二区三区四区高清 | 久久青视频 | 韩国av网站在线观看 |