《基于AT89C52的电子时钟设计说明.doc》由会员分享,可在线阅读,更多相关《基于AT89C52的电子时钟设计说明.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.华北水利水电学院课程设计报告课程名称: 基于AT89C52的电子时钟设计姓 名: 东利 学 号: 200814715 班 级: 电信2008147 专 业: 电子信息工程 日 期:二零一零年一月二十二日目 录一、前言3二、课程设计的目的和要求42.1课程设计的目的42.2课程设计的基本要求4三、总体设计原理4四、硬件设计54.1设计思路54.2硬件结构与原理电路54.3主要硬件原件说明64.4单元电路原理介绍6五、软件设计105.1程序介绍105.2程序清单13六、系统操作说明18七、设计总结19八、参考文献20一 前言 20世纪70年代开始,半导体厂商把微型机最基本的部件制作在一个硅片,于
2、是就出现了以一个大规模集成电路为主组成的微型计算机-单片微型计算机(Single-chip microcomputer),简称单片机。由于单片机面向控制性应用领域,装入到各种智能化产品之中,所以又称为嵌入式控制器(embedded microcontroller)单片机部包含有计算机的基本功能部件:中央处理器(CPU)、存贮器(memory)、输入/输出(I/O)接口电路,给单片机加上适当的外围设备和软件,便构成一个单片机应用系统。其应用如下:(1)单片机在智能仪表中的应用:单片机广泛地应用于实验室、交通运输工具、计量等各种仪器仪表之中,使仪器仪表智能化,提高它们的测量精度,加强其功能,简化仪
3、器仪表的结构,便于使用、维护和改进。(2)单片机在机电一体化中的应用:机电一体化是机械工业发展的方向。机电一体化产品是指集机械技术、微电子技术、自动化技术和计算机技术于一体,具有智能化特征的机电产品。(3)单片机在实时控制中的应用:单片机也广泛地用于各种实时控制系统中,如对工业上各种窑炉的温度、酸度、化学成分的测量和控制。将测量技术、自动控制技术和单片机技术相结合,充分发挥数据处理和实时控制功能,使系统工作于最佳状态,提高系统的生产效率和产品的质量。(4)单片机在分布式多机系统工程中的应用:单片机在多机系统中,往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。五 单片
4、机在家用电器等消费类领域的应用:家用电器等消费类领域的产品特点是量多面广,市场前景看好。单片机应用到消费类产品之中,能大大提高它们的性能价格比,提高产品在市场上的竞争能力。二 课程设计的目的和要求2.1 课程设计的目的单片机具有稳定可靠、 体积小、 价格低廉等特点,成为设计智能化仪器仪表的首选微控制器,因此本次设计我们采用了AT89C52芯片,此款单片机可以使用软件对其进行在线编程,其灵活性和可靠性都相对提高。通过此次课程设计,增强了我们的动手能力,把理论与实践融合在一起。同时,也进一步加深了对单片机的硬件结构的理解和巩固,编程能力也得到了提高。2.2 课程设计的基本要求 本次课程设计要求利用
5、单片机部定时器实现时、分、秒计时且在6个数码管上同时显示时、分、秒计时时间,并能通过按键对计时时间进行重新设置。三 总体设计原理 本设计中的电子钟的核心是AT89S51单片机,其部带有4KB在线可编程Flash存储器的单片机,无须外扩程序存储器,硬件电路主要由四部分构成:时钟电路,复位电路,键盘以与显示电路。系统时钟电路采用的晶振的频率为12MHz,定时计数个数为5000,定时器采用的是定时器0工作在方式1定时,用于实现时、分、秒的计时,定时时间为5ms。复位电路可使电子表恢复到初始状态。键盘可对电子表进行开启、停止,还能实现时、分、秒的显示与设定等操作。显示电路由一个共阳级6位一体LED数码
6、管构成,它的段控端和位控端通过7447与9015PNP型号三极管与AT89C52单片机的I/O口相连,显示器可使电子表显示出时、分、秒。 多功能电子表的计时原理为:上电后,电子表显示P.提示符,按下K0键后,电子表从00:00:00开始计时。当定时器0的定时时间满5ms后,定时器0溢出一次,溢出满200次后,电子表的秒加1,满60秒后,分加1,满60分后,时加1,满24时后,电子表重新从00:00:00开始计时。四 硬件设计4.1 设计思路 电子时钟主要由显示模块、校时模块和时钟运算模块三大部分组成。其中校时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进
7、1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。4.2 硬件结构与原理电路4.3 主要硬件原件说明4.3.1 单片机AT89C52AT89C52是一个低电压,高性能CMOS 8位单片机,片含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同
8、时含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。4.3.2 译码器驱动芯片7447 7447是美国仙童(FRIRCHILD)公司生产的BCD码到7段数码管的译码器驱动芯片。它负责将4位BCD码十进制数转化成对应的7段数码管信号,送到数码管的7位段选输入端。4.3.3 74LS138译码器74LS138 为3 线8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式,其工作原理如
9、下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。 其作用是利用 G1、/(G2A)和/(G2B)可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。4.4单元电路原理介绍4.4.1 电源电路原理本系统所用器件的工作电压为+5V,为保证本系统能够正常工作,需提供稳定的+5V电压,可利用三端集成稳压器7805来实现,其应用电路如图所示。7805的输入电压为+10V,输出电压为稳定的+5V电压,C=2
10、000F为滤波电容,C1=0.33F是为了改善纹波电路,C0=0.1F是为了改善负载的瞬态响应。(其中要求Ui-Uo2V)4.4.2 时钟电路原理 如图所示为时钟电路原理图,AT89C52芯片部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。4.4.3 复位电路原理 如图所示为复位电路原理图,复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序,并使
11、其它功能单元处于一个确定的初始状态。本复位电路采用的是按键复位,它是通过复位端经电阻与VCC电源接通而实现的,它兼具上电复位功能。因本系统的晶振的频率为12MHz,所以,复位信号持续时间应当超过2S才能完成复位操作。4.4.4 键盘工作原理 如图所示为键盘原理图,本系统采用的是独立式键盘结构,每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。它的软件是采用查询式结构,首先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。4.4.5 显示器原理系统采用动态显示方式,用P0口来控制LE
12、D数码管的段控线,而用P2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。图中的7447作为驱动器,而7个100欧姆电阻则起限流作用。五 软件设计5.1 程序介绍(1)主程序(START) 在主程序中只完成系统的初始化,同时进行时、分、秒按键的扫描。如果有按键按下,则做相应时 分 秒计数器的加1处理。主程序流程图如下:(2)定时器中断服务程序(TIMER0) 定时器T0用于时间计时。定时计数个数为50000,由于采用12MHz晶体
13、振荡器,所以定时溢出中断周期为5000 us = 5ms。为了保证计时的准确性,进入中断服务程序时应立即重设计数初值。在中断程序中还要判断是否计时1s,若是,还应通过调用其他子程序作时、分、秒值的相应处理。中断程序流程图如下:(3)显示子程序(DISP)该子程序通过在中断服务程序中被调用而执行。每一次中断程序调用一次,其作用是根据扫描指针循环驱动各个数码管。(4)时钟调整子程序(CLK_CHANGE)当中断程序中判断出计时1s时,该程序即被调用执行。其作用为将秒的计数值加1,同时判断是否应对时、分、秒作相应修改。(5)数据转换子程序(CONVERT)当中断程序中判断出计时1s 时,该程序即被调
14、用执行。由于时 分 秒的计数值分别保存在一个字节里,而每一个计数值实际上是一个2位的十进制数。在驱动显示时必须将这个2位数拆分开分别去扫描个位和十位,该子程序就是完成这个任务的,并把拆分结果存储在从20H开始的显示寄存器单元里。(6) 延时子程序(DELAY) 用于键盘的延时去抖。5.2 程序清单ORG 0000H ;复位起始地址AJMP START ;跳转至主程序ORG 000BH ;TIMER0中断矢量地址AJMP TIMER0 ;跳转至T0中断子程序;TIMER0;主程序*START: MOV SP,#6FH ;设置堆栈从6FH开始 MOV 30H,#00H ;显示位码寄存器初值为0 M
15、OV 2AH,#00H ;“时”寄存器初值为00H MOV 2BH,#00H ;“分”寄存器初值为00H MOV 2CH,#00H ;“秒“寄存器 初值为00H MOV TMOD, #01H ;设T0为工作方式1,即16;位定时器 MOV TH0, #0ECH ;定时器计时中断时间为;5000us MOV TL0,#78HMOV IE,#82H ;T0中断使能、总的中断使能MOV R4,#200 ;5000us中断200次,以实;现计时1s功能SETB TR0 ;启动定时器T0LOOP: P0.0,NEXT2 ;P0.0(秒值修改键)是否;被按下?不是,则跳至;NEXT2检查P0.1ACALL
16、 DELAY ;去抖动 P0.0,NEXT2 ;P0.0不是真正被按下,则 ;跳至NEXT2检查P0.1NEXT1: JNB P0.0,NEXT1 ;P0.0是否已分开?MOV A,2CH ;将秒寄存器的值放入AADD A,#01 ;A的容加1DA A ;十进制调整MOV 2CH,A ;将A的值放回秒寄存器CJNE A,#60H,NEXT2 ;是否等于60秒?不是,;则跳至NEXT2MOV 2CH,#00 ;是则重新设置秒寄存器;的值为00NEXT2: P0.1,NEXT4 ;P0.1(分值修改键)是否被;按下?不是则跳至NEXT4ACALLDELAY ;去抖动 P0.1,NEXT4 ;P0.
17、1不是真正被按下,则跳 ;至NEXT4检查P0.2NEXT3: JNB P0.1,NEXT3 ;P0.1是否已分开MOV A,2BH ;将分寄存器的值修改,类 ;同秒的处理ADD A,#01DA AMOV 2BH,ACJNE A,60H,EXT4 ;P0.2(时值修改键)是否被 ;按下,不是,则跳至NEXT4MOV 2BH,#00 ;是则重设寄存器的值为00NEXT4: P0.2,LOOP ;P0.2是否被按下?不是则 ;跳至LOOPACALL DELAY ;去抖动 P0.2,LOOPNEXT5: JNB P0.2,NEXT5 ;P0.2是否已放开?MOV A,2AHADD A,#01HDA
18、AMOV 2AH,ACJNE A,#24H,LOOPMOV 2AH,#00AJMP LOOP;定时中断服务程序*TIMER0:MOV TH0,#0ECH ;重设定时器中断计时5000usMOV TL0,#78HPUSH ACC ;保留现场的值PUSH PSWDJNZ R4,TIMLP1 ;计时1s到否?不到1s, ;则跳至TIMLP1MOV R4,#200ACALL CLK_CHANGE ;调用计时子程序ACALL CONVERT ;调用数码转换与 ;CONVERT子程序TIMLP1:ACALL DISP ;调用显示子程序DISPPOP PSW ;恢复现场的值POP ACCRETI;显示子程序
19、*DISP: MOV A,30H ;扫描显示位码载入AADD A,#20HMOV R1,AMOV A,30HSWAP AORL A,R1MOV P1,A ;输出至P1显示INC 30H ; 扫描偏移量指针加1MOV A,30HCJNE A,#6,DSPENDMOV 30H,#0DSPEND:RET;时钟调整子程序*CLK_CHANGE: MOV A,2CH ;2CH单元为秒寄存器 ADD A,#1 ;加1秒DA A ;十进制调整MOV 2CH,A ;存入秒寄存器CJNE A,#60H,CLKEND ;是否超过60秒?不是,;则跳至CLKENDMOV 2CH,#00 ;是,则重设为00MOV A
20、,2BH ;2BH单元为分寄存器,;其处理同秒寄存器ADD A,#1DA AMOV 2BH,ACJNE A,#60H,CLKEND ;是否超过60分?不是,;则跳至CLKENDMOV 2BH,#00 ;是,则重设为00MOV A,2AH ;2AH单元为时寄存器,;其处理同秒、分处理ADD A,1DA AMOV 2AH,ACJNE A,#24,CLKEND ;是否超过24时?不是,;则跳至CLKENDMOV 2AH,#00CLKEND: RET;数据转换子程序*CONVERT:MOV R1,#20H ;送显示缓冲区首地址到;R1指针 MOV A,2CH ;将秒寄存器的容存入AANL A,#0FH
21、 ;取秒值的个位,并存入;20H单元MOV R1,AINC R1 ;目标地址指针修改MOV A,2CH ;将秒寄存器的容存入A ANL A,#0F0H ;取秒值的十位,并存入;21H单元SWAP AMOV R1,AINC R1 ;目标地址指针修改MOV A,2BH ;分值的处理,类似于秒;的处理ANL A,#0FH MOV R1,AINC R1MOV A,2BHANL A,#0F0HSWAP AMOV R1,AINC R1MOV A,2AH ;时值的处理,类似于分、;秒的处理ANL A,#0FHMOV R1,A NC R1MOV A,2AHANL A,#0F0HSWAP AMOV R1,ARE
22、T;延时子程序*DELAY: MOV R6,#10D1: MOV R7,#250 DJNZ R7,$DJNZ R6,D1RETEND六 系统操作说明使用电子钟时操作步骤如下:(1) 将+5V电源接到电子钟电源插口上,接通电源开关。(2) 把电子钟电路板上的ISP程序下载口JP1通过下载线连接到计算机打印机接口,在计算机上通过下载软件Easy 51Pro把电子钟程序下载到单片机。(3) 电子钟程序下载到单片机以后,电子钟进入待命令状态,显示器LED5显示“P.”。(4) 按一下K0子钟从0时、0分、0秒开始运行,此时显示器分别显示时、分、秒。(5) 再次按一下K0子钟停止运行进入调整状态,此时通
23、过K1键、K2键、K3键分别调整电子钟的时、分、秒。按一下其中的一个键对应的值加1。调节到用户想要的时间后,再次按一下K0键,电子钟将以用户调整的时间为起点进入运行状态。注意事项:(1) 每按一次复位键K0键单片机就完成一次复位操作,电子钟复位以后进入待命令状态。(2) 在对电子钟电路板操作和使用时,下载接口线拔插时,必须先按下电源开关断开电源。七 设计总结 为期两周的单片机课程设计接近尾声,通过我们组成员的通力合作顺利完成了设计任务。在整个设计过程中我负责的是软件的设计,其中包括程序的编写和软件的仿真。一方面,系统程序是系统运行中不可缺少的,其程序的可运行与否直接关系着系统设计的成功与否。程
24、序是为硬件服务的,所以在设计程序的过程中,要结合硬件设计,考虑相关的系统要求来设计程序。在程序编写方面我感触最深的一点是调时间的过程中,要求闪烁可调,这是为了调时间的过程中的一种直观性,让用户明白现在所调的是时还是分。这就要求程序的设计要考虑到闪烁频率的问题,具体来讲就是要求计算程序中所涉与到的指令所占用的机器周期的总合计。另一方面,单片机的虚拟仿真也是设计过程中的一个重要环节。通过这次设计我熟练掌握了软件Proteus和Keil uVision2的使用,同时也反映出了一些问题。将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多是平时的实验遇到过的,例如:输入的分号格式不正确,零和字母O弄混淆了,CJNE写成了CJNZ等,幸好这些错误在平时的实验中遇到了,所以改错误很容易。 通过这次电子钟设计,我学到了很多知识。能够和同学一起成功的做出来实物我自己觉得很有成就感,这同时也激发了我学习单片机的更大热情,立志以后从事单片机方面的研究。八 参考文献1毅刚,单片机原理与应用,高等教育,2003年3吴翔,原理图仿真与PCB设计,电子工业,2008年4阎石,数字电子技术基础,高等教育,2005年5王宗和,电子技术实践与训练,高等教育,2005年6淳,电子爱好者入门要诀,中国电力,2008年20 / 20