单片机电子钟课程设计数字电子钟.doc

上传人:土8路 文档编号:9998680 上传时间:2021-04-09 格式:DOC 页数:24 大小:605KB
返回 下载 相关 举报
单片机电子钟课程设计数字电子钟.doc_第1页
第1页 / 共24页
单片机电子钟课程设计数字电子钟.doc_第2页
第2页 / 共24页
单片机电子钟课程设计数字电子钟.doc_第3页
第3页 / 共24页
单片机电子钟课程设计数字电子钟.doc_第4页
第4页 / 共24页
单片机电子钟课程设计数字电子钟.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《单片机电子钟课程设计数字电子钟.doc》由会员分享,可在线阅读,更多相关《单片机电子钟课程设计数字电子钟.doc(24页珍藏版)》请在三一文库上搜索。

1、单片机技术课程设计说明书 数字电子钟 摘 要:AT89C52 ATMEL公司生产的低电压,高性能CMOS 8位单片机片内含8K byTES的可反复擦写的只读程序存储器(PEROM)和256 byTES 。的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052 产品引脚兼容,片内置通用8位中央处理器(CPU )和FLASH由存储单元,功能强大AT89C52单片适用于许多较为复杂控制应用场合。主要性能参数:与Mcs-51产品指令和引脚完全兼容。8字节可重擦写FLASH闪速存储器1000 次擦写周期全静态操作:0HZ-24MHZ三级

2、加密程序存储器256X8字节内部RAM32个可编程I/0口线3个16 位定时计数器8个中断源可编程串行UART通道低功耗空闲和掉电模式电子钟是一种用电子电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。电子钟从原理上讲是一种典型的电子电路,其中包括了组合逻辑电路和时序电路。目前,电子钟的功能越来越强,并且有多种专门的大规模集成电路可供选择。从有利于学习的角度考虑,这里主要介绍以中小规模集成电路设计电子钟的方法。经过了电子电路设计这门课程的系统学习,特别经过了关于组合逻辑电路与时序逻辑电路部分的学习,我们已经具备

3、了设计小规模集成电路的能力,借由本次设计的机会,充分将所学的知识运用到实际中去。本次课程设计要求设计一个电子钟,基本要求为电子钟的时间周期为24小时,电子钟显示时、分、秒,电子钟的时间基准一秒对应现实生活中的时钟的一秒。因此,研究电子钟,有着非常现实的意义。目 录 摘要2 第一章 系统的组成及工作原理4 1.1 设计要求41.2 系统的组成41.3 系统的工作原理4第二章 系统硬件电路方案设计72.1 电子时钟方案72.2 数码显示方案7 2.3 单元电路设计8 2.2.1 晶体振荡电路8 2.2.2 复位电路8 2.2.3 显示电路9 2.2.4 键盘电路9第三章 系统的软件设计103.1

4、程序流程图103.2 源程序11第四章 系统调试174.1 软件调试174.2 硬件调试17第五章 设计体会和结论18 参考文献19 致谢20 附录一:电路原理图21附录二:PCB图22附录三:数码管元件清单23 第一章 系统组成及工作原理1.1 系统设计要求设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.2 系统的组成数字钟实际上是

5、一个对标准频率(1HZ)进行计数的计数电路.由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1MHZ时间信号必须做到准确稳定.通常使用石英晶体振荡器电路构成数字钟. (1) 晶体振荡器 晶体振荡器给数字钟提供一个频率稳定准确的11.0592MHz的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器。(2) 复位电路 时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器,时个位和时十位电路构成,秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器。(3) 数码管 数码管

6、通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。(4) 键盘 键盘是控制和修改时钟的重要输入模块,通过键盘可以修改时间,修改年月日,修改闹钟时间,控制显示等。1.3 系统工作原理VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P

7、1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,

8、P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口第二功能口。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为

9、振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期

10、间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE第二章 系统硬件电路方案设计2.1 电子时钟方案电子时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情

11、况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设6个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且

12、,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。2.2 数码管显示方案方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通

13、电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。从节省I/O口和降低能耗出发,本设计采用方案二。2.3 单元电路设计2.3.1 晶体振荡电路时钟电路原理图。如图2.1所示,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经 过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 图2.1 晶体振荡电路2.3.2 复位电路单片机复位的条件是:必须使RST/VPD

