1、- -目 录第1章系统总体方案与说明11.1系统总体方案11.2 系统设计说明11.3系统设计目的21.4系统设计要求3第2章硬件电路设计42.1总原理图42.2各个模块设计42.3 器件清单8第3章软件设计93.1 硬件框图93.2 程序流程图9第4章心得体会12第5章附件15附录A. 源程序清单15附录B.硬件原理图25附件C 参考文献27电气信息学院课程设计评分表28第1章 系统总体方案与说明1.1系统总体方案该课程设计是利用MCS-51单片机部的定时计数器、中断系统、以及行列键盘和LED显示器等部件,设计的一个单片机电子时钟,6位LED数码显示,分别显示“小时:分钟:秒。该作品主要用于
2、24小时计时显示,能整时报时,能作为秒表使用,能定时闹铃1分钟。使用方法:开机后时钟在00:00:00起开场计时。1.长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。2.按P3.3进入设定闹时状态: 12:00: ,可进展分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟完毕.在闹铃时可按P3.2停闹,不按闹铃1分钟。3按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。1.2系统设计说明1系统由
3、AT89C51、LED 数码管、按键、电容、电阻等局部构成,能实现时间的调整、输出、调时间等功能。系统中按钮BUTTON能对时间进展调整功能的按钮,采用单键控制调时功能,运用软件去抖判断按键的时间从而选择完成相对应的功能2时间调整:该设计需要校对时间,所以用三个按键来实现。按hour来调节小时的时间,按 minute来调节分针的时间,按 scoend来调节秒的时间。按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。(3)中断:中断技
4、术在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以对突发事件处理。所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这是CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。关于中断的概念有以下几个名词:1程序A称为主程序,2处理事件B的程序称为中断效劳程序,3主程序中转向中断效劳程序的地方称为断点,4引起中断的原因即事件B称为中断源,5转去执行中断效劳程序称为中断响应。关于中断的概念可以打个如下的比喻。领导CPU在自己的房间办公执行主程序,下属外设有问题打来请示中断源。1.3系统设计目的
5、通过课程设计的教学实践,稳固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。对课题设计方案的分析、选择、比拟、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、容及步骤。提高动手实践能力、提高科学的思维能力。1.4系统设计要求1.掌握单片机最小系统的电路原理图; 2.硬件的焊接、连接;3.独立编辑、编译软件;4.调试要求: 1上电以后自动进入计时状态,起始于00:00:00。2设计键盘调整时间,完成时间设计,并设置闹钟。3定时时间为1/20秒,采用定时器实现。4采用LED数码管显示,时、分,秒采用数字显示。5采用24小时制,具有方便的时间调校功能。
6、6具有时钟和秒表的切换功能。第2章 硬件电路设计2.1总原理图 如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模块、电源模块、晶振模块、按键模块等组成。图2-1电子时钟原理图2.2各个模块设计1、单片机最小系统 AT89S52概述:是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断构
7、造,全双工串行口,片晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停顿工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停顿,直到下一个中断或硬件复位为止详述:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash
8、,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器。一个6向量2级中断构造,全双工串行口及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停顿工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停顿,直到下一个中断或硬件复位为止.2、显示模块LED数码管是由发光二极管构成的,亦称半导体数码管。将条状发光二极管
9、按照共阴极(负极)或共阳极(正极)的方法连接,组成“8字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。假设按规定使某些笔段上的发光二极管发光,就能显示从09的系列数字。同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。+、-分别表示公共阳极和公共阴极。ag是7个笔段电极,DP为小数点。另有一种字高为76mm的超小型LED数码管,管脚从左右两排引出,小数点那么是独立的。本系统利用6位LED数码管显示时间,共阴极构造。LED数码管由7段发光二极管组成,当要显示某个数字时
10、只要将数字所对应的引脚送入低电平。3.按键模块本设计中主要有三个控制按键,按键功能为:1P3.2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。 图2-22按P3.3进入设定闹时状态: 12:00: ,可进展分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟完毕.在闹铃时可按P3.2停闹,不按闹铃1分钟。3按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。4晶振模块以下图所示为时钟
11、电路原理图,在AT89S51芯片部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进展二分频之后,才成为单片机的时钟脉冲信号。图2-3晶振电路2.3 器件清单元件名封装名型号CRYSTALXTAL-1VOLTREGTO-220MC7805TTRANS4 FLY410TO1VSINCAPRB.2/.4CAPACITOR POLCAPRAD-0.1CAPTRANSISTORTO18PNPTRANSISITOR TO92ANPNSPEAKERSI
12、P-2LEDDIODE-0.4SW-PBRES2AXIAL0.3-1.0DPY_7-SEG_DPDIP8单片机AT89S52表一 元件器件清单第3章 软件设计3.1 硬件框图根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块、晶振模块、电源模块与按键模块等,模块之间的关系图如下面得方框电路图所示。图3-13.2程序流程图1总体流程图图3-22时钟调整模式YNNNYY开场系统初始化是否按下设置键时间调整模式是否退出调整模式是否跟闹钟时间一致启动闹铃显示时间图3-33秒表模式YYYYNNNN开场是否按功能切换键系统初始化是否按秒表暂停键是否按秒表启动键是否按秒表清
13、零键切换秒表秒表计时暂停秒表显示时间图3-4第4章 心得体会本次课程设计是用AT89S52单片机CPU及接口电路设计一个数字时钟,经过一个星期的调试,结果满足设计要求,验证无误。通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到了多种芯片,程序也比拟长比拟麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。随着集成电路和计算机技术的迅速开展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与开展,从而加快了智能仪器的开展。而传感器作为测控系统中对象
14、信息的入口,越来越受到人们的关注。传感器好比人体“五官的工程模拟物,它是一种能将特定的被测量信息物理量、化学量、生物量等按一定规律转换成某种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的根底上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各局部之间的关系才能到达要求。通过本次设计,我们系统的了解了实时时钟的设计流程,尤其是硬、软件的设计方法,掌握了键盘显示电路的根本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了89S52定时器的使用和中断处理器程序的编程方法。开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,到达了
15、本次课程设计的目的。在调试电路的过程中也积累了一些珍贵的经历,比方说,在I/O口要保证标准的高电平1的产生,一般要上拉电阻5.1k,在一些需要高电平的地方,不能用悬空来模拟,必须严格的按照“+5v来连接,特别是调试过程中的分局部进展很重要。此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期里,学到了很多的东西。同时不仅稳固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。
16、这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够结实。我们通过查阅大量有关资料,并在小组中互相讨论,交流经历和自学,假设遇到实在搞不明白的问题就会及时请教教师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。单片机课程设计虽然完毕了,但通过设计所学到的东西将长久存在。相信这次设计带给我们的严谨的学习态度和一丝不苟的科学
17、作风将会给我们未来的工作和学习打下一个更坚实的根底。单片机课程设计,是对单片机知识的验证,可以帮助我们理解稳固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在梦想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的设想永远只能是设想,永远无法升级为设计。其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:CAD制图、汇编语言、模拟和数字电路知识
18、等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的部构造有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改良是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。另外,这次课程
19、设计让我感到了团队合作的重要性。在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。还有要感指导教师在我们遇到困难时,给予我们的建议与鼓励。第5章 附件附录A. 源程序清单; AT89S52时钟程序 ;*定时器T0、T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁及秒表定时用,P3.2、P3.3、P3.4为调整按钮,P0口为字符输出口,P2为扫描口,P1.2为蜂呜器口,采用共阳显示管。50H-55H为闹钟定时单元,60H-65H为秒表计时单元,70H-75H为显示时间单元,76H-79H为分时计时单元。03H标志=0时钟闪烁,=1秒表,
20、05H=0,不闹铃,=1要闹铃. 07H每秒改变一次,用作间隔呜叫.* DISPFIRST EQU 30H ;显示首址存放单元 BELL EQU P1.2 CONBS EQU 2FH ;存放报时次数 CLOCK EQU 2DH* 中断入口程序 * ORG 0000H ;程序执行开场地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口 RETI ;外中断1中断返回 ORG 001BH ;定时
21、器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回*以下程序开场 ;*整点报时用 QQQQ: MOV A,#10H MOV B,79H MUL AB ADD A,78H MOV CONBS,A BSLOOP: LCALL DS21MS LCALL DL1S LCALL DL1S LCALL DL1S DJNZ CONBS,BSLOOP CLR 08H ;清整点报时标志 AJMP START1*主程序开场 ;* START: LCALL ST ;上电显示00:00:00 MOV R0,#00H ;清00H-7F
22、H存单元 MOV R7,#80H ;CLEARDISP: MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H标志用 MOV 55H,#1 MOV 54H,#2 MOV 7AH,#0AH ;放入熄灭符数据 MOV TMOD,#11H ;设T0、T1为16位定 MOV TL0,#0B0H ;50MS定时T0计时用 MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值 MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB T
23、R0 ;开启T0定时器 MOV R4,#14H ;1秒定时用计数值 MOV DISPFIRST,#70H ;显示单元为70-75H;以下主程序循环 START1: LCALL DISPLAY ;调用显示子程序 JNB P3.2,SETMM1 ;P3.2口为0时转时间 JNB P3.3,TSFUN ;定时闹铃设定 JNB P3.4,FUNPT ;秒表功能 08H, QQQQ AJMP START1 ;P3.2口为1时跳回START1 FUNPT: LJMP FUNPTT START12: LJMP START1以下闹铃时间设定程序,按P3.3进入设定 TSFUN: LCALL DS20MS P3
24、.3,START1 ; WAIT113: JNB P3.3,WAIT113 ;等待键释放 05H,CLOSESP;闹铃已开的话,关闹铃 MOV DISPFIRST,#52H ;进入闹铃设定程序,显示52-55H闹钟定时单元 DSWAIT: SETB EA LCALL DISPLAY JNB P3.4,DSFINC ;分加1 JNB P3.2,DSDEC ;分减1 JNB P3.3,DSSFU ;进入时调整 AJMP DSWAIT CLOSESP: CLR 05H ;关闹铃标志 CLR BELL AJMP START1 DSSFU: LCALL DS20MS ;消抖 P3.3, DSWAIT L
25、JMP DSSFUNN ;进入时调整; SETMM1: LJMP SETMM;转到时间调整程序SETMM DSFINC : LCALL DS20MS ;消抖 P3.4, DSWAIT DSWAIT12: LCALL DISPLAY ;等键 释放 JNB P3.4, DSWAIT12 CLR EA MOV R0,#53H ; LCALL ADD1 ;闹铃设定分加1 MOV A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,#60H,ADDHH22 ; ADDHH22: JC DSWAIT ;小于60分时返回 ACALL CLR0 ;大于或等于60分 AJMP DSWAIT DSD
26、EC : LCALL DS20MS ;消抖 P3.2, DSWAIT DSWAITEE: LCALL DISPLAY ;等键 释放 JNB P3.2, DSWAITEE CLR EA MOV R0,#53H ; LCALL sub1 ;闹铃设定分减1 LJMP DSWAIT;以下键等待释放时显示不会熄灭用 WAIT21: LCALL DISPLAY AJMP WAIT22 WAIT31: LCALL DISPLAY AJMP WAIT33 WAIT41: LCALL DISPLAY AJMP WAIT44 WAIT51: LCALL DISPLAY AJMP WAIT55 WAIT61: LC
27、ALL DISPLAY AJMP WAIT66 WAIT81: LCALL DISPLAY AJMP WAIT88 WAIT91: LCALL DISPLAY AJMP WAIT99;*; 闪动调时程序秒表功能程序 ;*;T1中断效劳程序,用作时间调整时调整单元闪烁指示或秒表计时INTT1: PUSH ACC ;中断现场保护 PUSH PSW 03H, MMFUN ;=1时秒表 MOV TL1, #0B0H;装定时器T1定时 MOV TH1, #3CH ; DJNZ R2,INTT1OUT ; MOV R2,#06H ; CPL 02H ; 02H,FLASH1 ; MOV 72H,76H ;
28、 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场 POP ACC ; RETI ;中断退出FLASH1: 01H,FLASH2 ;MOV 72H,7AH ; MOV 73H,7AH ; MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;转中断退出;*; 显示程序 ;*; 显示数据在70H-75H单元,用六位LED共阳数码管显示,P0口输出段码数据,P2口作; 扫描控制,每个LED数码管亮1MS时间再逐位循环。 DISPLAY: MOV R1,DISPFIRST ;指向显示数据首
29、址 MOV R5,#0FEH ;扫描控制字初值 PLAY: MOV A,R5 ;扫描字放入A MOV P2,A ;从P2口输出 MOV A,R1 ;取显示数据到A MOV DPTR,#TAB ;取段码表地址 MOVCA,A+DPTR ; MOV P0,A ;段码放入P1口 MOV A,R5 ; ACC.2,LOOP5 ;小数点处理 CLR P0.7 ; LOOP5: ACC.4,LOOP6 ;小数点处理 CLR P0.7 ; LOOP6: LCALL DL1MS ;显示1MS INC R1 ;指向下一地址 MOV A,R5 ;扫描控制字放入A JNB ACC.5,ENDOUT ; RL A ;
30、A中数据循环左移 MOV R5,A ;放回R5 MOV P0,#0FFH AJMP PLAY ;跳回PLAY ENDOUT: MOV P2,#0FFH ; MOV P0,#0FFH ;P0口复位 RET ;子程序返回 TAB: ;共阴段码表 012 34567 89不亮“A“-;*; SDISPLAY ,上电显示子程序;*;不带小数点显示,有“A“-显示功能 SDISPLAY: MOV R1,DISPFIRST MOV R5,#0FEH ;扫描控制字初值 SPLAY: MOV A,R5 ;扫描字放入A MOV P2,A ;从P2口输出 MOV A,R1 ;取显示数据到A MOV DPTR,#T
31、ABS ;取段码表地址 MOVCA,A+DPTR ; MOV P0,A ;段码放入P1口 MOV A,R5 ; LCALL DL1MS ;显示1MS INC R1 ;指向下一地址 ENDOUTS: MOV P2,#0FFH ; MOV P0,#0FFH ;P0口复位 RET ;子程序返回TABS:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0C6H,0BFH,88H ; 显示数 0 1 2 3 4 5 6 7 8 9 不亮 C - A ; 存数 0 1 2 3 4 5 6 7 8 9 0AH 0BH 0CH 0DH STAB:DB0AH,0AH,0AH,0AH,