您的位置 首页 发布

单片机单按键操控led台灯

按键控制LED台灯亮度C语言方案功能要求:单独一个按键控制LED台灯的亮度,上电默认关机,分5个档位。第一档:100%亮度第二档:65%亮度第

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

功用要求:独自一个按键操控LED台灯的亮度,上电默许关机,分5个档位。
榜首档:100%亮度
第二档:65%亮度
第三档:35%亮度
第四档:20%亮度
第五档:10%亮度
第六档:关机

思路:设定一个改动占空比的变量PWM,每按一次按键PWM值自加一次(自加值看需求定,比方PWM+=100),值越小发生的驱动脉冲频率越高。PWM函数选用模仿办法发生,从本钱上考虑,带中止,定时器等功用的单片机价格比较高。所以选用价格低廉的等级低单片机。鉴于仿真便利,本程序选用PIC16F505(当然也可以用12F508等芯片)。

端口衔接:RC1—LED RC0—-蜂鸣器 RC5—-按键

程序代码:
#include__CONFIG(0X034);
#define uchar unsigned char
#define uint unsigned int

#define uchar unsigned char
#define uint unsigned int
uint PWM, H,L;

void delay(uint x)//恣意时刻延时函数
{
uint c,d;
for(c=x;c>0;c–)
for(d=110;d>0;d–);

}

void KEY1()//按键扫描函数,按压有用(非松手有用),而且不影响LED点亮作用,都可以用此类扫描函数
{
static bit valid=0;
static bit finish=0;

if(valid==0)
{
if(RC5==0)
{
if(finish==0)
{
finish=1;

RC0=1;
delay(10);
RC0=0;//蜂鸣器,每按一下响一声
RC1=0;//此句子非常重要,假如不加这句,到最等级低的时分,不能关机而直接进入最高级。

PWM+=100; //按键有用,PWM添加100

}
}
else
{
valid=0;
finish=0;
}
}
else
{
if(RC5==0)valid=1;
}
}

void LED_ON()//模仿PWM函数,算法简略直观,经过改动PWM值去改动LED点亮和平息的时刻的距离到达调光的意图。
{

H=PWM;
L=500-H;

RC1=0;
while(H–);
RC1=1;
while(L–);

}
void main()
{
PORTC=0X00;
TRISC=0X10;
PWM=0;

while(1)//用此句子到达上电关机(LED平息状况),当有按键按下的时分,break句子跳出while循环
{
RC1=0;
if(RC5==0)break;
}

while(1)
{
KEY1();//按键扫描,此函数将改动PWM的值
If(PWM<500)//只需PWM值小于500,每按下一次,都会履行LED_ON()函数,且每次的PWM值都以100的倍数添加,到达调光意图。
{
LED_ON();
}
If(PWM>500)//假如大于500则把PWM清零,且LED关机。
{
PWM=0;
RC1=0;
}
}

}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部