一个漂亮的电子钟,纪念我们逝去的青春(含软硬件资料)

b100f07c087ea88e793ff771ed4f4283.png

来源:阿莫论坛,作者:humancn

微信公众号:芯片之家(ID:chiphome-dy)

公众号不少粉丝,大一大二做的第一个项目,都是电子时钟吧,非常经典的STC89C52+DS1302+数码管组合,带我们跨入了电子的世界,今天介绍一个小项目,一款漂亮的时钟,包含菜单等程序,大家可以可以看看,回忆下大学的生活。

这款电子钟,不仅仅是一个普通电子钟,因为它包含了一种特殊的感情,更准确的说是基情,四射啊!本人就读于一个普通的一本大学,学的是电气工程及其自动化专业,临近毕业了,想给我的好伙伴们做点什么东西,留作纪念。四年时光匆匆而过,正好也可以用它来见证我们终将逝去的青春以及前行在曲折人生路上的不屈背影。

功能说明:显示时间日期,温度,公历节日(可自己添加,非节日的时候显示时段,比如:白天、中午之类的)、农历、闹钟、分项设置,配合上位机实现一键时间日期设置,在线显示电脑运行状况(CPU使用率和内存使用情况),在上位机显示环境温度等。

 本设计主要分为三个部分:时钟的硬件部分、时钟的软件部分、上位机的设计。

硬件设计部分

1、主要是这么几个芯片:stc12c560s2+18b20+ds1302+12864G-086-PC(COG工艺 超薄啊,带GB2312字库,串口,可调对比度,显示起来挺清晰的)。从这看上去,这绝对是一个简单+经济的设计。

stc12c560s2:STC号称51宇宙第一啊,还有什么世界超级独一无二的加密技术,我就暂且相信了吧。看这价钱,4块多的,功能够,也就支持一下国产吧。

18b20:用烂了一个片子,始终感觉计算出的温度要比实际高2~3度,没事,我又不是做温度计的.

ds1302:饱受其害啊,由于32768晶振没有买到高质量的,误差有点大(绝对是国产中的山寨品啊)。下回用内置晶振的芯片。

2、原理图:

33f667f0d697f3796b19de0b83e502a1.png

原理图比较简单,因此就不仔细说明了(注意有些器件信号线的上拉,同时省略了很多滤波电容)。采用AD Summer 09设计,先上图片,最后一起上附件资源

图中是双供电方案,MINI USB+排针。不过USB那个不能用上位机了,排针另加PL2303转换板即可。当初地方没有设计好,已经计划在内的CH340给去掉了。

3、PCB

这是我第二次画PCB,经验奇缺啊。由于先设计的程序后设计的原理图,导致IO分配十分混乱,PCB也乱的吓人,只能保证能用,不保证稳定性,大家勿喷那。(谁还没个第一次,是吧,嘿嘿)

6a0f8e46dd51b881a283f7c9edfcfb9e.png

这个是打样回来的PCB:

f85d499c940132bf098bc23e4589d066.png

030ec5cdd1b94502ba2949e29444aa40.png

8b5a77a36f322df26891f16e3b0767e8.png

f8059b532a169d04bdb706a205b7401d.png

ade61c2b2a16d4344f76429e51f074f1.png

4b8472df5a0795596ac863ebab9e0b48.png

软件设计部分

1、驱动部分
18b20、ds1302都是以前的驱动修改过来的,12864厂家例程不够规范,而且页地址分配有误,所以自己在此基础之上进行了修改,实现了某行反显,显示某些自定义大小的图画文字,并且将其中的字母和数字向下平移了一个像素,更加美观。大家打开附件后就会发现,驱动使用两种方式写的,一种是 extern void fun();另外一种使用的结构体。两种用起来都不错~

2、功能部分

菜单移植的网上一个COB 12864液晶的菜单。这个菜单长处在于多层嵌套,很直观明了。我用的都是一层的菜单,有点大财小用了,原版菜单见附件。此部分很是混乱啊。  用定时器0和外部中断0实现LED背光2S左右后自动关闭,定时器1用于闹钟声响。一会有大量照片)

3、通信部分

由于采用的是12M晶振,所以波特率选取为2400,误差0.16%,采用独立波特率发生器(T0被用了)。通信协议自己编的,处理也是自己瞎弄的,你别说,还真有BUG:上位机请求两次温度数据,下位机只上传一次,这么地了吧。

384285e9914513161e3ae9ca3f89b7d6.png

2e6d15079c44b3dad730fbcf29073c1b.png

de7be7ef25aaf1651710854c8d9bb7ce.png

80bfed1ba90f24a82f8313085c418c1d.png

b17e848d7bb2356ccbf6d0f558ddcf3d.png

da39e3530e06793994fe0f94ef04e7d5.png

25bcda20e9fda678cd9fe800ab4a6ad1.png

上位机设计部分

490177ef7774b17a1aae30509e38b6e5.png

ac5fba5e828ac0fb0fcc04ac612e2236.png

b8bb69b73553eca89c8028380d1ee7fe.png

开发环境是VC++6.0+MFC,先上一下效果图,然后讲一下开发

第一页是显示CPU情况的,由于CDC画图的操作我还没弄明白,所以这个是从别人那COPY的,CPU使用率由于计算方法的原因,会和任务管理器有出入。

第二页比较简单,下面的进度条用了一个类,大家打开源码就会看见叫SwingProgressCtrl,很亮丽有木有,而且随着使用情况的变化,进度条的背景颜色会变化。

第三页串口通信部分计划使用的是CSerialPort类,但是最后发现只能发送一次数据然后不没反应了,多次百度+调试无果,于是放弃了而去采用调用Moxa的pcomm.dll完成设计,Moxa主要生产工业串口通信设备,所以他们的串口通信组件还是值得信赖的,功能也很丰富。其中有个回调函数,在我的应用中始终有问题,于是在1S定时器中sio_iqueue()查询缓冲区的数据量(实时性不高的应用),如果是8的话就sio_read()出来(我的报文固定是8个字节),注意sio_read()后从缓冲区读出的数据,在缓冲区内不再存在。网上说还可以开一个线程不断sio_iqueue(),我倒是没试过。温度显示原先准备用一个数码管显示的空间显示出来,但是数据不知道怎么回事没法更新(估计和消息没处理好有关系),暂时放弃了。

最后本上位机还有托盘,可能是由于开发环境的原因,托盘的气泡没有弄出来,只弄出来了基本功能和标题。本人没有系统学过VC,基本都是东拼西凑+模仿,唉

上位机图片上有作者的QQ,有需要交流的伙伴们可以联系作者,谢谢大家阅读!

资料下载

感兴趣的童鞋可以在 公众号后台 回复关键词:基情电子钟,即可获取全部资料!

df60ed61a5d2b0bbc54e94cd9bc612a3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值