单片机课程设计数字电子钟.docx

上传人:b****6 文档编号:16720639 上传时间:2023-07-16 格式:DOCX 页数:29 大小:892.22KB
下载 相关 举报
单片机课程设计数字电子钟.docx_第1页
第1页 / 共29页
单片机课程设计数字电子钟.docx_第2页
第2页 / 共29页
单片机课程设计数字电子钟.docx_第3页
第3页 / 共29页
单片机课程设计数字电子钟.docx_第4页
第4页 / 共29页
单片机课程设计数字电子钟.docx_第5页
第5页 / 共29页
单片机课程设计数字电子钟.docx_第6页
第6页 / 共29页
单片机课程设计数字电子钟.docx_第7页
第7页 / 共29页
单片机课程设计数字电子钟.docx_第8页
第8页 / 共29页
单片机课程设计数字电子钟.docx_第9页
第9页 / 共29页
单片机课程设计数字电子钟.docx_第10页
第10页 / 共29页
单片机课程设计数字电子钟.docx_第11页
第11页 / 共29页
单片机课程设计数字电子钟.docx_第12页
第12页 / 共29页
单片机课程设计数字电子钟.docx_第13页
第13页 / 共29页
单片机课程设计数字电子钟.docx_第14页
第14页 / 共29页
单片机课程设计数字电子钟.docx_第15页
第15页 / 共29页
单片机课程设计数字电子钟.docx_第16页
第16页 / 共29页
单片机课程设计数字电子钟.docx_第17页
第17页 / 共29页
单片机课程设计数字电子钟.docx_第18页
第18页 / 共29页
单片机课程设计数字电子钟.docx_第19页
第19页 / 共29页
单片机课程设计数字电子钟.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计数字电子钟.docx

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

单片机课程设计数字电子钟.docx

单片机课程设计数字电子钟

 

单片机技术课程设计说明书

数字电子钟

院、部:

电气与信息工程学院

学生姓名:

王文亮

指导教师:

王韧职称副教授

专业:

自动化

班级:

1004

完成时间:

2012-12-31

 

摘要

 

电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz晶振与单片机AT89S52相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键K1、K2、K3和K4键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词电子钟;AT89S52;硬件设计;软件设计

 

ABSTRACT

 

Clockiswidelyusedinlife,andasimpledigitalclockismorewelcomedbypeople.Sotodesignasimpledigitalelectronicclockisnecessary.ThesystemuseasinglechipAT89S52ofATMEL’sasitscoretocontrolThecrystaloscillatorclock,usingofE-12MHZisconnectedwiththemicrocontrollerAT89S52,throughthesoftwareprogrammingmethodtoachievea24-hourcycle,andeight7-segmentLEDdigitaltube(twofourinonedigitaltube)displayshours,minutesandsecondsrequirements,andinthetimecourseofatimingfunction,whenthetimearrivedaheadofscheduledtimetobuzzagoodtimekeeping.TheclockhasfourbuttonsK1,K2,K3andK4key,andmaketheappropriateactioncanbeachievedwhentheschool,timing,reset.Withatimedisplay,alarmclocksettings,timerfunction,correctiveaction.Accuratetraveltime,displayandintuitive,precision,stability,andsoon.Withahighapplicationvalue.

显示对应的拉丁字符的拼音

 

字典-查看字典详细内容

KeywordsElectronicclock;;AT89S52;HardwareDesign;SoftwareDesign

 

目录

1设计课题任务、功能要求说明及方案介绍……………………………………1

1.1设计课题任务………………………………………………………………1

1.2功能要求说明………………………………………………………………1

1.3设计总体方案介绍及原理说明……………………………………………1

2设计课题硬件系统的设计………………………………………………………2

2.1设计课题硬件系统各模块功能简要介绍…………………………………2

2.2设计课题电路原理图、PCB图、元器件布局图…………………………2

2.3设计课题元器件清单………………………………………………………3

3设计课题软件系统的设计………………………………………………………5

3.1设计课题使用单片机资源的情况…………………………………………5

3.2设计课题软件系统各模块功能简要介绍…………………………………5

3.3设计课题软件系统程序流程框图…………………………………………5

3.4设计课题软件系统程序清单………………………………………………9

4设计结论、仿真结果、误差分析、教学建议…………………………………20

4.1设计课题的设计结论及使用说明…………………………………………20

4.2设计课题的仿真结果………………………………………………………20

4.3设计课题的误差分析………………………………………………………21

4.4设计体会……………………………………………………………………21

4.5教学建议……………………………………………………………………21

参考文献……………………………………………………………………………23

致谢……………………………………………………………………………24

附录……………………………………………………………………………25

 

1设计课题任务、功能要求说明及方案介绍

 

1.1设计课题任务

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

具有时间显示、报时等功能。

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

1.2功能要求说明

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

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

1.3设计课题总体方案介绍及工作原理说明

本电子钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1.1所示:

 

图1.1总体设计方案图

本电子钟的所有的软件、参数均存放在AT89S52的内部ROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

2设计课题硬件系统的设计

 

2.1设计课题硬件系统各模块功能简要介绍

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

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

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

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

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

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

