单片机数字时钟课设正文Word文档格式.docx

上传人:b****2 文档编号:3176886 上传时间:2023-05-01 格式:DOCX 页数:19 大小:222.04KB
下载 相关 举报
单片机数字时钟课设正文Word文档格式.docx_第1页
第1页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第2页
第2页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第3页
第3页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第4页
第4页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第5页
第5页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第6页
第6页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第7页
第7页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第8页
第8页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第9页
第9页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第10页
第10页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第11页
第11页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第12页
第12页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第13页
第13页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第14页
第14页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第15页
第15页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第16页
第16页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第17页
第17页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第18页
第18页 / 共19页
单片机数字时钟课设正文Word文档格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机数字时钟课设正文Word文档格式.docx

《单片机数字时钟课设正文Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟课设正文Word文档格式.docx(19页珍藏版)》请在冰点文库上搜索。

单片机数字时钟课设正文Word文档格式.docx

1.2汇编语言特点

1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。

2.保持了机器语言的优点,具有直接和简捷的特点。

3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。

5.经常与高级语言配合使用,应用十分广泛。

1.3芯片简介

89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。

它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。

89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。

此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。

在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。

掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。

89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。

 

2设计原理分析

2.1基本原理

本系统是基于单片机AT89S52制作的数字电子钟。

根据实验要求,完成电子钟、时钟校准以及闹钟功能。

硬件系统设计方面:

采用六位LED数码管,用切换的方式显示时间和设置的闹钟时间;

可调整时间以及闹钟时间;

具有设置闹钟的功能。

软件系统设计方面:

程序采用汇编语言编写,使自己更加理解硬件语言以及其工作原理;

“时钟”基准时间由单片机内部的定时中断提供用一个计数器对定时中断的次数进行计数,可实现“秒”定时,同理可以进行“分”﹑“时”定时;

采用按键查询功能复用,简化了程序的设计;

采用动态扫描法显示6位数码管。

2.2硬件设置

(1)采用6位LED数码管显示时间。

(2)采用“动态扫描驱动”,但所需驱动电流要大。

(3)显示部分也可采用液晶,但液晶成本较高,故采用七段数码管显示。

(4)键盘的按键数目较多时则采用行列式矩阵结构为好。

“一键多用”的构思和设计能大为减少按键的数目。

2.3软件方案

(1)“时钟”基准时间由单片机内部的定时中断提供,定时时间应是“秒”的整除数,且长短适宜。

最长不能超过16位定时器的最长定时时间;

最短不能少于中断服务程序的执行时间。

通常来说基准时间越短,越有利于提高时钟的运行精确度。

(2)用一个计数器对定时中断的次数进行计数,可以进行“分”﹑“时”定时。

(3)LED数码管显示器采用“动态扫描驱动”时要注意的是:

驱动信号的维持时间必须大于“起辉时间”(电流大起辉时间短),而驱动信号的间歇时间必须小于“余辉时间”(电流大余辉时间长),驱动电流大小受硬件电路能力和LED数码管极限功耗制约。

(4)动态扫描显示方式在更新显示内容时,因LED数码管余辉的存在可能会造成显示字符的模糊,新内容写入显示器之前须将所有的LED数码管熄灭。

3设计流程图

3.1主程序流程图

当有不同按键按下时,进入不同的服务子程序,同时在查询的时候判断是不是整点,有没有到达闹铃设置的时间,进入服务子程序采用的是查询的模式。

3.2闹铃程序流程图

实现闹钟功能主要有两个步骤,首先是能在按键中把闹钟数值写进寄存器,实现存储功能。

其次是根据在查询按键服务程序中作判别,检查当前时间是否与闹铃时间相等,如果相等,则使在相应时间时对蜂鸣器提供驱动电流即可。

就实现了闹钟设置的功能。

3.3TO中断子程序流程图

4系统仿真

利用proteus软件对以上系统进行仿真。

电子秒表与闹钟的系统可分为四个环节,分别是单片机控制系统、时间显示模块、控制键模块和闹铃模块。

通过若干模块的协调工作就可以完成相应的时间调整和定时闹钟的相应功能以及显示功能。

单片机控制系统由可编程可擦除只读存储器AT89C51构成,此设计中用到了C51单片机的中断系统,并行口设计和定时器等功能。

时间显示模块显示部分采用六位一体共阳数码管,自左到右分别显示时时-分分-秒秒。

控制键模块,其中K1键为闹钟设置键,K2为小时设置键,K3为分钟设置键。

闹铃模块采用SPEAKER,当定时时间到时,P1.7产生连续脉冲SPEAKER报警。

5程序及运行结果

5.1源代码

/**************************************

;

变量地址分配

*********************************************************/

HourEQU3AH;

小时计数器的地址

MinuteEQU3BH;

分钟计数器的地址

SecondEQU3CH;

秒计数器的地址

P1ValEQU3DH;

数码管位驱动值的地址

ClockModeBIT20H.0;

模式(正常走时/闹时)设置寄存器地址,

值为0时正常走时,为1时闹时设定

AlarmOnOffBIT20H.1;

闹钟开启/关闭标志,为0关闭,为1开启

AlarmTimeOnBIT20H.2;

此位为1时表示闹时时间到

DispHourEQU21H;

小时显示寄存器的地址

DispMinuteEQU22H;

分钟显示寄存器的地址

DispSecondEQU23H;

秒显示寄存器的地址

AlarmHourEQU2EH;

闹时小时计数器的地址

AlarmMinuteEQU2FH;

闹时分钟计数器的地址

k1BITP3.2;

闹钟设置键

