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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于LCD顯示的籃球定時計分器的設計

  [復制鏈接]
跳轉到指定樓層
樓主
ID:125504 發表于 2016-6-6 20:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    這是我大一期間制作的一個小設計,這是我第一個制作的設計哈,分享給又需要的朋友。




LCD1602顯示的籃球定時計分器的51單片機程序:
  1. #include<reg52.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.                                                                        
  36. void write_com(uchar com)                                           //定義為命令模式
  37. {
  38.         lcdrs=0;
  39.         P0=com;
  40.         delayms(5);
  41.         lcden=1;
  42.         delayms(5);
  43.         lcden=0;
  44. }

  45. void lcd_init()                                                                   //LCD顯示屏的初始化
  46. {
  47.         lcden=0;
  48.         write_com(0x38);
  49.         write_com(0x0c);
  50.         write_com(0x06);
  51.         write_com(0x01);
  52. }

  53. void init()                                                                          //LCD顯示屏的初始化2(即輸出“T-”、“Q-”、“A:”、“B:”)
  54. {
  55.         lcden=0;
  56.         write_com(0x82);
  57.         write_data('T');
  58.         write_data('-');

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

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

  65.         write_com(0x80+0x49);
  66.         write_data('B');
  67.         write_data(':');

  68. }

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

  78.         write_com(0x80+0x50);
  79.         for(num2=0;num2<17;num2++)
  80.         {
  81.                 write_data(table[num2]);
  82.                 delayms(5);
  83.         }
  84.         for(num2=0;num2<16;num2++)
  85.         {
  86.                 write_com(0x18);
  87.                 delayms(400);
  88.         }
  89. }

  90. void display(uchar min,int sec,uchar C,uchar D,uchar js)                   //顯示函數
  91. {
  92.         ss=sec/10;
  93.         sg=sec%10;
  94.         ms=min/10;
  95.         mg=min%10;
  96.         ags=C/10;
  97.         agg=C%10;
  98.         bgs=D/10;
  99.         bgg=D%10;

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

  102.         write_data(0x30+mg);

  103.         write_data(':');

  104.         write_data(0x30+ss);

  105.         write_data(0x30+sg);

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

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

  111.         write_com(0x80+0x4b);
  112.         write_data(0x30+bgs);
  113.         write_data(0x30+bgg);               
  114. }

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

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

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

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

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

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

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

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

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

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

  250.                                         t=C;
  251.                                         C=D;
  252.                                         D=t;
  253.                                 }
  254.                                 while(!key_EX)
  255.                                         display(min,sec,C,D,js);
  256.                                 FMQ=1;
  257.                         }
  258.                         if(key_JS==0)
  259.                         {
  260.                                 delayms(10);
  261.                                 if(key_JS==0)
  262.                                 {
  263.                                         FMQ=0;
  264.                                         js++;
  265.                                 }
  266.                                 while(!key_JS)
  267.                                         display(min,sec,C,D,js);
  268.                                 FMQ=1;
  269.                         }
  270.                         display(min,sec,C,D,js);
  271.                 }
  272.                 display(min,sec,C,D,js);
  273.         }
  274. }
  275. void T0_time()interrupt 1                //中斷0控制晶碼管顯示時間
  276. {
  277.         TH0=(65536-45872)/256;                // 重裝初值
  278.         TL0=(65536-45872)%256;
  279.         num++;
  280.         if(num==20)
  281.         {
  282.                 num=0;
  283.                 sec--;
  284.                 if(sec<0)
  285.                 {
  286.                         sec=59;
  287.                         min--;       
  288.                 }       
  289.         }
  290. }

  291. void T1_time()interrupt 3                //中斷0控制晶碼管顯示時間
  292. {
  293.         TH1=(65536-45872)/256;                // 重裝初值
  294.         TL1=(65536-45872)%256;
  295.         num1++;
  296.         if(num1==20)
  297.         {
  298.                 num1=0;
  299.                 time_fmq++;
  300.                 if(time_fmq>=4)
  301.                         FMQ=1;
  302.                 else
  303.                         FMQ=0;
  304.         }
  305. }
復制代碼

Proteus仿真.rar

45.94 KB, 下載次數: 536, 下載積分: 黑幣 -5

Proteus仿真圖

程序代碼.rar

