STM32控制4个LED灯循环点亮源程序和Proteus仿真

[复制链接]
查看49 | 回复0 | 2020-6-17 01:18:13 | 显示全部楼层 |阅读模式
源码和仿真文件.7z (191.99 KB, 售价: 1 工控币)

1.png
电路原理图如下:
132019vc64zdm9zf80966l.png

部分源码:
  1. void Delay(unsigned int count);                                                  //延时函数

  2. //int main(void)
  3. //{                 
  4. //      
  5. //        LED_Init();         //初始化与LED连接的硬件接口
  6. //    while(1)
  7. //        {
  8. //           u32 LED=0x00000001;//设置初始控制码      
  9. //           //逐一点亮
  10. //           for(u8 i=0;i<4;i++)
  11. //           {
  12. //                        GPIOC->ODR&=~LED;        //向GPIOC口写点亮LED的控制码
  13. //                        Delay(30);
  14. //                        LED<<=1;        //上一个控制码左移一位,获得下一个控制码
  15. //            }
  16. //        Delay(30);
  17. //                LED>>=1;
  18. //           // 逐一熄灭
  19. //           for(u8 j=0;j<4;j++)
  20. //           {
  21. //                        GPIOC->ODR|=LED;        //向GPIOC口写点亮LED的控制码
  22. //                        Delay(30);
  23. //                        LED>>=1;        //上一个控制码左移一位,获得下一个控制码
  24. //            }
  25. //            Delay(30);
  26. //        }
  27. //}

  28. void Delay(unsigned int count)                                                  //延时函数
  29. {
  30.         unsigned int i;
  31.         for(;count!=0;count--)
  32.         {
  33.                 i=5000;
  34.                 while(i--);
  35.         }      
  36. }


  37. int main(void){
  38.     LED_Init();         //初始化与LED连接的硬件接口
  39.     u8 LED=0X00;
  40.         while(1){
  41.                 for(u8 i=0;i<4;i++)
  42.                 {
  43.                         LED++;        //00000001   00000011
  44.                         GPIOC->BRR = LED;//pc0=0 PC1=0
  45.                         Delay(20);
  46.                         LED<<=1;//LED依次点亮        00000010
  47.                 }
  48.                 LED++;      
  49.                 GPIOC->BRR = LED;
  50.                 Delay(20);
  51.                 LED=0XF8;
  52.            // 逐一熄灭
  53.            for(u8 j=0;j<4;j++)
  54.            {
  55.                         GPIOC->BSRR=LED;        //向GPIOC口写点亮LED的控制码
  56.                         Delay(20);
  57.                         LED>>=1;        //上一个控制码左移一位,获得下一个控制码
  58.             }
  59.             Delay(20);
  60.         }
  61. }
复制代码

回复

使用道具 举报

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

本版积分规则