打印
[PIC®/AVR®/dsPIC®产品]

pic10F单片机可穿戴闪灯DIY(开源)

[复制链接]
楼主: mzb2012
手机看帖
扫描二维码
随时随地手机跟帖
21
mzb2012|  楼主 | 2020-1-2 10:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
11.完整工程代码,原理图,gerber文件,PCB 3D效果图

;时   间 : 2019-12
   
; PIC10F200 Configuration Bit Settings
; Assembly source line config statements
#include "p10f200.inc"
; CONFIG
; __config 0xFFEB
__CONFIG _WDTE_OFF & _CP_OFF & _MCLRE_OFF

;***************变量定义*****************************************
;对于10F200单片机,GPR寄存器从0x10地址开始,范围0x10-0x1F共16bytes
;****************************************************************
;变量块定义
cblock 0x10
    delay.loop.in
    delay.loop.out
    switch.timer
    hold.timer
    led.state
    mode
    index
    index.base
    mask
endc
   
;位变量定义
pb.switch equ 3                ;按键端口   
pb.led1 equ 0                ;LED1端口
pb.led2 equ 1                ;LED2端口
pb.led3 equ 2                ;LED3端口
multiplex equ 7                ;multiplex标志变量
pson equ 1<<multiplex       
psoff equ 0
led1on equ 1<<pb.led1
led1off equ 0
led2on equ 1<<pb.led2
led2off equ 0
led3on equ 1<<pb.led3
led3off equ 0

;宏定义
ledstep macro        hold,pwrsave,led1,led2,led3
            retlw hold
            retlw pwrsave|led1|led2|led3
        ENDM
restart MACRO
            retlw 0
        ENDM
       
;***********************************************************
;对于pic10F200芯片,内部晶振校准值参数在0xFF地址存储的
ORG 0x0000
movwf OSCCAL
goto start
;**********************************************************
;LED闪烁模式查找表
;对于每一种闪烁模式,必须在有一个相应的分支入口
;返回值max.mode同样必须设置
radix dec
select.mode movfw mode
             addwf PCL,f
             retlw mode.1
             retlw mode.2
             retlw mode.3
             retlw mode.4
             retlw mode.5
             retlw mode.6
             retlw mode.7
max.mode retlw 7        ;模式最大种类数
;定义闪烁序列
;ledstep hold_time,power_save,LED1_state,LED2_state,LED3_state
;hold_time是1-255的数值,没计一个数单位20ms,所以当hold_time=50时,就是1000ms
;power_save定义了省电模式,开启后LED亮度略暗,更省电
;psoff---省电模式关闭,全功率运行
;pson---省电模式开启,节电运行
;LEDx_state 定义灯的亮或灭
;模式1,常量,节电模式
mode.1 ledstep 50,pson,led1on,led2on,led3on
       restart
;模式2,常量,正常模式
mode.2 ledstep 50,psoff,led1on,led2on,led3on
       restart  
;模式3,所有闪烁,节电模式
mode.3 ledstep 18,pson,led1on,led2on,led3on
       ledstep 18,pson,led1off,led2off,led3off
       restart
;模式4,单个LED亮,正常模式
mode.4 ledstep 12,psoff,led1on,led2off,led3off
       ledstep 12,psoff,led1off,led2on,led3off
       ledstep 12,psoff,led1off,led2off,led3on
       ledstep 12,psoff,led1off,led2on,led3off
       restart
;模式5,所有LED频闪,正常模式
mode.5 ledstep 2,psoff,led1on,led2on,led3on
       ledstep 30,psoff,led1off,led2off,led3off
       restart
;模式6,所有LED短灭长亮,正常模式
mode.6 ledstep 2,psoff,led1on,led2off,led3off
       ledstep 10,psoff,led1off,led2on,led3off
       ledstep 60,pson,led1on,led2on,led3on
       ledstep 10,psoff,led1off,led2on,led3off
       restart
