毕业设计(论文)数字电子钟的设计1.doc

上传人:文库蛋蛋多 文档编号:3982704 上传时间:2023-03-30 格式:DOC 页数:21 大小:410KB
返回 下载 相关 举报
毕业设计(论文)数字电子钟的设计1.doc_第1页
第1页 / 共21页
毕业设计(论文)数字电子钟的设计1.doc_第2页
第2页 / 共21页
毕业设计(论文)数字电子钟的设计1.doc_第3页
第3页 / 共21页
毕业设计(论文)数字电子钟的设计1.doc_第4页
第4页 / 共21页
毕业设计(论文)数字电子钟的设计1.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《毕业设计(论文)数字电子钟的设计1.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)数字电子钟的设计1.doc(21页珍藏版)》请在三一办公上搜索。

1、目 录摘 要:1关键词:1第一章 8051单片机的结构11、8051单片机的片内资源12、8051的引脚信号2第二章 复位电路和时钟电路51、复位电路52、 时钟电路5第三章 LED数码管接口技术61、LED数码管的结构与原理62、多位LED显示器的显示方式73、 LED显示器接口技术8第四章 程序10总 结:19参考文献:19附录(电子钟电路图)20数字电子钟的设计信息0402 邢 钊摘 要:数字电子钟的设计方法有很多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子种;还可以利用单片机来实现电子钟等等。这些方法都各有特点,其中,利用

2、单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点。下面所设计的电子钟是由单片机和外部显示电路够成采用动态显示。关键词:电子钟;单片机;LED数码管显示 第一章 8051单片机的结构1、8051单片机的片内资源8051单片机是在一块芯片中集成了 CPU、 RAM、 ROM、定时器/ 计数器和多种功能的I/O接口等一台计算机所需要的基本功能部件。单片机内包含下列几个部件:一个8位CPU;一个片内振荡器及时钟电路;4K字节ROM程序存储器:128字节RAM数据存储器;两个 16位定时器/计数器;可寻址 64K外部数据存储器和 64K外部程序存储器空

3、间的控制电路;32条可编程的I/O线(四个6位并行I/O端口)一个可编程全双工串行口;具有五个中断源、两个优先级嵌套中断结构。8051单片机框图如图11所示。各功能部件由内部总线联接在一起。图中4K(4096)字节的ROM存储器部分用EPROM替换就成为8751;图中去掉ROM部分就成为8031的结构图。 图 112、8051的引脚信号8051单片机都采用 40引脚的双列直播封装方式。图 12(A)为引脚排列图,(b)为逻辑符号图。图1240条引脚说明如下:主电源引脚Vss和Vcc Vss 接地。Vcc 正常操作时为十5伏电源。外接晶体引脚XTAl1和XTAL2XTAL1 内部振荡电路反相放大

4、器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2 内部振荡器的反相放大器的输出端,是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。控制或与其它电源复用引脚RST/Vpd,ALE/PROG,PSEN 和EA/Vpp。RST/Vpd 当振荡器运行时。在此引脚上出现两个机器同期的高电平(由低到高跳变),将使单片机复位。在 Vcc掉电期间,此引脚可接上备用电源,由 Vpd向内部 RAM提供备用电源,以保持内部RAM中的数据。ALE/PROG 正常操作时为ALE功能(允许地址钱存),提供把地址的低字节锁存到外部锁存器。ALE引脚以不变的频率(振荡周期的1/6)周期

5、性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个 ALE脉冲。 ALE端可以驱动(吸收或输出电流)八个 LSTTL电路。对于 EPROM型单片机,在 EPROM编程期间,此引脚接收编程脉冲(PROG功能)。PSEN 外部程序存储器读选通信号输出端。在从外部程序存储器取指令(或数据)期间;PSEN 在每个机器周期内两次有效。 PSEN 同样可以驱动八个LSTTL输入。EAVpp EA为内部程序存储器和外部程序存储器选择端。当EA为高电平时,访问内部程序存储器(PC值小于4K)。当EA为低电平时,则访问外部程序存储器。对于EPROM型

