1、 目录一、设计题目1二、方案设计1三、硬件设计21电路图22I/O口的分配23、电路的工作原理24原件明细3四、软件设计31、软件设计的思路32、程序流程图43、总体结构框架介绍64、程序清单6五、制作和调试8六、心得体会8七、参考文献9一、设计题目利用AT89C51单片机设计并制作秒表电路。要求如下:通过LED显示器(数码管)显示秒的十位和个位;设计一个按键,使按键按下去时秒表开始计时,即秒表开始键;设计一个按键,按键按下去时秒表暂停计时,使秒表停留在原先的计时,即计时停止键;设计一个按键,作为秒表的清零按钮,使秒表计数结束后可以清零。二、 方案设计 1、该秒表主要由51系列单片机及开关控制
2、数码显示管的显示情况,此秒表可现实显示两位数从00到99的计数,即开始计数、停止计数和清零三种,由手动控制三个开关K1、K2、K3来实现。2、当接通电源时数码管显示00,然后按动K1使秒表开始计时,在0秒到99秒之间的任何时间均可;若要定时,如只需计时到32秒则在显示器显示到32时按下定时键K2即可;在计时过程中若需要清零,则需按下K3键。3、设计过程中除了向老师请教外,还通过上网查阅资料及翻阅书籍。上单片机课程时我曾做过关于数码显示器的实验,所以在焊接电路板时可参照实验报告书上的连接方式。要特别注意两数码管引脚的连接及com端和三极管的连接,其决定了共阴极和共阳极,此处涉及到编程中初值的写入
3、,为在焊接电路时简洁,因此我采用下面的com端,即数码管采用共阴极方式。主要设计思路是编写相应程序后由单片机的P0口输出到数码管上,实现数据的显示。P2.6口控制个位的显示和P2.7口控制十位的显示,P3.5、P3.6、P3.7口分别控制秒表的开始、停止和清零。三、硬件设计1电路图使用Proteus工程软件制图,如下图所示:2I/O口的分配P0口是一个漏极开路8位准双向复用I/O端口,它的P0.0P0.7口分别接电阻R1R8,但因为该设计中不需要小数点的显示,即dp端不用接,所以只用接7个阻值为100欧的电阻。P2口是一个内部带上拉电阻的8位准双向复用I/O端口,只用其P2.6口和P2.7口输
4、出字位码。P3口是一个内部带上拉电阻的8位多功能双向I/O端口,它的每一条引脚均可独立定义为第一功能的输入输出(其主要功能是它的第二功能,在此不做详细解释)。3、电路的工作原理 本系统采用模块化设计,以AT89C51单片机为核心,与秒表显示接口电路组成控制系统。该系统硬件主要包括以下几个模块:AT89C51主控模块、秒表显示模块等。其中AT89C5主要完成外围硬件的控制以及一些运算功能,秒表显示模块完成时间的显示功能。4原件明细元名称元件数目元件型号元件参数备注按键开关3个接对角线电容3个一个电解电容,两个瓷片电容电解电容10uF,瓷片电容30pF电解电容长脚为正,瓷片无正负之分晶振1个12M
5、内部时钟电路电阻9个7个510欧,2个10K欧用于限流单片机芯片1片AT89C5140引脚电源插头1个数码管2个10引脚有两个com端三极管2个S9012各元件的作用:开关:三个分别用于显示器的开始、停止和清零。电容:用于单片机的最小系统中。晶振:提供内部时钟。电阻:用来限制电流。单片机芯片:实现软件的编程与烧写。数码管:显示秒表计时数据。电源插头:用于接外接电源。四、软件设计1、软件设计的思路在硬件电路中,由于硬件电路中显示灯是接在P2口的两个端口,用于输出,且二极管为共阴极的接法,则单片机的程序设计中要是灯亮必须为高电平有效,由于程序中用到中断源,所以要打开中断源;模块设计时可用查询方式检
6、测开始按键是否被按下,若按下开始键数码管开始显示00,开始计数后,再用查询方式检测这个按键是否被按下,如果按下则检测跳转到下一个按键检测程序继续检测,一次检测各个按键的情况,数码管的初值显示设置为0。2、程序流程图是否是否手动开关定时器溢出中断对定时器重新赋值进行加一操作后重新计算时间往P0口和P2口送显示时间数码管显示中断返回主函数对定时器/计数器初始化始化程序开始判断P3口是否有低电平信号开中断并启动定时器开始、暂停或者继续计数置零判断P0口是否有低电平信号3、总体结构框架介绍初始化模块:对系统进行初始化,由于程序中有中断源,因此打开相应的中断也放在程序的初始化模块中;检测开始按键:检测开
7、始按键是否被按下,按下则开始执行循环为消除按键抖动,此处应调用延时程序;循环检测停止、清零按键:循环检测停止、清零按键是否被按下,同时等待中断到来;延时程序:用于小穿件的机器抖动,调用的延时程序为0.5s;中断处理:当中断源到来,首先停止计数,从开始计数的数在数码管中显示出来。4、程序清单STRTEQU P3.5STP EQUP3.6CLRREQUP3.7ORG00HAJMPMAINORG0BHAJMPT0INTORG30HMAIN:MOVSP,#60HMOVDPTR,#TABMOVTMOD,#01H;T0定时方式1SETBEASETBET0MOVTH0,#3CH;50ms定时常数MOVTL0
8、,#0B0HMOV R0,#20;20x50mS=1S k1:LCALLDISPJBSTRT,K2ACALLDISPJNBSTRT,$-2AJMPSTARTk2:JBSTP,K3LCALLDISPJNBSTP,$-3AJMPSTOPK3:JBCLRR,K1LCALLDISPJNBCLRR,$-3AJMPCLEARSTART:SETBTR0AJMPK1STOP:CLRTR0AJMPK2CLEAR:CLR TR0MOVR4,#0AJMPK1T0INT:MOVTH0,#03CH;定时中断子程序。重装定时常数MOVTL0,#0B0H;DJNZR0,T0INTR;50msX20=1S,未满20次,跳出中
9、断子程序MOVR0,#20INCR4CJNE R4,#100,T0INTRMOVR4,#0CLRTR0T0INTR:RETIDISP: MOV A,R4MOV B,#10DIV AB ;当前值除以10MOV 20H,A ;得出的商送给十位MOV 21H,B ;得出的余数送给个位MOV A,20H ;十位显示MOVC A,A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7MOV A,21H ;个位显示MOVC A,A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETBP2.6RETDELAY: ;误差 0usMOV R6,#10DL0:MOV
10、 R5,#50DJNZ R5,$DJNZ R6,DL0RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END五、制作和调试将所设计的硬件电路焊接好,然后根据硬件电力路的今本要求画出软件编程的流程图,然后根据流程图中的各个模块编写相应的模块程序,最后将各个模块综合起来构成所设计的程序。应当注意当按下开关时,接的是低电平,因此在编辑程序时不要弄反以免出现错误。六、心得体会通过此单片机课题的选定,编程,调试,仿真到最后完成论文,心情是喜悦并且激动的,觉得做好一件事情并不是那么容易,关键是要看你对这件事情的态度问题,通过这次课题实验,我也对单片机这
11、门课有了更加深刻的认识,它的用途,它的功能,它的方便之处,都通过这几天的研究得到了体会,而且对知识的巩固也起到了一定的作用。这次论文课题的编写,还有一个重要的认识就是,要学好一门课很容易,但是要真正能把它运动到实际中就难了,掌握一定的理论知识并且会做题还不够,关键是要怎么样去利用,所以,在今后的学习生活中,我要学会学以致用。另外,单片机是建立在C语言的基础之上,因此可知大学所学的课程时相互关联的,学好每一门课是非常重要的,作为物理专业的同学,我们更应该熟练操作并且掌握好这门功课,这对以后的不管是毕业论文还是所学知识都是很有帮助的。七、参考文献单片机原理及接口技术胡键 主编 机械工程出版社51系列单片机实验指导书 编者 杜礼霞