单片机数字时钟课程设计报告.docx

上传人:b****4 文档编号:5467504 上传时间:2022-12-16 格式:DOCX 页数:28 大小:44.08KB
下载 相关 举报
单片机数字时钟课程设计报告.docx_第1页
第1页 / 共28页
单片机数字时钟课程设计报告.docx_第2页
第2页 / 共28页
单片机数字时钟课程设计报告.docx_第3页
第3页 / 共28页
单片机数字时钟课程设计报告.docx_第4页
第4页 / 共28页
单片机数字时钟课程设计报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

单片机数字时钟课程设计报告.docx

《单片机数字时钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。

单片机数字时钟课程设计报告.docx

单片机数字时钟课程设计报告

 

单片机应用综合设计报告

 

设计题目:

学院名称:

专业:

班级:

姓名:

指导教师:

日期:

2015.12.28~2015.12.31

一、任务书

1.用80C51设计一个数字时钟。

2.可显示时、分、秒。

3.按键实现时、分、秒人工校准。

4.具有闹钟功能。

5.实现秒表/时钟转换,秒表要求精确到10ms。

二、总体方案

用80C51设计一个数字时钟。

该数字钟能显示时、分、秒,并具有闹钟、秒表功能。

由四个按键控制,功能分别为启动、调时,调闹、止闹、退出调时,切换秒表时钟,加一,减一、暂停。

另外两个按键为电源控制键,复位键。

该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。

用两个四位一体共阴数码管作时间显示:

能显示时、分、秒。

用一个+5V有源蜂鸣器做闹钟声报警功能,并用四个按键做时间和闹钟调整的数字钟。

利用定时/计数器、中断系统来实现时钟计数。

用定时器1实现时钟计时,定时器0实现秒表计时。

把定时器0和定时器1都设为工作方式1,定时时间为1.25ms和125ms,则计数溢出8次即得时钟、秒表计时最小单位(10毫秒/秒)。

晶振频率f=6MHz。

X1=216-125*103/2=0BDCH。

X2=216-1.25*103/2=0FEFFH。

采用中断方式进行溢出次数累计,计满8次。

从秒到分和从分到时的计时是通过累加和数值比较实现。

三、硬件设计

(1)单片机最小系统

单片机最小系统由单片机,时钟电路,复位电路组成。

其中由6MHz晶振构成的振荡电路,并通过使复位端经电阻与Vcc电源接通而实现的按键电平复位电路。

(2)电源系统

以+5V直流稳压电源作为电源供应系统。

(3)输入系统

由四个调整键组成独立式键盘,分别具有为启动、调时、退出调闹,调闹、止闹、退出调时,秒表切换,加一,减一、暂停功能。

(4)输出系统

由两个四位一体的共阴数码管,并以74LS244做驱动电路构成显示输出,由NPN三极管以及一个蜂鸣器构成闹铃。

 

四、软件设计

4.1单片机资源使用情况

(1)时钟与秒表的时分秒在片内RAM存储地址如表3.1所示。

表3.1时钟存储地址

名称

十位

7AH

78H

76H

个位

79H

77H

75H

 

表3.4秒表存储地址

名称

十位

66H

64H

62H

个位

65H

63H

61H

 

(2)电子钟的时钟时间在八位数码管上进行显示,因此,在片内RAM中设置显示缓冲区共8个单元。

LED7LED6LED5LED4LED3LED2LED1LED0

74H73H72H71H70H6FH6EH6DH

显示缓冲区从左至右依次存时、-、分、-、秒的数值。

(3)闹钟的时分秒在片内RAM存储地址如表3.2所示。

表3.2闹钟标志位存储地址表

名称

十位

6CH

6AH

68H

个位

6BH

69H

67H

 

(4)P0口作为数据显示输出、P1.4作为闹铃输出,P1.0-P1.3接按键输入,

20H.0-20H.3作为P1.0-P1.3的位标志存储地址。

