手电大家谈-手电筒爱好者之家

 找回密码
 注册成为会员,享受更多功能。

QQ登录

只需一步,快速开始

只需一步,快速开始

搜索
查看: 22440|回复: 58

无极调光试验程序

[复制链接]
  • TA的每日心情
    开心
    2014-8-28 01:37
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    发表于 2008-2-12 00:07 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有账号?注册成为会员,享受更多功能。

    x
    无极调光试验程序
        单片机采用PIC12F683,这个单片机内部有硬件CCP单元,可以配置成PWM模式。为什么要用这个单片机,而不用别的型号,一来对PIC比较熟悉,二来买的到且不算贵。
        12F683跟12F628一样,有SO-8封装的帖片,体积一样。设计IC的2、3脚分别对地接一个开关,2脚开关按下后,占空比增加,3脚开关按下后占空比减小。开机后初始值大概50%,PWM频率大概15.6KHz。PWM脉冲从IC的5脚输出。12F683的资料也是不多,仅有Datasheet可以参考,经过反复测试,终于用下面代码调试成功:
    ;----------------------------------------------------------
    BSF STATUS,RP0
    MOVLW 07H
    MOVWF OPTION_REG ;允许上拉
    MOVLW 30H
    MOVWF WPU  ;设置GP4、GP5弱上拉
    MOVWF IOC  ;设置GP4、GP5允许端口电平变化中断
    BSF INTCON,GPIE
    ;----------------------------------------------------------
    BCF STATUS,RP0
    MOVLW 07H
    MOVWF CMCON0  ;关闭比较器

    ;**********************************************************************
    BSF STATUS,RP0
    CLRF ANSEL  ;清除模拟选择寄存器
    MOVLW 3FH
    MOVWF PR2  ;设置PR2,PWM周期,默认4M振荡输出PWM频率约15.6KHz
    ;----------------------------------------------------------
    BCF STATUS,RP0
    MOVLW 1FH
    MOVWF CCPR1L  ;设置占空比初值
    ;----------------------------------------------------------
    BSF STATUS,RP0
    MOVLW 0F8H
    MOVWF TRISIO  ;设置GP2输出
    ;----------------------------------------------------------
    BCF STATUS,RP0
    CLRF T2CON
    BSF T2CON,TMR2ON ;设置T2CON使能,预分频比1
    ;----------------------------------------------------------
    MOVLW 0FH
    MOVWF CCP1CON  ;设置CCP模块为PWM模式
    ;----------------------------------------------------------
    BSF INTCON,GIE  ;开启全局中断
    LOOP GOTO LOOP
    ;**********************************************************************
    GPINT BCF STATUS,RP0
    BCF INTCON,GPIF  ;清中断标志
    BCF INTCON,GPIE  ;关闭端口电平变化中断
    BTFSC GPIO,04H
    GOTO PR5
    CALL DELAY30MS
    BTFSC GPIO,04H
    GOTO PR5
    INCCCP MOVF CCPR1L,W
    XORLW 3FH
    BTFSC STATUS,Z
    GOTO RETGPINT
    INCF CCPR1L,F
    BTFSC GPIO,04H
    GOTO RETGPINT
    CALL DELAY166MS
    GOTO INCCCP ;GP4上的开关按下后占空比减小,如果持续按住不放,则占空比连续减小
    ;----------------------------------------------------------
    PR5
    BTFSC GPIO,05H
    GOTO RETGPINT
    CALL DELAY30MS
    BTFSC GPIO,05H
    GOTO RETGPINT
    DECCCP MOVF CCPR1L,F
    BTFSC STATUS,Z
    GOTO RETGPINT
    DECF CCPR1L,F
    BTFSC GPIO,05H
    GOTO RETGPINT
    CALL DELAY166MS
    GOTO DECCCP ;GP5上的开关按下后占空比增加,如果持续按住不放,则占空比连续增加
    ;----------------------------------------------------------
    RETGPINT
    BSF INTCON,GPIE  ;打开端口电平变化中断
    RETFIE   ;中断返回
    ;**********************************************************************
        其中红色的部分是必须加的,开始不知道,程序总是调不出来。反复读Datasheet后才知道,必须关闭AD模块和比较器模块,否则GP4、GP5就不能正常使用。
        这个程序占空比变化只有63级,不过实际感觉也就是无极了。当然,程序再修改修改可以做到256级,这个试验程序只是改变CCPR1L寄存器的值,占空比低2位保存在CCP1CON的4、5位,程序没有处理这两位,都置零了。
        下一步就要把CCPR1L保存到EEPROM中,实现记忆功能,再把更多功能做进去,就可以达到实用了。无极调光不是什么高技术,通过这个例程可以揭示出来了。:lol :lol :lol
    回复 dsu_marcocopyright:copyright

    使用道具 举报

  • TA的每日心情
    开心
    2014-8-28 01:37
  • 签到天数: 13 天

    [LV.3]偶尔看看II

     楼主| 发表于 2008-2-12 00:15 | 显示全部楼层
        振荡频率20M时,PR2取3FH,预分频比为1时,PWM频率大概是78.12K,那么如果频率采用内部RC的4M时,就是15.624K了,我实测是15.6K,误差不大。这个频率也不存在频闪,音频噪音也很轻微了。当然,12F683还能通过指令设置内部RC频率为8M,那么PWM频率就可以达到30K了。频率再高的话,我看可以取消DC-DC部分的PWM IC了,呵呵。当然,精度不怎么高。不过对付一般用途应该也能凑合吧,近期有进展会继续发消息。
    12F683.JPG
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2014-8-28 01:37
  • 签到天数: 13 天

    [LV.3]偶尔看看II

     楼主| 发表于 2008-2-12 00:31 | 显示全部楼层
    ;----------------------------------------------------------
    BSF STATUS,RP0
    BSF OSCCON,IRCF0 ;设置频率为8MHz
    MOVLW 07H
    MOVWF OPTION_REG ;允许上拉
    MOVLW 30H
    MOVWF WPU  ;设置GP4、GP5弱上拉
    MOVWF IOC  ;设置GP4、GP5允许端口电平变化中断
    BSF INTCON,GPIE
    ;----------------------------------------------------------
    PWM频率15.6K耳朵还是多少可以听到点嘶叫声,改成31.2K就一点动静没有了。看看资料,只需加上BSF OSCCON,IRCF0就OK了。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-11-30 20:47
  • 签到天数: 1753 天

    [LV.Master]伴坛终老

    发表于 2008-2-12 00:36 | 显示全部楼层
    虽然看不懂,但还是支持东成突破一一难关!加油啊!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2014-8-28 01:37
  • 签到天数: 13 天

    [LV.3]偶尔看看II

     楼主| 发表于 2008-2-12 00:46 | 显示全部楼层

          算不上什么难关,主要是受限于有限的资料,有限的时间。趁现在还没开始忙,搞点东西玩玩,呵呵。论坛上能人很多,只是可以共享资料的不多而已。
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-12 00:54 | 显示全部楼层
    好东东先顶
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-7-1 20:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-2-12 01:04 | 显示全部楼层
    楼上又是你这个顶啊顶啊顶.....
    虽然东成哥应该顶...
    回复

    使用道具 举报

  • TA的每日心情

    2014-6-21 21:29
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2008-2-12 09:55 | 显示全部楼层
    2个开关,用在啥筒子上好呢?
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-12 10:07 | 显示全部楼层
    :lol 看来东成很快也要出无极了,顶先,等东东
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-12 11:34 | 显示全部楼层
    ...《无极》.....
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-12 13:46 | 显示全部楼层
    哦~代码都放出来咯~一定要顶一个!!!

    最好能再加上分组调光~那就完美了~:victory:
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-12 15:58 | 显示全部楼层
    高手又出招了,看来无极调光要平民化了,支持呀!!!:lol :lol :lol
    回复

    使用道具 举报

    头像被屏蔽
  • TA的每日心情
    开心
    2024-4-15 00:06
  • 签到天数: 3472 天

    [LV.Master]伴坛终老

    发表于 2008-2-12 18:08 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-12 20:09 | 显示全部楼层
    支持東成...:victory: 一有空閒就造福我們:D :D
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-13 12:31 | 显示全部楼层
    原帖由 ldch 于 2008-2-12 00:46 发表

          算不上什么难关,主要是受限于有限的资料,有限的时间。趁现在还没开始忙,搞点东西玩玩,呵呵。论坛上能人很多,只是可以共享资料的不多而已。 ...

    是呀!很多人都是在保密!都透露出来,没有的钱赚了!!!美其名曰:保护知识产权!!!:lol
    回复

    使用道具 举报

    该用户从未签到

    发表于 2008-2-13 14:05 | 显示全部楼层
    在中国知识产权很难赚钱呵
    回复

    使用道具 举报

    头像被屏蔽

    该用户从未签到

    发表于 2008-2-13 15:06 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-1-13 23:46
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2008-2-13 23:54 | 显示全部楼层
    电路上东成兄非常强~有电路难题就找东成兄
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-10-3 07:01
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2008-2-14 09:27 | 显示全部楼层
    这个是单片机的基本程序,有什么高科技呀?可以不用cpu这么麻烦,还贵,搞个占空比可调的电路就可以了.555应用上有,不过这个IC不使用这里,但是原理差不多的,换个IC就可以了.还便宜.用台湾的cpu芯片或者是国内的,5元以内搞定,甚至2元搞定.

    [ 本帖最后由 donkey 于 2008-2-14 09:28 编辑 ]
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2014-8-28 01:37
  • 签到天数: 13 天

    [LV.3]偶尔看看II

     楼主| 发表于 2008-2-14 09:42 | 显示全部楼层
       对,确实是个很基本的程序,没说是什么高科技。从开始高出高效率、大电流输出的1AA升压电路开始,就没说是什么高级技术,仅仅是DIY而已,通过我的实践,摸索出可行的参数,对同样想DIY而缺少这些资料的朋友可以有帮助。
       555确实是个非常经典的IC,到现在仍然广泛应用。也是很多人可以买得到的IC,而且比单片机便宜多了去了。我装配的雕刻机的控制板上就有555。不过,555也有自己的局限,最低工作电压不能太低,占空比不能太大或太小,靠阻容充放电稳定性欠佳,如果想改变占空比或者频率,只能靠电位器调节,外部元件较多,没法象单片机那样用开关点动控制,占空比精确设定。外部元件多使得无法用于手电这种体积要求极端的情况,所以,有兴趣玩玩可以试试,有空我也帖几个555振荡器的图。
    回复

    使用道具 举报

    本版积分规则

    小黑屋|手机版|Archiver|论坛自带搜索|下载论坛app|手电大家谈-手电筒爱好者之家 ( 备案序号:鲁ICP备05002565号 )
    以上言论纯属个人观点,与手电大家谈立场无关。
    最佳浏览模式:1920*1080


    GMT+8, 2024-12-27 04:25 , Processed in 0.161200 second(s), 65 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表