;模式7,所有LED短灭长亮,正常模式
mode.7 ledstep 1,psoff,led1on,led2off,led3off
       ledstep 3,psoff,led1off,led2on,led3off
       ledstep 1,psoff,led1on,led2off,led3off
       ledstep 3,psoff,led1off,led2on,led3off
       ledstep 1,psoff,led1on,led2off,led3off
       ledstep 3,psoff,led1off,led2on,led3off
       ledstep 1,psoff,led1on,led2off,led3off
       ledstep 3,psoff,led1off,led2on,led3off
       ledstep 1,psoff,led1on,led2off,led3off
       ledstep 3,psoff,led1off,led2on,led3off
       ledstep 1,psoff,led1on,led2off,led3off
       ledstep 50,psoff,led1off,led2on,led3off
       restart
;结束LED闪烁模式查找表
       radix hex
;唤醒或者上电的pic初始化
start movlw (1<<pb.switch)        ;设置按键端口输入
      tris GPIO
      movlw ~(1<<NOT_GPWU |1<<NOT_GPPU|1<<T0CS);
      option
      clrwdt
      btfsc STATUS,GPWUF        ;查询唤醒标志
      goto wakeup                ;标志置位需要唤醒
;仅在上电后初始化变量
      clrf GPIO        ;启动后关闭所有输出
      clrf mode
      clrf delay.loop.in    ;初始化延时计数变量
      clrf switch.timer             ;初始化按键计数变量
      clrf led.state
      movlw 1<<pb.led3              ;初始化multiples mask
      movwf mask
      movlw mode.1              ;初始化模式索引
      movwf index
      goto reload              ;跳转到设置新模式
;*****************************************************************************
; 程序主循环开始
wakeup        movlw .100            ;设置一个2000ms倒计时计数
        movwf switch.timer
        movf GPIO,W
        bcf STATUS,GPWUF
        btfsc GPIO,pb.switch; ;按键没有按下跳过下一条
        sleep
waking.up call delay            ;等待
         btfsc GPIO,pb.switch        ;按键还按下?
         goto wakeup            ;没按下,进入休眠
         decfsz switch.timer,F        ;按下,计数器减一,若为0跳过下一步
         goto waking.up
         bsf switch.timer,7 ;把计数器最高位置1,这里是一个标志位
main call delay            ;延时20ms
     btfss GPIO,pb.switch   ;是否按下?
     goto switch.down        ;是按下,执行按下任务
switch.release btfsc switch.timer,7 ;如果这个置位了,我们只是从休眠唤醒
               clrf switch.timer    ;清计数器
               movlw -.3
               addwf switch.timer,W
               clrf switch.timer
               skpc
               goto lights
;以下仅执行一次,当一个按键事件发生后
incf mode,F        ;状态加1
call max.mode        ;与最大模式比较
subwf mode,W
skpnc
clrf mode
call select.mode    ;查表执行函数
movwf index;        ;保存索引
movwf index.base
goto reload        ;设置新模式
;LED函数选择
switch.down btfsc switch.timer,7    ;
            goto lights
            incf switch.timer,F
            movlw -.100
            addwf switch.timer,W
            skpc
            goto lights
            ;按键保持2秒后关闭
            clrf GPIO
            clrf led.state
            btfss GPIO,pb.switch
            goto $-1
            call delay
            movf GPIO,W
            bcf STATUS,GPWUF
            sleep
;******************************************************************************
;延时函数,主频4Mhz 时钟
delay            movlw .26            ;延时20.2ms
            movwf delay.loop.out
            ;内循环
delay.loop  decfsz delay.loop.in,F  ;重复255次
            goto $-1
            ;分时控制LED,提高电池寿命
            rrf mask,F
            skpnc
            bsf mask,2
            movfw mask
            andwf led.state,W
            btfss led.state,multiplex        ;multiplex标志清零?
            movfw led.state        ;关闭分时控制
            movwf GPIO
            ;外循环
            decfsz delay.loop.out,F
            goto delay.loop
            retlw 0x00
