资源描述
单片机课程设计题目:数字电子时钟设计指导老师: 制作人员: 学号 班级:自动化 日期: 总评成绩:课程任务设计书设计题目:数字电子时钟的设计设计任务:1.设计一款时,分,秒可调数字电子时钟可整点报时;2.设计三个按键K1,K2和K3,用于调节时钟的时间;3.用8个、七段LED数码管作为显示设备,开机显示00-00-00;摘要本设计采用AT89C51单片机为核心器件。具有电子钟显示,时间调整,整点报时等功能。此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。根据60秒为一分、60分为1小时的计数周期,构成秒、分、时的计数,实现计时的功能。而且能显示清晰、直观的数字符号。针对数字钟会产生误差的现象,就设计有校准时间的功能。 AT89C51单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为24时00分00秒,另外应有校时功能。电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。显示器件选用LED八段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。关键字:Proteus,KeiluVision,AT89C51,电子钟,整点报时目录摘 要3第1章概述.51.1 设计背景.51.2系统方案论证与设计.5第2章系统硬件设计.72.1 系统总电路的设计72.1.1系统的总框图2.1.2芯片的选择72.2最小系统设计92.2.1时钟电路的选择与设计102.2.2复位电路的选择与设计102.3 发声电路的选择与设计102.4 按键电路的选择与设计112.5显示电路的选择与设计11第3章 系统软件设计12 3.1 系统流程图12 3.2 子程序的介绍133.2.1显示子程序133.2.2按键扫描程序14第4章 软件仿真164.1 Protues软件的介绍164.2keil软件的介绍164.3仿真电路图174.4仿真结果与分析17小结19参考文献20附录A 电路图21附录B程序21第1章概述1.1 设计背景单片机是20世纪70年代中期发展起来的一种大规模集成电路器件。它在一块硅芯片内集成了各种计算机功能部件,构成一种单片式的微型计算机。20世纪80年代以来,随着国际上单片机迅速发展,其应用不断深入,新技术层出不穷。也因为其体积小,功能强,成本地,尤其是随着CMOS工艺的发展,耗电也大大低于其它相似的电子产品,被广泛应用于智能产品和工业控制之中。其中最著名的生产商就是INTEL公司,其开发的51系列单片机是目前市场上最典型和最有代表性的一种,也是国内市场用的最多的单片机。在其之后,世界上许多著名的半导体厂商相继生产和这个系列兼容的单片机,这就使得其产品型号不断地增加,品种不断丰富,功能不断增强。在国内外单片机应用中占有非常重要的地位。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案1.2 系统方案论证与设计方案一:由若干个74LS160、电阻、开关、电容、LED数码管、与非门和74153组成。这个方案较复杂,组成部件较多,连线复杂,不够简洁;但是思路清晰。方案二:由主芯片AT89C51、电阻、电容、8个8段LED数码管、开关组成。这个方案较为简化,应用部件少,连线简单。为了节约时间成本,所以在本设计中采用方案二来设计数字时钟电路。第2章系统硬件设计2.1 系统总电路的设计2.1.1 系统的组成与总框图数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1MHZ时间信号必须做到准确稳定,通常使用石英晶体振荡器电路构成数字钟。时钟电路由主芯片AT89C51和时钟电路,复位电路,按键电路,LED显示,声响电路组成。数字钟系统的总框图如图2.1所示:AT89C51时钟电路LED显示复位电路按键电路发声电路图2.1 系统的总框图2.1.2 芯片的选择通过对多种单片机性能的分析,最终认为AT89C51是最理想的电子时钟开发芯片。所以本设计采用AT89C51芯片,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。图2.2 AT89C51AT89C51:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。2.2 最小系统设计2.2.1 时钟电路的选择与设计时钟电路是产生CPU校准时序,是单片机的控制核心。AT89C51的时钟信号可通过内部振荡方式和外部振荡方式两种方式得到。本次设计使用的是片内振荡方式,通过外接12MHz的晶振来实现时钟电路的时序控制。在使用片内振荡器时,XTAL1和XTAL2分别为反向放大器的输入端和输出端。外接晶体以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。当使用外部时钟驱动时,XTAL2引脚应悬空,而由XTAL1引脚上的信号驱动,或者XTAL1引脚应悬空,而由XTAL2引脚上的信号驱动。外部振荡器再通过一个2分频的触发器来形成内部时钟所需要的信号。具体的电路接法如图2.3:图2.3 时钟电路2.2.2 复位电路的选择与设计根据应用的要求,复位操作通常由上电复位和开关复位2种基本形式。本系统使用的复位电路是在基本复位电路的基础上所改进的一种混合方法,使其两种形式巧妙地糅合在一起,即做到了上电复位,又可以在发生预料之外的问题时,随时进行开关复位单片机。具体的电路连接接法如图2.4:图2.4 复位电路单片机复位后的状态:单片机的复位操作使单片机进入初始化过程,其中包括使程序计数器PC0000H,P0P3FFH,SP07H,其他寄存器处于零。这表明程序从0000H地址单元开始执行。单片机复位后不改变片内RAM区中的内容。2.3 发声电路的选择与设计报时器一端p1.0,一端接地,当分显示到达60,报时器报时。图2.5 发声电路2.4 按键电路的选择与设计P2.6/A14,P2.7/A15,P3.0/RXD,P3.5/T1,P3.6/WR,P3.7/RD并联接开关再接地。按ST按键计时开始;PA为复位按键,开始复位;CL为清零按键,全部清零,S为秒按键,按下秒加1;M为分按键,按下分加1;H为小时按键,按下小时加1图2.6 按键电路2.5 显示电路的选择与设计系统默认的电源是5V,AT89C51也是5V,可以直接接入。第3章 系统软件设计3.1 系统流程图开始初始化秒加1NY+秒=60?分加1NY分=60?小时加1N小时=24?图3.1 系统流程图3.2 子程序的介绍3.2.1显示子程序T0INT: MOV TH0,#03CH;定时中断子程序。重装定时常数 MOV TL0,#0B0H ;TL0=0B0H MOV R4,#20 ;R4=20 DJNZ R4,T0INTR ;50msX20=1S,未满20次,跳出中断子程序 INC 26H ;1S,秒存储单元内数+1 INC R0 ;响铃时间 MOV A,26H;A=26H CJNE A,#60,T0INTR ;未满60S,跳出中断。 MOV 26H,#0 ;满60S,秒单元清零 INC 27H ;分+1 MOV A,27H;A=27H CJNE A,#60,T0INTR;比较立即数和A,不相等则转移 MOV 27H,#0;27H=0 INC 28H;28H=28H+1 MOV A,28H;A=28H CJNE A,#24,T0INTR;比较立即数和A,不相等则转移 MOV 28H,#0;28H=03.2.2 按键扫描程序kS: ACALL DISP;调用子程序DISP ACALL ALARM ;调用子程序ALARM JB SEC,KM ;秒调整按键 ACALL DISP;调用子程序DISP JNB SEC,$-2 ;直接寻址位为“0”,则转移 AJMP SINC;绝对转移kM: JB MIN,KH ;分调整按键 ACALL DISP;调用子程序DISP JNB MIN,$-2 ;直接寻址位为“0”,则转移 AJMP MINC;绝对转移KH: JB HOUR,K1 ;时调整按键 ACALL DISP;调用子程序DISP JNB HOUR,$-2 ;直接寻址位为“0”,则转移 AJMP HINC ;绝对转移第四章 软件仿真4.1 Protues软件的介绍Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。一台计算机、一套电子仿真软件,在加上一本虚拟实验教程,就可相当于一个设备先进的实验室。以虚代实、以软代硬,就建立一个完善的虚拟实验室。在计算机上学习电工基础,模拟电路、数字电路、单片机应用系统等课程,并进行电路设计、仿真、调试等。基本操作步骤: 1打开PROTEUS 操作界面。2选择“P”,从元件库中提取需要的元器件(选中双击),选择完点OK。 3在编辑区画电路图,修改元件参数。4进行电路仿真。 5保存文件。4.2 keil软件的介绍Keil C51是美国Keil Software公司出品的51系列兼单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括c编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。本次设计采用的 keil uvision4。它是2009年2月发布的,Keil Vision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。4.3 仿真电路图该电路图是由AT89C51和时钟电路,复位电路,按键电路,LED显示,声响电路组成。图4.1仿真电路图4.4 仿真结果与分析图4.2开始电路图当摁下H键时显示结果01-00-00,如下图所示:图4.3 时钟显示01-00-00并且摁下分钟键,分钟也会相应加一,秒钟也是如此。ST为开始按键,摁下后始终开始运行,P键为复位键,CL键为清除键,摁下后时钟显示为00-00-00。小 结本设计与论文用了近两个星期的时间,系统设计以单片机AT89系列为核心的控制模块,充分利用了所学知识,单片机最小系统,LED数码管显示模块电路,以及信号的控制,从而实现了时分秒显示和时间显示调整,以及整点报时。然而在因为对程序总在很多忙点,因此产生了很多浅显的错误,导致仿真结果不能正确显示,甚至直接失败。后来通过老师和同学的指导以及查阅资料,解决了大部分问题,最终完成设计。由于时间有限,还存在一些不足之处,在功能上的扩展还没实现。在做设计的过程中遇到了这样或那样的问题,但通过老师和同学的帮助总的来说还算顺利。通过查询有关方面的书籍和网页,增强了自已分析处理电路设计过程中的问题的能力。在毕业设计的这段时间我复习了很多知识,对以前的数字电路又有了一定的新认识,在以后的学习生活过程中,我会更加的努力学习专业技能以及积极向上的生活态度。在此我要感谢我的小组组长,组长给了我相对自由的空间,锻炼了我独立思考的能力树立了对自己工作能力的信心,当我需要帮助时组长会耐心的帮我讲解,使我的设计能够顺利完成。再次感谢在此次设计中给我很多帮助的指导老师和同学。参考文献1胡辉,单片机应用系统设计与训练,中国水利水电出版社,2004.9 155-1632曹巧媛,单片机原理及应用,北京:电子工业出版社,1997.7 364-370 3赵秀珍,单永磊,单片微型计算机原理及其应用,北京:中国水利水电出版社,2001.8 546-5524张毅刚,修林成,胡振江,MCS-51单片机应用设计,哈尔滨:哈尔滨工业大学出版社,1990.8 256-235 5张洪润,兰清华,单片机应用技术教程,北京:清华大学出版社,1997.11 375-386附录A 电路图附录B 程序STRT EQU P2.6 ;引脚定义STP EQU P2.7 CLRR EQU P3.0SEC EQU P3.5MIN EQU P3.6 HOUR EQU P3.7 ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 1BH AJMP T1INT ORG 30H MAIN: MOV SP,#60H MOV R4,#20 MOV TMOD,#11H MOV TH0,#03CH; 12M晶振时定时初值取#3CB0H MOV TL0,#0B0H MOV TH1,#0FEH MOV TL1,#0CH SETB EA SETB ET0 SETB ET1kS: ACALL DISP ACALL ALARM JB SEC,KM ;秒调整按键 ACALL DISP JNB SEC,$-2 AJMP SINCkM: JB MIN,KH ;分调整按键 ACALL DISP JNB MIN,$-2 AJMP MINCKH: JB HOUR,K1 ;时调整按键 ACALL DISP JNB HOUR,$-2 AJMP HINC SINC: JB 7FH,SINC_A INC 26H ;秒调整 MOV A,26H CJNE A,#60,SINC0 MOV 26H,#0 AJMP SINC0SINC_A: INC 36H ;闹秒调整 MOV A,36H CJNE A,#60,SINC0 MOV 36H,#0SINC0: AJMP KSMINC: JB 7FH,MINC_A INC 27H ;分调整 MOV A,27H CJNE A,#60,MINC0 MOV 27H,#0MINC_A:INC 37H ;闹分调整 MOV A,37H CJNE A,#60,MINC0 MOV 37H,#0MINC0:AJMP KMHINC: JB 7FH,HINC_A INC 28H ;时调整 MOV A,28H CJNE A,#24,HINC0 MOV 28H,#0HINC_A:INC 38H ;闹时调整 MOV A,38H CJNE A,#24,HINC0 MOV 38H,#0HINC0: AJMP KH k1: ACALL DISP ;开始键 JB STRT,K2 ACALL DISP JNB STRT,$-2 AJMP STARTk2: JB STP,K3 ;暂停键 ACALL DISP JNB STP,STOP AJMP CL_ALK3: JB CLRR,KS0 ACALL DISP JNB CLRR,CLEAR ;清零键 KS0: AJMP KSSTART: CPL TR0 ;开始/暂停 SETB 7DH ;7DH为开始键按下标志,此作为允许闹铃标志 AJMP K1STOP: CLR TR0 AJMP K2CL_AL: CPL 7FH ;7FH作时钟和闹铃标志位 AJMP K2CLEAR: CLR TR0 ;清零 MOV A,#0 MOV 26H,A MOV 27H,A MOV 28H,A MOV 36H,A MOV 37H,A MOV 38H,A CLR 7DH AJMP KSDISP: JB 7FH,DISP_A MOV 29H,26H ;秒送秒显示缓存 MOV 2AH,27H MOV 2BH,28H AJMP DISP1DISP_A:MOV 29H,36H MOV 2AH,37H MOV 2BH,38HDISP1: MOV A,29H MOV B,#10 DIV AB MOV 20H,B ;余数(秒个位数) MOV 21H,A ;商(秒十位数) MOV A,2AH MOV B,#10 DIV AB MOV 22H,B ;余数(分个位数) MOV 23H,A ;商(分十位数) MOV A,2BH MOV B,#10 DIV AB MOV 24H,B ;余数(时个位数) MOV 25H,A ;商(时十位数) MOV A,20H ;秒个位 ACALL SEG7 MOV P0,A CLR P2.0 ACALL DLY SETB P2.0 MOV A,21H ;秒十位 ACALL SEG7 MOV P0,A CLR P2.1 ACALL DLY SETB P2.1 MOV A,22H ;分个位 ACALL SEG7 MOV P0,A CLR P2.2 ACALL DLY SETB P2.2 MOV A,23H ;分十位 ACALL SEG7 MOV P0,A CLR P2.3 ACALL DLY SETB P2.3 MOV A,24H ;时个位 ACALL SEG7 MOV P0,A CLR P2.4 ACALL DLY SETB P2.4 MOV A,25H ;时十位 ACALL SEG7 MOV P0,A CLR P2.5 ACALL DLY SETB P2.5 CLR P1.1 ;显示分隔符 MOV A,#40H MOV P0,A ACALL DLY SETB P1.1 CLR P1.2 ;显示分隔符 MOV A,#40H MOV P0,A ACALL DLY SETB P1.2 RETALARM: JNB 7DH,RT ;开始键未按下跳出 MOV A,28H ;开机时,时分秒都为0,跳出 JZ AL0M AJMP ALARM1AL0M: MOV A,27H JZ AL0S AJMP ALARM1AL0S: MOV A,26H JZ RT ALARM1:MOV A,28H ;比较小时 CJNE A,38H,AL ;不等返回,相等,转分钟比较 MOV A,27H ;比较分钟 CJNE A,37H,AL MOV A,26H ;比较秒 CJNE A,36H,AL AJMP ALARM2 ;转闹铃AL: MOV A,28H ;整点提醒 JZ RT ;小时不是00,判分是不是00 MOV A,27H JNZ RT ;分不是00,跳出 MOV A,26H JNZ RT AJMP ALARM3 ;秒不为00,跳出。为00,整点提醒ALARM2: SETB TR1 ;闹铃3 S MOV R0,#0 AJMP RTALARM3: SETB TR1;整点提醒1S MOV R0,#2RT:RETT0INT: MOV TH0,#03CH;定时中断子程序。重装定时常数 MOV TL0,#0B0H MOV R4,#20 DJNZ R4,T0INTR ;50msX20=1S,未满20次,跳出中断子程序 INC 26H ;1S,秒存储单元内数+1 INC R0 ;响铃时间 MOV A,26H CJNE A,#60,T0INTR ;未满60S,跳出中断。 MOV 26H,#0 ;满60S,秒单元清零 INC 27H ;分+1 MOV A,27H CJNE A,#60,T0INTR MOV 27H,#0 INC 28H MOV A,28H CJNE A,#24,T0INTR MOV 28H,#0T0INTR: RETIT1INT:MOV TH1,#0FEH MOV TL1,#0CH CPL P1.0 CJNE R0,#3,T1RTI ;闹铃时间设为5秒 CLR TR1 ;关闹铃T1RTI:RETIDLY:MOV R7,#20 MOV R6,#25 DJNZ R6,$ DJNZ R7,$-4 RETSEG7: INC A MOVC A,A+PC RETDB 03FH ;0 共阴DB 006H ;1DB 05BH ;2DB 04FH ;3DB 066H ;4DB 06DH ;5DB 07DH ;6DB 007H ;7DB 07FH ;8DB 06FH ;9END
展开阅读全文