开篇先放效果图![]() ![]() 视频 看不了的亲,优酷地址:http://v.youku.com/v_show/id_XMTY5Mjk0MDkyNA ----------------------分割线----------------- 之前看了坛友的帖子,HPDL1414外接屏幕显示电脑状态(温度/使用量)USB外接显示外设|http://bbs.mydigit.cn/read.php?tid=1716073 感觉惠普的这个米字数码管挺漂亮的,可以弄个精致的小东西,然后也去买了几个。 数码管局部特写 ![]() 个人感觉嘛原作者的那个板子,太大太长了,而且边框有点大,做成两层还要加拼板费。usb口和按键的位置也有点缺乏人性 于是测量计算后,初步决定,弄成三个管子紧凑排列,板子长宽可以控制在5*2.5cm内,也方便拼板什么的。 然后就开始选设计方案,stc的话,感觉有点贵了;然后就看上了一元pos机上的stm32或者gd32,虽然有点杀鸡用牛刀,但是毕竟带usb,空间足够,可以省一个usb-ttl的芯片但是一比划,发现64脚的芯片不能放在数码管的两排排之间,只能放弃;后面看上了esp8266,如果选用esp12e模块的话,引脚上加片74hc595弄数码管,差不多够用了,一比划,发现比stm32更宽,心碎,也是放不下。最后转了一圈只好选stm8+ch340的方案,stm8好就是性价比,秒天秒地的,而且之前一直想学stm8却弄了最小系统放那没动过,那就算是变学着弄stm8边做这货吧,新媳妇上轿了。 因为io占的比较多,发现stm8s003f3有点不够了,那就弄成stm8s003k3,32脚芯片就够玩了。因为003只有8k容量,怕以后不够了,在pcb上就兼容stm8s005吧,16k容量够hi了吧,其实就是加两个电源脚罢了,选焊即可(不过这样说来,io就有少两个了,坑爹st) 主控选好了,其他方面,时钟肯定选ds3231了,温度也是弄个达拉斯的ds18b20好了,毕竟dht11或者22又贵又占空间湿度测出来也不怎么准。 兼顾下物联网思路,那就弄个esp8266吧,至少可以弄联网对时什么的,作为选配部件,就搞esp01模块好了,留好排针位插上去就好。 剩下的,数数也没几个io了,加几个按键,最后剩一个脚,调整下,看到stm8有个beep功能,好新鲜,没玩过,就留个蜂鸣器吧。 好吧,弄这么多,io瓜分完了,然后就弄原理图咯。 ![]() 接着pcb,这么小的面积,塞这么多东西进去,也是蛮为难的,真的有点紧了,上铜柱的固定孔都弄的很紧张 ![]() 然后,就拿给板厂了呗,然后手残了,没选颜色就默认了,然后弄的手一看傻眼了,绿油,哎 当然好像绿油也配数码管的底色也还勉强能行 ![]() 不过嘛,后来又选了黑油,结果板厂又吧走线弄断了,pcb厂家还在给重新补做中,实在等不及,自己拿坏板处理一下先弄着了,就是有点有损pcb完整性。 哎,命途多舛 焊接好但是还没有插数码管的图,建议在焊接排座前就把铜柱给装上,因为空间紧凑,焊了就不好装的 同时装铜柱也要稍微注意一下,不要碰到周围的电路什么的 数码管下有ams117,ch340和stm8,我这里用了排座,是为了方便拆卸调试的,实际上可以直接将管子焊在pcb上,整个东西就更薄了 ![]() 背面有ds3231,ds18b20,esp8266模块的插座,按键,蜂鸣器焊盘,晶振和usb座 ![]() 关于3231的备用电池,在板子上放电池座肯定不现实是了,所以只能在正反两面各方了一个电池的焊盘,可以用线引出来接3v电池。 因为我实在没有轻薄的电池了,所以暂时用这种代替一下,等以后有好的电池再换。同时,如果电池足够小,可以把它放在板子正面,也就是数码管下面,这样就美观很多了 ![]() 如果插上esp8266模块,是这样子的 ![]() 加了铜柱,立起来看看,还不错 ![]() ![]() 侧视图(带wifi模块) ![]() 另一面侧视,usb口 ![]() 然后第一次点亮,先显示点简单的把 ![]() 长度尺寸 ![]() 然后,后面就开始苦逼的编程了 首先先感谢帮忙弄上位机的小伙伴:gavinfree 同时也非常感谢他能给大家开源上位机 编程就是按着上位机发来的数据,接收,储存再显示罢了,也到不难,就是第一次用stm8,踩了好多坑啊 上位机介绍,欢迎围观:配合HPDL1414桌面伴侣使用的上位机程序|http://bbs.mydigit.cn/read.php?tid=1785154
看帖子:配合HPDL1414桌面伴侣使用的上位机程序|http://bbs.mydigit.cn/read.php?tid=1785154 或者围观下面的视频 关于时间设置 在上位机正常运行的过程中,点击更新时间,会读取系统时间,并发送,收到后,会自动更新ds3231中的数据,算是对时成功 ![]() 如果在系统中开始自动对时,那时间是蛮准的 ![]() 关于显示循环 如果有上位机且设置完整数据流:循环显示:时间3s,日期1s,星期温度1s,cpu 1s,ram 2s,net 1s 无上位机:循环显示:时间3s,日期1s,星期温度1s 关于指示灯,目前没有使用蜂鸣器 所以在蜂鸣器焊盘那里可以加led ![]() 该led指示灯的效果是在有数据传输过来且符合协议的话,进行一次翻转。锁定状态会快闪 关于tim4: 程序使用定时器4 time4作为整个运行的系统时钟 设定1ms中断一次,中断服务函数会对各个参数进行加减处理 关于ds3231: 使用硬件iic通讯,初始化是会开启1hz方波输出,输出脚接io设置为下降沿中断 关于中断优先级: 实验是发现如果不调整优先级,则会出现严重的数据丢包。原因是io的中断的入口排在串口接收中断之前,遂调整串口接收中断为优先级2,gpioc中断为优先级1 关于按键使用 按键分左键(key1)和右键(key2) 1、短按左键,从任意屏幕立刻跳转到显示时间,并持续显示5s后,继续循环 2、长按左键,从任意屏幕立刻跳转到显示时间,锁定显示时间,直到再次短按左键或按右键解锁。 3、按右键,锁定当前屏幕,直到再次短按左键或按右键解锁。 4、屏幕锁定后,按左右键均可解锁;左键短按按下后解锁到显示时间界面,显示5s再恢复正常循环;右键按下后,立刻解锁并显示下一屏。 5、屏幕如果锁定在电脑状态界面,指示灯会快闪,如果锁定在时间 日期 星期界面,指示灯正常 6、屏幕如果锁定在电脑状态界面,若5秒内数据未更新或者上位机断开,自动解除锁定,进入循环 第三颗(key3)按键暂时没用,没想到该用来干嘛 后期:上位机下位机的程序是开源的,欢迎大家交流,如果有感兴趣的坛友,也欢迎来给这玩意增加一些功能 以后的方向:增加更多的电脑状态显示,如gpu状态等 增加蜂鸣器 增加使用sep8266 这楼剩下的空间就放一些效果图吧 就不详细介绍了 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |