单片机报告时间控制器.doc

上传人:b****1 文档编号:147499 上传时间:2022-10-04 格式:DOC 页数:10 大小:324.36KB
下载 相关 举报
单片机报告时间控制器.doc_第1页
第1页 / 共10页
单片机报告时间控制器.doc_第2页
第2页 / 共10页
单片机报告时间控制器.doc_第3页
第3页 / 共10页
单片机报告时间控制器.doc_第4页
第4页 / 共10页
单片机报告时间控制器.doc_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

单片机报告时间控制器.doc

《单片机报告时间控制器.doc》由会员分享,可在线阅读,更多相关《单片机报告时间控制器.doc(10页珍藏版)》请在冰豆网上搜索。

单片机报告时间控制器.doc

信息科学与技术学院

本科四年级

单片机课程设计

专业:

班级:

姓名:

学号:

2010年12月17日

一设计题目:

时间控制器的设计

二设计内容:

用89S52单片机设计一个时间控制器,有8位数码管显示年月日及时分秒,具有日历和时钟功能,有一路输出控制电灯,有一路输出控制蜂鸣器,可以设置年月日及时分秒,可以设置一张时间表,该时间表记录什么时间开、关电灯,什么时间开、关蜂鸣器,而单片机按这张时间表来控制电灯和蜂鸣器。

该时间表要求掉电时仍能保存不掉数据,所以需要用一片EEPROM来保存数据,如用24C02/04/08等。

三设计要求:

1)提交设计报告,设计报告中包含设计原理,程序框图,电路图

2)程序清单和PCB图,用PROTEL画

3)建议有条件的同学做出实物。

4)时间:

12周到16周,16周上交。

四设计基本原理

时钟是利用单片机内部的定时器/计数器来实现,它的处理过程如下:

首先设定单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后用另一个定时器/计数器或软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒计60次形成分,分计60次形成小时,小时计24次则计满一天。

然后通过数码管把它们的内容在相应位置显示出来即可。

用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为15536。

形成定时时间为50ms。

用片内RAM的7BH单元对50ms计数,计20次1秒钟到,然后对秒计数器78H单元加1,秒计数器加到60后向分进位,则分计数器79H单元加1而秒计数器78H单元清零;分计数器加到60后又向时进位,则时计数器7AH单元加1而分计数器79H单元清零;时计数器加到24则时计数器清零。

然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。

显示格式为小时十位、小时个位、分十位、分个位、秒十位、秒个位。

在处理过程中加上了按键判断程序,能对按键处理。

另外添加两个按键,一个显示时间,一个用于显示年月日。

此外,还从P0口引出两条线,分别控制led灯,蜂鸣器。

所用的主要器件为:

单片机:

80C52LED数码管:

7SEG-MPX8-CA-BLUE(CA:

共阳)

五设计成果

1.仿真电路图

2.日历界面

3.计时器界面

六流程图:

开始

显示单元清零

T0、T1设为16位计数模式

允许T0中断

调用显示子程序

进入功能程序

按下键否?

七主要代码:

ORG0000H

LJMPSTART

ORG000BH

LJMPINTT0

START:

MOVR0,#70H

MOVR7,#0CH

INIT:

MOV@R0,#00H ;存储单元清零

INCR0

DJNZR7,INIT

MOV72H,#10 ;时、分、秒之间的短横显示

MOV75H,#10

MOVTMOD,#01H

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

MOVTH0,#03CH

SETBEA

SETBET0

SETBTR0

START1:

LCALLSCAN

LCALLKEYSCAN

SJMPSTART1

;延时1MS子程序

DL1MS:

MOVR6,#14H

DL1:

MOVR7,#19H

DL2:

DJNZR7,DL2

DJNZR6,DL1

RET

;延时20MS子程序

DL20MS:

ACALLSCAN

ACALLSCAN

ACALLSCAN

RET

;数码管显示程序

SCAN:

MOVA,78H;秒计数值由二进制转十进制后

MOVB,#0AH ;送入显示缓冲区相应位置

