电路原理图如下:
单片机源程序如下:
- #include "led.h"
- void Delay(unsigned int count); //延时函数
- //int main(void)
- //{
- //
- // LED_Init(); //初始化与LED连接的硬件接口
- // while(1)
- // {
- // u32 LED=0x00000001;//设置初始控制码
- // //逐一点亮
- // for(u8 i=0;i<4;i++)
- // {
- // GPIOC->ODR&=~LED; //向GPIOC口写点亮LED的控制码
- // Delay(30);
- // LED<<=1; //上一个控制码左移一位,获得下一个控制码
- // }
- // Delay(30);
- // LED>>=1;
- // // 逐一熄灭
- // for(u8 j=0;j<4;j++)
- // {
- // GPIOC->ODR|=LED; //向GPIOC口写点亮LED的控制码
- // Delay(30);
- // LED>>=1; //上一个控制码左移一位,获得下一个控制码
- // }
- // Delay(30);
- // }
- //}
- void Delay(unsigned int count) //延时函数
- {
- unsigned int i;
- for(;count!=0;count--)
- {
- i=5000;
- while(i--);
- }
- }
- int main(void){
- LED_Init(); //初始化与LED连接的硬件接口
- u8 LED=0X00;
- while(1){
- for(u8 i=0;i<4;i++)
- {
- LED++; //00000001 00000011
- GPIOC->BRR = LED;//pc0=0 PC1=0
- Delay(20);
- LED<<=1;//LED依次点亮 00000010
- }
- LED++;
- GPIOC->BRR = LED;
- Delay(20);
- LED=0XF8;
- // 逐一熄灭
- for(u8 j=0;j<4;j++)
- {
- GPIOC->BSRR=LED; //向GPIOC口写点亮LED的控制码
- Delay(20);
- LED>>=1; //上一个控制码左移一位,获得下一个控制码
- }
- Delay(20);
- }
- }
复制代码
Keil代码与Proteus8.8仿真下载:
LED4.7z
(191.99 KB, 下载次数: 49)
|