|
使用stm32控制8个LED的亮度,并通过四位数码管显示输出的PWM(控制亮度)和相应被编辑的位数,通过四个按键选择和编辑,按键1,2左右切换选择LED灯,按键3,4上下改变PWM数值(亮度),并且可以通过串口发送和接收。
按键1,2可以左右切换编辑哪一个LED的亮度,按键3,4可以上下调节PWM的值,相关信息会通过数码管显示,而且相应信息也会发送到串口,也可以通过串口发送控制命令控制某一位的亮度
由于这个项目是帮别人做的,我虽然画了PCB,但并没有打板,只使用最小系统通过杜邦线连接对应的IO做了测试。但PCB可用。
控制主要程序
void Key_Control(void)
{
if(key2_Fallingflag&&key2_Risingflag)
{
key2_Fallingflag=0;
key2_Risingflag=0;
if(LED_Num<8)
{
key_flag=1;
LED_Num++;
}
}
else if(key3_Fallingflag&&key3_Risingflag)
{
key3_Fallingflag=0;
key3_Risingflag=0;
if(LED_Num>0)
{
key_flag=1;
LED_Num--;
}
}
else if(key0_Fallingflag&&key0_Risingflag)
{
key0_Fallingflag=0;
key0_Risingflag=0;
if(key_flag)
{
switch(LED_Num-1)
{
case 0:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
case 1:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
case 2:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
case 3:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
case 4:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
case 5:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
case 6:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
case 7:if(PWM_OUT[LED_Num-1]<60) PWM_OUT[LED_Num-1]+=10;break;
default:break;
}
}
}
else if(key1_Fallingflag&&key1_Risingflag)
{
key1_Fallingflag=0;
key1_Risingflag=0;
if(key_flag)
{
switch(LED_Num-1)
{
case 0:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
case 1:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
case 2:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
case 3:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
case 4:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
case 5:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
case 6:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
case 7:if(PWM_OUT[LED_Num-1]>0) PWM_OUT[LED_Num-1]-=10;break;
default:break;
}
}
}
else if(USART_Flag)
{
USART_Flag=0;
if(USART_RX_TEMP[3]!='0' && (u8)(USART_RX_TEMP[3]-'0')<=8)
{
LED_Num=(u8)(USART_RX_TEMP[3]-'0');
if((u8)(USART_RX_TEMP[0]-'0')<=6)
{
key_flag=1;
PWM_OUT[LED_Num-1]=((u8)(USART_RX_TEMP[0]-'0')*10+(u8)(USART_RX_TEMP[1]-'0'));
}
}
}
}
|
-
stm32控制LED原理图.png
(243.02 KB, 下载次数: 139)
stm32控制LED原理图
-
stm32控制LEDPCB2.png
(238.76 KB, 下载次数: 127)
stm32控制LEDPCB-2D
-
stm32控制LEDPCB3.png
(250.43 KB, 下载次数: 118)
stm32控制LEDPCB-3D
-
第一个LED亮度.jpg
(2.84 MB, 下载次数: 119)
第一个LED亮度
-
第二个LED亮度.jpg
(2.91 MB, 下载次数: 130)
第二个LED亮度
-
第三个LED亮度.jpg
(2.57 MB, 下载次数: 117)
第三个LED亮度
-
串口显示.png
(38.23 KB, 下载次数: 129)
串口显示每次LED改变
-
串口发送.png
(47.73 KB, 下载次数: 114)
通过串口发送控制命令
-
通过串口发送控制命令.jpg
(2.75 MB, 下载次数: 109)
串口控制的LED信息显示
-
-
程序.rar
2.75 MB, 下载次数: 23, 下载积分: 黑币 -5
-
-
电路图.rar
2.78 MB, 下载次数: 27, 下载积分: 黑币 -5
|