使用STC51单片机模组在kevil4平台制作的万年历项目。
算是自己的第一个项目的记录和总结,通过这次项目提高了自己对C语言的使用,知道了怎么使用51单片机来完成一些功能。
参考资料为:普中51-双核-A6开发板资料(记忆中有些例程好像是有点问题,自己辨别一下程序是否正确也对自己有点帮助)。
相关的外设有:LCD1602(输出屏),DS18B20(温度传感),DS1302(时钟芯片),1个无源蜂鸣器(闹钟),4个按键来校时以及设置闹钟时间。
最终实现的功能如下:
上电后屏幕显示当前年,月,日,温度,时,分,秒,星期,(断电后不会重置时间,时钟芯片会继续工作),显示时间会有200ms延迟。
在正常显示时间界面按下K3键会进入设置时间界面并且暂停时钟芯片,通过K2键选中光标闪烁的单位,按下K1键为+1,再次按下K3键启动时钟芯片并回到正常显示时间界面。(温度单位无法选中)。
在正常显示时间界面按下K4键会进入设置闹钟界面(不会暂停时钟芯片),通过K2键选中光标闪烁的单位(时,分),按下K1键为+1,再次按下K4退出设置闹钟界面并保存闹钟时间,当显示时间到达闹钟时间蜂鸣器开始报警,屏幕会显示闹钟界面直到按下K4键返回正常显示时间界面(时钟芯片会一直工作,从闹钟界面返回正常显示时间界面时间不会停止)。 (闹钟一开始设定为25:00,当断电重启后闹钟时间会重新变成25:00)。
总结:
本项目使用了类SPI总线通信的DS1302时钟芯片,让我对SPI总线通信有了一些经验,
还使用了DS18B20温度传感器,让我学习到了如何使用传感器读取数据和转换传感器读取的数据,还有LCD1602显示屏作为输出设备显示DS1302的数据还有DS18B20经过转换后的数据,按键模块让我学习到了一些按键扫描的方法,还有一些常用的按键使用方法,还有设置时间模式和设置闹钟模式和正常显示时间模式之间的转换让我知道了重入(主函数和中断函数调用同一函数导致调用该函数时数据会出问题)这个概念,蜂鸣器模块让我学会了怎样使用无源蜂鸣器,这些模块综合起来写成一个项目也让我知道头文件怎样使用,还通过一些例程学习到了很多对数据的处理方法,让我认识到自己C语言的一些格式使用方式是错误的,完成这个项目之后我对C语言的理解提高了很多,更重要的是学习到了使用芯片的方法,还有使用传感器的方法,还学会了看一些基本的时序图,相比起之前的自己有了很多的不同,能够自己根据手册写出一些东西。最后通过这次的项目让我知道了自己还有很多要去学习的东西,要不断完善自己的不足,保持向上的势头,不能半途而废。
此项目的工程还有保存,如有需要资料或是源码可以私信。
该链接是我完成的工程可以参考:链接:https://pan.baidu.com/s/1q6BR73AePHQU-JhiNTOA5A
提取码:mttt
过程中遇到的问题也可以评论提出一下,一起进步