我的单片机设计的数字钟实验报告.docx

上传人:b****5 文档编号:11747570 上传时间:2023-03-31 格式:DOCX 页数:23 大小:91.17KB
下载 相关 举报
我的单片机设计的数字钟实验报告.docx_第1页
第1页 / 共23页
我的单片机设计的数字钟实验报告.docx_第2页
第2页 / 共23页
我的单片机设计的数字钟实验报告.docx_第3页
第3页 / 共23页
我的单片机设计的数字钟实验报告.docx_第4页
第4页 / 共23页
我的单片机设计的数字钟实验报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

我的单片机设计的数字钟实验报告.docx

《我的单片机设计的数字钟实验报告.docx》由会员分享,可在线阅读,更多相关《我的单片机设计的数字钟实验报告.docx(23页珍藏版)》请在冰豆网上搜索。

我的单片机设计的数字钟实验报告.docx

我的单片机设计的数字钟实验报告

目录

1前言3

2数字钟设计原理3

3流程图4

451单片机系统的硬件连接4

5程序设计6

5.1主程序

5.2中断服务子程序

5.3显示子程序

5.4总的程序清单

6系统调试及结果分析12

7注意事项12

8感想与体会13

9参考文献13

 

一.前言

20世纪末,电子技术获得了飞速的发展,在其推动下,具有功能强、体积小、可靠性高、价格低廉的单片机在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。

现在生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号,对于那些对时间把握非常严格和准确的人或事来说,时间的不准确性带来不小的麻烦,所以说以数码管显示的时钟比指针式的时钟表现出了很大的优势。

数码管显示的时间简明而且读数快,时间准确显示到秒。

数字钟是采用数字电路对时分秒数字显示的计时装置。

数字钟的精度,稳定性远远超过老式机械钟。

数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受到广大消费者的喜爱。

 

二.数字钟设计原理

数字钟实际是对标准频率计数的电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的时间信号必须做到准确稳定。

通常使用石英晶体振荡电路构成数字钟。

数字钟电子钟由以下几部分组成:

按键开关部分,振荡电路部分,89c51单片机控制器,4位数码管显示部分,7407数码管驱动部分。

 

89C51

单片机控制器

4位数码管显示

按键开关

振荡电路

 

7407

列驱动

 

三.流程图

主程序流程图如图2.3所示,定时器T0中断服务程序流程图如2.4所示。

图2.4中断服务程序流程图

 

四.51单片机系统的硬件连接

1.硬件电路的设计,硬件电路图如图2.2所示

图2.2硬件电路图

该电路采用AT89C51单片机最小化应用,采用共阴7段LED数码管显示器,P2.4~P2.7口作为列扫描输出,P0口输出段码数据,P1.2,P1.1口接2个按钮开关,用于调时及功能误差,采用12Mhz晶振,可提高秒计时的精确度。

采用动态扫描法实现LED数码管显示。

共阴7段LED显示器显示原理:

引脚

数字显示

.P0.7

h

P0.6

g

P0.5

f

P0.4

e

P0.3

d

P0.2

c

P0.1

b

P0.0

a

数码显示

0

0

0

1

1

1

1

1

1

3FH

1

0

0

0

0

0

1

1

0

06H

2

0

1

0

1

1

0

1

1

5BH

3

0

1

0

0

1

1

1

1

4FH

4

0

1

1

0

0

1

1

0

66H

5

0

1

1

0

1

1

0

1

6DH

6

0

1

1

1

1

1

0

1

7DH

7

0

0

0

0

0

1

1

1

07H

8

0

1

1

1

1

1

1

1

7FH

9

0

1

1

0

1

1

1

1

6FH

10μf电容作用:

上电复位;

7407作用:

同相缓冲器,驱动数码管;

12M晶振和两个电容组成晶体振荡器。

五.程序设计

1主程序

MAIN:

MOVHOUR,#00;时,分,秒,标记清零

MOVMIN,#00H

MOVSEC,#00H

MOVBUFF,#00H

