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

c0b3259d12a507dd02c198b35195065c.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、原理图:

59a033087b3a452c08b843e7f44735c9.png

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

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

3、PCB

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

8e82d2829fcf3abbf5a38fd4e37267d4.png

这个是打样回来的PCB:

c5bf5c1b4cc384102b84bc0a6abab733.png

d88c67cb1fc5ae121ccf82d677ba9a94.png

c9613a68829cb471ff60d310568a0910.png

b972ab5fc4ae62864c95333fb460768f.png

afa361342c680001bdf38caec347602d.png

b742316f06e334f2982a3705664b00c7.png

软件设计部分

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

2、功能部分

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

3、通信部分

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

5f40a68b1b8c2a033a900c784d83df8c.png

19a73abf978dc651bfa154f5d489570d.png

9c8a6af95fdfd64631da2061a11a5ad3.png

bd3972fb6cbea064606aefb99c75cc2e.png

ea1f0dea3d9b1beafde6d719db2221b6.png

1f8c6e30cb113ea6f1e19450796e4bf1.png

5cdc7c46a11d51401e12c8922afd8231.png

上位机设计部分

69aece370343ac26f9c78f37fde3a068.png

9389d0cf1a7fc3c6c78339c6edfd5660.png

a2d239c65b21adfdf0a50e55afedb634.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,有需要交流的伙伴们可以联系作者,谢谢大家阅读!

资料下载

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

012fea0e05842cc14a38a430a2391163.png


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JZOJ 5776. 【NOIP2008模拟】小x游世界树

5776. 【NOIP2008模拟】小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms Memory Limits: 262144 KB Detailed Limits Goto ProblemSetDescription 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据…

SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?...

如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。 1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉得是仁者见仁、智者见智…

java图形界面颜色随机变换,JavaScript实现鼠标移入随机变换颜色

大家好!今天分享一个在 JavaScript中,实现一个鼠标移入可以随机变换颜色。/* 这里定义一下div(块元素)已下span 标签的宽.高.边框线以及边框线的颜色*/span{display: block;width: 80px;height: 80px;border: 1px solid #000000;float: left;}var adocum…

Vscode 用Filter Line看日志,很爽

因为某种原因,我抛弃了Notepad然后一直没有找到一个比较好的日志查看软件,最近发现Vscode里面的这个插件不错,给大家推荐一下。中文详情链接:https://everettjf.github.io/2018/07/03/vscode-extension-filter-line/推荐阅读&…

zblog php 七牛缩略图,zblog中Gravatar头像不显示解决方法

解决zblog博客Gravatar头像不显示方法一第一个,解决zblog博客Gravatar头像不显示解决方法是对其进行修复操作。造成不显示的原因主要是Gravatar头像地址错误。所以,我们需要对头像地址进行更改。1、进入自己的博客后台。2、找到现在使用的主题模板中的&a…

SpringCloud学习--微服务架构

目录 微服务架构快速指南 SOA Dubbo Spring Cloud Dubbo与SpringCloud对比 微服务(Microservice)架构快速指南 什么是软件架构?    软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储, 通讯层), 它们彼此或和环境存在关系…

工作九年的硬件工程师,想对我们说些什么?

△向上生长, TO BE TO UP. 10万工程师的成长充电站△作者:徐新文,排版:晓宇微信公众号:芯片之家(ID:chiphome-dy)时光荏苒,岁月如梭,转眼就在硬件工程师的岗位上工作了九…

用JAI实现对TIF(TIFF)格式图片的合并

用JAI实现对TIF(TIFF)格式图片的合并 方法一: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import javax.media.jai.JAI; import javax.media.jai.RenderedOp; import com.…

StringBuffer/StringBuilder/String的区别

1、在执行速度上:Stringbuilder->Stringbuffer->String 2、String是字符串常量 Stringbuffer是字符串变量 Stringbuilder是字符串变量 有可能我们会疑惑String怎么是字符串变量。看以下代码: String str adc; str str “ef”&#x…

你知道kernel version的实现原理和细节吗

