微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LCD1602时钟

LCD1602时钟

时间:10-02 整理:3721RD 点击:

LCD1602时钟以前虽然做过,但是做的不好。我记得当时用了7个按键用来调时分秒年月日周,最近我想优化一下我做的LCD1602时钟。

说做我就开始动手了,这次我做的时钟调时分秒年月日周只用了两个按键,并且这次还加了一个DS18B20显示温度。总体来说,我对我做的这个时钟还是比较满意吧。如果有哪位朋友想要这个LCD1602时钟,可以联系我的QQ:1254411429。

用了一天时间调试程序,一天时间画电路板。





硬件电路部分















因为我画图的线粗是20mil,所以我就没有对电源正负极的线加粗。在DS1302模块当中,把晶振的外壳和地线相连,可以减小对晶振的干扰。焊接这个电路板,总体上我感觉没有什么难度就是在焊接MicriUSB的时候我觉得不是很好焊,不知道哪位朋友知道焊接的好办法,可以提出来。

程序部分

按键部分:不知道大家会不会好奇我是如何做到用两个按键调时分秒年月日周的,现在我为大家解说。我用一个按键A作为功能键,按键A的三种状态“双击”、“单击”、“长按(在当前的程序中没有使用这个状态,但大家想对这个时钟进行二次开发的话可以尝试着去使用这个按键的这个状态)”分别对应着“显示时间或调整时间”、“调整的时或分或秒或年或月或日或周”。按键B的功能就是往上加数字。

这样就可以实现用两个按键调时。

详见这两个函数:




程序调试部分:我用了这样的一个串口函数(在"Uart.h"头文件当中):




利用这个UartSend()函数我们可以将从DS1302中读取到的数据发送到电脑上,让我们更方便的知道DS1302模块是否在正常工作。

总体结构:这个时钟程序我总体上是利用了多个标志和if…else…语句来转换状态,不同的标志位代表着电路中的不同意义,不同的数值代表着电路中处于的状态也不同。




详看我的main()函数。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top