单片机课程设计报告数字电子钟正文.docx

上传人:b****5 文档编号:6067986 上传时间:2023-01-03 格式:DOCX 页数:22 大小:241.84KB
下载 相关 举报
单片机课程设计报告数字电子钟正文.docx_第1页
第1页 / 共22页
单片机课程设计报告数字电子钟正文.docx_第2页
第2页 / 共22页
单片机课程设计报告数字电子钟正文.docx_第3页
第3页 / 共22页
单片机课程设计报告数字电子钟正文.docx_第4页
第4页 / 共22页
单片机课程设计报告数字电子钟正文.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告数字电子钟正文.docx

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

单片机课程设计报告数字电子钟正文.docx

单片机课程设计报告数字电子钟正文

1设计概述

 

1.1设计课题任务

设计一个具有特定功能的电子钟。

具有时间显示功能。

并有时间设定,时间调整功能。

1.2功能要求说明

设计一个具有特定功能的电子钟。

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

 

2系统的组成及工作原理

 

2.1系统的组成

数字钟实际上是一个对标准频率(1Hz)进行计数的计数电路。

由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1Hz时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路构成数字电子钟。

(1)晶体振荡器

晶体振荡器给数字提供一个频率稳定准确的12MHz的方波信号,可保证数字电子钟的走时准确及稳定。

不管是指针式的电子钟还是数字数字显示的电子钟都使用了晶体振荡器。

(2)复位电路

时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器,时个位和时十位计数器构成。

秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器。

(3)数码管

数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。

(4)键盘

键盘是控制和修改时钟的重要输入模块,通过键盘可以修改时间。

(5)控制部分

AT89S52提供以下标准功能:

8K字节Flash闪速存储器,256字节内部RAM,32I/0口线,看门狗(WDT),两个数据指针,三个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

2.2系统的工作原理

(1):

输入/输出口线

P0.0-P0.7P0口8位双向口线

P1.0-P1.7P1口8位双向口线

P2.0-P2.7P2口8位双向口线

P3.0-P3.7P3口8位双向口线

(2):

地址锁存控制信号ALE

在系统扩展时,ALE用于控制把P0口输出地低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。

此外由于ALE是以1/6晶振频率的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。

(3):

外部程序存储器读选通信号PSEN

在外部ROM时PSEN有效(低电平),以实现外部ROM单元的读操作。

(4):

访问程序存储器控制信号EA

当EA信号为低电平时,对ROM的读操作是针对尾部程序存储器的;而当EA信号为高电平时,对ROM的读操作时从内部程序存储器开始,并可延续至外部程序存储器。

(5):

复位信号RST

当输入的复位信号延续2个机器周期以上高电平时即为有效,用于完成单片机的复位操作。

(6):

外接晶体引线端XTAL1和XTAL2

当使用芯片内部时钟时,XTAL1和XTAL2用于外接石英晶体谐振器和微调电容;当使用外部时钟时,用于接入外部时钟脉冲信号。

(7):

地线Vss

(8):

+5V电源Vcc

 

3系统硬件电路设计

 

3.1硬件系统各模块功能介绍

本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。

(1)单片机最小系统模块:

包括低功耗、高性能CMOS8位微控制AT89S52;复位电路;晶振电路。

本本模块AT89S52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。

通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。

这样就构成一个稳定的自激振荡器。

(2)输入模块:

本模块共用到了5个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。

3个按键独立式键盘,S1键控制电子钟的启动\调整状态,S2键为加1键,S3键为减1键。

且S1、S2、S3任一键都独自连一个I/O(P1.0、P1.1、P1.2)口线,说明它们可以独立实现相应的电子钟功能。

(3)输出模块:

本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。

数码管用8个PNP三极管驱动。

(4)电源模块:

用市场上的USB供电。

3.2数码管显示方案

数码管显示方案分静态显示和动态显示两种。

所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。

所谓动态显示,就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。

静态显示每一位都需要一个8位输出口控制,静态显示时较小的电流能获得较高的亮度,且字符不闪烁,但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

