单片机实验报告电子时钟.docx

上传人:b****7 文档编号:24935231 上传时间:2023-06-03 格式:DOCX 页数:19 大小:333.42KB
下载 相关 举报
单片机实验报告电子时钟.docx_第1页
第1页 / 共19页
单片机实验报告电子时钟.docx_第2页
第2页 / 共19页
单片机实验报告电子时钟.docx_第3页
第3页 / 共19页
单片机实验报告电子时钟.docx_第4页
第4页 / 共19页
单片机实验报告电子时钟.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机实验报告电子时钟.docx

《单片机实验报告电子时钟.docx》由会员分享,可在线阅读,更多相关《单片机实验报告电子时钟.docx(19页珍藏版)》请在冰豆网上搜索。

单片机实验报告电子时钟.docx

单片机实验报告电子时钟

一、课程设计的内容和要求:

1了解单片机的种类,掌握单片机的工作原理;

2掌握利用单片机进行系统设计的方法;

3掌握利用protel进行原理图设计和PCB设计的方法;

4学会进行单片机硬件调试和软件调试;

5了解单片机系统整个设计开发流程。

二、设计装置功能

1、用单片机实现设计要求

(1)实现功能:

①正常的24小时制的电子表功能显示(时/分/秒)。

②任意时间(时/分/秒)闹钟时刻的设置并在设定时刻响铃。

(2)所使用器件:

STC89C52RC单片机1个、2位共阳极数码管3个、蜂鸣器1个、74LS138一片、74LS47一片、74HC04一片、电阻、电容及其他辅助电子元件。

(3)显示时间与闹钟时刻的设置:

单片机的人机操作部分由六个按钮组成。

从电子钟电路板上(从左到右)分别是:

①单片机复位键②闹钟开关③小时位累加键

④分钟位累加键⑤秒钟位累加键⑥闹钟/时间显示切换键

按键说明:

复位键——把3个2位数码管显示数字全部清零。

闹钟开关键——按下键,闹钟开关模式切换。

时针位累加键——按下键,则实现时针位的累加00-23(累加循环)。

分针位累加键——按下键,则实现分针位的累加00-59(累加循环)。

秒针位累加键——按下键,则实现秒针位的累加00-59(累加循环)。

闹钟/时间显示切换键——按下键,能够实现数码管闹钟和时间两种显示功能的切换。

三、设计问题分析

面对的问题主要是两方面:

一个是软件的设计,也就是实现计时定时的控制功能的程序编辑,在电脑上模拟需要实现的功能;另一个是硬件的设计,需要我们自己购买器件、设计并焊接电路板。

而更为重要的一步是将软件、硬件相结合,做好电路后,我们试着把程序写入芯片测试,然而没有获得应该有的显示,接着我们多次检查电路,修改程序,在不断调试中终于实现正确显示。

四、设计思路

本次设计的系统以动态显示显示时分秒模块,它能显示正确的时间,而且所显示时间与北京时间相同,基本做到同步,显示清晰明亮,可读性强。

系统主程序开始后,首先是对系统环境初始化,设置好时分秒后系统开始运行;然后可打开闹钟,预设响铃的时刻,计时系统到该时刻后自动响设定铃声。

使用者还可以根据自身的需要随时打开关闭闹钟。

由于系统的操作符合现在市面上电子表的显示和使用风格,设计人性化,因此该系统的实用性较强。

在闹铃的设置上,原本想用单片机唱出歌曲“最炫民族风”的,可惜作为编程员的我技术有限,虽然实现在不计时的情况下唱出声音,但是没能封装进现有的计时程序中,这个是一件比较遗憾的事情。

最后设置闹铃为“滴滴”的响声,一秒变换一次,虽然简单,不过使用可靠,并具有状态显示提示的功能。

(1)实验原理图

 

(2)ProteusProfessional仿真图

 

(3)pcb接线板图

五、实验程序设计

单片机运行程序如下:

ORG0000H

LJMPMAIN

ORG000BH

LJMPSERVE0;设置计数器0溢出跳转参数

MAIN:

MOVSP,#60H

MOVP1,#00H

MOVTMOD,#01H;设置计时器0使用1模式

MOVTL0,#0E5H

MOVTH0,#0F0H;设置计时器0初值

CLRP2.6;初状态关闭闹铃信号灯

SETBP2.7;初状态关闭闹铃响声

SETBET0

SETBTR0

SETBEA;打开中断,开始计时

MOVR1,#253;设置计数器0溢出次数

MOVR2,#00H;设置时钟动态扫描初值为0

MOVR3,#00H;时钟闹铃切换标志位,默认为显示时钟

MOVR4,#00H;设置闹铃动态扫描初值为0

MOVR5,#00H;设置是否按键开启闹铃,默认为不开启