14、或RST引脚加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12 MHz,每机器周期为1s,则只需2s以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图2.2所示。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。 该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。 图2.2 复位电路2.3.3 显示电路系

15、统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。如图2.3所示。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。 图2.3 数码管电路2.3.4 键盘电路键盘的操作,无论是按键或键盘都是利用机械触点的合、断作用。一个电压信号通过机械触点的闭合、断开过程。由于机械触点的弹性作用,在闭合及断开瞬间均有抖动过程,会出现一系列负脉冲。抖动时间的长短,与开关的机械特性有关,一般为510ms。 图2.4 独立式键盘 第三章 系

16、统软件设计3.1程序流程图数字电子钟主要包括初始化程序,中断服务程序和键处理程序。程序流程图如图3.1,图3.2,图3.3,图3.4所示。电子时钟初始化定时器设置上电默认显示P.键盘扫描及处理YESYESNOYESNONO定时器1中断服务程序中断是否达100次(1s)秒是否满60秒加1分是否满60分清0,小时加1小时是否满24小时清0RETI秒清0,分加1YES图3.1电子时钟初始化定时器0中断服务程序重设定时器值关闭所有位,更新段码选通下一位数码管增量位索引RETI图3.3定时1服务中断程序图3.2 定时0中断服务程序 图3.4 键处理程序3.2源程序;伪指令定义区 SECLEQU30HSE

17、CHEQU31HMINUTELEQU32HMINUTEHEQU33HHOURLEQU34HHOURHEQU35HS2BZBIT2FH.0S3BZBIT2FH.1S4BZBIT2FH.2S5BZBIT2FH.3S6BZBIT2FH.4;*;起始程序ORG0000HSTART:LJMPMAINORG000BHLJMPTC0;*;监控程序ORG0030H MAIN:MOVSP,#7FH;堆栈初始化MOVPSW,#00H;当前通用寄存器组初始化MOVR0,#20H;MOVR2,#96;循环次数,用户RAM单元个数CL:MOVR0,#00H;清零INCR0;DJNZR2,CL;用户RAM ,20H-7F

18、H清零MOVTMOD,#01H;定时器0方式1工作MOVTH0,#3CHMOVTL0,#0B0H ;定时器初始化 定时50msSETBEASETBET0MOV40H, #20TCC:MOVDPTR,#DISBH ;系统初始化后P.字符代码首地址MOVR0,#78H ;显示子程序入口首地址MOVR5,#8H ;8位数码管,故需要循环8次CLRADISPTSF:PUSHACC ;保护AMOVCA,A+DPTR MOVR0,A ;将P.字符代码送入显示缓冲区POPACC ;恢复AINCA INCR0 ;为送下一个字符代码序号做准备DJNZR5,DISPTSF ML0:LCALLDISP ;调用显示子

19、程序LCALLKEYKEY0:JB20H.0,S2FUNCTIONJB20H.1,S3FUNCTIONJB20H.2,S4FUNCTIONJB20H.3,S5FUNCTIONLJMPML0;*;键功能程序;S2FUNCTION:CPLS2BZ;1代表开始JBS2BZ,STARTTIME1CLRTR0LJMPUP1STARTTIME1:SETBTR0 ;开始计时UP1:LCALLUPDATELCALLDISP LJMPML0S3FUNCTION:JBTR0,ML0;判断时钟停止后进行调整MOVR0,#SECH;入口为秒位SSSS: LCALLDAAD1;秒加1MOVA,R2;判断秒是否计满到60

20、XRLA,#60HJNZTTTT;没满则转移更新显缓LCALLCLR0;满则清零TTTT:LCALLUPDATELJMPML0S4FUNCTION:JBTR0,ML0 ;判断时钟停止后进行调整MOVR0,#MINUTEH ;入口为分位LJMPSSSSS5FUNCTION:JBTR0,ML0 ;判断时钟停止后进行调整MOVR0,#HOURH ;入口为时位FFFF: LCALLDAAD1MOVA,R2XRLA,#24H ;判断时是否计满到24JNZTTTT ;没满则转移更新显缓LCALLCLR0 ;满则清零;*;中断服务程序;TC0:PUSHPSWPUSHACCSETBRS1SETBRS0 MOV

