单片机课程设计定时闹钟的设计Word文档下载推荐.docx

上传人:b****3 文档编号:17801484 上传时间:2022-12-10 格式:DOCX 页数:19 大小:175.39KB
下载 相关 举报
单片机课程设计定时闹钟的设计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

《单片机课程设计定时闹钟的设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机课程设计定时闹钟的设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

单片机课程设计定时闹钟的设计Word文档下载推荐.docx

对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。

在这种应用中,P2口使用很强的内部上拉发送1。

在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:

P3口是一个具有内部上拉电阻的8位准双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。

对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。

在flash编程和校验时,P3口也接收一些控制信号。

P3口也可作为AT89S52的一些特殊功能口,如下表所示:

P3口管脚备选功能:

端口引脚

第二功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

/INT0(外部中断0)低电平有效

P3.3

/INT1(外部中断1)低电平有效

P3.4

T0(记时器0外部输入)

P3.5

T1(记时器1外部输入)

P3.6

/WR(外部数据存储器写选通)

P3.7

/RD(外部数据存储器读选通)

RST:

复位输入。

晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。

看门狗计时完成后,RST脚输出96个晶振周期的高电平。

特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。

DISRTO默认状态下,复位高电平有效。

ALE/PROG:

地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。

在flash编程时,此引脚(PROG)也用作编程输入脉冲。

在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。

然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。

如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。

这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。

否则,ALE将被微弱拉高。

这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN:

外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。

当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。

EA/VPP:

访问外部程序存储器控制信号。

为使能从0000H到FFFFH的外部程序存储器

读取指令,EA必须接GND。

为了执行内部程序指令,EA应该接VCC。

在flash编程期间,EA也接收12伏VPP电压。

XTAL1:

振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:

振荡器反相放大器的输出端。

2.3.2蜂鸣器

由P3.7口控制蜂鸣器,使其定时时间到能发出报警声。

2.3.3时钟电路

单片机的时钟产生方法有两种:

内部时钟方式和外部时钟方式。

本系统中单片机采用内部时钟方式。

最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。

振荡晶体可在1.2MHz~12MHz之间。

电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF~100pF之间取值。

A

单片机的时钟电路。

如图3所示

图3

限流电阻:

8个220Ω电阻

控制按键:

本系统要进行时间的调整和定时,因此用4个手动按键对其进行控制。

2.3.4显示器模块的设计

利用2个七段数码管6个选位引脚连接C51单片机P2.5–P2.0接口,其他8个引脚分别通过限流电阻与C51单片机的P0.0-P0.7和共阳极数码管连接。

数码管:

单片机中通常使用7段LED,LED是发光二极管显示器的缩写。

LED显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配置灵活,与单片机接口方便而得到广泛应用。

LED显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。

如图4所示

图4

3软件设计

3.1划分模块

根据设计要求,定时闹钟程序可分为以下几个模块:

1)显示时间的设置;

2)闹钟时间的设置:

4)定时时间的响应。

3.2程序流程图

图5程序流程图

3.3汇编程序

ORG0000H

LJMPSTART

ORG000BH

LJMPTIME

;

初始化;

START:

MOVSP,#50H

MOV20H,#00H;

定义秒

MOV21H,#00H;

定义分

MOV22H,#00H;

定义时

MOV23H,#01H;

定义闹钟分钟

MOV24H,#01H;

定义闹钟小时

MOV25H,#00H

MOV26H,#01H

MOV30H,#00H;

BCDSECOND

MOV31H,#00H

MOV32H,#00H;

BCDMINUTE

MOV33H,#00H

MOV34H,#00H;

BCDHOUR

MOV35H,#00H

MOV36H,#01H

MOV37H,#00H

MOV38H,#01H

MOV39H,#00H

MOV50H,#00H;

按键次数

MOVTMOD,#01H;

16位计数器

MOVTH0,#03CH;

赋初值

MOVTL0,#0B0H

MOVIE,#87H;

中断允许

SETBTR0;

启动T0

MOVR2,#14H

MOVP2,#0FFH

CLRP3.7

主程序;

MAIN:

LCALLTIMEPRO;

调用闹钟判断

GB:

LCALLDISPLAY1;

调用时间显示

JBP1.3,M1;

