单片机课程设计设计题目基于单片机数字秒表的设计学院名称电气学院指导教师朱卫华班级电子11级02班学号学生姓名摘要本设计是基于AT89S51单片机的简易数字秒表设计,主要组成是以51单片机最小系统为核心,通过运用单片机的振荡电路实现计时同时用数码管同步显示。本秒表最大计时为99秒。本设计的特点是:大部分功能通过软件实现,使电路简单明了,系统稳定性好。关键词:AT89S51振荡电路计时数码管目录1设计概述.................................................................................................................11.1AT89S51概述...............................................................................................11.2系统设计功能概述......................................................................................12系统设计.................................................................................................................22.1设计思路......................................................................................................22.2硬件设计......................................................................................................22.2.1单片机最小系统的设计....................................................................22.2.2数码管显示电路设计........................................................................32.3软件设计......................................................................................................72.3.1软件设计流程图................................................................................72.3.2消除开关抖动....................................................................................92.3.3数码管延时显示程序........................................................................92.3.4延时1秒的程序.............................................................................103软件调试和结果...................................................................................................103.1软件调试与下载........................................................................................103.2硬件仿真....................................................................................................114心得体会...............................................................................................................12参考文献......................................................................................................................14附录..............................................................................................................................15I基于单片机的数字秒表设计主程序................................................................15IIPCB电路图........................................................................................................17III实物图.............................................................................................................1711设计概述1.1AT89S51概述AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。AT89S51引脚图在实际应用中,因为STC的单片机比AT的单片机更加容易下载程序,它们的端口是一模一样的,所以本次设计实际应用的是STC51单片机。1.2系统设计功能概述本设计展现的是一个计时用的秒表。功能为两位七段数码管在开机时显示“00“,并在系统中添加一个按钮开关。当第一次按下按钮开关后秒表开始计时,2第二次按下后计时停止,第三次按下后两个数码管清0,并回到一开始计时状态。由于只设计了两位数码管,故该秒表最大计时99秒。2系统设计2.1设计思路根据系统功能,易知我们先要设计一个单片机最小系统,包括振荡电路、复位电路,然后设计一个数码管控制、显示电路,再用软件来控制秒表的计时以及数码管的显示。2.2硬件设计2.2.1单片机最小系统的设计1时钟电路设计如图2.2.1,为了方便计算,本设计采用12MHz的晶振,一个机器周期为1秒。图2.2.12复位电路设计单片机最小系统分设计数码管显示、控制电路设计软件设计3如图2.2.2,为了更好的控制复位电路,用了一个接触式按钮开关。图2.2.22.2.2数码管显示电路设计一般来说,不直接用I/O端口直接连接数码管,如图2.2.3,本设计采用74ls48译码器和共阴极数码管。4图2.2.374ls48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,如下图,为74Ls48真值表以及特性表。5图2.2.4真值表图2.2.5特性表因为74ls48输出电流最大为6mA,在数码管的工作电流之内,所以不必用电阻。共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,x相应字段就不亮。6图2.2.6数码管引脚图图2.2.7数码管真值表7将共阴极数码管一端接地,一端接在单片机上,通过操纵单片机的高低电平,从而控制数码管。图2.2.5如图2.2.5,当按钮没有按下时,单片机的I/O口直接连接电源,所以须要上拉电阻进行限流,计算的灌电流为2.5mA,查看AT89S51的数据手册知该电流在其范围内,满足设计要求。2.3软件设计2.3.1软件设计流程图8否否是否否是否是第2次按钮按下计时开始数码管显示第1次按钮按下第3次按钮按下92.3.2消除开关抖动当手指按下开关时,如果我们的动作足够完美,那么P1.0应该立即出现一个低电平,并且这个低电平一直保持到我们抬起手指为止。但实际情况是,我们没有经过专业的按开关训练和开关自身存在着接触点接触不良的问题,导致在按下开关的过程中产生一个微妙的跳变电平接触过程:开关在一个很短的时间内,会出现多次的接通与断开过程。这样在P1.0端口出现一个电平在VCC和0V之间抖动的过程。这对于具有高灵敏触角的单片机来说,会产生误动作。因此,如图2.3.1,本设计采用延时程序设计来避开抖动电平。图2.3.1延时程序上述程序所花时间为(248*2+2+2)*60=30ms,30ms足以消除抖动。2.3.3数码管延时显示程序在本次的秒表系统电路设计图中,两位七段数码管与P0口相连,并分别占了P0.0-P0.3和P0.4-P0.7.因为有译码器为接口,只要控制I/O口输出BCD码便能得到相应数字了。如显示0,由于0的BCD码为0000,所以指令为MOVP0,#00H。秒表启动后,当第一次按下按钮开关后秒表开始计时。系统延时1秒,然后利用ADD指令,把显示的数字加一,这样就显示01,再延时再显示,如此循环,直到显示至99后,又返回00重新开始计时。102.3.4延时1秒的程序MOVR5,#10ADD_1:MOVR6,#200CALLDELAYDJNZR5,ADD_1DELAY:MOVR7,#248JNBP1.0,PRESS_2DJNZR7,$DJNZR6,DELAYRET上述程序所花时间为(2+2+248*2)*200*10=1s。3软件调试和结果将完整的程序在uVision中进行编辑和汇编,编译成功后就可以通过51开发板下载到硬件平台中。3.1软件调试与下载单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的11不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,如图3.1所示,利用keil软件生成hex文件。图3.1在keil中编辑程序生成hex文件后,利用单片机开发板用stc-isp软件下载到单片机中。3.2硬件仿真如图,利用proteus仿真电路。12图3.2数字秒表数字电路4心得体会单片机可以应用于各个领域,而单片机本身也是融合了各个领域的知识。我们可以通过单片机去实现很多的电子产品,因为它的应用领域非常的广泛