您的位置 首页 硬件

双键无极LED调光台灯

双按键控制LED台灯亮度C方案功能要求:上电LED不亮,按着1键,LED从最暗达到最亮,并且附加状态指示灯,达到最亮时候,指示灯点亮,说明主

双按键操控LED台灯亮度C计划

功用要求:上电LED不亮,按着1键,LED从最暗到达最亮,而且附加状况指示灯,到达最亮时分,指示灯点亮,说明主灯现已到达最亮。按着2键,主灯LED将一向变暗到灭掉。

思路:设定变量PWM,经过按键来改动PWM的值,再结构与PWM相关的模仿PWM函数,经过PWM的值去调节脉宽,到达调光意图。

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

程序代码:

#include

__CONFIG(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句子

{

if(RC4==0)

break;

}

}

}

}

}

void main()//主程序

{

RC0=0;

RC3=0;

TRISC=0b00110000;

while(1)

{

while(1)//检测开机键,也便是添加键是否按下,而且LED主灯,在没有键下的情况下是不会亮的

{

RC0=0;

if(RC4==0)

break;

}

while(1)

{

LED_ON()//模仿PWM函数

scan1();//加键扫描

scan2();//减键扫描

}

}

}

涉及到按键无极调光的,一定要采纳“按下有用”的办法去扫描按键,不需要松手检测。

使用

while

If(表达式1)

Break;

)结构设定各种循环检测.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/318323.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部