找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2806|回复: 0
收起左侧

单片机数组显示实验

[复制链接]
ID:72519 发表于 2015-1-21 23:06 | 显示全部楼层 |阅读模式
是用51hei单片机开发板 电路图详见:http://www.51hei.com/f/51hei-5.pdf  的数码管部分, 用2个74hc573 锁存,p0口作为数据口 ,p3.6和p3.7分别是段和位的锁存端口. p2口上面有按键 详见程序的定义:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. sbit D=P3^6;
  6. sbit V=P3^7;
  7. uchar ACT[4]={0xfe,0xfd,0xfb,0xf7};
  8. uchar data shuzu[4];
  9. //=============
  10. uchar status;
  11. uchar temp,f;
  12. //===============
  13. void delay_1ms(void)
  14. {
  15. uint k;
  16. for(k=0;k<121;k++);
  17. }
  18. //============
  19. void dis_all(void)
  20. {
  21. D=1;P0=SEG7[shuzu[0]];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  22. D=1;P0=SEG7[shuzu[1]];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  23. D=1;P0=SEG7[shuzu[2]];D=0;P0=0xff;V=1;P0=ACT[1];V=0;delay_1ms();
  24. D=1;P0=SEG7[shuzu[3]];D=0;P0=0xff;V=1;P0=ACT[0];V=0;delay_1ms();
  25. }
  26. //================
  27. void dis_shuzu0(void)
  28. {
  29. D=1;P0=SEG7[f];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  30. }
  31. //======================
  32. void dis_shuzu1(void)
  33. {
  34. D=1;P0=SEG7[f];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  35. }
  36. //===================
  37. void dis_shuzu2(void)
  38. {
  39. D=1;P0=SEG7[f];D=0;P0=0xff;V=1;P0=ACT[1];V=0;delay_1ms();
  40. }
  41. //=======================
  42. void dis_shuzu3(void)
  43. {
  44. D=1;P0=SEG7[f];D=0;P0=0xff;V=1;P0=ACT[0];V=0;delay_1ms();
  45. }
  46. //=================
  47.   void key_s1(void)
  48. {
  49. P2=0xff;
  50. if(P2==0xbf)
  51. {if(temp>50)temp=0;
  52. if(temp==0)f++;
  53. if(f>9)f=0;
  54. temp++;
  55. delay_1ms();
  56.     }
  57. }
  58. //===================
  59. void key_s2(void)
  60. {
  61. P2=0xff;
  62. if(P2==0x7f)
  63. {
  64. switch (status)
  65. {
  66. case 1:shuzu[0]=f;break;
  67. case 2:shuzu[1]=f;break;
  68. case 3:shuzu[2]=f;break;
  69. case 4:shuzu[3]=f;break;
  70. default:break;
  71.      }
  72.   }
  73. }
  74. //=================
  75. void key_s4(void)
  76. {
  77. P2=0xff;
  78. if(P2==0xdf)
  79. {if(temp>50)temp=0;
  80. if(temp==0)status++;
  81. if(status>4)status=0;
  82. temp++;
  83. delay_1ms();
  84.    }
  85. }
  86. //================
  87. void main(void)
  88. {
  89. while(1)
  90. {
  91. key_s1();
  92. key_s2();
  93. key_s4();
  94. switch (status)
  95. {
  96. case 0:dis_all();break;
  97. case 1:dis_shuzu0();break;
  98. case 2:dis_shuzu1();break;
  99. case 3:dis_shuzu2();break;
  100. case 4:dis_shuzu3();break;
  101. default:break;
  102.       }
  103. }
  104. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表