(5)运用了定时器1作为1秒计时所用,定时器0作为10ms计时所用。

4.2软件系统程序流程框图

主程序流程框图如图3.1所示。

图3.1主程序流程框图

 

(2)1秒计时子程序流程框图如图3.2所示。

图3.21秒计时流程框图

图3.3键监控程序流程框图

 

(3)键监控子程序流程框图如图3.3所示,它还包含了键扫描和P1口处理子程序,它们的程序流程框图分别为图3.4和3.5。

图3.5P1口处理子程序流程框图

图3.4键扫描子程序流程框图

 

4.3源程序清单

LJMPMAIN

ORG000BH

LJMPINTT0

ORG001BH

LJMPINTT1

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

;-----------------主程序----------------------------------

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

MAIN:

LCALLBEGIN;上电显示“PP”

MOVSP,#30H

MOVR0,#7AH;清7AH-67H单元

MOVR1,#14H

LCALLCLR0

MOV20H,#00H

MOV6CH,#01H

MOV6BH,#02H

MOV7BH,#0CH;熄灭符

MOVTMOD,#11H;定时器0、1的工作方式为1

MOVTH1,#0BH;125ms

MOVTL1,#0DCH

MOVTH0,#0FEH

MOVTL0,#0FFH;1.25ms

MOVR7,#08H;125ms*8=1s,1.25ms*8=10ms

SETBEA

SETBET1

SETBTR1

LOOP:

LCALLDIR;调显示子程序

LCALLCLOCK;查闹钟

LCALLKEYC

JB20H.0,KEYAA;若A键按下跳转,调时

JB20H.1,KEYCC;若B键按下跳转,调闹

JB20H.2,KEYEE;若C键按下跳转,切换秒表

JB20H.3,KEYDD;若D键按下跳转,暂停

LJMPLOOP

 

;--------------秒表显示程序-----------------------

KEYEE:

CLRET1

CLRTR1

SETBET0

SETBTR0

MBLOOP:

LCALLDIRS

LCALLDIRS

LCALLKEYCS

JB20H.2,OUTSETS

JB20H.3,MBZ

LJMPMBLOOP

OUTSETS:

CLRET0

CLRTR0

SETBET1

SETBTR1

LJMPLOOP

MBZ:

CLRET0

CLRTR0

MBZLOOP:

LCALLKEYCS

JB20H.3,OUTMBZ

JB20H.2,OUTSETS

LJMPMBZLOOP

OUTMBZ:

SETBET0

SETBTR0

LJMPMBLOOP

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

;--------------闹钟调整程序-----------------------

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

KEYCC:

CLRET1

LCALLSETCH

SETBET1

LJMPLOOP

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

;------------------暂停---------------------------

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

KEYDD:

CLRET1

CLRTR1

LOOPSP:

LCALLKEYC;键扫描

JB20H.3,OUTSP;D键按下,暂停取消,继续走

LJMPLOOPSP

OUTSP:

SETBTR1

SETBET1

LJMPLOOP

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

;-------------时钟调整程序------------------------

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

KEYAA:

CLRTR1

CLRET1

LJMPSETHH

OUTSET:

SETBET1

SETBTR1

LJMPLOOP

;---------------时位调整-------------------------

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

SETHH:

MOVR5,#0FFH

LOOPH0:

MOVR0,#79H

MOVR1,#7AH

LCALLRDIRH;输出

LCALLDIR;显示

LCALLDIR

LCALLKEYC;键扫描

JNB20H.0,H1

LJMPSETMM;A键按下,调分

H1:

JNB20H.1,H2

LJMPOUTSET;B键按下,退出调时

H2:

JNB20H.2,H3

LJMPADDH1;C键按下,加1

H3:

JNB20H.3,H4

LJMPSUBH1;D键按下,减1

H4:

DJNZR5,LOOPH0;无键按下,循环,返回

LJMPOUTSET

;------------时加减一----------------------------

ADDH1:

MOVR0,#79H;加一