动态显示是利用人的视觉暂留功能来看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。

显示器的亮度既与导通电流有关,也与点亮时间与间隔时间的比例有关。

调整参数可以实现较高稳定度的显示。

动态显示节省了I/0口,降低了能耗,因此本设计采用动态显示。

3.3总电路图的设计

图1数字电子钟总电路原理图

4系统软件设计

 

4.1使用单片机资源的说明

P0口输出数码管段选信号,P3口输出数码管位选信号;晶振12MHz;调整选择键SET_KEY:

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

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

P1.2;按一次使选中位减1;50H-5FH;16个寄存器单元作为显示单元。

50H用于控制秒基准时钟源的产生;51H清零秒寄存器;

52H清零分寄存器;53H清零时寄存器;

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

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

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

54H用于控制调时闪烁;堆栈栈底:

70H。

4.2程序设计构想流程框图

图2主程序流程框图

图3加1子程序流程框图

图4中断子程序

 

图5键盘扫描子程序

 

图6显示子程序

4.3程序清单

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

;程序入口

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

ORG0000H

LJMPSTART

ORG000BH;定时器0中断入口地址

LJMPTIMET0

ORG1000H

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

;显P.程序

;功能:

可以在8个数码闪烁移位进行屏保

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

START:

MOVR6,#2;闪烁次数

MOVA,#0FEH;位选

TT:

MOVP2,A

MOVP0,#0CH;段码"P."

LCALLDELAY

MOVP2,#0FFH

DJNZR6,TT

LCALLDELAY

LCALLDELAY1

RRA

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

LCALLDELAY;延时去抖

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

KAI:

SETBP1.0

CLRA;状态恢复

MOVP0,#0FFH

LCALLDELAY1

SETB48H;用于调时闪烁标志

SETB47H;用于产生脉冲用于调时快进的脉冲

MOVR1,#0;键功能标志:

0计时、1调时、2调分、3调秒

MOVR0,#50H;初始化

MOVR6,#10H

CLEARJCQ:

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

INCR0

DJNZR6,CLEARJCQ

MOVIP,#02H

SETBEA

SETBET0

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

MOVTH0,#3CH

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

SETBTR0;启动定时器0

MOVSP,#70H;堆栈

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

;主程序

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

MAIN:

LCALLDISPLAY

LCALLKEY_SCAN

JZMAIN

LCALLSET_KEY

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

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

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

LJMPMAIN;重新循环

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

;显示处理程序

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

DISPLAY:

MOVA,51H

ANLA,#0FH

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

MOVA,51H

ANLA,#0F0H

SWAPA

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

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

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

JB48H,MIN

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

MOV5EH,#0AH

MIN:

MOVA,52H

ANLA,#0FH

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

MOVA,52H

ANLA,#0F0H

SWAPA

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

JB46H,HOUR

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

JB48H,HOUR

MOV5DH,#0AH

MOV5CH,#0AH

HOUR:

MOVA,53H

ANLA,#0FH

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

MOVA,53H

ANLA,#0F0H

SWAPA

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

JB46H,DISP

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

JB48H,DISP

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

MOV5AH,#0AH

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

;数码管动态扫描显示

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

DISP:

MOVDPTR,#TABLE

MOVA,5FH

MOVCA,@A+DPTR

MOVP0,A

CLRP2.0

LCALLDELAY

SETBP2.0

MOVA,5EH

MOVCA,@A+DPTR

MOVP0,A

CLRP2.1

LCALLDELAY

SETBP2.1;显示秒十位

MOVA,#0BFH

MOVP0,A

CLRP2.5

LCALLDELAY

SETBP2.5;显示“-”

MOVA,5DH

MOVCA,@A+DPTR

MOVP0,A

CLRP2.3

LCALLDELAY

SETBP2.3;显示分个位

MOVA,5CH

MOVCA,@A+DPTR

MOVP0,A

CLRP2.4