39.31 KB, 下載次數: 435, 下載積分: 黑幣 -5

原程序代碼

評分

參與人數 16黑幣 +125 收起 理由
2452047173 + 5 贊一個!
瓦斯彈是 + 5 贊一個!
weixinxin + 5 贊一個!
莫非人 + 5 很給力!
hickey + 5 很給力!
奔跑的肉肉 + 5
ch24364426 + 5 贊一個!
eon_ + 5 贊一個!
大羅布 + 5 共享資料的黑幣獎勵!
348652560 + 5 很給力!
pam + 5 贊一個!
gongziwang + 5 很給力!
972086553 + 5 很給力!
xiaokobe + 5 回帖助人的獎勵!
winkybasara + 5 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:122471 發表于 2016-6-7 07:45 | 只看該作者
交換場地是怎么回是?
回復

使用道具 舉報

板凳
ID:125504 發表于 2016-6-7 18:38 | 只看該作者
高永顯 發表于 2016-6-7 07:45
交換場地是怎么回是?

就是打完半場比賽后交換場地,左右顯示交換一下
回復

使用道具 舉報

地板
ID:123289 發表于 2016-6-7 18:59 | 只看該作者
硬件設計的不錯。
存在一個隱患:
喇叭無限流措施,如果驅動長期低電平,喇叭線圈通過三極管直接對地,不安全。
回復

使用道具 舉報

5#
ID:122684 發表于 2016-6-7 23:07 | 只看該作者
厲害,是你自己寫出來的嗎?
回復

使用道具 舉報

6#
ID:145776 發表于 2016-11-17 20:57 來自手機 | 只看該作者
5他1啊可以
回復

使用道具 舉報

7#
ID:98881 發表于 2016-12-7 15:35 | 只看該作者
交換場地實現不了
回復

使用道具 舉報

8#
ID:158435 發表于 2016-12-28 19:12 | 只看該作者
我的哥,厲害了
回復

使用道具 舉報

9#
ID:160336 發表于 2017-1-6 00:02 | 只看該作者
大神,膜拜
回復

使用道具 舉報

10#
ID:183351 發表于 2017-3-25 17:59 | 只看該作者
厲害了我的哥
回復

使用道具 舉報

11#
ID:183419 發表于 2017-4-4 14:59 | 只看該作者
666  老哥 穩
回復

使用道具 舉報

12#
ID:194701 發表于 2017-5-5 10:42 | 只看該作者
交換場地是怎么回是
回復

使用道具 舉報

13#
ID:183120 發表于 2017-6-3 21:06 | 只看該作者
本帖最后由 彬Lsl 于 2017-6-4 10:53 編輯

請問,這個KEY_ST跟其他開關是怎么個連法

288cf746e71e95966b4499ec0dcb7b9.png (65.2 KB, 下載次數: 149)

288cf746e71e95966b4499ec0dcb7b9.png
回復

使用道具 舉報

14#
ID:183120 發表于 2017-6-4 10:50 | 只看該作者
yzwzfyz 發表于 2016-6-7 18:59
硬件設計的不錯。
存在一個隱患:
喇叭無限流措施,如果驅動長期低電平,喇叭線圈通過三極管直接對地,不 ...

那需要怎么修改
回復

使用道具 舉報

15#
ID:207714 發表于 2017-6-4 16:51 | 只看該作者
真不錯
回復

使用道具 舉報

16#
ID:183120 發表于 2017-6-5 16:00 | 只看該作者
按照這個電路圖焊接,代碼燒進去后,但不行,
回復

使用道具 舉報

17#
ID:200571 發表于 2017-6-9 17:12 | 只看該作者
就是想問一下,A、B隊減一分怎么改成加三分,還有就是場地交換和節數加1,不好使啊
回復

使用道具 舉報

18#
ID:210963 發表于 2017-6-13 22:15 | 只看該作者
厲害了
回復

使用道具 舉報

19#
ID:211258 發表于 2017-6-15 17:39 | 只看該作者
非常好
回復

使用道具 舉報

20#
ID:200571 發表于 2017-6-19 16:31 | 只看該作者
彬Lsl 發表于 2017-6-4 10:50
那需要怎么修改

你用過之后,他的那個喇叭是怎么回事,怎么不想
回復

使用道具 舉報