P1.3=1时转移S4没有按下

LCALLSETTIME;

调用SETTIME调时子程序

LJMPMAIN

M1:

JBP1.2,M2;

P1g.2=1时转移   S3

LCALLSETATIME;

调用SETATIME子程序

M2:

JBP1.0,M4;

P1.0=1时转移S1

LCALLLOOKATIME;

调用LOOKATIME显示闹钟子程序

M4:

延时子程序;

DELAY:

MOVR4,#030H

DL00:

MOVR5,#0FFH

DL11:

MOVR6,#9H

DL12:

DJNZR6,DL12

DJNZR5,DL11

DJNZR4,DL00

RET

;

时间调整;

SETTIME:

;

设置时间

L0:

LCALLDISPLAY1

MM1:

JBP1.3,L1;

P1.3=1时转移

MOVC,P1.3

JCMM1

LCALLDELAY1;

延时

MSTOP1:

MOVC,P1.3;

P1.3为0时转移

JNCMSTOP1

LCALLDELAY1;

MOVA,50H

INC50H

CJNEA,#00H,HJ1

LJMPL0

HJ1:

JNCMSTOP1

INC22H;

小时自加一

MOVA,22H

CJNEA,#18H,GO12;

小时计数循环 

复位

MOV34H,#00H

LJMPL0

L1:

JBP1.1,L2;

P1.1=1时转移

MOVC,P1.1

JCL1

MSTOP2:

MOVC,P1.1;

P1.1=0时转移

JNCMSTOP2

JNCMSTOP2

INC21H;

分钟加一

MOVA,21H

CJNEA,#3CH,GO11;

分钟计数循环

复位

MOV32H,#00H

GO11:

MOVB,#0AH

DIVAB

MOV32H,B;

将A的低4位存入32单元

MOV33H,A;

将A的高4位存入33单元

GO12:

MOV34H,B;

将A的低4位存入34单元

MOV35H,A;

将A的高4位存入35单元

L2:

JBP1.0,L0;

P1.0=1时转移

MOVC,P1.0

JCL2

STOP1:

MOVC,P1.0;

P1.0=0时转移

JNCSTOP1

JNCSTOP1

MOV50H,#00H

设置闹钟;

SETATIME:

LCALLDISPLAY2;

调用DISPLAY2显示闹钟

N0:

LCALLDISPLAY2

MM2:

JBP1.2,N1;

P1.2=1时转移

MOVC,P1.2

JCMM2

延时

MSTOP3:

MOVC,P1.2;

P1.2=0时转移

JNCMSTOP3

INC50H

CJNEA,#00H,HJ2

LJMPN0

HJ2:

JNCMSTOP3

INC24H;

小时加一

MOVA,24H

CJNEA,#24,GO22;

小时计数循环

MOV24H,#00H;

MOV38H,#00H

LJMPN0

N1:

JBP1.1,N2;

P1.1=1时转移

JCN1

MSTOP4:

MOVC,P1.1;

JNCMSTOP4

JNCMSTOP4

INC23H;

MOVA,23H

CJNEA,#60,GO21;

MOV23H,#00H;

MOV36H,#00H

GO21:

MOV36H,B;

将A的低4位存入36单元

MOV37H,A;

将A的高4位存入37单元

GO22:

MOV38H,B;

将A的低4位存入38单元

MOV39H,A;

将A的高4位存入39单元

N2:

JBP1.0,N0;

P1.0=1时转移

JCN2

STOP2:

JNCSTOP2

LCALLDELAY1

TIMEPRO:

MOVB,23H

CJNEA,B,BK;

判断定时闹钟的分钟

MOVB,24H

判断定时闹钟的小时

SETB25H.0

MOVC,25H.0

LCALLTIMEOUT;

调用TIMEOUT

BK:

RET

TIMEOUT:

X1:

LCALLBZ;

调用喇叭响应程序

LCALLDISPLAY2;

CLR25H.0;

调用喇叭响应程序结束

JBP1.0,X1;

LCALLDELAY;

CLR25H.0

LJMPDISPLAY1

BZ:

CLRP3.7

MOVR7,#250;

喇叭响应时间

T2:

MOVR6,#124

T3:

DJNZR6,T3

DJNZR7,T2

SETBP3.7

