久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于STC15W408AS的LED小臺燈
[打印本頁]
作者:
森森小公主
時間:
2018-9-7 21:16
標題:
基于STC15W408AS的LED小臺燈
電路為BUCK型,所有LED串電阻后并聯。
LED為5730的暖白與白色兩種,暖白6只,白色的4只。
電位器調節LED亮度,電位器的ADC值直接賦予PWM的比較值。
逆時針旋到底為關機狀態,此時單片機工作于掉電模式,用
掉電喚醒專用定時器喚醒,電流約5uA。
電位器順時針旋轉一定角度后,單片機工作于空閑模式,由T0定時
喚醒,單片機電流約3.7mA。
由于國LED比較刺眼,最后在LED上蒙了兩層衛生紙,用封口膠給粘上的。
燈與底座之間采用USB接口連接,這樣的好處是燈可以插到USB充電
器上單獨使用。
核心代碼:
while(1)
{
POT_L;//使能電位器
delayus(1);
v=adc_read8(2);
//CCAP1H=v;
POT_H;//關閉電位器
if((v<10)&&(CCAP1H<11))//關機
{
CCAP1H=0;
CCAPM1=0;//關PWM
n++;
if(n>=5)//每5秒閃一次,便于夜間尋找
{
n=0;
IOCLR(P1,BIT(0));
IOSET(P1,BIT(0));
}
PCON=0X02;//掉電
_nop_();
_nop_();
}
else//不關機
{
CCAP1H=((U16)CCAP1H*9+v)/10;//亮度漸變
CCAPM1=BIT(6)|BIT(1);
PCON=0x01;//空閑
_nop_();
_nop_();
}
}
--------------------------
11.1317:更新PCB,因為原PCB中LED模塊敷銅距離太近。
12.0922:
程序中原PWM時鐘為FOSC/2,PWM頻率約22KHz,現已將PWM時鐘改為FOSC,PWM頻率約43KHz。
電路中增加AP5056充電芯片,USB輸出增加1uf電容,如無此電容,電流會有較大鋸齒。
C7=1uf時,輸出串1歐取樣電阻測得的波形:
C7=10uf時,輸出串1歐取樣電阻測得的波形:
問: 這是BUCK電路電壓調光啊。不算PWM調光
答:
我的PWM占空比是跟隨電位器的,電位器不動,占空比就不變,怎么不算PWM調光?
LED通電后,它的電壓是基本不變的,特性類似于穩壓二極管。
所以當Q4導通時,電感上的電壓也基本不變,電流呈線性上升,所以占空比越大時,平均電流也越大。
所以LED的平均電流與PWM占空基本是呈線性的,應當稱之為“電流調光”
單片機源程序如下:
/*--------------------------------------------------
電位器調節LED亮度
逆時針旋到底為關機狀態,此時單片機工作于掉電模式,用
掉電喚醒專用定時器喚醒,電流約5uA。
電位器旋轉一定角度后,單片機工作于空閑模式,由T0定時
喚醒,單片機電流約3.7mA
//--------------------------------------------------*/
#include <INTRINS.H>
#include "STC15F2K60S2.H"
#include "MAIN.H"
#include "uart-15.C"
#include "stcadc.c"
//--------------------------------------------------
//定義
//--------------------------------------------------
//最大PWM
#define MAXPWM 230
//電位器使能
#define POT_L IOCLR(P1,BIT(1))
#define POT_H IOSET(P1,BIT(1))
//--------------------------------------------------
//毫秒級延時
//--------------------------------------------------
void delayms(U16 t)
{
U16 i;
for(;t>0;t--)
for(i=FOSC/13186;i>0;i--);
}
//--------------------------------------------------
//微秒級延時
//--------------------------------------------------
void delayus(U16 t)//72=200us
{
while(t--);
}
//--------------------------------------------------
//T0中斷:
//每次+-1更新PWM值,處理啟動與停機
//--------------------------------------------------
void timer0_isr(void) interrupt 1
{
}
//--------------------------------------------------
//掉電喚醒定時器
//t*488us
//--------------------------------------------------
void wkt_init(U16 t)
{
WKTCL=t;
WKTCH=BIT(7)|(t>>8);
}
//--------------------------------------------------
//PCA初始化
//--------------------------------------------------
void pca_init(void)
{
CMOD=4<<1;//FOSC
//CMOD=1<<1;//FOSC/2
CCAPM1=BIT(6)|BIT(1);//8位PWM
CCAP1H=0X80;
//P_SW1=0<<4;//切換CCP到P1
//P_SW1=1<<4;//切換CCP到P3
CR=1;
}
//--------------------------------------------------
//T0初始化
//--------------------------------------------------
void timer0_init(U16 f)
{
U16 v;
TMOD&=0xf0;
TMOD|=0X00; //T0方式0,16位自動重裝
v=65536-(FOSC/12/f);
TH0=v>>8;
TL0=v;
ET0=1;
TR0=1;
}
//--------------------------------------------------
//端口初始化
//--------------------------------------------------
void io_init(void)
{
P0=0XFF;
P1=0XFF;
P2=0XFF;
P3=0XFF;
P1M1=BIT(2)|BIT(3)|BIT(4);//AD測電位器、充電電壓
//IOCLR(P1,BIT(1));//P1.1光纖接收使能
//P3M1=0xff;
//P2M1=BIT(5);
//M0,M1:00:準雙向口,01:推挽,10:僅輸入,11:開漏
//注意:5A60S2的M0,M1是相反的
}
//--------------------------------------------------
//所有設置初始化
//--------------------------------------------------
void init_devices(void)
{
io_init();
uart1_init(9600,1);//關中斷
timer0_init(20);
pca_init();
wkt_init(2000);
//cmp_init();
//uart2_init(1600,0);//19200/12=1600,關中斷
//IOSET(AUXR,BIT(2));//BRTx12,讓獨立波特率變為原來的12倍(uart2)
//uart3_init(2400,1);//2400
//IOSET(AUXR,BIT(7));//T0x12,讓T0的時鐘變為原來的12倍,波特率也提高了(模擬串口)
// IP=0X02;//優先級控制(T0為最高優先級):D4:PS,D3:PT1,D2:PX1,D1:PT0,D0:PX0,
EA=1;
}
//--------------------------------------------------
//主函數
//--------------------------------------------------
void main(void)
{
U8 v,n;
//S16 e;
init_devices();
while(1)
{
POT_L;
delayus(1);
v=adc_read8(2);
//CCAP1H=v;
POT_H;
if((v<10)&&(CCAP1H<11))//關機
{
CCAP1H=0;
CCAPM1=0;
n++;
if(n>=5)//每5秒閃一次,便于夜間尋找
{
n=0;
IOCLR(P1,BIT(0));
delayus(2);
IOSET(P1,BIT(0));
}
PCON=0X02;//
_nop_();
_nop_();
}
else//不關機
{
//if(v>MAXPWM)v=MAXPWM;
//CCAP1H=v;
/*e=(U16)v-CCAP1H;
if(e<-10)e=-10;
if(e>10)e=10;
CCAP1H+=e;*/
CCAP1H=((U16)CCAP1H*9+v)/10;
CCAPM1=BIT(6)|BIT(1);
PCON=0x01;
_nop_();
_nop_();
}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
1.1電路及程序.rar
(958.86 KB, 下載次數: 123)
2018-9-7 22:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
LED臺燈電路及程序.rar
(935.5 KB, 下載次數: 131)
2018-9-7 22:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
caijinfa
時間:
2018-9-12 10:58
很好的程序,馬上下載來實驗下。
作者:
新佳影
時間:
2018-12-6 02:11
謝謝先,正找這個用電位器來調光的,但是電路中如果有增加一個電位器來調色溫就好
作者:
騰飛的龍
時間:
2019-3-30 16:46
g感謝分享學習啦!!!!
作者:
rong2017
時間:
2019-5-17 20:54
感謝分享
作者:
DanMg
時間:
2019-10-26 09:58
感謝分享
作者:
秋風涼
時間:
2019-11-3 12:30
這個程序的掉電時間 是怎么算的?
作者:
道洲
時間:
2019-11-13 16:46
感謝分享學習啦
作者:
道洲
時間:
2019-11-13 16:50
謝謝你,學習了
作者:
xiexugang
時間:
2020-1-3 10:34
這個程序挺實用,下來試試.謝謝樓主分享
作者:
zxule
時間:
2020-1-4 08:06
哇塞,樓主電路板怎么做的,怎么這么好,像工廠打樣的一樣
作者:
YKD1121
時間:
2020-7-29 23:25
請問這個電位器 用多大阻值的 謝謝
作者:
ty417502873
時間:
2020-8-3 03:05
這個PCB是用雕刻機雕的嗎?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久大陆
|
精品一区二区三区不卡
|
99久久久久久99国产精品免
|
国产91视频免费
|
欧美性视频在线播放
|
av毛片
|
视频在线日韩
|
亚洲精品一区二区三区中文字幕
|
黄色三级免费
|
欧美电影一区
|
久久1区
|
欧美日韩三级在线观看
|
国产日韩精品一区二区三区
|
毛片一级片
|
久久久久久久久精
|
毛片区
|
欧美高清视频一区
|
亚洲欧美国产精品久久
|
免费在线观看毛片
|
日韩精品免费视频
|
日韩欧美视频免费在线观看
|
精品国产欧美一区二区三区成人
|
曰韩三级
|
亚洲+变态+欧美+另类+精品
|
在线免费看91
|
亚洲成人一区二区
|
欧美精品一区二区三区四区 在线
|
一区二区在线观看av
|
亚洲福利
|
一区二区三区国产好
|
久久久人成影片免费观看
|
久久精品久久久久久
|
久久久久亚洲
|
精品国产一区二区三区久久久久久
|
国产91亚洲精品
|
久久大香
|
剑来高清在线观看
|
中文字幕不卡在线88
|
欧美一区二区三区久久精品
|
爱爱免费视频网站
|
黄色av观看
|