当前位置:
文档之家› 单片机AT89C51数字时钟演示
单片机AT89C51数字时钟演示
主程序
START: MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB TR0 MOV 30H,#00H MOV 31H,#58H MOV 32H,#23H MOV R7,#20 ;定时器初始化 ;设定时间50ms ;开中断 ;启动T0 ;开启t0定时器 ;显示计时初值
; 秒十位控制端口P2.3送入初值 ;进行交换 ;取秒的高四位 ; 查表找对应数字的显示码 ;调用显示子程序
MOV P2,#0EFH ;分个位控制端口P2.4送入初值 MOV A,31H ANL A,#0FH ; 取分的低四位 MOVC A,@A+DPTR ;查表找对应数字的显示码 MOV P0,A ACALL DELAY MOV P2,#0DFH ;分十位位控制端口P2.5送入初值 MOV A,31H SWAP A ; 低四位与高四位进行交换 ANL A,#0FH MOVC A,@A+DPTR MOV P0,A ACALL DELAY ;调用显示子程序
实验原理
首先用单片机内部定时器/计数器t0产生50ms脉冲 作为时钟的最小记时单位,每到50ms,t0中断溢 出,在中断服务程序中用软件计数器记数,当记 数到20次时,即为1s,使秒单元71h的内容加1, 同时使50ms单元复位;当秒单元的内容为60时, 使分单元的内容加1,同时秒单元复位,同理,当 分单元的内容为60时,时单元的内容加1,记数 缓冲区复位. 为了在led管上显示时分秒,可将计数缓冲区的时 分秒送入到显示缓冲区中,通过拆查表数换码输 出显示,从而构成数字电子钟.
结束语
通过这次设计,使我们得到了一次用专业知识, 专业技能分析和解决系统问题的锻炼.使我们在 单片机的基本原理,单片机应用系统开发过程, 以及在常用编程设计思路技巧(特别是汇编语 言))的掌握方面都能向前迈了一大步,为日后 成为合格的应用型人才打下良好的基础.�AT89C51单片机引脚
单片机最小系统
硬件分布图
实验源程序
中断入口程序 ORG 0000H AJMP START ORG 000BH AJMP INTT1 ORG 0023H ;程序执行开始地址 ;跳到标号start执行 ;定时器t0中断程序入口 ;跳至intt1执行 ;串行中断程序入口地址
LOOP2:
MOV A,31H ADD A,#01H ;分单元内容加1 DA A MOV 31H,A 判断是否到60分,到60分时送00H TIME2: MOV A,31H CJNE A,#60H,NEXT ;判断是否到60分?不等 于 转出 MOV A,#00H ;分缓冲区送00 MOV 31H,A
单片机AT89C51数码管显示时钟案例 单片机AT89C51数码管显示时钟案例 AT89C51
制作人:杨柳青(02) 谢小虎(12)
实验任务
本实验实现的是应用单片机显示数字 钟,分别在6位数码管上显示分时秒,可以 通过1个复位按键进行时间重置.
实验目的
(1)将已掌握的单片机理论知识和实验技能 连贯起来,进行综合课题的设计 (2)提高单片机应用功能的独立设计和编 程能力,以数字时钟为例来学习.
MOV P2,#0BFH ;时个位控制端口P2.6送入初值 MOV A,32H ANL A,#0FH ;取时的低四位 MOVC A,@A+DPTR MOV P0,A ACALL DELAY MOV P2,#7FH ;时十位控制端口P2.7送入初值 MOV A,32H SWAP A ANL A,#0FH ;取十的高四位 MOVC A,@A+DPTR MOV P0,A ACALL DELAY
;调用显示子程序
SJMP LOOP INTT1: CLR EA ;关中断 MOV TL0,#0B0H ;重新置初值 MOV TH0,#03CH SETB EA ;开中断 DJNZ R7,NEXT ;判断20次循环是否到 MOV R7,#20 LOOP1: MOV A,30H ADD A,#01H ;秒单元内容加1 DA A MOV 30H,A 判断是否到60秒,到60秒时送00H TIME1: MOV A,30H CJNE A,#60H,NEXT ;判断是否到60秒?不等于转出 MOV A,#00H ;秒缓冲区送00 MOV 30H,A
;中断计数器(循环次数)
LOOP: MOV P2,#0FBH MOV A,30H ANL A,#0FH MOV DPTR,#SGTB MOVC A,@A+DPTR MOV P0,A ACALL DELAY MOV P2,#0F7H MOV A,30H SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P0,A ACALL DELAY ;秒个位控制端口P2.2送入初值 ;取秒的低四位 ; 查表找对应数字的显示码
LOOP3:
MOV A,32H ADD A,#01H DA A MOV 32H,A
; 时单元内容加1
判断是否到24时,到24时时送00H TIME3: MOV A,32H CJNE A,#24H,NEXT 判断是否到24时,不等于转出 MOV A,#00H 时缓冲区送00 MOV 32H,A NEXT: RETI DELAY: MOV R6,#20 L1: MOV R5,#123 DJNZ R5,$ DJNZ R6,L1 RET |*字符编码*| SGTB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH RETI END