欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 用MCU做一個簡易記分器,上拉電阻,數碼管顯示數字的段碼表 [打印本頁]

作者: cyq1144398565    時間: 2019-4-3 19:39
標題: 用MCU做一個簡易記分器,上拉電阻,數碼管顯示數字的段碼表
proteus仿真圖


程序完整代碼:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. sbit KEY1=P3^0;  //各按鍵所連io口
  4. sbit KEY2=P3^1;
  5. sbit KEY3=P3^2;
  6. sbit KEY4=P3^3;
  7. sbit KEY5=P3^4;
  8. unsigned char code yyy[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管數字顯示段碼
  9. unsigned char xxx=0;
  10. unsigned char z=0;
  11. unsigned char y=0;
  12. unsigned char s=0;
  13.       
  14. void Delay100us()  //延遲函數  晶振值@11.0592MHz
  15. {
  16. unsigned char i;
  17. _nop_();
  18. i = 43;
  19. while (--i);
  20. }
  21. void Delay50us()  //[color=rgb(37, 37, 37)][backcolor=transparent][font=Tahoma,]延遲函數  [/font][/backcolor][/color][color=rgb(37, 37, 37)][backcolor=transparent][font=Tahoma,]晶振值[/font][/backcolor][/color]@11.0592MHz
  22. {
  23. unsigned char i;
  24. _nop_();
  25. i = 20;
  26. while (--i);
  27. }

  28. void key1()     //按鍵1控制1隊的分數“加1”及倆隊分數的清零
  29. {
  30.    if(KEY1==0)
  31.    {
  32.   Delay50us();
  33.    if(KEY1==0)
  34. {   
  35. while(!KEY1);
  36. if(xxx<10)
  37.      xxx++;
  38. if(xxx==10)
  39.   {xxx=0;z++;}
  40. }

  41.    }
  42.    if(KEY3==0)
  43.    {
  44.   if(KEY3==0)
  45.   Delay50us();
  46.   while(!KEY3)
  47. {
  48.    xxx=0;
  49.    z=0;
  50.    y=0;
  51.    s=0;
  52. }
  53.    }
  54. }
  55. void key2()     //[color=rgb(37, 37, 37)][backcolor=transparent][font=Tahoma,]按鍵2控制2隊的分數“加1”[/font][/backcolor][/color]
  56. {
  57.    if(KEY2==0)
  58.    {
  59.    Delay50us();
  60.    if(KEY2==0)
  61. {   
  62. while(!KEY2);
  63. if(y<10)
  64.      y++;
  65. if(y==10)
  66.   {y=0;s++;}
  67. }

  68.    }
  69. }
  70. void key4()    //控制一隊分數“減1”
  71. {
  72.    if(KEY4==0)
  73.    {
  74.    Delay50us();
  75.    if(KEY4==0)
  76. {   
  77. while(!KEY4) ;
  78.     if(xxx==0)
  79.   {xxx=9;z--;}
  80. else
  81.        xxx--;
  82. }

  83.    }
  84. }
  85. void key5()   //[color=rgb(37, 37, 37)][backcolor=transparent][font=Tahoma,]控制二隊分數“減1”[/font][/backcolor][/color]
  86. {
  87.    if(KEY5==0)
  88.    {
  89.    Delay50us();
  90.    if(KEY5==0)
  91. {   
  92. while(!KEY5) ;  
  93.     if(y==0)
  94.   {y=9;s--;}
  95. else
  96.        y--;
  97. }

  98.    }
  99. }
  100. void display()  // 使數碼管短時間交替顯示使人看到數碼管4個都是亮的
  101. {
  102.    P0=0xff;
  103.    Delay100us();
  104.    P2=0xfe;P0=yyy[xxx];
  105.    Delay100us();
  106.    P0=0xff;
  107.    Delay100us();
  108.    P2=0xfd;P0=yyy[z];
  109.    Delay100us();
  110.    P0=0xff;
  111.    Delay100us();
  112.    P2=0xfb;P0=yyy[y];
  113.    Delay100us();
  114.    P0=0xff;
  115.    Delay100us();
  116.    P2=0xf7;P0=yyy[s];
  117.    Delay100us();
  118. }
  119. main()
  120. {   
  121.    P3= 0xff;   //???????????io???????1
  122.    while(1)
  123.    {
  124.    display();  //??????????????????????
  125.    key1();
  126.    key2();
  127.    key4();
  128.    key5();  
  129.    }
  130. }
復制代碼





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1