MOVSP,#0EFH;设堆栈指针

MOVTH0,#0ECH;定时器赋初值

MOVTL0,#78H

MOV40H,#100;设循环次数

MOV41H,#2

MOVTMOD,#1;写TMOD

MOVIP,#2;写IP

MOVIE,#82H

MOVR5,#0;利用R5进行硬件延时

;开中断

SETBTR0;启动定时器

采用定时器T0中断完成一次主程序循环,调用显示子程序和查键子程序,当端口有开关按下时,输入相应的功能程序。

2中断服务子程序

PTF0:

MOVTH0,#0ECH

MOVTL0,#78H

INCR5

MOVR6,BUFF

CJNER6,#00H,BB

MOVDPTR,#TAB1

LJMPLOOP0

BB:

MOVDPTR,#TAB

LOOP0:

CJNER5,#1,LOOP1

ACALLLOP0

AJMPJK

LOOP1:

CJNER5,#2,LOOP2

ACALLLOP1

AJMPJK

LOOP2:

CJNER5,#3,LOOP3

ACALLLOP2

AJMPJK

LOOP3:

ACALLLOP3

MOVR5,#0

JK:

DJNZ40H,PTFOR

XRLBUFF,#0FFH

MOV40H,#100

JNBP1.1,JF

JNBP1.2,JS

MOVR7,41H

CJNER7,#1,AA

AA:

DJNZ41H,PTFOR

MOV41H,#2

MOVA,SEC;秒加1

ADDA,#1

DAA

MOVSEC,A

CJNEA,#60H,PTFOR

MOVSEC,#0;秒清零

JF:

MOVA,MIN;分加1

ADDA,#1

DAA

MOVMIN,A

CJNEA,#60H,PTFOR

MOVMIN,#0;分清零

ACALLLED

JS:

MOVA,HOUR

ADDA,#1

DAA

MOVHOUR,A;时加1

CJNEA,#24H,PTFOR;时加到24时否?

是,清零

MOVHOUR,#0

PTFOR:

RETI

定时器T0用于时间计时,定时溢出中断周期为5ms,中断进入后,先进行定时中断初值校正,当中断累计200次(即5ms*200=1S)时,对秒计数单元进行加1操作,计时单元中采用24进位。

晶振频率fosc=12MHZ,T0工作于方式0,产生5ms中断,则T0的初始值计算公式为:

T=

(216-a)μs

得:

a=216-

*T

=216-5000

=60536

化为16进制数:

a=0EC78H

3显示子程序

LOP0:

MOVA,MIN;显示分钟的个位

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.4

CLRP0.4

RET

LOP1:

MOVA,MIN;显示分钟的十位

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.5

CLRP0.4

RET

LOP2:

MOVA,HOUR;显示时钟的个位

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.6

RET

LOP3:

MOVA,HOUR;显示时钟的十位

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.7

CLRP0.4

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;不带小数点的字型码

TAB1:

DB,0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;带小数点的字型码

时间显示子程序每次显示4个连续单元的十进制BCD数码,首地址在调用显示子程序时需要先指定.由于采用7段共阴LED数码观动态扫描实现数据显示,所以显示用十进制BCD码数据的对应段码存放在ROM中。

显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。

4.总的程序清单

HOUREQU3AH;赋值伪指令

MINEQU3BH

SECEQU3CH

BUFFEQU3DH

ORG0000H

AJMPMAIN

ORG000BH;主程序入口

AJMPPTF0

ORG0033H;跳转到标号PTF0执行

;**************************************************************

;主程序

MAIN:

MOVHOUR,#00H;时,分,秒,标记清零

MOVMIN,#00H

MOVSEC,#00H

MOVBUFF,#00H

MOVSP,#0EFH;设堆栈指针

MOVTH0,#0ECH;定时器赋初值

MOVTL0,#78H

MOV40H,#100;设循环次数

MOV41H,#2

MOVTMOD,#1;写TMOD

MOVIP,#2;写IP

MOVIE,#82H

MOVR5,#0

