图3-4键盘加一减一流程图
4 系统调试
系统调试共分为两大部分:一个是软件调试,另一个是硬件调试。其中软件调试通过Keil uVision4实现;硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。由于本系统线路连接比较简单,加之本人焊接技术过硬,故本系统硬件调试一次通过,没有硬件故障。难度主要在软件调试上。
本人原先的构思是闹铃采用播放音乐的形式,但发现闹铃音乐播放时,液晶上不能实时显示时间,即处于时间停滞状态。经分析主函数程序执行过程后,得出闹铃采用播放音乐的方案不能实现。因为单片机至多每隔一秒就要从
DS12C887中读取时间并送液晶显示,这样才能保证液晶上的时间是一秒一秒跳动的。也就是说单片机要执行别的任务(闹铃)必须要在一秒的时间间隙内完成,否则时间就无法实时显示。而一首音乐的播放时间不可能少于一秒,故闹铃声音只能采用“滴”声。设计调试完成后,给系统上电,液晶显示屏显示结果如图4-1所示:
图4-1
5 结论
本设计硬件电路较简单,所用器件较少,电路中使用了STC89C52单片机、DS12C887时钟芯片、1602液晶显示器等主要器件,实现计时、校时和闹铃功能。在对芯片的管脚功能和用法有充分的了解后,根据设计要求设计硬件电路,包括单片机控制电路、时钟电路、显示电路、供电电路、键盘电路和闹铃电路。然后通过软件编程,实现了对年、月、日、时、分、秒、星期、闰年和阴历的自动调整,用按键进行控制,用液晶模块进行显示,并具有闹铃功能。实时日历电子钟可以正常显示时间并进行时间调整,基本完成了预期要实现的目标。
6 谢辞
首先,在这里感谢学校给我们安排这次课程设计,使我有一个可以自己动手学习的机会。在此之前,我还没有设计过什么像样的硬件电路,通过这次实践,使我初步掌握了Altium Designer的使用方法,锻炼了电路板制作的能力,包括洗板子,焊接,调试等,另一方面,该设计的软件是我写的第一个实用性软件,而且软件规模较大,功能较为齐全,这大大锻炼了我写软件的能力,在软件编程过程中,遇到了这样那样的问题,有些问题至今还没有解决,但是大部分的问题都在我的认真思考,不断尝试中得以解决,这也对我以后调试软件很有帮助,而且在软件的书写过程中,也暴露出了我基础知识不牢导致一些很低级但又很严重的问题,我以后一定会加强基础知识的巩固,为将来做更大的项目打下坚实的基础。 其次,在这要感谢我们可敬可爱的朱卫华老师,虽然老师工作繁忙,但还是会时常关注学生的课设进展,并给出很多宝贵的点拨,帮助我们解决了很多技术上难题。可以说,没有老师的悉心指导,就不会有我今天的作品。
最后,我还要感谢这次课程设计中给我帮助的同学,在我调试软件最失望的时候,是你们给了我安慰,让我重新坚定了我的信念。在我对AltiumDesigner的
使用不太熟悉的情况下,是你们的悉心指导,使我克服了重重困难,并学会了很多操作方法,最终完成了原理图的设计是你们的帮助,我才能顺利的完成课程设计任务。谢谢你们的帮助!
7 参考文献
[1]郭天祥. 新概念51单片机C语言教程.北京:电子工业出版社,2009. [2] 谭浩强. C语言程序设计.北京:清华大学出版社,1999. [3]康华光.电子技术基础(第五版). 数字部分/模拟部分.北京:高等教育出版社,2006.
8 附录A:实时日历电子钟设计电路原理图
9 附录B:实时日历电子钟设计程序代码
#include\
void delay(uint z) {
uint j; for(;z>0;z--) for(j=110;j>0;j--); }
void write_com(uchar com) //液晶写命令函数 { en=0; rs=0; P0=com; en=1; delay(1); en=0; }
void write_data(uchar date) //液晶写内容 { en=0; rs=1; P0=date; en=1; delay(1); en=0; }
void write_ds(ucharadd,uchar date) //芯片写指令 { dscs=0; dsas=1; dsds=1; dsrw=1; P0=add; dsas=0; dsrw=0; P0=date; dsrw=1; dsas=1; dscs=1; }
相关推荐: