OpenEdv-开源电子网

标题: 分享:mini板子通过串口控制PWM输出不同等级的亮度 [打印本页]

作者: 1208    时间: 2018-7-17 20:48
标题: 分享:mini板子通过串口控制PWM输出不同等级的亮度
本帖最后由 1208 于 2019-7-30 11:29 编辑

本实验通过串口输入数字0到9,PWM就会输出相应等级的亮度
通过占空比的输出TIM_SetCompare1(TIM1,count)来达到灯的不同亮度
而这个count的值,可以通过串口接到ASCII数值进行转换的 count=USART_RX_BUF[0]-'0';
从而实现PWM就会输出相应等级的亮度
[mw_shl_code=c,true]int main(void)
{
     int count;   
    delay_init();                                                         //延时函数初始化
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   // 设置中断优先级分组2   
    uart_init(9600);                             //串口初始化为9600
    LED_Init();                                   //初始化与LED连接的硬件接口   推挽输出
    TIM1_PWM_Init(100-1,7200-1);     //复用输出,不能将复用输出放在推挽输出前面,否则会将其覆盖掉      
                                                      //72M/(100*7200)=100HZ
    printf("选择1-9亮度等级\r\n");      
while(1)
{
         
//      while(!(USART_RX_STA&0x8000))         // 当USART_RX_STA置0时,!0=1,就进入死循环,灯变得最亮
//      while(USART_RX_STA&0x8000)             // 当USART_RX_STA置1时,则完成接收,不会进入死循环
        if(USART_RX_STA&0x8000)               // 如果USART_RX_STA置1时,则接收完成
        {         
            count=USART_RX_BUF[0]-'0';          //ASCII码转换,"0"在16进制里面代表30,字符转成数字
           TIM_SetCompare1(TIM1,count);       //占空比输出
            USART_RX_STA=0;                   //清除状态位
            printf("亮度等级%d\r\n",count);         
        }
}  
}[/mw_shl_code]
将学到的东西分享给初学者,希望能有所感悟!

作者: 1208    时间: 2019-1-22 12:27
mini板子通过按键调节PWM的占空比控制LED灯的亮度,KEY0减少占空比,KEY1增加占空比
按键的可以参考这个帖子
https://www.openedv.com/forum.php ... d=274844&extra=
作者: 秋天    时间: 2019-1-22 13:59
谢谢分享




欢迎光临 OpenEdv-开源电子网 (https://www.openedv.com/) Powered by Discuz! X3.4