久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機單按鍵控制led臺燈

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年10月20日   【字體:

按鍵控制LED臺燈亮度 C語言方案
功能要求:單獨一個按鍵控制LED臺燈的亮度,上電默認關機,分5個檔位。
第一檔:100%亮度
第二檔:65%亮度
第三檔:35%亮度
第四檔:20%亮度
第五檔:10%亮度
第六檔:關機

思路:設定一個改變占空比的變量PWM,每按一次按鍵PWM值自加一次(自加值看需要定,比如PWM+=100),值越小產生的驅動脈沖頻率越高。PWM函數采用模擬方法產生,從成本上考慮,帶中斷,定時器等功能的單片機價格比較高。所以采用價格低廉的低檔單片機。鑒于仿真方便,本程序采用PIC16F505(當然也可以用12F508等芯片)。

端口連接:RC1—LED RC0----蜂鳴器 RC5----按鍵

程序代碼:
#include<pic.h>
__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;
}
}

}
 

關閉窗口

相關文章

主站蜘蛛池模板: 91精品久久久久久综合五月天 | 久久久久亚洲精品 | 亚洲午夜精品视频 | 国产你懂的在线观看 | 91一区二区三区在线观看 | 99热99| 亚洲黄色网址视频 | 亚洲午夜在线 | 国产a爽一区二区久久久 | 91精品国产一区二区在线观看 | 欧美成人精品激情在线观看 | 日韩欧美在线观看 | 日本精品久久久一区二区三区 | 99久久精品国产一区二区三区 | 欧美日韩亚洲二区 | 久青草影院 | 日韩国产在线观看 | 一区二区中文 | 天天舔天天 | 一区二区三区回区在观看免费视频 | 国产a区 | 婷婷成人在线 | 天天操天天插 | 国产精品国产成人国产三级 | 国产午夜一级 | 黄色大片观看 | 欧美电影免费观看 | 国产视频久久 | 国产成人精品a视频一区www | 成人在线观看亚洲 | 91精品国产欧美一区二区成人 | 国产精品二区三区 | 偷派自拍 | 成人在线不卡 | 祝你幸福电影在线观看 | 成人在线观看免费 | 成人日韩精品 | 奇米四色在线观看 | 一区二区三区四区免费观看 | 国产做a爱免费视频 | 国产一区二区三区四区在线观看 |