;开中断

SETBTR0;启动定时器

PTF0:

SETBP1.2

MOVTH0,#0ECH

MOVTL0,#78H

INCR5

MOVR6,BUFF

CJNER6,#00H,BB

MOVDPTR,#TAB1

LJMPLOOP0

BB:

MOVDPTR,#TAB

LOOP0:

CJNER5,#1,LOOP1

ACALLLOP0

AJMPJK

LOOP1:

CJNER5,#2,LOOP2

ACALLLOP1

AJMPJK

LOOP2:

CJNER5,#3,LOOP3

ACALLLOP2

AJMPJK

LOOP3:

ACALLLOP3

MOVR5,#0

JK:

DJNZ40H,PTFOR

XRLBUFF,#0FFH

MOV40H,#100

JNBP1.1,JF

JNBP1.2,JS

MOVR7,41H

CJNER7,#1,AA

AA:

DJNZ41H,PTFOR

MOV41H,#2

MOVA,SEC;秒加1

ADDA,#1

DAA

MOVSEC,A

CJNEA,#60H,PTFOR

MOVSEC,#0;秒清零

JF:

MOVA,MIN;分加1

ADDA,#1

DAA

MOVMIN,A

CJNEA,#60H,PTFOR

MOVMIN,#0;分清零

ACALLLED

JS:

MOVA,HOUR

ADDA,#1

DAA

MOVHOUR,A;时加1

CJNEA,#24H,PTFOR;时加到24时否?

是,清零

MOVHOUR,#0

PTFOR:

RETI

LOP0:

MOVA,MIN;显示分钟的个位

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.4

CLRP0.4

RET

LOP1:

MOVA,MIN;显示分钟的十位

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.5

CLRP0.4

RET

LOP2:

MOVA,HOUR;显示时钟的个位

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.6

RET

LOP3:

MOVA,HOUR;显示时钟的十位

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.7

CLRP0.4

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;不带小数点的字型码

TAB1:

DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;带小数点的字型码

END

六系统调试及结果分析

6.1硬件调试

硬件电路板中器件连接好后,先用万用表测试电路中有无虚焊短接之处,测试无误后,将板子通电,进行静态调试。

取好两跟短的导线,一根导线的其中一端接地,另一端接P2.4~P2.7口中的一个口,若数码管亮,再用另一根导线,其中异端接地,另一端与P0.0~P0.7依次接触,看数码管各段的亮灭情况,从而判断每个数码管各段的好坏及电路的是否正确。

6.2软件调试

在LCA51编译器下进行汇编程序的编写,以子程序为单位调试,一段一段的编译与访真,最后结合电路板,进行整机联调。

6.3结果分析

由于中断中对堆栈的处理需要花费时间,所以为了减小误差,实现数字钟的走时精度,应当在编程时尽量使中断次数比较少。

七.注意事项

1.在焊接电路板之前,应事先画好硬件原理图,把每一根精确排布,合理布局好各类元器件。

2.焊接时要注意焊接工艺,由于是通用板,质量不是太高,如果不注意,上面的小铜片很容易损坏,容易导致虚焊。

3.电路板及访真机接电源操作时,要注意正负极,并且严格的操作要求进行操作,以免造成元器件和仿真机的损坏。

4.在进行程序的编写时,应该熟悉所使用的每一条指令和程序的各项要求。

5焊接器件时,应该先焊接小器件,再焊接大器件,先焊接低器件,再焊接高器件。

6安装芯片时,应该注意1号脚的位置,如果安装错误,会造成芯片的损坏。

7焊接完一个模块都要用万用表检测电源和地是否出现短接,如果出现短路,需要检测出现短路的地方。

8在保证焊接准确度的前提下,应该尽可能考虑美观程度。

八.心得体会

基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数。

从而,使数字钟的精度仅仅取决于单片机的产生周期电路和定时器T0硬件电路的精确度;另外,程序较为简洁,具有可靠性较好的可读性和较好的可读性。

如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。

我在这次的数字钟设计过程中很是受益匪浅。

