找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3017|回复: 1
打印 上一主题 下一主题
收起左侧

基于stm32的LED控制程序、原理图、PCB

[复制链接]
跳转到指定楼层
楼主
使用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控制LED原理图

stm32控制LEDPCB2.png (238.76 KB, 下载次数: 127)

stm32控制LEDPCB-2D

stm32控制LEDPCB-2D

stm32控制LEDPCB3.png (250.43 KB, 下载次数: 118)

stm32控制LEDPCB-3D

stm32控制LEDPCB-3D

第一个LED亮度.jpg (2.84 MB, 下载次数: 119)

第一个LED亮度

第一个LED亮度

第二个LED亮度.jpg (2.91 MB, 下载次数: 130)

第二个LED亮度

第二个LED亮度

第三个LED亮度.jpg (2.57 MB, 下载次数: 117)

第三个LED亮度

第三个LED亮度

串口显示.png (38.23 KB, 下载次数: 129)

串口显示每次LED改变

串口显示每次LED改变

串口发送.png (47.73 KB, 下载次数: 114)

通过串口发送控制命令

通过串口发送控制命令

通过串口发送控制命令.jpg (2.75 MB, 下载次数: 109)

串口控制的LED信息显示

串口控制的LED信息显示

程序.rar

2.75 MB, 下载次数: 23, 下载积分: 黑币 -5

电路图.rar

2.78 MB, 下载次数: 27, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:914666 发表于 2022-2-9 10:01 | 只看该作者
51hei有你更精彩
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表