一直想打造一個自己的調(diào)光臺燈,于是動手焊接硬件,編寫自己的單片程序,經(jīng)過調(diào)試初步達(dá)到要求,沒有條件打板,自己用萬能板焊接的電路,用來控制12V的長條LED實(shí)際效果還行! 主要功能: 1、 關(guān)機(jī)時短按一次開燈,亮度為關(guān)機(jī)時的檔位,開機(jī)時長按三秒關(guān)燈,關(guān)燈時為漸滅燈的效果; 2、 開機(jī)時單按為亮度檔位切換,分為1,2,3檔; 3、 開機(jī)時連按三次按鍵,可進(jìn)入當(dāng)前檔位的亮度PWM值設(shè)定,此時led閃爍,單擊按鍵為亮度增加,雙擊按鍵為亮度減小,長按則快速增加亮度(類似呼吸燈的效果),再次三擊為保存PWM值退出亮度設(shè)置; 4、 可以分別對三個檔位的PWM亮度值進(jìn)行設(shè)定,以適合不同的LED組合; 5、 增加了7805穩(wěn)壓,輸入電壓為6~30V; 6、 TIP31加散熱片后電子負(fù)載測試電流800mA有微熱,基本可滿足常用臺燈的要求;
線路圖:
測試效果:
如下程序主要體現(xiàn)為PWM調(diào)光的部分,按鍵功能部分請參考我的另一個貼子: PIC單片機(jī)單個按鍵實(shí)現(xiàn)多功能:長按、短按次數(shù)識別程序
單片機(jī)源程序如下:
//------------------------------------------------------------------------------------------------------------ void IRQ_init(void)//定時A和外部中斷1初始化 { GIE=0; //關(guān)總中斷 //RBIE=0; //RB口電平變化中斷禁止 //---------CPU頻率配置------- //IRCF<2:0>:內(nèi)部振蕩器頻率選擇位 IRCF2= 1 ; IRCF1= 1 ; IRCF0= 1 ; //000 = 31 kHz //001 = 125 kHz //010 = 250 kHz //011 = 500 kHz //100 = 1 MHz //101 = 2 MHz //110 = 4 MHz (缺省值) //111 = 8 MHz RABPU=0; //AB口上拉起動 WPUA0=1; WPUA1=1; //WPUA4=1; //WPUA5=1; WPUA2=1; //-------定時器time0的配置----- T0IF=0; //清中斷標(biāo)志 T0IE=1; //允許Time0中斷 TMR0=61; //256-61 T0CS=0; //Time0選擇內(nèi)部時鐘 T0SE=0; //外部電平低至高變化遞增 PSA =0; //預(yù)分頻給Time0 PS2 =1; //111為1:256分頻 PS1 =0; PS0 =1; //PS<2:0>:預(yù)分頻器比選擇位 //000 1 : 2 //001 1 : 4 //010 1 : 8 //011 1 : 16 //100 1 : 32 //101 1 : 64 //110 1 : 128 //111 1 : 256 //---------------------------- PEIE=1; //允許外圍中斷 GIE=1; //開總中斷 }
|