引言kernel 启动时通常会看到下面第二行信息的内容,它们代表了当前 kernel 的版本、编译工具版本、编译环境等信息。Booting Linux on physical CPU 0x0 Linux version 5.4.124 (funnyfunny) (gcc version 6.5.0 (Linaro GCC 6.5-2018.12)) #30 SMP Sat Sep 11 11:1…

Android 为你的应用程序添加快捷方式【优先级高的快捷方式】

有人会说,快捷方式,不是安装完应用程序后,长按应用程序的ICON然后将它拖到桌面上不就行了吗?没错,这样是一种方法,但这种方法有一个缺点,看图吧: 如上图,如果我们长按桌面…

icinga2 php模块,在Ubuntu 18.04系统上安装Icinga2监视工具的方法

本文介绍在Ubuntu 18.04系统上安装Icinga2监视工具的方法,使用Icinga 2可以监控:服务器资源、网络服务、网络设备。简介Icinga 2是一个开源,可扩展和可扩展的监视工具,可检查网络资源的可用性,通知用户中断&#xff0c…

面试官问:malloc(0)时程序会返回什么?

今天跟大家找了篇文章,主要是一个面试中的有趣问题,其实有些问题在开发中没有遇到过会很难回答出来,如果在面试过程中回答正确,皆大欢喜,拿到offer的概率更大;回答不出来也不要信口开河,面试官主…

2018 Machine Learning

2018/8/13 线性模型(西瓜书P53~P73)Optimizerhttps://blog.csdn.net/u012151283/article/details/781549172018/8/15 SVM(西瓜书)2018/8/16 面试题 https://www.cnblogs.com/zuochongyan/p/5407053.html熵、联合熵、条件熵、交叉熵与相对熵 ??归一化方法…

考研失败了,怎么办?

有读者提到这个问题,顺带回答下。我没有考研过,但是身边有很多研究生和博士,额,还有很多海外留学的博士。前天我们有外部厂商来公司讨论合作,领导让我跟着一起介绍项目,对方的人问了一句:“你们…

10月28号日志

匆匆忙忙而来,怀着梦想、怀着希望来到苏州这个地方。想用自己在校学的知识来改变自己的命运,我空空而来想满载而归。在这一段的时间里,我深深感受到了同学情深,深似海。老师恩重重如山。在长生果科技有限公司工作已将近两个月了的…

在php中怎么用js跳转页面跳转,在php中怎么用redirect实现页面跳转?

1、thinkPHP 的Action类的redirect方法可以实现页面的重定向功能,redirect 重定向的通用语法为:edirect(url,paramsarray(),delay0,msg) // 跳转到 edit 操作 $this->redirect(edit)。2、// 跳转到 UserAction下的edit 操作 this->redirect(User/…

[BZOJ 4025] 二分图

题目传送-BZOJ4025 题意&#xff1a; 有一张\(n\)个节点的无向图,其中边\(i\)在\(s_i\)出现,\(e_i\)结束,并连接着节点\(x,y\). 并保证\(s_i < e_i \le T\),要求对于每个时间\(t\le T\)输出此时的图是否是二分图。\(n\le100000,m\le200000,T\le100000\) 题解&#xff1a; 这…

晒一波工程师的工位,你喜欢哪种?

程序员的圈子啊那是十分神秘&#xff0c;又令人着迷的。每天的工作就是对着电脑&#xff0c;那他们的工作是如何的呢&#xff1f;我们来品一品&#xff08;PS&#xff1a;后面奉上各位大佬的桌面&#xff0c;别走开哦&#xff09;↓↓↓最最常见的普通版&#xff1a;升级版&…

传360以原彩虹QQ研发团队为班底拟强推IM

据知情人士透露&#xff0c;奇虎360开发即时通讯工具IM软件已成定局&#xff0c;正式推出只是时间问题。同时&#xff0c;该知情人还透露&#xff0c;目前负责360公司即时通讯软件项 目的核心班底正是51.com原“彩虹QQ”&#xff08;51.com对外官方产品名称为“彩虹显IP辅助软件…