k2BITP3.3;

小时设置键

k3BITP3.5;

分钟设置键

ORG0000H

AJMPMain

ORG0BH

AJMPTimeInt

ORG0020H

Main:

MOVSP,#70H

MOV39H,#14H

MOVHour,#12

MOVMinute,#00

MOVSecond,#00

MOVAlarmHour,#06

MOVAlarmMinute,#00

CLRClockMode

CLRAlarmTimeOn

SETBp1.7

MOVTMOD,#00000001B

MOVTH0,#03CH

MOVTL0,#0B0H

MOVIE,#82H

SETBTR0

L1:

JBK1,CheckMinuteKey

LCALLDelay

SETBClockMode

LCALLAlarmSet

CheckMinuteKey:

JBK3,CheckHourKey

MOVA,Minute

ADDA,#1

MOVMinute,A;

CJNEA,#60,NotOver1

MOVMinute,#0

NotOver1:

JNBK3,$

CheckHourKey:

JBK2,CheckAlarm

MOVA,Hour

MOVHour,A

CJNEA,#24,NotOver2

MOVHour,#0

NotOver2:

JNBK2,$

CheckAlarm:

;

JNBAlarmTimeOn,ToReturn

LCALLLOOP

ToReturn:

AJMPL1

**********************************************

定时器Timer0中断服务程序

TimeInt:

PUSHACC

PUSHPSW

SETBRS0

CLRRS1

DJNZ39H,NotoneSecond

LCALLClock

LCALLConvertoBuffer

NotoneSecond:

LCALLScanDisplay

POPPSW

POPACC

RETI

ScanDisplay:

MOVR1,#30H

MOVR4,#11111110B

MOVA,R4

PLAY:

MOVP2,A

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

INCR1

RLA

JNBACC.6,LD1

MOVR4,A

AJMPPLAY

LD1:

RET

TAB:

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

共阳段码表"

0"

"

1"

2"

"

3"

4"

5"

6"

7"

8"

9"

不亮"

Clock:

MOVA,Second

MOVSecond,A

CJNEA,#3CH,NotOverFlow

MOVSecond,#0

MOVMinute,A

CJNEA,#18H,NotOverFlow

NotOverFlow:

JNBAlarmOnOff,NotAlarm

CJNEA,AlarmMinute,NotAlarm

CJNEA,AlarmHour,NotAlarm

SETBAlarmTimeOn

NotAlarm:

RET

ConvertoBuffer:

JBClockMode,DispAlarmSet

MOVA,Second;

MOVDispSecond,A;

MOVA,Minute;

MOVDispminute,A;

MOVA,Hour;

MOVDispHour,A

AJMPConvert

DispAlarmSet:

JBAlarmOnOff,AlarmOn

MOVDispSecond,#00H

AJMPNext

AlarmOn:

MOVDispSecond,#11

Next:

MOVA,AlarmMinute

MOVDispminute,A

MOVA,AlarmHour

Convert:

MOVA,DispSecond

MOVB,#10

DIVAB

MOV@R1,B

MOV@R1,A

MOVA,DispMinute

MOVA,DispHour

*************************************

闹时设置子程序

AlarmSet:

JNBK1,$

CheckArmMinuteKey:

JBK3,CheckArmHourKey

CL1:

SETBAlarmOnOff

MOVAlarmMinute,A

CJNEA,#60,ArmNotOver1

MOVAlarmMinute,#0

ArmNotOver1:

CheckArmHourKey:

JBK2,AlarmSetEnd

SETBAlarmOnOff

MOVAlarmHour,A

CJNEA,#24,ArmNotOver2

MOVAlarmHour,#0

ArmNotOver2:

JBK3,AlarmSetEnd

ACALLCL1

AlarmSetEnd:

JBK1,AlarmSet

**************************************

闹时服务子程序

LOOP:

CLRP1.7

ACALLDelay1

SETBP1.7

JBK1,LOOP

CLRAlarmOnOff

AlarmReturn:

延时子程序

DELAY1:

MOVR3,#15

LOOP1:

MOVR5,#90

NOP

LOOP2:

DJNZR5,LOOP2

DJNZR3,LOOP1

Delay:

MOVR6,#05H

Del:

MOVR7,#08Fh

DJNZR7,$

DJNZR6,Del

END

5.2仿真运行截图

6心得体会

通过这次课程设计,加强了我们动手、思考和解决问题的能力。

在设计过程中,经常会遇到这样那样的情况,就是心里想着这样的程序可以行得通,但实际接上总是实现不了,因此耗费在这上面的时间用去很多。

我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。

平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。

而且还可以记住很多东西。

比如一些程序的调用,通过动手实践让我们对调用映象深刻。

所以这个课程设计对我们的作用是非常大的。

设计程序时,我发现只有细心才能做到完美,首先是参数设置,还有结果显示部分的设置,兼顾到方方面面去考虑是很需要的,否则只是一纸空话。

同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。

某个人的离群都可能导致导致整项工作的失败。

课程设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。

团结协作是我们实习成功的一项非常重要的保证。

而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

参考文献

[1] 

姚燕南.微型计算机原理.西安:

西安电子科技大学出版社,2002

[2] 

艾德才.微型接口技术编程.北京:

清华大学出版社,2002

[3] 

冯博琴.单片微型计算机原理与接口技术.北京:

清华大学出版社,2000

[4]薛钧毅.单片微型计算机原理及应用.西安:

西安交通大学出版社,2005

[5]陈希林.汇编语言程序设计.北京:

高等教育出版社,2004

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

当前位置:首页 > 人文社科 > 法律资料

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

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