21、TH0,#3CH ;定时器初值重装 定时50msMOVTL0,#0B0HMOVA,40HDECAMOV40H,A ;JNZRET0 ;不为0则转移MOV40H, #20 ;为零则1S到,秒加一MOVR0,#SECH ;秒位送加一子程序入口LCALLDAAD1 ;MOVA,R2 ;XRLA,#60H ;判断秒位是否到60JNZRET0 ;没到则更新显缓LCALLCLR0 ;到了则清零显缓MOVR0,#MINUTEH ;同时分为也该加一LCALLDAAD1MOVA,R2XRLA,#60H ;判断分位是否到60JNZRET0 ;没到则更新显缓LCALLCLR0 ;到了则清零显缓MOVR0,#HOUR

22、H ;同时时为也该加一LCALLDAAD1MOVA,R2XRLA,#24H ;判断分位是否到24JNZRET0 ;没到则更新显缓LCALLCLR0 ;到了则清零显缓RET0:LCALLUPDATE ;更新显缓 POPACCPOP PSWRETI;*;常数表格区;系统初始化后1-8字符代码表DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序号;显示字符段选码表(共阳极代码) TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8 DB 90H,88H,83H,0C6H,0A1H,86H,8

23、EH,0FFH,0CH ,0BFH ;9,A,B,C,D,E,F,灭,p. ,-;*;加1子程序 由R0进入 DAAD1:MOVA,R0DECR0 ;指向个位SWAPA ;个位互换到第四位ORLA,R0 ;合字ADDA,#01HDAA ;加一并调整MOVR2,A ;保存数值到R2ANLA,#0FH ;屏蔽高4位MOVR0,A ;此时R0指向个位显缓 INCR0 ;指向十位MOVA, R2 ;将数值重新取出ANLA,#0F0H ;屏蔽低4位SWAPA ;压缩为BCD码MOVR0,A ;此时R0指向十位显缓RET;清零子程序 由R0进入CLR0:CLRA MOVR0,A ;此时R0指向十位显缓清零

24、DECR0MOVR0,A ;此时R0指向个位显缓清零RET;更新显示缓冲区子程序UPDATE:MOV78H, SECLMOV79H, SECHMOV7AH,#12HMOV7BH,MINUTELMOV7CH,MINUTEHMOV7DH,#12HMOV7EH,HOURLMOV7FH,HOURHRET;键扫描子程序KEY: LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT1;没有键按下,转返回 LCALL DISP;调显示子程序去抖动 LCALL DISP LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT1;没有键按下,转返回 MOV B,20H ;保存取反后

25、的键值KEYSF: LCALL KEYCHULI;调P1口数据处理子程序 JZ KEY1;键释放,转恢复键值 LCALL DISP;调显示子程序延时 LJMP KEYSF;等待释放KEY1:MOV 20H,B;键值送20H保存EXIT1:RET;P1口数据处理子程序KEYCHULI:PUSH PSW;保护现场CLRRS1;改变当前寄存器组为组1SETBRS0MOVP1,#0FFH;先向P1口写1MOV A,P1;读P1口数据CPLA;P1口数据取反MOV20H,A ;保存取反后的键值CLRRS1;恢复当前寄存器组为组0CLR RS0 POPPSW ;恢复现场 RET ;子程序返回;数码管显示子

26、程序DISP入口:7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7-LED0)DISP:PUSHDPHPUSHDPLPUSHACCPUSHPSWCLRRS1SETBRS0;改变当前通用寄存器组为1MOVR1,#78H;显示缓冲存取单元首地址MOVR2,#0FEH;从右至左显示(11111110B)MOVR5,#8H;循环次数,即为数码管的个数DISP1:MOVA,R1;MOVDPTR,#TAB;MOVC A,A+DPTR;MOVP0,A;送段控MOVP2,R2;送位控LCALLDL;延时1msMOV A,R2;送位控码RLA;获得新的位控码MOVR2,A;保存新的位控码