LCALLADD1

LJMPSETH

SUBH1:

MOVR0,#79H;减一

LCALLSUBBH1

LJMPSETH

SETH:

MOVR0,#79H

MOVR1,#7AH

LCALLRDIRH

CJNER3,#24H,SETHH

MOV79H,#00H

MOV7AH,#00H

LJMPSETHH

;==============分位调整===========================

SETMM:

MOVR5,#0FFH

LOOPM0:

MOVR0,#77H

MOVR1,#78H

LCALLRDIRM

LCALLDIR

LCALLDIR

LCALLKEYC

JNB20H.0,M1

LJMPSETSS;A键按下,调秒

M1:

JNB20H.1,M2

LJMPOUTSET

M2:

JNB20H.2,M3

LJMPADDM1

M3:

JNB20H.3,M4

LJMPSUBBM

M4:

DJNZR5,LOOPM0

LJMPOUTSET

 

;---------------分加减一--------------------------

ADDM1:

MOVR0,#77H;加一

LCALLADD1

LJMPSETM

SUBBM:

MOVR0,#77H;减一

LCALLSUBBMS

LJMPSETM

SETM:

MOVR0,#77H

MOVR1,#78H

LCALLRDIRM

CJNER3,#60H,SETMM

MOV77H,#00H

MOV78H,#00H

LJMPSETMM

 

;==================秒位调整=======================

SETSS:

MOVR5,#0FFH

LOOPS0:

MOVR0,#75H

MOVR1,#76H

LCALLRDIRS

LCALLDIR

LCALLDIR

LCALLKEYC

JNB20H.0,S1

LJMPSETHH

S1:

JNB20H.1,S2

LJMPOUTSET

S2:

JNB20H.2,S3

LJMPADDS1

S3:

JNB20H.3,S4

LJMPSUBBS

S4:

DJNZR5,LOOPS0

LJMPOUTSET

 

;-------------------秒加减一----------------------

ADDS1:

MOVR0,#75H;加一

LCALLADD1

LJMPSETS

SUBBS:

MOVR0,#75H;减一

LCALLSUBBMS

LJMPSETS

SETS:

MOVR0,#75H

MOVR1,#76H

LCALLRDIRS

CJNER3,#60H,SETSS

MOV75H,#00H

MOV76H,#00H

LJMPSETSS

 

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

;==============闹钟调整子程序====================

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

;================时位调整========================

SETCHH:

MOVR5,#0FFH

LOOPCH0:

MOVR0,#6BH

MOVR1,#6CH

LCALLRDIRH

LCALLDIR

LCALLKEYC

JNB20H.0,CH0

LJMPOUTSC;结束子程序

CH0:

JNB20H.1,CH1

LJMPSETCM;B键按下,调分

CH1:

JNB20H.2,CH2

LJMPADDCH1

CH2:

JNB20H.3,CH3

LJMPSUBCH1

CH3:

DJNZR5,LOOPCH0

LJMPOUTSC

 

;-----------------时加减一-----------------------

ADDCH1:

MOVR0,#6BH;加一

LCALLADD1

LJMPSETCH

SUBCH1:

MOVR0,#6BH;减一

LCALLSUBBH1

LJMPSETCH

SETCH:

MOVR0,#6BH

MOVR1,#6CH

LCALLRDIRH

CJNER3,#24H,SETCHH

MOV6CH,#00H

MOV6BH,#00H

MOVR0,#6BH

MOVR1,#6CH

LCALLRDIRH

LJMPSETCHH

 

;==================分位调整======================

SETCMM:

MOVR5,#0FFH

LOOPCM0:

MOVR0,#69H

MOVR1,#6AH

LCALLRDIRM

LCALLDIR

LCALLKEYC

JNB20H.0,CM0

LJMPOUTSC

CM0:

JNB20H.1,CM1

LJMPSETCH

CM1:

JNB20H.2,CM2

LJMPADDCM1

CM2:

