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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1701|回復: 0
收起左側

51單片機八路搶答器

[復制鏈接]
ID:678248 發表于 2019-12-31 11:56 | 顯示全部樓層 |閱讀模式
360截圖185304279712586.png
  1. #include<reg51.h>
  2. sbit DIN=P3^0;//??max7219??????
  3. sbit LOAD=P3^1;
  4. sbit CLK=P3^2;
  5. sbit S1=P3^6;
  6. sbit key0=P1^0;//8·??????????
  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 zhi=P3^6;//????
  15. sbit key_clear=P2^0;//????????????á????
  16. sbit begin=P2^1;//????????????
  17. sbit sounder=P3^7;//??????
  18. unsigned char second=30;//???????
  19. unsigned char counter=0;//counter?100??minite??1
  20. unsigned char people=0;//??????
  21. unsigned char num_add[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};//max7219??д?????????
  22. unsigned char num_dat[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89};
  23. unsigned char keyscan()//??????軀??
  24. {
  25.   unsigned char keyvalue,temp;
  26.   
  27.   keyvalue=0;
  28.   P1=0xff;
  29.   temp=P1;
  30.   if(~(P1&temp))
  31.   {
  32.     switch(temp)
  33. {
  34.    case 0xfe:
  35.      keyvalue=1;zhi=0;
  36.      break;
  37.    case 0xfd:
  38.      keyvalue=2;zhi=0;
  39.      break;
  40.    case 0xfb:
  41.      keyvalue=3;zhi=0;
  42.      break;
  43.    case 0xf7:
  44.      keyvalue=4;zhi=0;
  45.      break;
  46.    case 0xef:
  47.      keyvalue=5;zhi=0;
  48.      break;
  49.    case 0xdf:
  50.      keyvalue=6;zhi=0;
  51.      break;
  52.    case 0xbf:
  53.      keyvalue=7;zhi=0;
  54.      break;
  55.       case 0x7f:
  56.      keyvalue=8;zhi=0;
  57.      break;
  58.    default:
  59.      keyvalue=0;zhi=0;
  60.      break;
  61. }
  62.   }
  63.   return keyvalue;
  64. }
  65. void max7219_send(unsigned char add,unsigned char dat)//??max7219д?????
  66. {
  67.   unsigned char ADS,i,j;
  68.   LOAD=0;
  69.   i=0;
  70.   while(i<16)
  71.   {
  72.     if(i<8)
  73. {
  74.    ADS=add;
  75. }
  76. else
  77. {
  78.    ADS=dat;
  79. }
  80. for(j=8;j>=1;j--)
  81. {
  82.    DIN=ADS&0x80;
  83.    ADS=ADS<<1;
  84.    CLK=1;
  85.    CLK=0;
  86. }
  87. i=i+8;
  88.   }
  89.   LOAD=1;
  90. }
  91. void max7219_init()//max7219?????????
  92. {
  93.   max7219_send(0x0c,0x01);
  94.   max7219_send(0x0b,0x07);
  95.   max7219_send(0x0a,0xf5);
  96.   max7219_send(0x09,0xff);
  97. }
  98. void time_display(unsigned char x)//??????
  99. {
  100.   unsigned char i,j;
  101.   i=x/10;
  102.   j=x%10;
  103.   max7219_send(num_add[1],num_dat[j]);
  104.   max7219_send(num_add[0],num_dat[i]);
  105. }
  106. void scare_display(unsigned char x)//?????????
  107. {
  108.   unsigned char i,j;
  109.   i=x/10;
  110.   j=x%10;
  111.   max7219_send(num_add[3],num_dat[j]);
  112.   max7219_send(num_add[2],num_dat[i]);
  113. }
  114. void holderscan()//????????????0-60s
  115. {
  116.   time_display(second);
  117.   scare_display(people);
  118.   if(~key_clear)//????м????£???????????
  119.   {
  120.     while(~key_clear);
  121. if(people)//??????????????????????????
  122. {
  123.    second=30;
  124.    people=0;
  125. }
  126. if(second<60)
  127. {
  128.    second++;
  129. }
  130. else
  131. {
  132.    second=0;
  133. }
  134.   }
  135. }
  136. void timer_init()
  137. {   S1=0;
  138.   EA=1;
  139.   ET0=1;
  140.   TMOD=0x01;
  141.   TH0=0xd8;//?趨10ms?ж????
  142.   TL0=0xef;
  143. }
  144. void main()
  145. {  
  146.   while(1)
  147.   {
  148.   do{
  149.     holderscan();
  150.   }while(begin);//????????????,??δ????????
  151.   while(~begin);//????
  152.   max7219_init(); //о??????
  153.   timer_init();   //?ж?????
  154.   TR0=1;//????ж?
  155. S1=1;
  156.   do{
  157.     time_display(second);
  158. scare_display(people);
  159. people=keyscan();
  160.   }while((!people)&&(second));//????????????????????????
  161.   TR0=0;}
  162. }
  163. void timer0() interrupt 1
  164. {
  165.   if(counter<100)
  166.   {
  167.     counter++;
  168. if(counter==50)
  169. {
  170.    sounder=0;
  171. }
  172.   }
  173.   else
  174.   {
  175.     sounder=1;
  176.     counter=0;
  177. second=second-1;
  178.   }
  179.   TH0=0xd8;//???????
  180.   TL0=0xef;
  181.   TR0=1;
  182. }
復制代碼


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 青青草av在线播放 | 波多野结衣一区二区 | 国产在线激情视频 | 99视频免费在线观看 | 日韩福利| 国产美女精品 | 国产成人99av超碰超爽 | 日韩欧美在线观看一区 | 7777在线 | 亚洲激情综合网 | 日本三级全黄三级a | 成人一区二区三区在线观看 | 日本电影一区二区 | 国产ts人妖系列高潮 | 在线观看www高清视频 | 精品国产免费人成在线观看 | 亚洲一区二区不卡在线观看 | 亚洲国产偷 | 免费视频一区二区 | 天天澡天天狠天天天做 | 亚洲成人av一区二区 | 91在线精品视频 | 亚洲大片一区 | 免费一级黄色 | 欧美在线一区二区三区 | 日韩欧美亚洲 | 一区二区三区中文字幕 | 在线观看中文字幕 | a免费视频 | 成人精品在线观看 | 久久伊人操 | 国产精品久久久亚洲 | 综合伊人 | 黄网站在线观看 | 日韩在线视频观看 | 国产福利资源在线 | 欧美色综合一区二区三区 | 精产国产伦理一二三区 | 国产精品日韩一区 | 国产精品久久久久免费 | 日本精品网站 |