【Energia开发环境】MSP430 LAUNCHPAD学习笔记4--PWM实现简单呼吸灯 材料: l MSP430 LAUNCHPAD x 1 l 发光二极管 x 1 实验目的:通过单片机输出PWM控制占空比,让MSP430 LAUNCHPAD控制发光二极管缓慢熄灭,缓慢变亮。 什么是PWM?占空比? 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,常用于灯光亮度、马达控制...等等。占空比为方波高电平时间跟周期的比例叫占空比,例如1秒高电平1秒低电平的PWM波占空比是50%,下图形象的展示了波形示意图: 下面我们来连线:通过P1.4输出PWM波形来控制发光二极管亮灭程度 源程序: /****************************************************************** PWM control 【Energia开发环境】MSP430 LAUNCHPAD学习笔记4--简单呼吸灯 Autor: qinkaiabc ********************************************************************/ int brightness = 0;//此变量用来表示LED的亮度。 int baseTime = 2000;//定义运行周期 //定义布尔值0-1,用以控制亮或灭,以及占空比 boolean LED_on = HIGH, count_up = false, time_add = false; void delay_count_fun(boolean ); void setup() { // 定义P1.4引脚为输出 pinMode(P1_4, OUTPUT); } void loop() { /*brightness 等于 0 或是等于定义的周期时就程序反向运行, *意思是原先亮的变成灭,原先占空比增大就变为减小*/ if(brightness == 0 || brightness == baseTime) { LED_on = !LED_on; // 工作反向 :亮或灭 count_up = !count_up; // 计数增还是减 time_add = !time_add; // 占空比增大还是减少 } digitalWrite(P1_4, !LED_on); Duty_Cycle(time_add);//占空比控制 digitalWrite(P1_4, LED_on);//占空比控制 Duty_Cycle(!time_add); //计数判断 if(count_up) brightness++; else brightness--; } // 占空比增大还是减少判断 void Duty_Cycle(boolean up) { if(up) // 占空比增大还是减少 delayMicroseconds(baseTime - brightness + 1); else delayMicroseconds(brightness + 1);// 占空比增大 } 其中你可以更改baseTime(周期)的值,看看会有什么变化。 delayMicroseconds()
其作用是产生一个延时,计量单位是微秒,1000微秒=1毫秒。 By qinkaiabc
【Energia开发环境】MSP430 LAUNCHPAD学习笔记4--简单呼吸灯 2.pdf
(173.78 KB, 下载次数: 81)
|