找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4345|回复: 0
打印 上一主题 下一主题
收起左侧

单片机输入10个整数(0—999之间),输出其中的最大数实验

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-21 23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是用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[5]={0xfe,0xfd,0xfb,0xf7,0xef};
  8. uint data shuzu[10];
  9. //=============
  10. uchar status;
  11. uchar temp;
  12. int max,f;
  13. //===============
  14. void delay_1ms(void)
  15. {
  16. uint k;
  17. for(k=0;k<121;k++);
  18. }
  19. //=======================
  20. void dis_max(void)
  21. {
  22. D=1;P0=SEG7[max%10];D=0;P0=0xff;V=1;P0=ACT[4];V=0;delay_1ms();
  23. D=1;P0=SEG7[(max/10)%10];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  24. D=1;P0=SEG7[max/100];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  25. }
  26. //=================
  27. void dis_input(void)
  28. {
  29. D=1;P0=SEG7[f%10];D=0;P0=0xff;V=1;P0=ACT[4];V=0;delay_1ms();
  30. D=1;P0=SEG7[(f/10)%10];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay_1ms();
  31. D=1;P0=SEG7[f/100];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay_1ms();
  32. D=1;P0=SEG7[status];D=0;P0=0xff;V=1;P0=ACT[0];V=0;delay_1ms();
  33. }
  34. //==================
  35.    void key_s1(void)
  36. {
  37. P2=0xff;
  38. if(P2==0xef)
  39. {if(temp>30)temp=0;
  40. if(temp==0)f++;
  41. if(f>999)f=999;
  42. temp++;
  43. delay_1ms();
  44.     }
  45. }
  46. //=================
  47.    void key_s2(void)
  48. {
  49. P2=0xff;
  50. if(P2==0xdf)
  51. {if(temp>30)temp=0;
  52. if(temp==0)f--;
  53. if(f<0)f=0;
  54. temp++;
  55. delay_1ms();
  56.     }
  57. }
  58. //=============
  59. void key_s3(void)
  60. {
  61. P2=0xff;
  62. if(P2==0xbf)
  63. {
  64. switch(status)
  65. {
  66. case 0:shuzu[0]=f;break;
  67. case 1:shuzu[1]=f;break;
  68. case 2:shuzu[2]=f;break;
  69. case 3:shuzu[3]=f;break;
  70. case 4:shuzu[4]=f;break;
  71. case 5:shuzu[5]=f;break;
  72. case 6:shuzu[6]=f;break;
  73. case 7:shuzu[7]=f;break;
  74. case 8:shuzu[8]=f;break;
  75. case 9:shuzu[9]=f;break;
  76. default:break;
  77.    }
  78. }
  79. }
  80. //===============
  81. void key_s4(void)
  82. {
  83. P2=0xff;
  84. if(P2==0x7f)
  85. {if(temp>100)temp=0;
  86. if(temp==0)status++;
  87. if(status>10)status=0;
  88. temp++;
  89. delay_1ms();
  90.    }
  91. }
  92. //================
  93. void conv(void)
  94. {
  95. uchar i;
  96. max=shuzu[0];
  97. for(i=1;i<10;i++)
  98. {
  99. if(shuzu[i]>max)max=shuzu[i];
  100.   }
  101. }
  102. //================
  103. void main(void)
  104. {
  105. while(1)
  106. {
  107. key_s1();
  108. key_s2();
  109. key_s3();
  110. key_s4();
  111. conv();
  112. if(status==10)dis_max();
  113. else dis_input();
  114.    }
  115. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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