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