|
頻率370Hz,用手機(jī)攝像頭看,沒(méi)有頻閃
仿真LED會(huì)閃爍,主要看波形;實(shí)物不會(huì)閃爍,很穩(wěn)定;代碼簡(jiǎn)短
有完整代碼如下- /***********************************************************************/
- /***功能:按鍵控制PWM對(duì)LED燈調(diào)光,短按開(kāi)關(guān),長(zhǎng)按調(diào)光 亮---暗 ----亮 循環(huán) ***********/
- /***改變j的值就改變了占空比,初值50% */
- /*** STC89C52 @ 12MHz */
- /***********************************************************************/
- #include<reg52.h>
- typedef unsigned char U8;
- typedef unsigned int U16;
- /*---------------------------------------------------------------------*/
- /*-- 端口定義 ---------------------------------------*/
- /*---------------------------------------------------------------------*/
- #define PORT_1 P1
- sbit KEY1 = P3^0;
- U8 j,knum,temp=127;
- /*----------按鍵掃描--------------------*/
- void keyscan()
- {
- static U16 x; //消抖延時(shí)變量
-
- if(KEY1==0) //
- {
- x++; //按鍵消抖
- if(x>500) //長(zhǎng)按亮度調(diào)節(jié)
- { knum=0;
-
- if(knum==0)
- {
- if(j<251)
- j+=5;
- else
- j=3; //寫(xiě)j=3;加到最大亮度后回到最小亮度,又開(kāi)始加,如此循環(huán)
- temp=j;
- }
- x=450;
- }
-
- }
- else
- {
- if(x>50 && x<500) //短按 開(kāi)關(guān)燈
- {
- x=0;
- if(knum==1)
- {
- if(j>3)
- { j=0;} //關(guān)燈
- else j=temp; //開(kāi)燈,保持前次設(shè)置的亮度
- }
- knum ++;
- if(knum>1)
- knum=1;
- }
- }
- }
- /*---------------------------------------------------------------------*/
- /*-- 主程序 ---------------------------------------*/
- /*---------------------------------------------------------------------*/
- void main()
- {
- U8 i;
- PORT_1=0Xff;
- j=127; //改變j的值就改變了占空比,初值50%
- while(1)
- {
- for(i=255;i>0;i--)
- // PORT_1=(j<i)?0x00:0xff; //三目運(yùn)算 這句用在拉電流
- PORT_1=(j<i)?0xff:0x00; //這句用在灌電流
- keyscan();
- }
- }
- /*---------------------------------------------------------------------*/
- /*-- 程序結(jié)束 ---------------------------------------*/
- /*---------------------------------------------------------------------*/
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|