基于51单片机的数字钟设计_第1页
基于51单片机的数字钟设计_第2页
基于51单片机的数字钟设计_第3页
基于51单片机的数字钟设计_第4页
基于51单片机的数字钟设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文设计基于51单片机的数字钟设计 总计 毕业设计 (论文) 23 页 表 格 3 个 插 图 12 个AbstractThe application of multi-function digital clock very general, by single chip microcomputer as the core controller, digital clock through its clock signal timing function, will realize its time data SCM outputs, using monitors displayed. This design has the timing, reset function of digital clock, using the microcomputer digital clock with programming flexible, facilitate function expansion, etc.Keywords: multi-function, AT89C51, LCD目录摘 要IAbstractII第一章 绪论11.1任务要求11.2 设计意义11.3 设计方案1第二章 硬件设计32.1单片机的选择32.2 显示方案32.3 时钟电路62.4 复位电路62.5按键电路7第三章 软件设计83.1主程序83.2定时器T0中断服务程序83.3显示子程序93.4定时器T1中断服务程序103.5 调时功能程序103.6 延时程序10第四章 仿真结果分析114.1 Proteus ISIS 的介绍114.2 仿真结果11第五章 系统测试135.1 硬件测试135.2 软件测试13总结14参考文献15附录16序完整代码16第一章 绪论1.1任务要求 通过单片机内定时器控制走时,准确持续走时,调时不影响走时。 在LCD液晶显示屏上显示时、分、秒及两个小数点。能对时间进行校准。1.2 设计意义用单片及制作数字钟是单片机的一个典型应用。数字钟是采用数字电路实现对“时、分、秒” 数字显示的计时装置, 广泛应用于个人家庭、车站、码头、办公室等公共场所, 已成为人们日常生活中不可缺少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。利用单片机设计一个时钟, 单片机扩展的LCD 显示器用来显示秒、分、时计数单元中的值,可以非常准确地显示标准时间。1.3 设计方案采用AT89C51芯片作为硬件核心,其内部采用Flash ROM,具有4KB ROM 存储空间,能于3V的超低压工作,本系统的计时方案是利用单片机内部的定时/计数器进行中断定时, 配合软件延时实现对时、分、秒的计时。整个系统的控制方案是:上电后系统自动进入时间显示,从00:00:00 开始计时。按下功能键,当安下身时间小于1s时,进入省电状态,大于1s时,进入调分状态,等待操作,此时计数器停止走动。当再次按下按键时,若按键时间小于0.5s,则时间加1min;若按键时间大于0.5s,则进入小时调整状态。在小时调整状态下,若按键时间小于0.5s时,则小时加1h,若按键时间大于0.5s,则退出调整状态,时钟继续走动。整个系统的硬件原理框图如图1.1,它采用的是AT89C51单片机,只用了P1口和P2口。为了简化硬件电路,LED显示采用了动态扫描的方式实现,P1口输出段码数据,P2.0-P2.5 段作扫描输出控制端,P2.7作功能转换按键输入端。LED采用共阳极数码管,驱动电流由三极管9012提供。为了提高计数精度,所采用的晶振频率为12MHz。 六位数码显示电路 89C51驱动电源时钟电路复位电路按键位选 图 1.1 硬件原理框图第二章 硬件设计2.1单片机的选择本课程选用AT89C51型号的单片机。 AT89C51 是美国ATMEL 公司生产的低电压,高性能CMOS8 位单片机,片内含4k bytes 的可反复擦写的只读程序存 储器(PEROM)和128 bytes 的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产, 兼容标准MCS-51 指令系统,片内置通用8 位 央处理器(CPU)和Flash 存储单元,功能强大AT89C51 单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。主要性能参数: 与MCS-51 产 指令系统完全兼容 4k 字节可重擦写Flash 闪速存储器 1000 次擦写周期 全静态操作:0Hz24MHz 三级加密程序存储器 1288 字节内部RAM 32 个可编程I O 口线 2 个16 位定时计数器2.2 显示方案由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图2.2所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻。图2.2 LED数码管结构原理图众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。各段码位与显示段的对应关系如表2.2。表2.2 各段码位的对应关系(放在表的上面)段码位D7D6D5D4D3D2D1D0显示段dpgfedcba需说明的是当用数据口连接LED数码管adp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。通常数据口的D0位与a段连接,D1位与b段连接,D7位与dp段连接,如表1所示,表2.3为用于LED数码管显示的十六进制数和空白字符与P的显示段码。根据AT89C2051单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将AT89C2051的P1.0P1.7分别与共阳数码管的ag及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符。例如:当P0口输出的段码为1100 0000,数码管显示的字符为0。表2.3 LED显示段码字型共阳极段码共阴极段码字型共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H注:(1)本表所列各字符的显示段码均为小数点不亮的情况。 (2)“空白”字符即没有任何显示。数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需解决多位LED数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制)通过P0口实现;而每一位的公共端,即LED数码管的“位控”,则由P3口控制。这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态。2.3 时钟电路晶体振荡器电路给数字钟提供一个频率稳定准确的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。如图2.3所示。 图2.3 时钟电路2.4 复位电路当上电时,电源对电容充电,对单片机复位,使单片机从00H开始执行程序。如图2.4所示。 图2.4 复位电路2.5按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,按键占用一条I/O口线。如图2.5所示。 图2.5按键电路第三章 软件设计3.1主程序主程序功能主要是初始化、正常现实时间和判断功能转换键。显示时间调用显示子程序。当p2.7端口按键按下时,转入调时功能程序。主程序的流程图3.1。内存单元清零调用显示子程序调时程序T0,T1为16位计数器允许T0中断开始P2.7=0 ?NY图3.1 主程序3.2定时器T0中断服务程序时钟的最小计时单位是秒,60s进为1min,60min进位1h。定时器T0用于产生最小计时单位1s,定时时间为50ms,中断累计20次为1计数单元中的十进制BCD数每逢60进位。程序流程图如图3.2所示。分单位清0,时单位加1中断返回60min?到?开始保护现场恢复现场秒单位清0,分单位加1秒单位加160s到 ?1s到否?24h到 ?时单位清0YNNNNNNYYYN图3.2 定时器T0中断服务程序3.3显示子程序数码管显示的数据存放在40H55H内存单元中,其中50H、51H单元存放秒数据,52H、53H单元存放分数据,54H、55H单元存放时数据。时间的数据采用BCD码表示,对应的显示代码存放在ROM中。显示时,先取出50H55H某一地址的数据,然后从段码表中查出对应的显示用段码并从P1口中输出,同时P2口将对应的数码管选中,就可以显示出相应的时间值。3.4定时器T1中断服务程序进行时间调整是,正在被调整的时间以闪烁的形式表现,定时器T1用于产生闪烁的时间间隔,每隔0.3s闪烁一次。3.5 调时功能程序调整时间程序的方法是:按下功能键,当安下身时间小于1s时,进入省电状态,大于1s时,进入调分状态,等待操作,此时计数器停止走动。当再次按下按键时,若按键时间小于0.5s,则时间加1min;若按键时间大于0.5s,则进入小时调整状态。在小时调整状态下,若按键时间小于0.5s时,则小时加1h,若按键时间大于0.5s,则退出调整状态,时钟继续走动。3.6 延时程序系统使用三个延时程序。因为系统是动态显示,为了确保系统在有效显示时间范围内(约50ms)必须执行显示程序,所以0.5s的延时程序是通过执行显示程序约81遍实现的。第四章 仿真结果分析4.1 Proteus ISIS 的介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。4.2 仿真结果根据设计图在Proteus ISIS软件中画出原理图,如图4.3。 图4.3 原理图 在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程 图4.4 运行图 第五章 系统测试5.1 硬件测试该数字钟的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有封皮的导线,使电路造成短路现象。另外,买来的元器件要先进行检测,如果有坏的器件要进行更换,还有就是要注间元器件的正确放置与安装以及布线的合理,便于成品电路的检测与维护。在本数字钟的设计调试中遇到了很多的问题。回想这些问题,其实只要认真思考很多功能都是可以避免的,电路做成后,LCD有显示,但是不能正常计时走钟通过检测,查出单片机AT89S51的31脚EA 引脚 没有接5V的电源作为高电平(因为该系统中没有扩展外部程序存储器,故电路通电工作后,其内部程序执行应该从内部程序存储单元开始,也即EA引脚要接高电平。通常引脚悬空也可看成是接高电平,但是本次设计中选的用芯片AT89S51内部采用的是CMOS结构,不能将悬空等同为接高电平,而必须接5V的电源作为高电平才能正常工作),用导线将31脚接到电源,问题就得到解决了。5.2 软件测试数字钟的功能虽然比较少,但是程序也较为复杂,特别对于初学者的我来说更是如此,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题是烧入程序后,LCD管能显示,也能走钟,但时间明显跳动很快,是由于从“秒”、“时”、“分”的循环次数太少,加大其循环次数能解决抖动问题。参考文献1李东生.张勇,许四毛. Protell99SE电路设计技术入门与应用M.北京:电子工业出版社,2002;2扬刚主.电子系统设计与实践.电子工业出版社M 20043 卢结成. 电子电路实验及应用课题设计M.中国科学技术大学出版社,2002年4李广弟,朱月秀,王秀山.单片机基础M.北京航空航天出版社,2001.75谢维成,杨加国.单片机原理与应用及C51程序设计M.清华大学出版社,2007.26 关宗安,仲丛久.基于单片机实现的多路定时控制器的设计.沈阳航空工业学院学报.2004年6月.第21卷第3期68页7何希庆,高伟.MCS-51单片机原理、实验、实例M.山东:山东大学出版社.19898 刘飞等,两种数字钟电路设计比较J 湖北师范学院学报 .2003,2(23):40-43 9 胥筱门,单片机系统的试验及应用J 电子制作.1999,(6):20-3010房小翠,王金凤.单片微型计算机与机电接口技术M.北京国防工业出版社.200211Maxim公司.Newreleases Data Book 199612 ATMEL.Microcontroller Data book.200213 Mark1.Montrose.PRINTED Circuit Board Design Techniques for EMC compliance. IEE Press series.2000附录序完整代码ORG 0000H AJMP MAINT ;转主程序 NOP ORG 000BH AJMP INT01 ;转定时器T0中断程序 NOP ORG 001BH AJMP INT11 ;转定时器T1中断程序 NOPMAINT: MOV R0,#7FH ;00H7FH单元清零 CLR AWZ1: MOV R0,A DJNZ R0,WZ1 MOV SP,#30H ;置堆栈指针 MOV 5AH,#0AH ;放入“熄灭符”数据 MOV TMOD,#11H ;设T0,T1为16位定时器MOV TL0,#0B0H ;置50 ms定时初值MOV TH0,#3CHMOV TL1,#0B0HMOV TH1,#3CHSETB EA ;开中断SETB ET0 ;允许T0中断SETB TR0 ;启动T0MOV R4,#14H ;用于产生1 s定时MAINT1:LCALL XSZCX ;调用显示子程序 JNB P2.7,SJTZ0 ;功能键按下,进入调时程序 SJMP MAINT1SJTZ0: LCALL XSZCX ;通过调用显示时间程序延时消抖动 JNBP2.7,SJTZ1 SJMP MAINT1 ;功能键没有按下,显示时间SJTZ1: CLR ET0 ;关闭T0中断 CLR TR0 ;关闭T0 LCALL YS1S ;调用1 s延时程序 JB P2.7,KMTES ;按键时间小于1 s,进入省电状态 MOV R2,#06H ;进入调时状态,置闪烁定时初值 SETB ET1 ;允许T1中断 SETB TR1 ;启动T1XYZ2: JNB P2.7,XYZ1 ;P2.7端为0,等待 CLR 01H ;置调分标志位为1XYZ4: JB P2.7,XYZ3 ;等待键按下 LCALL YS05S ;延时0.5 s JNB P2.7,XYZHH ;按键时间大于0.5 s,转调小时状态 MOV R0,#53H ;按键时间小于0.5 s,进入调分状态LCALL ADD1 ;调时间加1子程序MOV A,R3 ;取要调整的单元数据 CLR C CJNE A,#60H,QWE ;调整单元数据与60比较QWE: JC XYZ4 ;小于60转到XYZ4循环 CLR A ;大于或等于60,清零 MOV R0,A DEC R0 MOV R0,A CLR C AJMP XYZ4 ;转到XYZ4循环KMTES: SETB ET0 ;省电状态,开T0中断 SETB TR0 ;启动T0(开时钟)KMA: JB P2.7,$ ;无按键按下,等待 LCALL XSZCX ;通过调用显示时间程序延时消抖动 JB P2.7,KMA ;是干扰返回等待KMA1: JNB P2.7,$ ;等待键释放 LJMP MAINT1 ;返回主程序,显示时间XYZHH:JNB P2.7,XYZ5 ;等待键释放 SETB 01H ;置调小时标志位XYZ6: JB P2.7,XYZ7 ;等待键按下 LCALL YS05S ;有键按下,延时0.5 s JNB P2.7,XYZOUT ;按下时间大于0.5 s,退出调整状态 MOV R0,#55H ;小于0.5 s,调整小时 LCALL ADD1 ;调加1子程序 MOV A,R3CLR C CJNE A,#24H,KMB1 ;计时单元与24比较KMB1: JC XYZ6, ;小于24转XYZ6循环 CLR A ;大于或等于24,则清零 MOV R0,A DEC R0 MOV R0,A AJMP XYZ6 ;转XYZ6循环XYZOUT: JNB P2.7,XYZOUT1 ;退出调时状态,等待键释放 LCALL XSZCX ;通过调用显示程序延时消抖动 JNB P2.7,XYZOUT ;是抖动,返回XYZOUT等待 MOV 20H,#00H ;清调时标志位 CLR TR1 ;关闭T1 CLR ET1 ;关T1中断 SETB TR0 ;启动T0 SETB ET0 ;开T0中断 LJMP MAINT1 ;返回主程序XYZ1: LCALL XSZCX ;键释放等待时,调用显示子程序 AJMP XYZ2 ;防止此时无时钟显示XYZ3: LCALL XSZCX AJMP XYZ4XYZ5: LCALL XSZCX AJMP XYZHHXYZ7: LCALL XSZCX AJMP XYZ6XYZOUT1:LCALL XSZCX AJMP XYZOUT ;*显示子程序*XSZCX: MOV R1,#50H ;显示数据首址 MOV R5,#0FEH ;扫描控制字初值MAXY: MOV A,R5 ;扫描控制字送A MOV P2,A ;输出扫描控制字 MOV A,R1 ;取显示数据 MOV DPTR,#ABC ;取段码表首地址 MOVC A,A+DPTR ;取对应段码 MOV P1,A ;P1口输出段码 LCALL YS1MS ;延时1 msINC R1 ;显示地址增1 MOV A,R5 ;扫描控制字送A JNBACC.5,ENDOUT ;ACC.5为0时一次显示结束 RL A ;控制字左移 MOV R5,A ;制字送回R5中 AJMP MAXY ;循环显示下一个数据ENDOUT: MOV P2,#0FFH ;一次显示结束,P2口复位 MOV P1,#0FFH ;P1口复位 RET ;子程序返回 *T0中断服务程序*INT01: PUSH ACC ;保护现场 PUSH PSW CLR ET0 ;关T0中断 CLR TR0 ;关定时器T0 MOV A,#0B7H ;修正中断响应时间 ADD A,TL0 MOV TL0,AMOV A,#3CH ADDC A,TH0 SETB TR0 ;启动定时器T0 DJNZ R4,INT0U ;20次中断未到退出中断AD1: MOV R4,#14H ;R4重新赋值 MOV R0,#51H ;指向秒计时单元(50H,51H) LCALL ADD1 ;调用加1 s程序 MOV A,R3 ;秒数据放入A CLR C ;清进位标志 CJNE A,#60H,AD2 ;小于60 s吗AD2: JC INT0U ;小于60 s退出中断CLR A ;大于或等于60 s,清秒计数单元 MOV R0,A DEC R0 MOV R0,A MOV R0,#57H ;指向分计时单元 (56H,57H) ACALL ADD1 ;调用加1 min程序 MOV A,R3 ;分数据放入A CLR C CJNE A,#60H,AD3 ;小于60 min吗AD3: JC INT0U ;小于60 min退出中断CLR A ;大于或等于60 min,清分计数单元 MOV R0,A DEC R0 MOV R0,A MOV R0,#59H ;指向小时计时单元 (58H,59H) ACALL ADD1 ;调用加1 h程序 MOV A,R3 ;小时数据放入A CLR C CJNE A,#24H,AD4 ;小于24 h吗AD4: JC INT0U ;小于24 h退出中断CLR A ;大于或等于24 h清小时计数单元 MOV R0,A DEC R0 MOV R0,AINT0U: MOV 52H,56H ;中断退出时将分、时计时单元数 MOV 53H,57H ;据移入对应显示单元 MOV 54H,58H MOV 55H,59HPOP PSW ;恢复现场 POP ACC SETB ET0 ;开放T0中断 RETI ;中断返回* T1中断服务程序*INT11:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论