(2)输入模块:

本模块共用到了5个按键,1个复位键,单片机接通电源后,利用按键复位完成复位操作。

,K1键控制电子钟的启动\调整状态,做正常走时状态时K2为电子钟时调整键,K3为电子钟分调整键,K4键为电子钟秒调整键,当作为闹钟调整状态时K4键为闹钟启动/关闭,K2为闹钟时调整键,K3为闹钟分调整键。

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

(3)输出模块:

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

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

(4)电源模块:

现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。

2.2设计课题电路原理图、PCB图、元器件布局图

图2.1电路原理图

图2.2PCB图

图2.3元器件布局图

2.3设计课题元器件清单

表2.1设计所用元器件清单

名称

数量

参数

电阻

3个

1KΩ

数码管

2个

4位一体

电阻

1个

200Ω

下载口

1个

普通插座

1个

40PIN

电阻

16个

470Ω

按键

4个

三极管

9个

PNP

USB供电线

1根

晶振

1个

12MHz

电容

2个

30pF

极性电容

1个

22μF

芯片

1块

AT89S52

发光二极管

1个

六角开关

1个

3设计课题软件系统的设计

 

3.1设计课题使用单片机资源的情况

设计课题使用单片机资源的情况如下:

P0口输出数码管段控信号,P2口输出数码管位控信号;晶振12MHz;时间调整开关键K1:

P1.0;通过K1切换电子钟走时/暂停;时调整键K2:

P1.1;按一次使电子钟时加1;分调整键K3:

P1.2;按一次使电子钟分加1;秒调整键K4:

P1.3按一次使电子钟秒加1/闹钟开启或关闭;蜂鸣器接:

P3.1;整点和闹钟时间到时蜂鸣器报时;28H-36H;9个寄存器单元作为显示单元;

28H闹铃小时缓冲区;29H闹铃分钟缓冲区;

30H位选通控制位;31H显示位数计数器;

32H走时小时缓冲区;33H走时分钟缓冲区;

34H走时秒缓冲区;35H定时器中断次数计数器;

36H显示缓冲区首地址;

3.2设计课题软件系统个模块功能简要介绍

本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。

主程序:

主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。

中断服务程序:

主要是用于电子钟的准确运行、数据输入过程中的闪烁。

键盘输入程序模块:

主要是用于确定按键并得到特定的键码值。

数码管及其驱动模块:

主要是用于驱动数码管及利用数码管显示时间。

延时模块:

程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。

3.3设计课题软件系统程序流程框图

系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程

序转变成十六进制程序语言,接着使用Proteous进行仿真,读出显示数据。

图3.1主程序流程框图

图3.2定时器初始化子程序流程框图

图3.3转换子程序

图3.4动态显示子程序图3.5定时器1中断服务程序

图3.6按键处理子程序流程框图

 

3.4设计课题软件系统程序清单

;=======================================================================

;课程设计名称:

数字电子钟

;要求:

<一>.显示系统提示符“P.”

;<二>.定义5个功能键:

分别是复位键,启动/暂停键,时调整键,分调整键,秒调整键

;<三>.在系统提示符状态下,只有按启动键/暂停键才能开启电子钟

;<四>.在电子钟运行状态下,只有按启动键/暂停键才能调整电子钟

;附加功能:

<一>.能自动正点报时

;<二>.能设定闹钟

;作者:

自本1004班王文亮

;完成时间:

2012年12月24日

;电路描述:

P0口为数码管段控口,P2口为数码管位控口,蜂鸣器接P3.1口,LED灯接P3.7口

;======================================================================

;===============================================

;程序定义段

;===============================================

ALARMBIT20H.0

K1BITP1.0

K2BITP1.1

K3BITP1.2

K4BITP1.3

HOUR_AEQU28H

MIN_AEQU29H

DISP_DIGITEQU30H

DISP_SELEQU31H

HOUREQU32H

MINEQU33H

SECEQU34H

T1_COUNTEQU35H

DISP_BUFEQU36H

;================================================

;主程序开始

;================================================

ORG0000H

LOOP:

MOVP0,#0CH

MOVP2,#7FH

JBP1.0,LOOP

LCALLDELAY_10ms

JBP1.0,LOOP

JNBP1.0,$

LJMPMAIN

ORG000BH

LJMPTIME0

ORG001BH

LJMPTIME1

ORG0100H

MAIN:

MOVSP,#70H

MOVP0,#0FFH

MOVP2,#0FFH

CLRALARM

MOVHOUR_A,#12

MOVMIN_A,#00

MOVHOUR,#0

MOVMIN,#0

MOVSEC,#0

MOVT1_COUNT,#0

MOVDISP_DIGIT,#7FH

MOVDISP_SEL,#0

MOVDISP_BUF+2,#10

MOVDISP_BUF+5,#10

ACALLT0T1_INIT

START:

ACALLCONV

ACALLALA_CHECK

JBK1,K1_NEXT

ACALLLIGHT

ACALLKEY_PROC

AJMPSTART

K1_NEXT:

JBK2,K2_NEXT

AJMPSTART

