切换到宽版
爱科技/爱创意/爱折腾/爱极致;技术知识分享平台,点击进入新版数码之家网站
  • 10528阅读
  • 26回复

[照明]1W调光LED手电(带程序电路图) [复制链接]

上一主题 下一主题
离线752438771
 

发帖
246
M币
870
专家
3
粉丝
51
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2013-06-03
材料:
LED:1W暖白
芯片:STC15F104E、AMS1117-3.3、AMC7135
自锁开关一个、按键2个
18650锂电一节
内径18mm水管14CM
大功率LED基座一个,普通散热片一个
手电光碗一个、光碗保护镜片一片
废弃感光板一小块
工具若干...


经过坛友讨论,发现AMS1117-3.3是多余的....




简要介绍:当需要更新程序时或者单片机卡死才按下自锁开关关掉电源;两个按键,上面的按键用来开启单片机掉电模式(锂电充满电后4.2V,中途用过几分钟,省电模式下待机2天再测电池电压4.19V,掉电模式还是有点用的);下面的按键用来唤醒掉电模式兼调光;开关下面有五个很小的孔,其中有一个孔是误打,其余四个孔分别对应单片机GND/VCC/P3.0/P3.1(下程序),充电时只接VCC和GND即可


制作的时候太投入,忘了拍....手电内部只能根据这张图联想了


















四根线用来更新程序兼充电






下面是电路图,不过我是搭焊的




下面源程序,大家多指出一些错误的地方或者可以简化的地方
本来准备一个按键调光,另一个按键关手电以及拓展其他功能,但是实际写程序总是出错,有没有好建议解决




  1. #include<reg51.h>
  2. sbit   key1=P3^3;  //按键1
  3. sbit   key2=P3^4;  //按键2
  4. sbit   LED=P3^5;    //LED
  5. sfr AUXR  = 0x8E;    //定时器寄存器
  6. int A=2,PWM=100,PWMT,Delay200ms,Delay2ms;    //设置变量
  7. unsigned int D1,D2;
  8. void T0_ISR() interrupt 1        //定时器0中断函数
  9. {
  10.     TL0 = 0xD8;        //设置定时初值
  11.     TH0 = 0xFF;        //设置定时初值
  12.     PWMT++;
  13.     D1++;
  14.     D2++;
  15.     if(PWMT>=100)PWMT=0; //PWM输出方波周期100*10us
  16.     
  17.     if(D1>=4000)        //定时器延时
  18.     {
  19.     D1=0;
  20.     Delay200ms=1;
  21.     }
  22.     if(D2>=200)
  23.     {
  24.     D2=0;
  25.     Delay2ms=1;
  26.     }
  27.     
  28.         
  29. }
  30. void INT_1() interrupt 2         //外部中断1
  31. {
  32. PCON&=0xFD;          //唤醒掉电模式,单片机正常工作
  33. EX1=0;              //关外部中断
  34. }
  35. void Timer0Init()        //10微秒@6.000MHz
  36. {
  37.     AUXR &= 0x7F;        //定时器时钟12T模式
  38.     TMOD &= 0xF0;        //设置定时器模式
  39.     TL0 = 0xD8;        //设置定时初值
  40.     TH0 = 0xFF;        //设置定时初值
  41.     TF0 = 0;        //清除TF0标志
  42.     TR0 = 1;        //定时器0开始计时
  43.     ET0=1;
  44.     EA=1;
  45. }
  46. void main()
  47. {
  48.     Timer0Init();        //定时器0初始化
  49.     key1=1;
  50.     while(1)            //死循环
  51.     {
  52.     if(key1==0)            //按键1按下key1==0
  53.     {
  54.     
  55.     while(Delay200ms==1)        //消除抖动
  56.     {
  57.     Delay200ms=0;            //定时器延时标志位清0
  58.     
  59.     PWM-=20;                 //LED亮度减20%
  60.     if(PWM<=0)PWM=100;  //  灯亮度为0时变最亮
  61.     }
  62.     }    
  63.     
  64.     if(key2==0)               //开省电模式,单片机仅外部中断工作
  65.     {
  66.     while(Delay200ms==1)
  67.     {
  68.     Delay200ms=0;
  69.     IT1=1;               //外部中断1下降沿触发
  70.     EX1=1;               //开外部中断1
  71.     LED=0;
  72.     PCON=0x02;           //掉电模式开启
  73.     }
  74.     }
  75.     
  76.      if(C==0)
  77.     {
  78.     if(PWMT<PWM)LED=1;   //LED的PWM输出,PWM值越大亮度越高
  79.     if(PWMT>=PWM)LED=0;  //LED的PWM输出,PWM值越大亮度越高
  80.     
  81.     }
  82. /*    else if(C==1)        //这个本是用来玩呼吸灯的。。结果一按键多功能不好设置,老出问题,就放一边了
  83.     {
  84.      if((A==2)&&(Delay2ms==1))
  85.      {
  86.     Delay2ms=0;
  87.      PWM++;
  88.      if(PWM==100)A=1;
  89.      }
  90.      if((A==1)&&(Delay2ms==1))
  91.      {
  92.     Delay2ms=0;
  93.      PWM--;
  94.      if(PWM==0)A=2;
  95.      }
  96.     if(PWMT<PWM)LED=1;
  97.     if(PWMT>=PWM)LED=0;
  98.     }                        */
  99.     }
  100.     
  101. }














[ 此帖被752438771在2013-06-04 18:04重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共6条打赏M币+33
离线oscillator

发帖
3995
M币
948
专家
24
粉丝
112
只看该作者 1楼 发表于: 2013-06-03
请登录后查看
离线cjfsfe

发帖
18296
M币
18012
专家
2
粉丝
79
只看该作者 2楼 发表于: 2013-06-03
请登录后查看
离线752438771

发帖
246
M币
870
专家
3
粉丝
51
只看该作者 3楼 发表于: 2013-06-03
回 1楼(nick_raynor) 的帖子
请登录后查看
离线dyfmy

发帖
14045
M币
15005
专家
25
粉丝
184
只看该作者 4楼 发表于: 2013-06-03
请登录后查看
离线fdsuf4

发帖
2011
M币
2326
专家
1
粉丝
31
只看该作者 5楼 发表于: 2013-06-03
请登录后查看
本帖最近打赏记录:共1条打赏M币+4
离线82226838

发帖
1824
M币
1486
专家
0
粉丝
10
只看该作者 6楼 发表于: 2013-06-03
请登录后查看
离线752438771

发帖
246
M币
870
专家
3
粉丝
51
只看该作者 7楼 发表于: 2013-06-03
回 5楼(fdsuf4) 的帖子
请登录后查看
离线fdsuf4

发帖
2011
M币
2326
专家
1
粉丝
31
只看该作者 8楼 发表于: 2013-06-03
请登录后查看
离线752438771

发帖
246
M币
870
专家
3
粉丝
51
只看该作者 9楼 发表于: 2013-06-03
回 8楼(fdsuf4) 的帖子
请登录后查看
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个