6、单片机,在EPROM编程期间,此引脚上加21VEPROM编程电源(Vpp)。输入/输出引脚P0.0P0.7,P1.0P1.7,P2.0P2.7,P3.0P3.7P0.0P0.7: P0是一个 8位漏极开路型双向 I/O口。在访问外部存储器时,它是分时传送的低字节地址和数据总线。PO口能以吸收电流的方式驱动八个LSTTL负载。P1.0P1.7: P1是一个带有内部提升电阻的 8位准双向 I/O口。它能驱动(吸收或输出电流)四个LSTTL负载。P2.0P2.7: P2是一个带有内部提升电阻的8位准双向I/O口。在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载

7、。 P3.0P3.7:P3是一个带有内部提升电阻的 8位准双向 I/O口。能驱动(吸收或输出电流)四个LSTTL负载。P3口还用于第二功能请参看表11。表11第二章 复位电路和时钟电路1、复位电路8051单片机的复位电路如图21所示。在RESET(图中表示为RST)输入端出现高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期(24个振荡器周期)高电平。CPU在第二个机器周期内执行内部复位操作、以后每一个机器周期重复一次,直至 RST端电平变低。复位期间不产生 ALE及PSEN信号。图212、 时钟电路8051片内设有一个由反向放大器所构成的振荡

8、电路,XTALl和XTAL2 分别为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。图22内部方式时钟电路如图2-2(a)所示。在XTAL1 和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体可以在 1.2 MHZ到 12MHZ之间选择,电容值在 530 PF之间选择,电容的大小可起频率微调作用。外部方式的时钟电路如图2-2(b)所示,XTALl接地;XTAL2接外部振荡器。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于 12MHZ的方波信号。第三章 LED数码管接口技术1、LED数码管的结构与原理八

9、段LED显示器的每一段均由一个或几个LED组成,依靠段的组合来显示所需的数字或字符。段的标记一般采用字母a、b、c、d、e、f、g、h来表示,见图3-1(a)。八段LED显示器有共阴极的和共阳极的两种,图3-1(b)、(c)。图31显示原理八段LED显示器与单片机的接口比较简单,只要将一个8位并行口与显示器的引脚对应相接即可,如图3-2。由8位并行口输出不同的字节数据,显示出不同的数字或字符。图32控制LED显示出不同的数字或字符的8位字节数据称为“段选码”。共阴极LED与共阳极LED的段选码互为补码。常用字符的段选码设8位并行口与LED数码管各段的连接是: h g f e d c b a |

10、 | | | | | | | D7 D6 D5 D4 D3 D2 D1 D0常用字符的段选码如下:显示字符 共阴极 共阳极 显示字符 共阴极 共阳极 0 3FH C0H A 77H 88H 1 06H F9H b 7CH 83H 2 5BH A4H C 39H C6H 3 4FH B0H d 5EH A1H 4 06H 99H E 79H 86H 5 6DH 92H F 71H 8EH 6 7DH 82H U 3EH C1H 7 07H F8H Y 6EH 91H 8 7FH 80H 8. FFH 00H 9 6FH 90H 全灭 00H FFH2、多位LED显示器的显示方式将多个LED显示块

11、组合在一起就构成了多位LED显示器。每个LED显示器的段引脚称为段选线,公共端称为位选线。段选线控制显示的字符,位选线控制该LED的亮和灭。按照显示器的工作方式不同,位选线和段选线的连接方法也不同。LED显示器有静态显示和动态显示两种方式。 静态显示所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。例如,七段显示器的a,b,c,d,e,f导通,g截止,则显示0。这种显示器方式,每一位都需要有一个8位输出口控制。所以占用硬件多,一般用于显示器位数较小(很少)的场合。当位数较多时;用静态显示所需的I/O口太多,一般采用动态显示方法。 动态显示所谓动态显示,就是将所有各位

12、的段选线并联在一起,由一个8位并行口控制,而各位的公共端COM分别由相应的I/O口线控制。要使各位显示出不同的字符,就得采用扫描的方法,一位一位地轮流点亮各位显示器(扫描)。对于每一位显示器来说,每隔一段时间点亮一次。显示器的点亮既跟点亮时的导通电流有关,也跟点亮时间和间隔时间的比例有关。调整电流和时间的参数,可实现亮度较高较稳定的显示。若显示器的位数不大于 8位,则控制显示器公共极电位只需一个 I/O口(称为位选口),控制各位显示器所显示的字形也需一个 I/O口(称为段选口)。图3-3是一种采用8155与6位共阴极LED显示器的接口电路。 图333、 LED显示器接口技术为了显示相应的字符,

