|
使用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)
下載附件
2022-1-25 05:50 上傳
stm32控制LED原理圖
-
stm32控制LEDPCB2.png
(238.76 KB, 下載次數: 127)
下載附件
2022-1-25 05:50 上傳
stm32控制LEDPCB-2D
-
stm32控制LEDPCB3.png
(250.43 KB, 下載次數: 118)
下載附件
2022-1-25 05:52 上傳
stm32控制LEDPCB-3D
-
第一個LED亮度.jpg
(2.84 MB, 下載次數: 119)
下載附件
2022-1-25 05:52 上傳
第一個LED亮度
-
第二個LED亮度.jpg
(2.91 MB, 下載次數: 130)
下載附件
2022-1-25 05:53 上傳
第二個LED亮度
-
第三個LED亮度.jpg
(2.57 MB, 下載次數: 117)
下載附件
2022-1-25 05:53 上傳
第三個LED亮度
-
串口顯示.png
(38.23 KB, 下載次數: 129)
下載附件
2022-1-25 05:53 上傳
串口顯示每次LED改變
-
串口發送.png
(47.73 KB, 下載次數: 114)
下載附件
2022-1-25 05:54 上傳
通過串口發送控制命令
-
通過串口發送控制命令.jpg
(2.75 MB, 下載次數: 109)
下載附件
2022-1-25 05:55 上傳
串口控制的LED信息顯示
-
-
程序.rar
2022-1-25 05:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.75 MB, 下載次數: 23, 下載積分: 黑幣 -5
-
-
電路圖.rar
2022-1-25 05:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.78 MB, 下載次數: 27, 下載積分: 黑幣 -5
|