JNB20H.3,CM3

LJMPSUBCM1

CM3:

DJNZR5,LOOPCM0

LJMPOUTSC

;---------------------分加减一--------------------

ADDCM1:

MOVR0,#69H;加一

LCALLADD1

LJMPSETCM

SUBCM1:

MOVR0,#69H;减一

LCALLSUBBMS

LJMPSETCM

SETCM:

MOVR0,#69H

MOVR1,#6AH

LCALLRDIRM

CJNER3,#60H,SETCMM

MOV6AH,#00H

MOV69H,#00H

MOVR0,#69H

MOVR1,#6AH

LCALLRDIRM

LJMPSETCMM

OUTSC:

RET

 

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

;===========调整显示装载子程序====================

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

RDIRH:

MOV6DH,7BH

MOV6EH,7BH

MOV6FH,7BH

MOV70H,7BH

MOV71H,7BH

MOV72H,7BH

MOV73H,@R0

MOV74H,@R1

RET

RDIRM:

MOV6DH,7BH

MOV6EH,7BH

MOV6FH,7BH

MOV70H,@R0

MOV71H,@R1

MOV72H,7BH

MOV73H,7BH

MOV74H,7BH

RET

RDIRS:

MOV6DH,@R0

MOV6EH,@R1

MOV6FH,7BH

MOV70H,7BH

MOV71H,7BH

MOV72H,7BH

MOV73H,7BH

MOV74H,7BH

RET

 

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

;=====================键扫描子程序=================

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

KEYC:

LCALLKEYDEAL;键扫描子程序

LCALLDIR

LCALLDIR

LCALLKEYDEAL;再次确认键有无按下,去抖动

JZEXIT

MOVB,20H

KEYSF:

LCALLKEYDEAL

JZKEY1

LCALLDIR

LJMPKEYSF;当键按下弹起后保存键值,返回

KEY1:

MOV20H,B

EXIT:

RET

;----------------------秒表键扫描子程序--------------

KEYCS:

LCALLKEYDEAL;键扫描子程序

LCALLDIRS

LCALLDIRS

LCALLKEYDEAL

JZEXITS

MOVB,20H

KEYSFS:

LCALLKEYDEAL

JZKEY1S

LCALLDIRS

LJMPKEYSFS

KEY1S:

MOV20H,B

EXITS:

RET

;---------------P1口处理子程序----------------------

KEYDEAL:

PUSHPSW;P1口处理子程序

MOVA,P1

CPLA

ANLA,#0FH

MOV20H,A

POPPSW

RET

 

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

;=================1S计时程序========================

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

INTT1:

PUSHPSW

PUSHACC

CLRET1

CLRTR1

MOVTH1,#0BH

MOVTL1,#0DCH

SETBTR1

DJNZR7,OUTT0

ADDSS:

MOVR7,#08H

MOVR0,#75H

LCALLADD1

CLRC

CJNER3,#60H,ADDMM

ADDMM:

JCOUTT1

MOV75H,#00H

MOV76H,#00H

MOVR0,#77H

LCALLADD1

CLRC

CJNER3,#60H,ADDHH

ADDHH:

JCOUTT0

MOV77H,#00H

MOV78H,#00H

MOVR0,#79H

LCALLADD1

CLRC

CJNER3,#24H,HOUR

HOUR:

JCOUTT0

MOVR0,#75H

MOVR1,#06H

LCALLCLR0

OUTT0:

MOV6FH,#0CH;熄灭符

MOV72H,#0CH

LJMPOUTT2

OUTT1:

MOV6FH,#0BH;‘-’

MOV72H,#0BH;‘-’

OUTT2:

MOV6DH,75H;秒个位

MOV6EH,76H;十位

MOV70H,77H;分个位

MOV71H,78H;十位

MOV73H,79H;时个位

MOV74H,7AH;十位

SETBET1

POPACC

POPPSW

RETI

;----------------10ms计时程序------------------

IN

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1