DIVAB

MOV71H,A

MOV70H,B

MOVA,79H ;分计数值由二进制转十进制后

MOVB,#0AH ;送入显示缓冲区相应位置

DIVAB

MOV74H,A

MOV73H,B

MOVA,7AH ;时计数值由二进制转十进制后

MOVB,#0AH ;送入显示缓冲区相应位置

DIVAB

MOV77H,A

MOV76H,B

MOVR1,#70H;循环扫描显示

MOVR5,#80H;显示秒个位的位码(LED共阳)

MOVR3,#08H

SCAN1:

MOVA,R5

MOVP2,A ;位码从P2口送出

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A ;字段码从P0口送出

MOVA,R5

LCALLDL1MS ;延时1ms

INCR1

MOVA,R5

RRA

MOVR5,A

DJNZR3,SCAN1

MOVP2,#00H

MOVP0,#0FFH

RET

TAB:

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

;“0~9”,“-”的共阳极字段码

INTT0:

PUSHACC

PUSHPSW

CLRET0

CLRTR0

MOVTL0,#0B0H

MOVTH0,#03CH

SETBTR0

INC7BH

MOVA,7BH

CJNEA,#14H,OUTT0

MOV7BH,#00

INC78H

MOVA,78H

CJNEA,#3CH,OUTT0

MOV78H,#00

INC79H

MOVA,79H

CJNEA,#3CH,OUTT0

MOV79H,#00

INC7AH

MOVA,7AH

CJNEA,#18H,OUTT0

MOV7AH,#00

OUTT0:

SETBET0

poppsw

popacc

RETI

;按键处理程序

KEYSCAN:

CLREA

JNBP1.0,KEYSCAN0

JNBP1.1,KEYSCAN1

JNBP1.2,KEYSCAN2

KEYOUT:

SETBEA

RET

KEYSCAN0:

LCALLDL20MS

JBP1.0,KEYOUT

WAIT0:

JNBP1.0,WAIT0

INC7CH

MOVA,7CH

CLRTR0

CLRET0

CJNEA,#03H,KEYOUT

MOV7CH,#00

SETBTR0 ;K0按3次后又恢复走时

SETBET0

SJMPKEYOUT

KEYSCAN1:

LCALLDL20MS

JBP1.1,KEYOUT

WAIT1:

JNBP1.1,WAIT1

MOVA,7CH

CJNEA,#02H,KSCAN11

INC79H ;分计数器加1

MOVA,79H

CJNEA,#3CH,KEYOUT

MOV79H,#00

SJMPKEYOUT

KSCAN11:

INC7AH ;时计数器加1

MOVA,7AH

CJNEA,#18H,KEYOUT

MOV7AH,#00

SJMPKEYOUT

KEYSCAN2:

LCALLDL20MS

JBP1.2,KEYOUT

WAIT2:

JNBP1.2,WAIT2

MOVA,7CH

CJNEA,#02H,KSCAN21

DEC79H

MOVA,79H

CJNEA,#0FFH,KEYOUT

MOV79H,#3BH ;把59给分计数器

SJMPKEYOUT

KSCAN21:

DEC7AH

MOVA,7AH

CJNEA,#0FFH,KEYOUT

MOV7AH,#17H ;把23给时计数器

SJMPKEYOUT

END

八心得体会

经过这次课程设计,我发现了很多单靠课堂知识无法解决的问题,通过自己动手实践也加强了处理问题的能力,能够排除困难和问题完成设计。

第一次实际使用protues,出现了许多问题,甚至包括系统兼容问题,通过查找资料逐步解决问题,使得自己的实践能力有了较大提高,对protues的应用环境也更为熟悉。

而实际的设计电路编写程序更是对本学期课程的检验。

再说代码的编写,程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:

首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出。

最后在不断地调试改进后,终于完成了这一设计。

而整个过程表明实践能力还有待加强,在今后的学习工作中,需要逐渐加强这一点。

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

当前位置:首页 > 高等教育 > 工学

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

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