LCALLDELAY

SETBP2.4;显示分十位

MOVA,#0BFH

MOVP0,A

CLRP2.2

LCALLDELAY

SETBP2.2;显示“-”

MOVA,5BH

MOVCA,@A+DPTR

MOVP0,A

CLRP2.6

LCALLDELAY

SETBP2.6;显示时个位

MOVDPTR,#TABLE1;消除时的十位置0

MOVA,5AH

MOVCA,@A+DPTR

MOVP0,A

CLRP2.7

LCALLDELAY

SETBP2.7;显示时十位

RET

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

;定时器中断1s程序

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

TIMET0:

PUSHACC;保护现场

PUSHPSW

MOVTH0,#3CH

MOVTL0,#0B0H

CPL47H;产生脉冲用于调时快进

INC54H

MOVA,54H

CJNEA,#10,ADD_TIME;产生0.5秒,用于调时闪烁

CPL48H;取反调时闪烁标志位

MOV54H,#00H

ADD_TIME:

INC50H

MOVA,50H

CJNEA,#10,ZDBACD;整点报时时蜂鸣器响延迟时间

SETBP3.1

ZDBACD:

CJNEA,#20,RETI1;产生1秒时钟

MOV50H,#00H;一秒钟时间到,清零50H

MOVA,51H

ADDA,#01H

DAA;十进制调整

MOV51H,A

CJNEA,#60H,RETI1

MOV51H,#00H;一分钟到

MOVA,52H

ADDA,#01H

DAA

MOV52H,A

CJNEA,#60H,RETI1

CLRP3.1

MOV52H,#00H

MOVA,53H

ADDA,#01H

DAA

MOV53H,A

CJNEA,#24H,RETI1

MOV53H,#00H;到24点,清零小时

RETI1:

POPPSW

POPACC;恢复现场

RETI;中断返回

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

;键盘扫描程序

;R4设置为00H是为了在进入长按处理前加长延时,以区分长按与短按键

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

KEY_SCAN:

CLR46H;关闭调时快进标志

MOVP1,#0FFH;将P1口设置成输入状态

MOVA,P1

CPLA

ANLA,#07H

JZEXIT_KEY

LCALLDELAY;延时去抖动

MOVA,P1;重新判断

CPLA

ANLA,#07H

JZEXIT_KEY

MOVR5,A

MOVR4,#00H;用于控制调时快进速度

LOOP:

LCALLDISPLAY;进入长按处理

MOVA,P1

CPLA

ANLA,#07H

JB47H,LOOP1

INCR4

LOOP1:

CJNER1,#03H,LOOP2

LJMPLOOP3

LOOP2:

CJNER4,#99H,LOOP3

MOVR4,#70H

SETB46H

LCALLADD_KEY

LCALLDEC_KEY

LOOP3:

JNZLOOP;等待键释放

MOVA,R5;输出键值

RET

EXIT_KEY:

RET

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

;延时子程序

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

DELAY:

MOVR7,#200

DJNZR7,$

RET

DELAY1:

MOVR3,#50

MOVTMOD,#00H

MOVTH1,#63H

MOVTL1,#18H

SETBTR1

LP1:

JBCTF1,LP2

SJMPLP1

LP2:

MOVTH1,#63H

MOVTL1,#18H

DJNZR3,LP1

RET

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

;选择键处理子程序

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

SET_KEY:

CJNER5,#01H,EXIT;选择键键值

INCR1;调整选择功能标志加一

CJNER1,#4,EXIT

MOVR1,#0

MOV54H,#00H;调时闪烁清零

RET

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

;加1子程序

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

ADD_KEY:

CJNER5,#02H,EXIT;加1键值

CJNER1,#01H,NEXT1

MOVA,53H

ADDA,#01H

DAA

MOV53H,A

CJNEA,#24H,EXIT

MOV53H,#00H

NEXT1:

CJNER1,#02H,NEXT2

MOVA,52H

ADDA,#01H

DAA

MOV52H,A