21#
ID:212542 發表于 2017-6-20 12:54 | 只看該作者
特別好
回復

使用道具 舉報

22#
ID:217050 發表于 2017-7-4 11:36 | 只看該作者
新手,學習到了
回復

使用道具 舉報

23#
ID:234978 發表于 2017-9-22 21:23 | 只看該作者
厲害 崇拜 崇拜
回復

使用道具 舉報

24#
ID:252661 發表于 2017-11-23 15:03 | 只看該作者
厲害了
回復

使用道具 舉報

25#
ID:252661 發表于 2017-11-23 15:05 | 只看該作者
厲害了,可是我連接對了,顯示不出
回復

使用道具 舉報

26#
ID:253948 發表于 2017-11-26 22:29 | 只看該作者
膜拜大神!
回復

使用道具 舉報

27#
ID:266661 發表于 2017-12-26 10:17 | 只看該作者
為什么我的運行不出來,有全部運行出來的嗎?
回復

使用道具 舉報

28#
ID:262115 發表于 2017-12-26 18:28 | 只看該作者
贊贊贊樓主
回復

使用道具 舉報

29#
ID:260909 發表于 2017-12-26 22:02 | 只看該作者
大一就做出這樣的設計,挺厲害的!
回復

使用道具 舉報

30#
ID:268595 發表于 2017-12-28 21:55 | 只看該作者
請問開始功能的開關是怎么和后面的開關進行連接的
回復

使用道具 舉報

31#
ID:264760 發表于 2018-1-1 17:25 | 只看該作者
if(time_fmq>=4)   FMQ=1;請問大佬這段程序是什么意思
回復

使用道具 舉報

32#
ID:300802 發表于 2018-4-3 10:24 | 只看該作者
厲害啊,大一就能做這個了
回復

使用道具 舉報

33#
ID:344639 發表于 2018-6-4 14:25 | 只看該作者
請問開始功能的開關是怎么和后面的開關進行連接的
回復

使用道具 舉報

34#
ID:296322 發表于 2018-6-9 14:45 | 只看該作者
我們也有這個課題!
回復

使用道具 舉報

35#
ID:234651 發表于 2018-6-12 10:47 | 只看該作者
萌新看一下
回復

使用道具 舉報

36#
ID:353454 發表于 2018-6-18 15:35 | 只看該作者
交換場地怎么搞啊
回復

使用道具 舉報

37#
ID:353746 發表于 2018-6-18 20:38 | 只看該作者
樓主大一做出去的,好強。是自學的嗎?
回復

使用道具 舉報

38#
ID:353655 發表于 2018-6-18 21:56 | 只看該作者
贊一個,我要學好單片機
回復

使用道具 舉報

39#
ID:221324 發表于 2018-6-18 22:04 | 只看該作者
牛逼,大神贊一個。
回復

使用道具 舉報

40#
ID:353746 發表于 2018-6-19 12:34 | 只看該作者
樓主大神,LCD1602我找不到這個元器件啊,你是用proteus畫的嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区免费观看α√ | av永久免费 | 欧美一级电影免费 | 精品福利视频一区二区三区 | 国产精品99久久久久久宅男 | 欧美乱人伦视频 | 亚洲精品乱码久久久久久久久 | 日本a级大片 | 久草免费在线 | 九九热久久免费视频 | 午夜免费 | 看片一区 | 一区二区三区四区在线免费观看 | 男女国产视频 | 国产精品久久精品 | 欧美日本一区 | 手机在线不卡av | 国产成人免费视频网站视频社区 | 欧美aⅴ | 久久精品一区二 | 天天干天天操天天看 | 日韩中文在线 | 色综合色综合色综合 | 91精品国产91| www.99re| 日韩欧美网 | 色偷偷人人澡人人爽人人模 | 欧美一区二区三区四区五区无卡码 | 超碰8| 爱爱视频日本 | 99亚洲精品 | 欧美黑人狂野猛交老妇 | 亚洲国产精品久久久 | 亚洲精品一区二区三区蜜桃久 | 亚洲狠狠爱 | 亚洲天堂中文字幕 | 性欧美精品一区二区三区在线播放 | 国产高清不卡 | 91精品国产色综合久久 | 亚洲精品欧美精品 | 亚洲aⅴ一区二区 |