LOOKATIME:

LCALLDISPLAY2

MM:

JNBP1.0,LOOKATIME

DELAY1:

MOVR4,#14H;

时间延时

DL001:

DL111:

DJNZR5,DL111

DJNZR4,DL001

***********定时**************

TIME:

PUSHACC;

保护现场

PUSHPSW

MOVTH0,#03CH;

初值

MOVTL0,#0B0H

DJNZR2,RET0

MOVA,20H

CLRC

INCA;

秒自加一

CJNEA,#3CH,GO1;

秒计数循环

MOV20H,#0;

MOV30H,#0

MOV31H,#0

分钟自加一

CJNEA,#3CH,GO2;

MOV21H,#0H;

MOV32H,#0

MOV33H,#0

CJNEA,#18H,GO3;

MOV34H,#0

MOV35H,#0

AJMPRET0

GO1:

MOV20H,A

MOV31H,A;

将A的低4位存入31单元

MOV30H,B;

将A的高4位存入30单元

GO2:

MOV21H,A

将A的低4位存入33单元

将A的高4位存入32单元

AJMPRET0

GO3:

MOV22H,A

将A的低4位存入35单元

将A的高4位存入34单元

RET0:

POPPSW;

恢复现场

POPACC

RETI

******显示子程序**********

DISPLAY1:

MOVR0,#30H

MOVR3,#0FEH

MOVA,R3

PLAY1:

MOVP2,A

MOVA,@R0;

取要显示的数据

MOVDPTR,#DSEG1;

指向字形段码首地址

MOVCA,@A+DPTR

CPLA;

查表取字形段码

MOVP0,A;

指向P0口

LCALLDL1

MOVA,R3;

判断是否显示到最低位

RLA;

左移一位

JNBACC.6,LD1

INCR0;

缓冲器地址加一

MOVR3,A

LJMPPLAY1

LD1:

DISPLAY2:

MOVR0,#36H

MOVR3,#0FBH

PLAY2:

LCALLDL1;

调用DL1

JNBACC.6,LD2

LJMPPLAY2;

调用PLAY2

LD2:

POPPSW

POPACC;

DELAY;

DL1:

MOVR7,#20H

DL:

MOVR6,#20H

DL6:

DJNZR6,$

DJNZR7,DL

DSEG1:

DB3FH,06H,5BH,4FH,66H;

七段码表

DB6DH,7DH,07H,7FH,6FH

END

4protell软件仿真

通过S1、S2、S3和S4四个按键,对时间进行修改和闹钟的设置。

定时时间到能发出报警声,使用KEIL软件编辑程序,生成HEX文件,然后用protel进行仿真,系统运行初始状态:

按下S1键显示闹钟,松开后显示时间;

按下S4键进入时间修改模式,再按S4键时间的时加1,按S2分加1,调整结束后按下S1恢复正常显示;

按下S3键进入闹钟修改模式,再按S3键闹钟的时加1,按S2分加1,调整结束后按下S1恢复正常显示。

5课程设计体会

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在,作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。

通过本次单片机原理及应用课程设计使我充分认认到了课程设计的理要性和必要性,本次设计使我对已学过的基础知识有了更深入的理解,学会了独立思考、独立工作以及对应用所学基本理论分析和解决实际问题的能力有了很大的提高。

另外,本次设计使我的实际操作技能得到了训练,同时也进一步培养了我严谨的科学作风。

回顾起此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期的日子里,可以说得是苦多于甜,但是从中却学到很多很多的的东西,不但巩固了以前所学过的知识,而且对单片机原理课外知识也的到了拓展。

做的过程中,开始的确遇到了不少困难的问题,比如说芯片管脚不熟悉怎么放置,对单片机汇编语言掌握得不好等等,同时在这过程中也发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

通过单片机课程设计之后,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我们还学会了如何去培养创新精神和严谨的科学作风,从而不断地战胜自己,超越自己。

更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。

参考文献

[1].何宏.单片机原理及接口技术教程.北京:

国防工业出版社,2008.4

[2].李广弟.单片机基础.北京:

北京航空航天大学出版社,1992

[3].何立民.单片机应用技术大全.北京:

北京航空航天大学出版社,1994

[4].张毅刚.单片机原理及接口

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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