13、必须将该字符转换成相应的段选码。这种转换也称为译码。译码可以采用硬件的方法,也可以采用软件的方法。 采用硬件译码的LED显示器接口技术在有些场合中,仅要求 LED显示器能显示十六进制和十进制带小数点的数。这时,可选用Motorola公司的MC14495(CMOS BCD-7段十六进制锁存译码驱动器),如图3-4。 采用软件译码的LED显示器接口技术在有些应用场合中,不仅要求LED显示器能显示十六进制数,还要求能显示某些特殊的字符(如“CPU”),这时就需要采用软件译码。由于单片机本身具有较强的逻辑控制能力,采用软件译码并不复杂。其译码逻辑可以随意编程设定,不受硬件逻辑限制,同时还能简化硬件电路

14、结构。因此,在单片机应用系统中使用非常广泛。图34软件译码的基本方法:将所有要显示的字符的段选码列成一个表(字库),存放在存储器中,使用时,按照所需显示的字符从表中查取相应的段选码送到显示口。第四章 程 序定时器T0、T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁用,; P3.7为调整按钮,P1口 为字符输出口,采用共阳显示管。中断入口程序 ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTT

15、O执行 ORG 0013H ;外中断1中断程序入口 RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回主 程 序 ; START: MOV R0,#70H ;清70H-7AH共11个内存单元 MOV R7,#0BH ; CLEARDISP: MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入熄灭符数据 MOV TMOD,#11H ;设T0、

16、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50MS20) START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序 SJMP START1 ;P3.7口为1时跳回START1 SETMM1:

17、 LJMP SETMM ;转到时间调整程序SETMM1秒计时程序 ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS: MOV

18、R4,#14H ;20次中断到(1秒)重赋初值 MOV R0,#71H ;指向秒计时单元(71H-72H) ACALL ADD1 ;调用加1程序(加1秒操作) MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLRC ;清进位标志 CJNE A,#60H,ADDMM ; ADDMM: JC OUTT0 ;小于60秒时中断退出 ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOVR0,#77H ;指向分计时单元(76H-77H) ACALL ADD1 ;分计时单元加1分钟 MOV A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,#60H,ADDHH ;

19、 ADDHH: JC OUTT0 ;小于60分时中断退出 ACALL CLR0 ;大于或等于60分时分计时单元清0 MOVR0,#79H ;指向小时计时单元(78H-79H) ACALL ADD1 ;小时计时单元加1小时 MOV A,R3 ;时数据放入A CLR C ;清进位标志 CJNE A,#24H,HOUR ; HOUR: JC OUTT0 ;小于24小时中断退出 ACALL CLR0 ;大于或等于24小时小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移 MOV 73H,77H ;入对应显示单元 MOV 74H,78H ; MOV 75H,79H

20、 ; POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回闪动调时 程 序 ;T1中断服务程序,用作时间调整时调整单元闪烁指示 INTT1: PUSH ACC ;中断现场保护 PUSH PSW ; MOV TL1, #0B0H ;装定时器T1定时初值 MOV TH1, #3CH ; DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次) MOV R2,#06H ;重装0.3秒定时用初值 CPL 02H ;0.3秒定时到对闪烁标志取反 JB 02H,FLASH1 ;02H位为1时显示单元熄灭 MOV 72

21、H,76H ;02H位为0时正常显示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场 POP ACC ; RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制 MOV 72H,7AH ;01H位为0时,熄灭符数据放入分 MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,熄灭符数据放入小时 MOV 7

22、3H,77H ;显示单元(74H-75H),小时数据将不显示 MOV 74H,7AH ; MOV 75H,7AH ; AJMP INTT1OUT ;转中断退出加1子 程 序 ;ADD1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高四位与低四位交换 ORL A,R0 ;前一地址中数据放入A中低四位 ADD A,#01H ;A加1操作 DA A ;十进制调整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高四位变0 MOV R0,A ;放回前一地址单元 MOV A,R3 ;取回R3中暂存数据 INC R0 ;指向当前地址单元