CJNEA,#60H,EXIT

MOV52H,#00H

NEXT2:

CJNER1,#03H,EXIT

MOVA,51H

ADDA,#01H

DAA

MOV51H,A

CJNEA,#60H,EXIT

MOV51H,#00H

RET

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

;减1子程序

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

DEC_KEY:

CJNER5,#04H,EXIT;减1键键值

CJNER1,#01H,NEXT3

MOVA,53H

ADDA,#99H

DAA

MOV53H,A

CJNEA,#99H,EXIT

MOV53H,#23H

NEXT3:

CJNER1,#02H,NEXT4

MOVA,52H

ADDA,#99H

DAA

MOV52H,A

CJNEA,#99H,EXIT

MOV52H,#59H

NEXT4:

CJNER1,#03H,EXIT;选择键功能标志为3调秒,否则跳出

MOVA,51H

ADDA,#99H

DAA

MOV51H,A

CJNEA,#99H,EXIT

MOV51H,#59H

RET

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

;返回子程序

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

EXIT:

RET

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

;数码管字形编码表

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

TABLE:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

;"0","1","2","3","4","5","6","7","8"",9","不显示"

TABLE1:

DB0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;小时编码

;"不显示","1","2","3","4","5","6","7","8","9","不显示"

END

 

5调试与功能说明

 

5.1硬件调试

检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测棋数值,看是否与所用相同;完成焊接后,应先空载上电,比检查各引脚的点位是否正确。

若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。

将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。

5.2系统性能测试与功能说明

走时:

默认为走时状态,按24小时制分别显示“时时-分分-秒秒”,有2个“-”动态显示,时间会按实际时间以秒为最少单位变化。

走时调整:

按对秒进行调整,按一下加一秒;按对分进行调整,按一下加一分;按对时进行调整,按一下加一小时,从而达到快速设定时间的目的。

 

结束语

 

本次课程设计,让我受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。

在我们以往的学习过程中,我们刻意地去加强理论的基础,对于一个程序我们只求它在运行时没有出错,我们便以为我们的计划成功了岂不知它能否在硬件结构中得以实现则是另外一回事,这就要求我们的动手能力,如果无法使软件与硬件实现有机的结合,那么再好的程序也只是一堆废字符。

 

参考文献

[1]张志良.单片机原理与控制技术[M].第2版.北京:

机械工业出版社,2005.3.

[2]张志良.单片机学习指导及习题解答[M].北京:

机械工业出版社,2005.3.

[3]李广弟.单片机基础[M].第3版.北京:

北京航空航天大学出版社,2007.6.

[4]阎石.数字电子技术基础[M].第四版.北京:

高等教育出版社,1998.12.

[5]康华光.电子技术基础模拟部分[M].第五版.北京:

高等教育出版社,2006.1.

[6]谢自美.电子线路-实验-测试[M].武汉:

华中科技大学出版社,2000.7.

 

致谢

 

通过这次的单片机课程设计,不仅使我更好的掌握了单片机的理论知识,进一步熟练了Keil、protel99SE、Proteus等软件的应用,更让我很好的锻炼了自己分析问题、解决问题的能力,学会了如何去将理论与实际相结合,培养了自己的动手能力。

在此,我要感谢我的指导老师王韧老师,他是一个教学严谨严肃又和蔼可亲的老师,即使是一点小错误也会给你指出来,让你改正。

每当我们有问题的时候,他都总是耐心地给我们解释,例举很多生活中常见的例子,循循善诱,每次都让我们豁然开朗。

在他的教学指导下,此次课程设计顺利完成。

在此对王韧老师表示感谢!

此外,感谢这次课程设计中给我帮助的同学,是你们的帮助,才让我顺利的完成了此项课程设计任务,谢谢你们。

 

附录一仿真结果

附录二PCB图

 

附录三元器件清单

元器件名称

规格

需要数目

AT89S52加底座

1

四位一体

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

当前位置:首页 > 求职职场 > 简历

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

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