lights decfsz hold.timer,F  ;led计数器减1
        goto main        ;循环
reload call lookup  ;查找下一个计数值
        movwf led.state        ;存储
        goto main
reset.index movfw index.base        ;把index.base值读入W
            movwf index            ;把值放入当前索引
            goto reload            ;
lookup movfw index  ;把index值给W
       incf index,F ;index=index+1
       movwf PCL    ;把W给PCL
END
blinkLED.X.zip (24 KB)

Gerber_BlinkLED.zip (9.04 KB)



Schematic_BlinkLED.pdf (26.1 KB)





使用特权

评论回复
22
小卡| | 2020-1-3 10:21 | 只看该作者
支持好文

使用特权

评论回复
23
yiy| | 2020-1-5 23:07 | 只看该作者
内容很棒

使用特权

评论回复
24
mmuuss586| | 2020-1-6 09:43 | 只看该作者
开源怎么不把开源资料上传上来呢

使用特权

评论回复
25
shaoziyang| | 2020-1-6 09:56 | 只看该作者
本帖最后由 shaoziyang 于 2020-1-6 10:03 编辑

可以试试这个汽车人徽章,也是用PIC10制作的

https://hackster.imgix.net/uploads/attachments/824382/20190328_1059321_p7ZQmKLxrc.gif?auto=compress&gifq=35&w=900&h=675&fit=min&fm=mp4



https://www.hackster.io/IObrizio/autobots-pin-badge-bb99d8

使用特权

评论回复
26
mzb2012|  楼主 | 2020-1-6 13:25 | 只看该作者
shaoziyang 发表于 2020-1-6 09:56
可以试试这个汽车人徽章,也是用PIC10制作的

这个好玩哈

使用特权

评论回复
27
mzb2012|  楼主 | 2020-1-6 13:25 | 只看该作者
mmuuss586 发表于 2020-1-6 09:43
开源怎么不把开源资料上传上来呢

资料在上面楼层

使用特权

评论回复
28
mzb2012|  楼主 | 2020-1-6 13:26 | 只看该作者
本帖最后由 mzb2012 于 2020-1-6 14:30 编辑

多谢支持关注

使用特权

评论回复
29
pzsh| | 2020-1-6 13:37 | 只看该作者
为楼主点赞 !

使用特权

评论回复
30
mzb2012|  楼主 | 2020-1-6 14:31 | 只看该作者
pzsh 发表于 2020-1-6 13:37
为楼主点赞 !

谢谢支持

使用特权

评论回复
31
mzb2012|  楼主 | 2020-1-10 15:07 | 只看该作者
本帖最后由 mzb2012 于 2020-1-10 15:15 编辑

11.分享个焊接视频
占楼,后续补充

使用特权

评论回复
32
aspoke| | 2020-1-10 19:48 | 只看该作者
pic10f200这么小巧呢   

使用特权

评论回复
33
232321122| | 2020-1-10 19:49 | 只看该作者
这个设计很给力呢。   

使用特权

评论回复
34
ghuca| | 2020-1-10 19:49 | 只看该作者
pic10f200性能怎么样   

使用特权

评论回复
35
soodesyt| | 2020-1-10 19:50 | 只看该作者
很精致的单片机   

使用特权

评论回复
36
mnynt121| | 2020-1-10 19:50 | 只看该作者
pic10f200         

使用特权

评论回复
37
plsbackup| | 2020-1-10 19:50 | 只看该作者
跟楼主学习一下。   

使用特权

评论回复
38
kmzuaz| | 2020-1-10 19:51 | 只看该作者
以后穿戴设备必须具备的。   

使用特权

评论回复
39
qiufengsd| | 2020-1-10 19:51 | 只看该作者
不知道稳定性怎么样   

使用特权

评论回复
40
wengh2016| | 2020-1-10 19:51 | 只看该作者
               

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则