23、SWAP A ;A中数据高四位与低四位交换 ANL A,#0FH ;高四位变0 MOV R0,A ;数据放入当削地址单元中 RET ;子程序返回清零程序 ;对计时单元复零用 CLR0: CLR A ;清累加器 MOV R0,A ;清当前地址单元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址单元清0 RET ;子程序返回时钟调整程序 ;当调时按键按下时进入此程序 SETMM: CLR ET0 ;关定时器T0中断 CLR TR0 ;关闭定时器T0 LCALL DL1S ;调用1秒延时程序 JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电) MOV R2,#06H

24、 ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许T1中断 SETB TR1 ;开启定时器T1 SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待 SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB P3.7,SET3 ;等待键按下 LCALL DL05S ;有键按下,延时0.5秒 JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态 MOV R0,#77H ;按下时间小于0.5秒加1分钟操作 LCALL ADD1 ;调用加1子程序 MOV A,R3 ;取调整单元数据 CLR C ;清进位标志 CJNE A,#60H,HHH ;调整单元

25、数据与60比较 HHH: JC SET4 ;调整单元数据小于60转SET4循环 LCALL CLR0 ;调整单元数据大于或等于60时清0 CLR C ;清进位标志 AJMP SET4 ;跳转到SET4循环CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断 SETB TR0 ;开启T0定时器(开时钟) CLOSE: JB P3.7,CLOSE ;无按键按下,等待。 LCALLDISPLAY ;有键按下,调显示子程序延时削抖 JB P3.7,CLOSE ;是干扰返回CLOSE等待 WAITH: JNB P3.7,WAITH ;等待键释放 LJMP START1 ;返回主程

26、序(LED数据显示亮) SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态) SETHH1: JNB P3.7,SET5 ;等待键释放 SETB 01H ;小时调整标志置1 SET6: JB P3.7,SET7 ;等待按键按下 LCALL DL05S ;有键按下延时0.5秒 JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整 MOVR0,#79H ;按下时间小于0.5秒加1小时操作 LCALL ADD1 ;调加1子程序 MOV A,R3 ; CLR C ; CJNE A,#24H,HOUU ;计时单元数据与24比较 HOUU: JC SET6 ;小于24转SET6循

27、环 LCALL CLR0 ;大于或等于24时清0操作 AJMP SET6 ;跳转到SET6循环 SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键释放 LCALL DISPLAY ;延时削抖 JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待 CLR 01H ;清调小时标志 CLR 00H ;清调分标志 CLR 02H ;清闪烁标志 CLR TR1 ;关闭定时器T1 CLR ET1 ;关定时器T1中断 SETB TR0 ;开启定时器T0 SETB ET0 ;开定时器T0中断(计时开始) LJMP START1 ;跳回主程序 SET1: LCALL DISPL

28、AY ;键释放等待时调用显示程序(调分) AJMP SET2 ;防止键按下时无时钟显示 SET3: LCALL DISPLAY ;等待调分按键时时钟显示用 AJMP SET4 SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时) AJMP SETHH1 ;防止键按下时无时钟显示 SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用 AJMP SET6SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待 AJMP SETOUT ;防止键按下时无时钟显示显示程序 ; 显示数据在70H-75H单元内,用六位LED共阳数码管显示,P1口输出段

29、码数据,P3口作; 扫描控制,每个LED数码管亮1MS时间再逐位循环。 DISPLAY: MOV R1,#70H ;指向显示数据首址 MOV R5,#0FEH ;扫描控制字初值 PLAY: MOV A,R5 ;扫描字放入A MOV P3,A ;从P3口输出 MOV A,R1 ;取显示数据到A MOV DPTR,#TAB ;取段码表地址 MOVCA,A+DPTR ;查显示数据对应段码 MOV P1,A ;段码放入P1口 LCALL DL1MS ;显示1MS INC R1 ;指向下一地址 MOV A,R5 ;扫描控制字放入A JNB ACC.5,ENDOUT ;ACC.5=0时一次显示结束 RL

30、A ;A中数据循环左移 MOV R5,A ;放回R5内 AJMP PLAY ;跳回PLAY循环 ENDOUT: SETB P3.5 ;一次显示结束,P3口复位 MOV P1,#0FFH ;P1口复位 RET ;子程序返回 TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;共阳段码表 012 34567 89不亮延时程序 ;1MS延时程序,LED显示程序用 DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象 DS20MS: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号