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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

八路搶答器

[復制鏈接]
跳轉到指定樓層
樓主
例12-5 8位競賽搶答器.zip (57.57 KB, 下載次數: 15)
  1. #include<reg51.h>

  2. sbit DIN=P3^0;
  3. sbit LOAD=P3^1;
  4. sbit CLK=P3^2;
  5. sbit S1=P3^6;
  6. sbit key0=P1^0;
  7. sbit key1=P1^1;
  8. sbit key2=P1^2;
  9. sbit key3=P1^3;
  10. sbit key4=P1^4;
  11. sbit key5=P1^5;
  12. sbit key6=P1^6;
  13. sbit key7=P1^7;
  14. sbit key_clear=P2^0
  15. sbit begin=P2^1

  16. sbit sounder=P3^7

  17. unsigned char second=30;
  18. unsigned char counter=0;
  19. unsigned char people=0;

  20. unsigned char num_add[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
  21. unsigned char num_dat[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89};

  22. unsigned char keyscan()
  23. {
  24.   unsigned char keyvalue,temp;
  25.   
  26.   keyvalue=0;
  27.   P1=0xff;
  28.   temp=P1;
  29.   if(~(P1&temp))
  30.   {
  31.     switch(temp)
  32.         {
  33.           case 0xfe:
  34.             keyvalue=1;zhi=0;
  35.             break;
  36.           case 0xfd:
  37.             keyvalue=2;zhi=0;
  38.             break;
  39.           case 0xfb:
  40.             keyvalue=3;zhi=0;
  41.             break;
  42.           case 0xf7:
  43.             keyvalue=4;zhi=0;
  44.             break;
  45.           case 0xef:
  46.             keyvalue=5;zhi=0;
  47.             break;
  48.           case 0xdf:
  49.             keyvalue=6;zhi=0;
  50.             break;
  51.           case 0xbf:
  52.             keyvalue=7;zhi=0;
  53.             break;
  54.       case 0x7f:
  55.             keyvalue=8;zhi=0;
  56.             break;
  57.           default:
  58.             keyvalue=0;zhi=0;
  59.             break;
  60.         }
  61.   }

  62.   return keyvalue;
  63. }

  64. void max7219_send(unsigned char add,unsigned char dat)
  65. {
  66.   unsigned char        ADS,i,j;

  67.   LOAD=0;
  68.   i=0;
  69.   while(i<16)
  70.   {
  71.     if(i<8)
  72.         {
  73.           ADS=add;
  74.         }
  75.         else
  76.         {
  77.           ADS=dat;
  78.         }
  79.         for(j=8;j>=1;j--)
  80.         {
  81.           DIN=ADS&0x80;
  82.           ADS=ADS<<1;
  83.           CLK=1;
  84.           CLK=0;
  85.         }
  86.         i=i+8;
  87.   }
  88.   LOAD=1;
  89. }

  90. void max7219_init()
  91. {
  92.   max7219_send(0x0c,0x01);
  93.   max7219_send(0x0b,0x07);
  94.   max7219_send(0x0a,0xf5);
  95.   max7219_send(0x09,0xff);
  96. }

  97. void time_display(unsigned char x)
  98. {
  99.   unsigned char i,j;
  100.   i=x/10;
  101.   j=x%10;
  102.   max7219_send(num_add[1],num_dat[j]);
  103.   max7219_send(num_add[0],num_dat[i]);
  104. }

  105. void scare_display(unsigned char x)
  106. {
  107.   unsigned char i,j;
  108.   i=x/10;
  109.   j=x%10;
  110.   max7219_send(num_add[3],num_dat[j]);
  111.   max7219_send(num_add[2],num_dat[i]);
  112. }

  113. void holderscan()//????????????0-60s
  114. {
  115.   time_display(second);
  116.   scare_display(people);
  117.   if(~key_clear)
  118.   {
  119.     while(~key_clear);
  120.         if(people)
  121.         {
  122.           second=30;
  123.           people=0;
  124.         }
  125.         if(second<60)
  126.         {
  127.           second++;
  128.         }
  129.         else
  130.         {
  131.           second=0;
  132.         }
  133.   }
  134. }

  135. void timer_init()
  136. {   S1=0;
  137.   EA=1;
  138.   ET0=1;
  139.   TMOD=0x01;
  140.   TH0=0xd8;
  141.   TL0=0xef;
  142. }

  143. void main()
  144. {         
  145.   while(1)
  146.   {
  147.   do{
  148.     holderscan();
  149.   }while(begin);
  150.   while(~begin);
  151.   max7219_init();
  152.   timer_init();
  153.   TR0=1;
  154. S1=1;
  155.   do{
  156.     time_display(second);
  157.         scare_display(people);
  158.         people=keyscan();
  159.   }while((!people)&&(second));
  160.   TR0=0;}
  161. }

  162. void timer0() interrupt 1
  163. {
  164.   if(counter<100)
  165.   {
  166.     counter++;
  167.         if(counter==50)
  168.         {
  169.           sounder=0;
  170.         }
  171.   }
  172.   else
  173.   {
  174.     sounder=1;
  175.     counter=0;
  176.         second=second-1;
  177.   }
  178.   TH0=0xd8;
  179.   TL0=0xef;
  180.   TR0=1;
  181. }
復制代碼


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

使用道具 舉報

沙發
ID:850904 發表于 2020-11-28 21:56 | 只看該作者
運行有錯誤
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月婷亚洲 | 国产日韩精品一区 | 亚洲欧美中文日韩在线v日本 | 亚洲视频在线观看 | 亚洲精品视频在线看 | 99久久免费精品国产免费高清 | 亚洲国产高清高潮精品美女 | 看一级毛片 | 日本国产欧美 | 亚州一区二区三区 | 国产精品久久二区 | 国产又爽又黄的视频 | 日韩成人在线免费观看 | 欧美一级观看 | 91久久久久| 激情久久网 | 免费在线日韩 | 国产美女福利在线观看 | 在线亚洲人成电影网站色www | 天天操天天射天天舔 | 黄色在线免费观看视频网站 | 亚洲一区免费视频 | 91精品久久久久久久久久 | 亚州午夜精品 | 九九免费视频 | 国产免费一级一级 | 台湾a级理论片在线观看 | 日韩综合 | 亚洲福利在线观看 | 成人一区二区三区 | 午夜欧美 | 国产a区| 亚洲一区在线观看视频 | 国产在线看片 | 国产九九av | 国产精品久久久久aaaa九色 | 欧美精产国品一二三区 | 国产精品亚洲一区二区三区在线观看 | 亚洲精品国产第一综合99久久 | 中文字幕在线看第二 | 亚洲色图婷婷 |