K2_NEXT:

JBK3,K3_NEXT

AJMPSTART

K3_NEXT:

JBK4,K4_NEXT

ACALLLIGHT

ACALLALARM_SET

CPLALARM

JNBALARM,STOP_BEEP

ACALLLIGHT

ACALLLIGHT

ACALLLIGHT

AJMPSTART

STOP_BEEP:

ACALLLIGHT

K4_NEXT:

AJMPSTART

 

;=================================================

;定时器T0.T1初始化子程序

;=================================================

T0T1_INIT:

MOVTMOD,#11H

MOVTH0,#0F8H

MOVTL0,#0CCH

MOVTH1,#0DCH

MOVTL1,#00H

SETBEA

SETBET0

SETBET1

SETBTR0

SETBTR1

RET

 

;=================================================

;走时转换子程序

;=================================================

CONV:

MOVA,HOUR

MOVB,#10

DIVAB

MOVDISP_BUF,A

MOVA,B

MOVDISP_BUF+1,A

MOVA,MIN

MOVB,#10

DIVAB

MOVDISP_BUF+3,A

MOVA,B

MOVDISP_BUF+4,A

MOVA,SEC

MOVB,#10

DIVAB

MOVDISP_BUF+6,A

MOVA,B

MOVDISP_BUF+7,A

RET

;==================================================

;定时器T0中断服务程序,用于数码管扫描

;==================================================

TIME0:

PUSHACC

PUSHPSW

MOVTH0,#0F8H

MOVTL0,#0CCH

ACALLDISP

POPPSW

POPACC

RETI

;===================================================

;显示子程序

;===================================================

DISP:

MOVP2,#0FFH

MOVA,#DISP_BUF

ADDA,DISP_SEL

MOVR0,A

MOVA,@R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,DISP_DIGIT

MOVA,DISP_DIGIT

RRA

MOVDISP_DIGIT,A

INCDISP_SEL

MOVA,DISP_SEL

CLRC

SUBBA,#8

JZRST_0

AJMPDISP_RET

RST_0:

MOVDISP_SEL,#0

DISP_RET:

RET

;==================================================

;定时器T1中断服务程序,用于电子钟走时

;==================================================

TIME1:

PUSHPSW

PUSHACC

MOVTH1,#0DCH

MOVTL1,#00H

INCT1_COUNT

MOVA,T1_COUNT

CLRC

SUBBA,#100

JCEND_T1

MOVT1_COUNT,#00H

INCSEC

MOVA,SEC

CJNEA,#60,END_T1

INCMIN

MOVSEC,#0

MOVA,MIN

CJNEA,#60,END_T1

INCHOUR

LCALLBEEP

LCALLBEEP

LCALLBEEP

LCALLBEEP

LCALLBEEP

MOVMIN,#0

MOVA,HOUR

CJNEA,#24,END_T1

MOVSEC,#0

MOVMIN,#0

MOVHOUR,#0

END_T1:

POPACC

POPPSW

RETI

;==================================================

;数码管段控码表

;==================================================

TAB:

DB0C0H,0F9H,0A4H,0B0H,099H

DB092H,082H,0F8H,080H,090H

DB0BFH

DB0FFH

;==================================================

;按键处理子程序

;==================================================

KEY_PROC:

CLRTR1

KEY2:

JBK2,KEY3

ACALLDELAY_10ms

JBK2,KEY3

JNBK2,$

INCHOUR

MOVA,HOUR

CJNEA,#24,KEY2_NEXT

MOVHOUR,#0

KEY2_NEXT:

ACALLCONV

AJMPKEY2

KEY3:

JBK3,KEY4

ACALLDELAY_10ms

JBK3,KEY4

JNBK3,$

INCMIN

MOVA,MIN

CJNEA,#60,KEY3_NEXT

MOVMIN,#0

KEY3_NEXT:

ACALLCONV

AJMPKEY2

KEY4:

JBK4,KEY1

ACALLDELAY_10ms

JBK4,KEY1

JNBK4,$

INCSEC

MOVA,SEC

CJNEA,#60,KEY4_NEXT

MOVSEC,#0

KEY4_NEXT:

ACALLCONV

AJMPKEY1

KEY1:

JBK1,KEY2

ACALLDELAY_10ms

JBK1,KEY2

JNBK1,$

ACALLLIGHT

SETBTR1

KEY_RET:

RET

;=================================================

;LED灯亮子程序

;=================================================

LIGHT:

CLRP3.7

ACALLDELAY_100ms

SETBP3.7

ACALLDELAY_100ms

RET

;=================================================

;蜂鸣器响子程序

;=================================================

BEEP:

CLRP3.1

ACALLDELAY_100ms

SETBP3.1

ACALLDELAY_100ms

RET

;=====================================================

;闹钟检查及处理子程序

;=====================================================

ALA_CHECK:

JNBALARM,CHECK_RET

MOVA,HOUR

MOVB,HOUR_A

CJNEA,B,CHECK_RET

MOVA,MIN

MOVB,MIN_A

CJNEA,B,CHECK_RET

TIME_OUT:

ACALLB

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2