资讯详情

双键无极LED调光台灯

双按键控制LED台灯亮度C方案

功能要求:上电LED不亮,按着1键,LED从最暗达到最亮,并且附加状态指示灯,达到最亮时候,指示灯点亮,说明主灯已经达到最亮。按着2键,主灯LED将一直变暗到灭掉。

思路:设定变量PWM,通过按键来改变PWM的值,再构造与PWM相关的模拟PWM函数,通过PWM的值去调节脉宽,达到调光目的。

端口连接:RC0—LED RC4----按键1 RC5----按键2 RC3为最大亮度指示灯

程序代码:

#include<pic.h>

__CFIG(0X034);

#define uchar unsigned char

#define uint unsigned int

unsigned int PWM,H,L;

void delay(unsigned int b)

{

unsigned char i;

while(b--)

{

for(i=0; i<2; i++);

}

}

void LED_ON()//模拟PWM函数 {

H=PWM; L=500-H; RC0=1; while(H--); RC0=0; while(L--);

}

void scan1()//加键扫描

{

if(RC4==0)

{

delay(50);

if(RC4==0)

{

PWM++;

if(PWM>499)

{

PWM=499;

while(1)//

{

RC0=1;

RC3=1;

if(RC5==0)// 一直检测减按键是否按下,有键按下则跳出循环while语句

break;

}

}

}

}

}

void scan2()//减键扫描

{

RC3=0;

if(RC5==0)

{

delay(50);

if(RC5==0)

{

PWM--;

if(PWM<1)

{

PWM=1;

RC0=0;

while(1)//一直检测其加键是否按下,有按下则跳出while

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台