当前位置:   article > 正文

三、51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)_八位数码管滚动显示

八位数码管滚动显示

1,目标

        使用51单片机控制8位数码管,分别滚动显示单个数字0~7,程序运行之后,单片机先控制最左边的第一位数码管显示0,其他的熄灭,延时一段时间之后,控制左边第二个数码管显示1,其它熄灭,以此类推,反复循环上述过程。

2,设计方式

        使用P0输出段码,P2输出位码,因为单片机的电流不足以点亮数码管,因此,我们可以通过使用由8个NPN型三极管组成的位驱动电路来对数码管进行位驱动和位控制扫描,话不多说,上程序

3,代码如下

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};//共阳数码管段码表 01234567
  6. //0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc0 7~0
  7. void delay(uint t) //延时子函数
  8. {
  9. uchar i;
  10. while(t--) for(i=0;i<200;i++);
  11. }
  12. void main()
  13. {
  14. uchar i,j=0x80;//10000000
  15. while(1)
  16. {
  17. for(i=0;i<8;i++)
  18. {
  19. j=_crol_(j,1); //_crol_(j,1)——将j循环左移1位
  20. P0=dis_code[i]; //P0口输出段码
  21. P2=j; //P2口输出位控码
  22. delay(200);
  23. P0=0x00;
  24. }
  25. }
  26. }

4,仿真图如下

5,小结

        由于数码管的余晖和人眼的“视觉暂留”,只要控制好数码管的显示时间并减小延时时间,即可实现8位数码管“同时点亮”的效果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/709370
推荐阅读
相关标签
  

闽ICP备14008679号