MOVR6,#00H;闹铃条件满足后,闹铃的响应次数,默认为0

MOV30H,#00H;时钟秒针位

MOV31H,#00H;时钟分针位

MOV32H,#00H;时钟时针位

MOV40H,#00H;闹铃秒针位

MOV41H,#00H;闹铃分针位

MOV42H,#00H;闹铃时针位,以上程序段为初始化各变量参数

LOOP:

JBP0.0,NOPRESS2

CALLFILTER

MOVA,R3

CPLA

MOVR3,A

NOPRESS1:

JNBP0.0,$

CALLFILTER;对按键0的设置,实现闹铃与时钟切换,默认显示时钟

NOPRESS2:

JBP0.1,NOPRESS4

CALLFILTER

CJNER3,#00H,LING1

MOVA,30H

ADDA,#1

DAA

MOV30H,A

CJNEA,#60H,NOPRESS3

MOV30H,#00H

JMPNOPRESS3

LING1:

MOVA,40H

ADDA,#1

DAA

MOV40H,A

CJNEA,#60H,NOPRESS3

MOV40H,#00H

JMPNOPRESS3

NOPRESS3:

JNBP0.1,$

CALLFILTER;对按键1的设置,实现分别对时钟与闹铃的秒针的值的更改

NOPRESS4:

JBP0.2,NOPRESS6

CALLFILTER

CJNER3,#00H,LING2

MOVA,31H

ADDA,#1

DAA

MOV31H,A

CJNEA,#60H,NOPRESS5

MOV31H,#00H

JMPNOPRESS5

LING2:

MOVA,41H

ADDA,#1

DAA

MOV41H,A

CJNEA,#60H,NOPRESS5

MOV41H,#00H

JMPNOPRESS5

NOPRESS5:

JNBP0.2,$

CALLFILTER;对按键2的设置,

实现分别对时钟与闹铃的分针的值的更改

NOPRESS6:

JBP0.3,NOPRESS8

CALLFILTER

CJNER3,#00H,LING3

MOVA,32H

ADDA,#1

DAA

MOV32H,A

CJNEA,#24H,NOPRESS7

MOV32H,#00H

JMPNOPRESS7

LING3:

MOVA,42H

ADDA,#1

DAA

MOV42H,A

CJNEA,#24H,NOPRESS7

MOV42H,#00H

JMPNOPRESS7

NOPRESS7:

JNBP0.3,$

CALLFILTER;对按键3的设置,实现分别

对时钟与闹铃的时针的值的更改

NOPRESS8:

JBP0.4,NOPRESS10

CALLFILTER

CPLP2.6

MOVA,R5

CPLA

MOVR5,A

MOVR6,#00H

SETBP2.7

NOPRESS9:

JNBP0.4,$

CALLFILTER;对按键4的设置,实现闹铃状态的切换,

默认闹铃为关

NOPRESS10:

JMPLOOP;以上为按键的设置

SERVE0:

MOVTL0,#0E5H

MOVTH0,#0F0H

DJNZR1,SCAN

MOVA,30H

CJNEA,40H,TURN1

MOVA,31H

CJNEA,41H,TURN1

MOVA,32H

CJNEA,42H,TURN1

CJNER5,#0FFH,TURN1

MOVR6,#60;判断闹铃条件

TURN1:

MOVA,30H

ADDA,#1

DAA

MOV30H,A

CJNER6,#00H,MING

SETBP2.7

JMPOK;无闹铃状态下,秒值增加时对闹铃强制复位,

防止手触电路板造成闹铃误响

MING:

CPLP2.7

DECR6

CJNER6,#00H,OK

CLRP2.6;满足闹铃状态时,每过1秒钟

对闹铃的电位进行一次修改,

达到响铃的目的

OK:

CJNEA,#60H,INC_TIM

MOV30H,#00H

MOVA,31H

ADDA,#1

DAA

MOV31H,A

CJNEA,#60H,INC_TIM

MOV31H,#00H;时钟对分针值的自加

MOVA,32H

ADDA,#1

DAA

MOV32H,A

CJNEA,#24H,INC_TIM

MOV32H,#00H;时钟对时针值的自加

INC_TIM:

MOVR1,#253;设置计时器0计时溢出时的操作

SCAN:

CJNER6,#00H,PROTECT

SETBP2.7;无闹铃时每一次溢出操作都闹铃复位,防止误响

PROTECT:

CJNER3,#0,EXCHANGE;判断条件,满足则动态显示闹铃,否则动态显示时钟

CJNER2,#6,DISPLAY2

MOVR2,#00H

DISPLAY2:

CJNER2,#0,CHK_12

MOVA,30H

ANLA,#0FH

ADDA,#00H

