改;其次,程序可读性好,对程序的修改课局部进行,其他部分可以保持不变,便与功能扩充和版本升级;最后,便与多个模块调用和分工合作。
将本系统分为,时钟记时程序模块,跑表工作模块,显示模块,延时模块。如下图所示,将这些事先划分好的模块用汇编语言编成不同的子程序,再将它们有机的结合起来从而达到系统的整体功能。其中显示程序贯穿整个系统软件的始终,其它的程序以一定的规律改变显示程序的显示内容为目的。
图4.1 系统框图
4.2主程序设计
本设计采用C语言程序设计,主程序模块是单片机最先编译运行的模块,所以在这个模块里,我们要设置主程序和各个中断服务程序的入口地址、各种初始化以及开关扫描等。MCS-51系列单片机复位后,(PC)=0000H,而0003H~002BH分别为各中断的入口地址。所以,编程时应在0000H处写一条跳转指令。初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定。图4.2为函数设计框图。
10
图4.2 主函数程序框图
4.3键盘模块设计
1)Set键——P1.0 主要用于对时钟和闹铃的调整时,由时到分的切换,然后退出调整;
2)Inc键——P1.1 在时钟调整模式和闹铃调整模式下,对所调整数的加一调整,在秒时调整模式下,启动走时;
3)Dec键——P1.2 在时钟调整模式和闹铃调整模式下,对所调整数的减一调整,在秒时调整模式下,暂停走时并减一操作;
4)Chg键——P1.3 用于时钟、闹铃和秒时三种模式间的任意切换。
4.4显示模块设计
在时钟、闹铃和秒时三种不同的模式下,设定了3个标志位,
11
不同标志位情况下,显示对应的数字,并且时与分间的小数点每秒闪烁一次表示秒时的走动,标志位为0显示时钟,标志位为1显示闹铃,标志位为2显示秒时。
4.5蜂鸣器模块设计
在主程序中设定,当闹铃设定的值与时钟相一致时,调用蜂鸣器子程序,将P3.7的输出一个周期为1s的方波,持续30s,使蜂鸣器发出“滴~滴~”声儿报铃。
4.6中断定时模块设计
内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是12MHz,定时时间是50ms,所以定时常数的设置可按以下方法计算:
X=65536-(12*10^6*0.05)/12=15536=3CB0H; TH0=03CH; TL0=0B0H;
每中断一次mstcnt自加一,当mstcnt=20时,一秒完毕,秒second自加一,同时清零mstcnt;
second=60时,分minute自加一并清零second; minute=60时,时hour自加一,清零minute; hour=24时,清零hour。
第五章 调试程序及使用说明
如图a,电子仿真图,时为00:06,按键chg,将在时钟、闹铃和秒时间依次切换,并产生不同的标志位,在时钟时,标志位为0,依次加一,为了更好说明,现规定时钟为模式一,闹铃为模式二,秒时为模式三。
在模式一、二下,按键set一次,可对时钟和闹铃的时进行调整操作,按键两次,可对时钟和闹铃的分进行调整操作。
在模式一、二下,按键inc和dec分别对所操作数进行加减一调整,在模式三下,按键dec暂停走时并对秒减一调整,按键inc启动走时。
12
图a 电子仿真图
图b 仿真实物图
13
第六章 总结与体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好??通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在李世军老师的辛勤指导下,终于迎刃而解。同时,在李晓秀老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
14