通过对自己大学三年时间所学的知识的回顾,并充分发挥对所学知识的理解和对设计内容思考和书面表达能力,最终顺利完成了。

这为自己今后进一步深化学习,积累了一点的宝贵经验。

撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或者实际问题,把知识转化为能力的实际训练。

培养了我运用所学知识解决实际问题的能力。

通过这次的课程设计我发现,只有理论水平提高了,才能够把理论和实际内容相结合,我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题。

九.参考文献:

清华大学出版社田丰单片机原理及应用

哈尔滨工业大学张毅刚新编单片机应用设计

中国电力出版社窦振中基于单片机的嵌入式系统工程设计

复旦大学张友德单片微型机原理应用与实验

满足上面要求的程序:

 

ORG0000H

LJMPSTART

ORG000BH

LJMPPTF0

ORG0033H

START:

MOVSP,#0EFH

MOV36H,#2

MOV37H,#90

MOV3CH,#00H

MOV22H,#00H

MOV23H,#00H

MOVIP,#02H

MOVIE,#82H

MOVTMOD,#01H

MOVTH0,#0EBH

MOVTL0,#0DFH

SETBTR0

MAIN:

LCALLLOP0;调用显示子程序;

LCALLLOP1

LCALLLOP2

LCALLLOP3

JNBP1.1,JF;判断调时,调分按键是否按下;

JNBP1.2,JS

AJMPMAIN

JF:

CLRTR0;调分按键

MOVA,22H

ADDA,#1

DAA

MOV22H,A

LCALLDELAY1

SETBTR0

CJNEA,#60H,FS

MOV22H,#0

MOV3CH,#0

FS:

LJMPMAIN

JS:

CLRTR0;调时按键

MOVA,23H

ADDA,#1

DAA

MOV23H,A

LCALLDELAY1

SETBTR0

CJNEA,#12H,SS

MOV23H,#0

MOV22H,#0

MOV3CH,#0

SS:

LJMPMAIN

PTF0:

MOVTH0,#0EBH

MOVTL0,#0DFH

DJNZ37H,PTFOR

MOVDPTR,#TAB1

MOV37H,#90

DJNZ36H,PTFOR

MOVDPTR,#TAB

MOV36H,#2

MOVA,3CH;秒自加一,判断是否等于60秒

ADDA,#1

DAA

MOV3CH,A

CJNEA,#60H,PTFOR

MOV3CH,#00H

MOVA,22H;分自加一,判断是否等于60分

ADDA,#1

DAA

MOV22H,A

CJNEA,#60H,PTFOR

MOV22H,#00H

MOVA,23H;时自加一,判断是否等于12时

ADDA,#1

DAA

MOV23H,A

CJNEA,#12H,PTFOR

MOV22H,#00H

MOV23H,#00H

PTFOR:

RETI

LOP0:

MOVA,22H;显示分的个位

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.4

CLRP0.7

LCALLDELAY

RET

LOP1:

MOVA,22H;显示分的十位

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.5

CLRP0.7

LCALLDELAY

RET

LOP2:

MOVA,23H;显示时的个位

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.6

LCALLDELAY

RET

LOP3:

MOVA,23H;显示时的十位

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F0H

CLRP2.7

CLRP0.7

LCALLDELAY

RET

DELAY:

MOVR6,#20;显示延时

DEL0:

MOVR5,#5

DEL1:

MOVR4,#2

DJNZR4,$

DJNZR5,DEL1

DJNZR6,DEL0

RET

DELAY1:

MOVR6,#100;按键延时

DE0:

MOVR5,#20

DE1:

MOVR4,#50

DJNZR4,$

DJNZR5,DE1

DJNZR6,DE0

RET

TAB:

DB7EH,48H,3DH,6DH,4BH,67H,77H,4CH,7FH,6FH

TAB1:

DB0FEH,0C8H,0BDH,0EDH,0CBH,0E7H,0F7H,0CCH,0FFH,0EFH;带小数点的

END

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

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

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

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