JMPRELOAD2;显示时钟秒针的个位

CHK_12:

CJNER2,#1,CHK_22

MOVA,30H

SWAPA

ANLA,#0FH

ADDA,#10H

JMPRELOAD2;显示时钟秒针的十位

CHK_22:

CJNER2,#2,CHK_32

MOVA,31H

ANLA,#0FH

ADDA,#20H

JMPRELOAD2;显示时钟分针的个位

CHK_32:

CJNER2,#3,CHK_42

MOVA,31H

SWAPA

ANLA,#0FH

ADDA,#30H

JMPRELOAD2;显示时钟分针的十位

CHK_42:

CJNER2,#4,CHK_52

MOVA,32H

ANLA,#0FH

ADDA,#40H

JMPRELOAD2;显示时钟时针的个位

CHK_52:

CJNER2,#5,RELOAD2

MOVA,32H

SWAPA

ANLA,#0FH

ADDA,#50H

JMPRELOAD2;显示时钟时针的十位

RELOAD2:

MOVP1,A

INCR2

MOVTH0,#0F0H

MOVTL0,#60H;完成一次跳转

BACK:

RETI

EXCHANGE:

CJNER4,#6,DISPLAY1

MOVR4,#00H;当满足显示闹铃条件,则动态显示闹铃

DISPLAY1:

CJNER4,#0,CHK_11

MOVA,40H

ANLA,#0FH

ADDA,#00H

JMPRELOAD1;显示闹铃秒针个位

CHK_11:

CJNER4,#1,CHK_21

MOVA,40H

SWAPA

ANLA,#0FH

ADDA,#10H

JMPRELOAD1;显示闹铃秒针十位

CHK_21:

CJNER4,#2,CHK_31

MOVA,41H

ANLA,#0FH

ADDA,#20H

JMPRELOAD1;显示闹铃分针个位

CHK_31:

CJNER4,#3,CHK_41

MOVA,41H

SWAPA

ANLA,#0FH

ADDA,#30H

JMPRELOAD1;显示闹铃分针十位

CHK_41:

CJNER4,#4,CHK_51

MOVA,42H

ANLA,#0FH

ADDA,#40H

JMPRELOAD1;显示闹铃时针个位

CHK_51:

CJNER4,#5,RELOAD1

MOVA,42H

SWAPA

ANLA,#0FH

ADDA,#50H

JMPRELOAD1;显示闹铃时针十位

RELOAD1:

MOVP1,A

INCR4

MOVTH0,#0F0H

MOVTL0,#0E5H

JMPBACK;完成一次跳转

FILTER:

MOVR6,#60H;设置防抖动子程序

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

END

原定闹铃代码(未封装)

ORG0000H

LJMPSTART

ORG000BH

INC20H;中断服务,中断计数器加1

MOVTH0,#0D8H

MOVTL0,#0EFH;12M晶振,形成10毫秒中断

RETI

START:

MOVSP,#50H

MOVTH0,#0D8H

MOVTL0,#0EFH

MOVTMOD,#01H

MOVIE,#82H

MUSIC0:

NOP

MOVDPTR,#DAT;表头地址送DPTR

MOV20H,#00H;中断计数器清0

MOVB,#00H;表序号清0

MUSIC1:

NOP

CLRA

MOVCA,@A+DPTR;查表取代码

JZEND0;是00H,则结束

CJNEA,#0FFH,MUSIC5

LJMPMUSIC3

MUSIC5:

NOP

MOVR6,A

INCDPTR

MOVA,B

MOVCA,@A+DPTR;取节拍代码送R7

MOVR7,A

SETBTR0;启动计数

MUSIC2:

NOP

CPLP2.0

MOVA,R6

MOVR3,A

LCALLDEL

MOVA,R7

CJNEA,20H,MUSIC2;中断计数器(20H)=R7否?

;不等,则继续循环

MOV20H,#00H;等于,则取下一代码

INCDPTR

;INCB

LJMPMUSIC1

MUSIC3:

NOP

CLRTR0;休止100毫秒

MOVR2,#0DH

MUSIC4:

NOP

MOVR3,#0FFH

LCALLDEL

DJNZR2,MUSIC4

INCDPTR

LJMPMUSIC1

END0:

NOP

MOVR2,#64H;歌曲结束,延时1秒后继续

MUSIC6:

MOVR3,#00H

LCALLDEL

DJNZR2,MUSIC6

LJMPMUSIC0

DEL:

NOP

DEL3:

MOVR4,#02H

DEL4:

NOP

DJNZR4,DEL4

NOP

DJNZR3,DEL3

RET

NOP

DAT:

DB39h,20h,39h,10h,40h,10h,39h,20h,30h,20h

DB2bh,10h,26h,05h,2bh,05h,30h,10h,2bh,10h,26h,40h

