1、 1 1 任务及要求 1.1 设计任务 学会用已经学过的单片机原理与应用的知识,来设计一个实用性的结构简 单化的小型电子产品。 编写一个程序, 实现秒计时器从0059计时的基本功能。 利用Proteus工具来演示秒计时器的计时。 1.2 设计要求 利用MCS-51系列单片机作为秒表的主控制器芯片,在单片机的P0端口 和P2端口分别接两个共阴数码管,P0口驱动显示秒时间的十位,P2口驱动显 示秒时间的个位。要求做到性能稳定,结构简单通俗易懂,结构模块化,从而做 到节约成本。 (1)熟悉电路,了解P0和P1口的作用。 (2)熟悉WAVE编译环境。 (3)熟练掌握汇编语言,调用延时程序。 2 设计思
2、想 2.1 硬件设计 将单片 机设 计成 控制 器, 在AT89C51的P0口和P2口 都接 7SEG-COM-CATHODE,P0口接上拉电阻,分别显示十位和个位数字。 2.2 软件设计 通过单片机实现控制00-59的计数, 根据设计的要求, 将0到59的数据除 以10,分别取商和余数。并且当一秒钟到来时,计数单元加1,到达60时,则 自动返回到0,从新秒计数。同时在计数过程中调用延时程序。 2 3 电路原理与电路图 3.1 电路原理 编写程序对80C51 芯片进行初始化,在编程过程中主要使用延迟程序来实 现秒计时器的计时功能。用Proteus软件来实现秒计时器的仿真,其中将P0口 和P1口
3、分别作为高低位输出端口。 3.2 电路原理图 图 3.1 电路原理图 3 4 流程图与算法描述 4.1 函数流程图 4.1.1 实验系统流程图 图 4.1.1 实验系统流程示意图 开 始 R0 所指地址中内容为 0 数码管显示 00 延时一秒 R0=R0+1 R0=60 吗? 送入数码管显示 Y N 4 4.1.2 延时程序流程图 图 4.1.2 延时程序流程图 4.2 算法描述 根据设计的要求,利用单片机控制,实现秒计数并显示,具体设计如下: (1)将0到59的数据通过对10整除和对10求余,将数据的个位和十位分 开。 DIV AB (2)加 1 计数 INC R0 (3)延时程序 开 始
4、用 Lcall 指令调用延 时程序 Delay 调用 Delay2 指令 调用 Delay1 指令 R7=0 R6=0 R5=0 跳出延时程序 结 束 执行停止指令 N N Y Y N 5 DELAY: MOV R5,#100 DELAY2: MOV R6,#20 DELAY1: MOV R7,#248 DJNZ R7,$ DJNZ R6,DELAY1 DJNZ R5,DELAY2 5 仿真分析 程序采用汇编语言编写,并用protues软件编译。用学校的Proteus软件 画电路图和进行仿真。编译通过以后,用Proteus软件进行仿真和调试,把编 译过后生成的 hex 文件加载到单片机中运行后
5、就可以看到仿真的结果了。 测试数据及结果如下: 图 5-1 运行的结果 6 6 课程设计总结 6.1 设计体会 此次课程设计,我获益良多,在之前了解相关的单片机理论知识的基础上, 通过自己的动手实践,理论与实践的结合使得对知识的理解更加深刻,并且慢慢 学会培养自己的创新精神,感觉很有成就感,但同时我也认识到自己在单片机方 面还有很多不足,尤其是单片机指令系统及 AT89C51 各引脚的第二功能等等知 识不够熟练,因此在设计中遇到了很多不懂的知识,通过自己主动地查资料和请 教老师及同学,这些问题也逐步得到解决。 设计过程中,刚开始着手设计时,虽然表面看上去很容易,不过实际也不是 难题,可我还是没
6、有一点头绪,之后花费了大量的时间和精力,同时得到老师和 同学的帮助,才能顺利的完成课程设计,但还是存在一些小问题,需要进一步钻 研和解决。设计时,不断调试程序和修改程序,提高了自己对单片机的应用能力, 分析问题和解决问题的能力。 在实践过程中陈老师和同学给了我很大的帮助和鼓 励,借此机会向他们表达我的感激之情。. 6.2 存在问题与建议 通过这次课程设计我深刻的体会到了自己单片机知识的贫乏, 编程时总是出 现错误,导致我需要不断地翻书查阅资料。 在设计时,因能力有限,没有充分利用所学的理论知识,如果适当的对该设 计增加功能, 并对程序进行改进, 就可以既允分利用资源, 还可以充分节约资源, 更适应市场的需求。 7 参考文献 1 李泉溪单片机原理与实例仿真M北京:北京航空航天大学出版社,2009 2 江世明基于 Protues 的单片机应用技术M北京:电子工业出版社,2009 3 沈永林嵌入式单片机技术M北京:清华大学出版社,2007 4 常东超C 程序设计教程M北京: :清华大学出版社,2009 8