亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
關于PWM控制LED燈的程序,有幾個問題不懂
[打印本頁]
作者:
wulingjie
時間:
2018-5-3 22:56
標題:
關于PWM控制LED燈的程序,有幾個問題不懂
單片機小白,網上找的程序,有幾點問題不懂,希望大神解答:這段程序中a的值是多少,為什么最小亮度設置是1,最大是100,而總等級數是101,這應該怎么理解,不應該是100嗎。萬分感謝。
單片機源碼:
#include <REG51.h>//51頭文件
/****************************************************************/
//定義亮度變化
#define DY_PORT P2 //設置LED連接的I/O組
#define DY_PWM 101 //設置明亮的總級數(級數過大會出現閃爍)
(值域:0~65535)
#define DY_MAX 100 //設置最大亮度(值域:小于明亮總級數)
#define DY_MIN 1 //設置最小亮度(值域:明亮大于等于1,小于最大亮度)
sbit DY_KEY1 = P1 ^ 0; //亮度加
sbit DY_KEY2 = P1 ^ 1; //亮度減
/****************************************************************/
// 1ms延時程序(12MHz 10倍于51單片機速度時)
void delay (unsigned inta){
unsigned char i;
while( --a != 0){
for(i = 0; i < 12; i++);
}
}
/****************************************************************/
//顯示程序(50ms的PWM寬度)
void display (unsignedint a){
DY_PORT = 0x00; //LED小燈亮
delay (a); //延時a的長度
DY_PORT = 0xff; //LED小燈滅
delay (DY_PWM-a); //延時總PWM長度減a
}
/****************************************************************/
//主程序
void main (void){
unsigned int k=5;
while (1){
display(k); //
if(DY_KEY1 == 0){ //如果按鍵按下則繼續
delay(20); //消抖延時20mS
if(DY_KEY1 == 0){ //如果按鍵按下則繼續
k++;
if(k>DY_MAX){
k = DY_MAX;
}
while(DY_KEY1 == 0); //等待按鍵松開
}
}
if(DY_KEY2 == 0){ //如果按鍵按下則繼續
delay(20); //消抖延時20mS
if(DY_KEY2 == 0){ //如果按鍵按下則繼續
k--;
if(k<DY_MIN){
k = DY_MIN;
}
while(DY_KEY2 == 0); //等待按鍵松開
}
}
}
}
復制代碼
作者:
st5ltn
時間:
2018-5-4 08:59
這個和他的程序處理方式有關, delay (DY_PWM-a); 是為了保證DY_PWM-a>0;你在仔細看看delay函數的寫法,參數的如果等于0會有問題。
作者:
余暉
時間:
2018-5-4 09:32
本帖最后由 余暉 于 2018-5-4 09:35 編輯
a為一個形參,你可以理解為一個參數,初始值由main中指令unsigned int k=5;得出k=5,由指令
display(k);將k傳遞給a;
作者:
余暉
時間:
2018-5-4 09:33
由這條指令 display(k);將k值傳遞給a
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1