DB39h,10h,1ch,10h,1ch,10h,20h,10h

DB2bh,10h,26h,05h,2bh,05h,30h,10h,2bh,10h,26h,40h

DB30h,10h,39h,10h,39h,10h,30h,10h,2bh,20h,40h,10h,40h,10h

DB26h,10h,20h,10h,26h,10h,2bh,10h,2bh,10h,30h,40h

DB39h,10h,30h,10h,2bh,10h,26h,10h,2bh,10h,30h,10h

DB40h,10h,4bh,10h,39h,40h

END

六、实验过程及其结果

(1)制定好硬件原理图,编写好单片机运行程序后,我们在Proteus上进行了仿真,然后开始设计PCB板。

以便购买元件在进行焊接。

(2)在我们组员同心协力,共同努力下,在不断调试中,经历了很多挫折,但是最终还是完成了预定功能的24小时制电子闹钟系统。

(3)功能在长期的检验下合格。

时间显示每四天落后三秒钟,符合日常使用的标准,任意时间的闹钟也按时响,符合日常使用标准。

(4)在解决单片机电源的问题上,为了节约电池与稳定运行,我们使用了USB接口提供5V的电压供电子闹钟使用,这一措施具有很大促进作用,极大方便了软件调试、元件的精准的测量。

七、实验总结

作为我组的程序设计员,我得到以下体会:

1.这次程序设计的过程让我进一步熟悉了KEIL与Proteus软件的使用,掌握了时钟编程的细节过程,进一步理解课本知识,对元器件的认识也进一步加深。

2.通过这次设计,理解了51单片机的优点以及通用普遍性,可知单片机在现实生活中的应用是十分广泛的。

3.在编写代码时应该小心谨慎,稍有差错变不会得出正确的结论,KEIL软件只能查出简单的语法错误,然而一些细节的逻辑错误KEIL软件无法查出,所以应该一步一步实现功能,脚踏实地检查代码的正确性。

虽然编写程序单调繁琐,但是我还是能从中找到乐趣,在每一次进步,每一次成功封装的背后都少不了辛勤的汗水,所以个人感想:

编程的感觉很好。

4.单片机实物系统开发中我们经历了很多挫折,其中最难的一部分是将仿真的系统如何变成实物的过程。

我们在最初仿真成功后,焊好电路板却发现这个系统不能运行,在使用万用表检查线路之后,发现了不少短线以及接触不良,在修整了以上错误之后,依然不能实现,因此有对芯片的电位进行了测量,找了不少网上芯片的真值表的资料,最后发现错误在显示管的极性上,更换为共阳极数码管后即可正确显示。

5.调试的时候遇到的小问题还有许多,最主要的是时间与北京时间不同步,原因在与中断的时间与理想值不同,因此我们不断地修改定时程序,在一个定值范围内并不断检验,最后时间不断与北京时间趋近,最后经过四天检验,落后北京时间仅仅三秒。

本应再加矫正部分实现更为精准的显示,然而因为时间问题不能进一步修改了,望老师见谅。

6.在闹铃的设计上,我采用了“滴滴”的响声,听起来感觉就像家里的洗衣机,没有美感,在实验程序后面我附上了原来应该封装进去的“最炫民族风”的代码,虽然核心思想是别人的,但是谱子部分是我原创的,如果老师感兴趣,直接将代码放入Proteus软件的模拟中则可以欣赏。

7.最后感谢我的组员,没有他们的努力,我们就不能实现目标,顺利完成任务。

在此也非常感谢老师,在教会我们知识的同时也让我们在实践中体会到单片机的魅力,我们会继续努力,争取更大进步!

八、主要参考文献、资料:

[1]梅丽凤、等。

单片机原理及接口技术-习题详解与实验指导,清华大学出版社,北京交通大学出版社,2007。

[2]梅丽凤、等。

单片机原理及接口技术,清华大学出版社,北京交通大学出版社,2007。

[3]万光毅,等。

单片机实验与实践教程

(一)。

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

[4]范蟠果。

单片机实验与应用系统设计。

国防工业出版社,2007

[5]汪建,等。

MCS-96系列单片机原理及应用技术(第二版)。

华中科技大学出版社,2006

[6]刘复华。

MCS296单片机及其应用系统设计。

清华大学出版社,2004

[7]邓奕,马双宝,谢龙汉。

Protel99SE原理图与PCB设计。

人民邮电出版社,2011。

[8]赵景波。

Protel99SE电路设计与制板。

机械工业出版社,2010。

[9]赵月飞,郭会平,胡仁喜。

Protel99SE基础与实例教程。

机械工业出版社,2010。

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

当前位置:首页 > PPT模板 > 商务科技

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

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