找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1093|回复: 1
打印 上一主题 下一主题
收起左侧

四位IN16辉光钟制作资料 附STM32单片机程序和PCB文件

[复制链接]
跳转到指定楼层
楼主
本制作的作者为舸轮工作室,大家可以去b站看视频和他的其他作品.本辉光钟采用两级boost升压方案,第一级由LM2577将单节锂电池的3.7V升压至7V左右,再由34063升压至150V,实测加上单片机及指示灯总功率3W左右,发热较大。
PCB文件版本号为2.2,通过AltiumDesigner2016绘制,是经过我第一次打板发现并修改问题后,再经第二次打板解决大部分问题,最后编程时又修改了若干小问题成为当前的版本。
PCB布线较乱的原因为四颗74141必须固定在那个位置,能利用辉光管间缝隙以减小厚度(实测然并卵),故布局受限。
PCB文件分为管子底座和主板,辉光管焊接在底座上,底座通过1.27mm双排弯针插在主板上。
如果使用6000mah聚合物电池可连续开机7小时左右(未实测)
锂电池充电使用锂电池管理芯片TP4056,估计充电时间和使用时间相当,且4056充电时发热也较大。。。
单片机使用的是STM32F103C8T6,工程文件在USER文件夹里,已删除临时文件,重新编译即可使用,下载口在PCB上方,丝印层G表示GND,C表示SWCLK,D表示SWDIO,对应Jlink或STlink下载器所需的三个接口。
另外,因为本人的PCB绘制习惯,无法提供元件清单,不服憋着ヽ(`⌒′)
总体来说,两级boost是限于本人水平的无奈选择,效率较低,工作时整个机器的发热量较大,外壳设计短期内也搞不好了,遂不一起开源了,先把以前瞎设计的一个用于3D打印的外壳放进来,先声明非常的丑 ̄へ ̄(SolidWorks2016设计,导出有STL)
管脚说明:
DS3231: PB10 SCL
              PB11 SDA
电量LED引脚:
LED4: PA9
LED3: PA10
LED2: PA11
LED1: PA12
LED6: PB15(中间闪烁的秒灯)
电压反馈引脚:   PA0
辉光管控制引脚,字母表示对应74141,数字表示该芯片输入引脚,如A0表示74141A第3引脚
A0:PB14 A1:PB13 A2:PB12 A3:PB1
B0:PA5  B1:PA6  B2:PA7  B3:PB0
C0:PA1  C1:PA2  C2:PA3  C3:PA4
D0:PB8  D1:PC13 D2:PC14 D3:PC15

按钮:SW1:PB4 SW2:PB5 SW3:PB6
12小时显示方式的PM灯MLED:PB7
蜂鸣器:PB9

制作出来的实物图如下:



升压电路原理图



Altium Designer画的PCB图如下:(51hei附件中可下载工程文件)



STM32单片机源程序如下:
  1. /*************************************************************************************************************
  2. 舸轮工作室        出品
  3. IN16四位便携式辉光钟
  4. DS3231方案 4个74141分别控制四个辉光管
  5. 关注贴吧ID:tnt34 获得最新工作成果
  6. 关注B站UP主:舸轮综合船舶制造 获得更多视频资源
  7. 2017-8-23第二版
  8. 版权所有 禁止用于任何商业用途!
  9. 注:本程序中ds3231相关驱动文件来自互联网,本工作室版权仅限于glow_tube_display.c & glow_tube_display.h
  10. *************************************************************************************************************/
  11. #include "stm32f10x.h"
  12. #include "delay.h"
  13. #include "gpio.h"
  14. #include "i2c.h"
  15. #include "adc.h"
  16. #include "ds3231.h"
  17. #include "glow_tube_display.h"//详细驱动、调时逻辑、电压扫描均在此头文件对应.c文件中
  18. extern Time_Typedef TimeValue;//时间结构体,存储格式BCD码
  19. int second_last;
  20. int sec_flag;
  21. void glow_tube_init(void);
  22. void Show_time(int hour,int min,int sec);
  23. void Key_scan(void);
  24. void Show_Batttery(void);
  25. void Adc_Init(void);
  26. int d=0;
  27. int main()
  28. {
  29.         GPIO_Config();
  30.         glow_tube_init();
  31.         Adc_Init();
  32.         TimeValue.year=0x2017;//如果下面那行不打开,这些初始时间均无效       
  33.         TimeValue.month=0x08;
  34.         TimeValue.week=0x03;
  35.         TimeValue.date=0x23;
  36.         TimeValue.hour=0x11;
  37.         TimeValue.minute=0x03;
  38.         TimeValue.second=0x55;
  39.         //DS3231_Time_Init(&TimeValue);//调试用,程序强制写入时间值
  40.         GPIO_SetBits(GPIOB,GPIO_Pin_9);
  41.         while(1)
  42.         {
  43.                 Time_Handle();//获取时间
  44.                 Key_scan();//键盘扫描及调时逻辑
  45.                 if(sec_flag==1)//整秒更新
  46.                 {
  47.           Show_time(TimeValue.hour,TimeValue.minute,TimeValue.second);//更新显示
  48.                 Show_Batttery();//显示电量
  49.                 }
  50.         }
  51. }                  
复制代码






Keil代码和PCB文件下载(不含其他资料): 程序+PCB.7z (2.66 MB, 下载次数: 18)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883351 发表于 2022-10-13 16:59 | 只看该作者
学习一下,资料太好了,下载看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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