27、INCR1;获得新的现实缓冲单元地址DJNZR5,DISP1;循环没有结束则继续DISP2:POPPSW ;恢复当前通用寄存器组序号POPACCPOPDPLPOPDPH ;恢复现场RET;*;延时1ms子程序(晶振频率12MHz)DL DL:MOVR7, #02H DL1:MOVR6, #0FFH DL2:DJNZR6, DL2DJNZR7, DL1RETEND第四章 系统调试4.1软件调试步骤1、打开软件后,在Project菜单中选择New Project命令,打开一个新项目。保存此项目,输入工程文件名后,并保存工程文件的目录。2、为项目文件选择一个目标器件,即选择8051的类型。在Data

28、 base 列表框中选择“ATML 89C52”,确定。3、上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。4、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。5、开始编译,对项目文件进行编译。若没有错误后进行硬件调试4.2硬件调试 按照此次课程设计的要求调试过程如下:按键KEY0,KEY1,KEY2,KEY3分别对应LED流水灯,数码管,音乐三个功能。1、LED流水灯测试通过按按键KEY0,观察到LED流水灯显示,并循环2次;与相应的程序代码相比较,结果正确。 2、

29、数码管测试 通过按按键KEY2,观察到数码管从“1000” 开始计时,依次显示“1001” ,“1002” ,“1003” ;与相应的程序代码相比较,结果正确。 3、温度传感器测试通过连接短路帽2,观察到数码管显示温度,比较几次;与相应的程序代码相比较,联系18B20附近温度.结果。第五章 设计体会和结论在硬件电路制作阶段,我到图书馆、网上查阅各种资料,在电脑上使用 PROTEL99SE 进行以及相关的绘图软件,使自己在理论分析设计和动手操作能 力等各方面得到了极大提高。我通过对设计任务书的具体要求分析思考,再加 上以前在学校进行的各种相关实践和实习积累的经验,首次完成了硬件电路板 的制作,虽

30、然在初次制板时,其中在钻孔时,看着别人钻好简单,自己一试, 也不是一件容易的事,不仅看得你眼花缭乱,还一不小心,钻头就断了,钻孔 那天我组就弄断了好几个。后来随着动作越来越熟练,速度也越来越快。尽管 板面没买得好看,但那也是我们的成果,还有因不细心、不熟习制作流程,还 有打印的时候由于油墨的质量不行且不够浓,导致第一块电路板有很多的断线 而报废,但经过反复检验和飞线,总算成功,但是还有很多地方 要改进才行,以后做板子的时候要特别注意。硬件电路板制好后,在利用 ASM51 软件编写程序调试时,遇到了不少困难,这使我学会了耐心分析问题,并进一 步锻炼自己去攻破难题的能力。这次课程设计整体来说是成功

31、的,但我也发现了自己许多错漏和不足之 处。譬如,最简单的程序没写好就想着写更复杂的程序,做事还是缺乏耐性和 细心,当有时遇到问题时,总觉得无从下手,对于课本上的知识不能很好的组 织起来。以后会更认真的学习相关内容。参考文献【1】 陈石胜,单片机 技术应用 . 广东: 广东省技师学院电气自动化专业教改教材,2007【2】 李广第,单片机基础 . 北京: 北京航空航天大学出版社, 2001【3】求是科技编著,单片机典型模块设计实例导航.北京:人民邮电出版社,2004【4】孙涵芳,MCS-51系列单片机原理及应用 北京:北京航空航天大学出版社1996-4【5】于海生,微型计算机控制技术 北京:清华大

32、学出版社1999-6致谢 最后,感谢老师的悉心指导,感谢同学在我遇到麻烦时帮忙排解困难,经过近两周时间,终于完成了这次课程设计。从中锻炼了自己,再次知道在困难面前只要你坚持就能排除任何难题。今后,我将更努力、更认真的学习单片机技术,力求自己在这门学科上取得更大的进步。谢谢大家!附录一:电路原理图 附录二:PCB图附录三:数码管元件清单 元器件名称 规格 需要数目AT89S52加底座1四位一体共阳数码管加底座2晶振12MHz1发光二极管大个的9单排插8脚4三极管85509蜂鸣器1小按键(大按键)9下载口座子十芯118b20温度传感器1六脚按键开关1USB电源线加接口1m1电阻2001电阻4.7K1电阻1K3电阻47024电解电容22uf1瓷片电容33pf2排阻10k2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1