基于52单片机的时钟设计

  • 格式:docx
  • 大小:55.58 KB
  • 文档页数:10

单片机设计任务书

课题

名称 基于单片机的数字电子钟的设计

设计

目的 1. 增进对MCS51单片机电路的感性认识,加深对理论方面的理解;掌握Protel99SE,Proteus,,Keil软件的有关知识;了解和掌握软硬件设计过程、方法及实现;

2. 通过基于单片机的数字电子钟的设计的设计练习,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。

实验

环境 1. 微型电子计算机(PC),安装Windows 2000以上操作系统;

2. Keil uVision2环境,Proteus 仿真软件,Protel99SE制图软件;

任务

要求 1. 查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;

2. 设计一个时钟系统,实现以24小时为一个周期,同时8位7段LED数码管显示小时、分钟和秒的要求;

3. 该时钟在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时;

4. 设计四个按键S1、S2、S3和S4键,进行相应的操作就可实现校时、定时、复位功能。

5. 设计系统原理图,利用Protel99SE绘制原理图,设计程序,利用Proteus 仿真软件进行系统调试;

6. 结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字。

参考程序:

;-------------------------------------------------------------------

;本电子钟实现24小时制,8位数码管显示时分秒,可整点报时

;显示格式:00-00-00(设置小时十位为0时,不显示)

;通过3只按键来调整时间

;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁

; 增加键ADD_KEY:P1.1;按一次使选中位加1

; 减少键DEC_KEY:P1.2;按一次使选中位减1

;如果长按ADD_KEY或DEC_KEY,可进行调时、调分快进快减,并停止闪烁

;如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能

;P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M

;P2.1为蜂鸣器发声报时

;编程人:郑振凡 编写日期:2009年12月2日 修改日期(最终):2009年12月6日

;-------------------------------------------------------------------

;-----------

;程序入口

;-----------

ORG 0000H ;程序入口地址

LJMP START

ORG 000BH ;定时器0中断入口地址

LJMP TIMET0

ORG 1000H

;----------------------------------

;显P.程序

;功能:可以在8个数码闪烁移位进行屏保

;----------------------------------

START:MOV R6, #2 ;闪烁次数

MOV A, #01H ;位选

TT:MOV P3, A

MOV P0, #0CH ;段码"P."

LCALL DELAY

MOV P3, #00H

DJNZ R6, TT

LCALL DELAY

LCALL DELAY1

RR A

JB P1.0, TT ;键是否按下,没按下则转移

LCALL DELAY ;延时去抖

JNB P1.0, KAI ;再次判断键是否按下

KAI:SETB P1.0

CLR A ;状态恢复

MOV P0, #0FFH

LCALL DELAY1

SETB 48H ;用于调时闪烁标志 SETB 47H ;用于产生脉冲用于调时快进的脉冲

MOV R1, #0 ;调整选择键功能标志:0计时、1调时、2调分、3调秒

;-------------------------------

;清16位寄存器及初始化

;50H 用于控制秒基准时钟源的产生

;51H 清零秒寄存器

;52H 清零分寄存器

;53H 清零时寄存器

;5FH 用于秒个位;5EH 用于秒十位

;5DH 用于分个位;5CH 用于分十位

;5BH 用于时个位;5AH 用于时十位

;54H 用于控制调时闪烁

;-------------------------------

MOV R0, #50H ;初始化

MOV R6, #10H

CLEARJCQ:MOV @R0, #00H ;清寄存器

INC R0

DJNZ R6, CLEARJCQ

MOV IP, #02H

SETB EA

SETB ET0

MOV TMOD, #01H ;设定定时器0工作方式1

MOV TH0, #3CH

MOV TL0, #0B0H ;赋定时初值,定时50ms

SETB TR0 ;启动定时器0

MOV SP, #70H ;堆栈

;--------

;主程序

;--------

MAIN:LCALL DISPLAY

LCALL KEY_SCAN

JZ MAIN

LCALL SET_KEY

JB 46H, MAIN ;如果已进行调时快进,则不再执行下面的调整

LCALL ADD_KEY ;调用增加键处理子程序,加一

LCALL DEC_KEY ;调用减少键处理子程序,减一

LJMP MAIN ;重新循环

;---------------

; 显示处理程序

;---------------

DISPLAY:MOV A, 51H

ANL A, #0FH

MOV 5FH, A ;转换出秒个位,存入5FH

MOV A, 51H

ANL A, #0F0H SWAP A

MOV 5EH, A ;转换出秒十位,存入5EH

JB 46H, MIN ;如果调时快进,则跳过闪烁处理程序

CJNE R1, #3,MIN ;如果R1为3,闪烁秒位待调整

JB 48H, MIN

MOV 5FH, #0AH ;使该位为10,查表得到使该位不显示

MOV 5EH, #0AH

MIN:MOV A, 52H

ANL A, #0FH

MOV 5DH, A ;转换出分个位,存入5DH

MOV A, 52H

ANL A, #0F0H

SWAP A

MOV 5CH, A ;转换出分十位,存入5CH

JB 46H, HOUR

CJNE R1, #2,HOUR ;如果R1为2,闪烁分位待调整

JB 48H, HOUR

MOV 5DH, #0AH

MOV 5CH, #0AH

HOUR:MOV A, 53H

ANL A, #0FH

MOV 5BH, A ;转换出时个位,存入5BH

MOV A, 53H

ANL A, #0F0H

SWAP A

MOV 5AH, A ;转换出时十位,存入5AH

JB 46H, DISP

CJNE R1, #1,DISP ;如果R1为1,闪烁时位待调整

JB 48H, DISP

MOV 5BH, #0AH ;使该位为10,查表得到使该位不显示

MOV 5AH, #0AH

;-------------------

;数码管动态扫描显示

;-------------------

DISP:MOV DPTR, #TABLE

MOV A, 5FH

MOVC A, @A+DPTR

MOV P0, A

SETB P3.7

LCALL DELAY

CLR P3.7 ;显示秒个位

MOV A,5EH

MOVC A, @A+DPTR

MOV P0, A

SETB P3.6

LCALL DELAY CLR P3.6 ;显示秒十位

MOV A, #0BFH

MOV P0, A

SETB P3.5

LCALL DELAY

CLR P3.5 ;显示“-”

MOV A, 5DH

MOVC A, @A+DPTR

MOV P0, A

SETB P3.4

LCALL DELAY

CLR P3.4 ;显示分个位

MOV A,5CH

MOVC A, @A+DPTR

MOV P0, A

SETB P3.3