单片机流水灯40种花样_基于51单片机的流水灯实验

c6b67a70c520c2622c63b0dbc96e1127.gif

来源:51黑电子论坛

5ba2e157fe9ed465c7a480c969aa6939.png单片机定时器实用方法总结10个单片机编程应用技巧总结只有6个引脚的单片机,居然可以玩游戏。用51单片机制作一个秒表的详细过程(教程有程序)单片机的内部结构是怎样的?理解串口通信以及232,485,422常见问题
基于51单片机的流水灯实验
K1键流水灯交替闪烁。
K2键流水灯从两边向中间移动闪烁。
K3键流水灯全部闪烁。
K4键流水灯从LED7到LED0流水闪烁。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)f9d59a8dd4664879c3d9b44c752b0f4d.png
单片机源程序如下:
  1. #include

  2. sbit S5=P1^4;

  3. sbit S6=P1^5;

  4. sbit S7=P1^6;

  5. sbit S8=P1^7;

  6. unsigned char keyval;

  7. void key_scan(void);

  8. void forward(void);

  9. void backward(void);

  10. void Alter(void);

  11. void blink(void);

  12. void led_delay(void);

  13. void delay10ms(void);

  14. void main(void)

  15. {

  16.     keyval=0;

  17.         while(1)

  18.         {

  19.            key_scan();

  20.            switch(keyval)

  21.            {

  22.                case 5:Alter();

  23.                           break;

  24.            case 6:forward();

  25.                           break;

  26.                    case 7:blink();

  27.                           break;

  28.            case 8:backward();

  29.                           break;

  30.            }

  31.         }

  32. }

  33. void key_scan(void)

  34. {

  35.     P1=0xff;

  36.         if((P1&0xf0)!=0xf0)

  37.         {

  38.            delay10ms();

  39.            if(S5==0)

  40.            keyval=5;

  41.            if(S6==0)

  42.            keyval=6;

  43.            if(S7==0)

  44.            keyval=7;

  45.            if(S8==0)

  46.            keyval=8;

  47.     }

  48. }

  49. void Alter(void)

  50. {

  51.     P3=0xaa;

  52.         led_delay();

  53.         P3=0x55;

  54.         led_delay();

  55. }

  56. void forward(void)

  57. {

  58.     P3=0x7e;

  59.         led_delay();

  60.         P3=0xbd;

  61.         led_delay();

  62.         P3=0xdb;

  63.         led_delay();

  64.         P3=0xe7;

  65.         led_delay();

  66.         P3=0xe7;

  67.         led_delay();

  68.         P3=0xdb;

  69.         led_delay();

  70.         P3=0xbd;

  71.         led_delay();

  72.         P3=0x7e;

  73.         led_delay();

  74. }

  75. void blink(void)

  76. {

  77.     P3=0xff;

  78.         led_delay();

  79.         P3=0x00;

  80.         led_delay();

  81. }

  82. void backward(void)

  83. {

  84.     P3=0x7f;

  85.         led_delay();

  86.         P3=0xbf;

  87.         led_delay();

  88.         P3=0xdf;

  89.         led_delay();

  90.         P3=0xef;

  91.         led_delay();

  92.         P3=0xf7;

  93.         led_delay();

  94.         P3=0xfb;

  95.         led_delay();

  96.         P3=0xfd;

  97.         led_delay();

  98.         P3=0xfe;

  99.         led_delay();

  100. }

  101. void led_delay(void)

  102. {

  103.     unsigned char i,j;

  104.         for(i=0;i<220;i++)

  105.         for(j=0;j<220;j++);

  106. }

  107. void delay10ms(void)

  108. {   

  109.     unsigned char i,j;

  110.         for(i=0;i<100;i++)

  111.         for(j=0;j<100;j++);

  112. }

本文转自网络,版权归原作者,如果您觉得不好,请联系我们删除!


版权声明:本文为weixin_42515101原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。