单片机数字时钟课程设计报告Word下载.docx

上传人:b****5 文档编号:15769703 上传时间:2022-11-16 格式:DOCX 页数:18 大小:93.48KB
下载 相关 举报
单片机数字时钟课程设计报告Word下载.docx_第1页
第1页 / 共18页
单片机数字时钟课程设计报告Word下载.docx_第2页
第2页 / 共18页
单片机数字时钟课程设计报告Word下载.docx_第3页
第3页 / 共18页
单片机数字时钟课程设计报告Word下载.docx_第4页
第4页 / 共18页
单片机数字时钟课程设计报告Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机数字时钟课程设计报告Word下载.docx

《单片机数字时钟课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟课程设计报告Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

单片机数字时钟课程设计报告Word下载.docx

4k字节可重擦写Flash闪速存储器

1000次擦写周期

·

全静态操作:

0Hz-24MHz

三级加密程序存储器

128×

8字节内部RAM

32个可编程I/O口线

2个16位定时/计数器

2.显示方案

由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济.LED有共阴极和共阳极两种.如图2.2所示.

二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压.一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管.当在某段发光二极管施加一定的正向电压时,该段笔划即亮;

不加电压则暗.为了保护各段LED不被损坏,需外加限流电阻.

图2.2LED数码管结构原理图

众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动.本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性.所谓软件译码,即由单片机软件完成从数字到显示码的转换.从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节.各段码位与显示段的对应关系如表2.2.

表2.2各段码位的对应关系

段码位

D7

D6

D5

D4

D3

D2

D1

D0

显示段

dp

g

f

e

d

c

b

a

需说明的是当用数据口连接LED数码管a~dp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系.通常数据口的D0位与a段连接,D1位与b段连接,……D7位与dp段连接,如表1所示,表2.3为用于LED数码管显示的十六进制数和空白字符与P的显示段码.

根据AT89C2051单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管.将AT89C2051的P1.0~P1.7分别与共阳数码管的a~g及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符.例如:

当P0口输出的段码为11000000,数码管显示的字符为0.

表2.3LED显示段码

字型

共阳极段码

共阴极段码

C0H

3FH

9

90H

6FH

1

F9H

06H

A

88H

77H

2

A4H

5BH

B

83H

7CH

3

BOH

4FH

C

C6H

39H

4

99H

66H

D

A1H

5EH

5

92H

6DH

E

86H

79H

6

82H

7DH

F

84H

71H

7

F8H

07H

空白

FFH

00H

8

80H

7FH

P

8CH

73H

注:

(1)本表所列各字符的显示段码均为小数点不亮的情况.

(2)“空白”字符即没有任何显示.

数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式.为节省端口及降低功耗,本系统采用动态扫描显示方式.动态扫描显示方式需解决多位LED数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制)通过P0口实现;

而每一位的公共端,即LED数码管的“位控”,则由P3口控制.这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码.在这一瞬时,只有这一位在显示,其他几位则暗.在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态.

第3章软件设计

1.主程序

主程序功能主要是初始化、正常现实时间和判断功能转换键.流程图如图3.1所示.

图3.1主程序流程图

2.定时器T0中断服务程序

定时器T0用于时间计时.定时溢出中断周期可设为50ms,中断进入后,时钟计时累计20次(即1s)时,对秒计数单元进行加1操作.时钟计数单元在定义的6个单元70H~75H中,70H~71H存放秒数据,72H~73H存放分数据,74H~75H存放时数据.最大计时值为23小时59分59秒.在计数单元中采用十进制BCD码计数,秒、分、时之间满60进位.

3.显示子程序

数码管显示的数据放在内存单元70H~75H中,其中70H~71H存放秒数据,72H~73H]存放分数据,74H~75H存放时数据,每一单元内均为十进制BCD码.由于采用软件动态扫描实现数据显示功能,显示用的十进制BCD码数据的对应段码存放在ROM表中,显示时,先取出70H~75H中的某一地址中的数据,然后查表得对应的显示段码从P0口输出,P2口将对应的数码管位选中供电,就能显示该地址单元的数据值.

4.定时器T1中断服务程序

进行时间调整是,正在被调整的时间以闪烁的形式表现,定时器T1用于产生闪烁的时间间隔,每隔0.3s闪烁一次.

5.调时功能程序

通过按键K1来选择设置“小时”、“分钟”和“秒”.

通过“加”和“减”按键(K2、K3)来调整时间

6.延时程序

因为系统是动态显示,为了确保系统在有效显示时间范围内必须执行显示程序,所以使用延时程序.

7.结论

这次课程设计项目虽然是最简单的数字时钟设计,但用的技术和知识是源于课本又远远高于课本的,比如说AT89C51基本操作知识,汇编语言方面的知识等.

我负责的是软件设计的时间设置以及T1中断部分,运用到了按键部分以及定时器/计数器部分的知识.通过这次自己编写程序,使我摆脱了以往单纯的理论知识学习状态,并且在和实际设计的结合锻炼了我的综合运用所学的专业基础知识.不过在这次课设中我也遇到了不少问题,实际操作时才发现课堂知识和实际运用还是有差距的,不过最终还是在老师或同学的帮助下一个一个解决了.

通过这次对课程设计,我也认识到自己对单片机应用方面的知识的贫乏,对于书本上的很多理论知识还不能灵活运用,有很多我们掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识.同时还从中学到了一件很重要的东西,那就是如何从理论到实践的转化.此次的课程设计给我奠定了一个实践基础,我会在以后的学习,生活中磨练自己,使自己掌握更多的技术能力.

8.参考文献

[1]杨忠义.单片机课程设计指导.北京:

清华大学出版社,2009.201~217

[2]靳达.单片机应用系统开发实例导航.北京:

人民邮电出版社,2004.1~37

[3]南建辉.MCS-51单片机原理及应用实例.北京:

清华大学出版社,2004.92~117

[4]刘海成.单片机及应用系统设计原理与实践.北京:

北京航天航空大学出版社,2009.129~180

附录

ORG0000H

AJMPMAINT;

转主程序

NOP

ORG000BH

AJMPINT01;

转定时器T0中断程序

ORG001BH

AJMPINT11;

转定时器T1中断程序

MAINT:

MOVR0,#7FH;

00H~7FH单元清零

CLRA

WZ1:

MOV@R0,A

DJNZR0,WZ1

MOVSP,#30H;

置堆栈指针

MOV5AH,#0AH;

放入“熄灭符”数据

MOVTMOD,#11H;

设T0,T1为16位定时器

MOVTL0,#0B0H;

置50ms定时初值

MOVTH0,#3CH

MOVTL1,#0B0H

MOVTH1,#3CH

SETBEA;

开中断

SETBET0;

允许T0中断

SETBTR0;

启动T0

MOVR4,#14H;

用于产生1s定时

MAINT1:

LCALLXSZCX;

调用显示子程序

JNBP1.0,SJTZ0;

功能键按下,进入调时程序

SJMPMAINT

******T0中断服务程序******

INT01:

PUSHACC;

保护现场

PUSHPSW

CLRET0;

关T0中断

CLRTR0;

关定时器T0

MOVA,#0B7H;

修正中断响应时间

ADDA,TL0

MOVTL0,A

MOVA,#3CH

ADDCA,TH0

SETBTR0;

启动定时器T0

DJNZR4,INT0U;

20次中断未到退出中断

AD1:

MOVR4,#14H;

R4重新赋值

MOVR0,#51H;

指向秒计时单元(50H,51H)

LCALLADD1;

调用加1s程序

MOVA,R3;

秒数据放入A

CLRC;

清进位标志

CJNEA,#60H,AD2;

小于60s吗

AD2:

JCINT0U;

小于60s退出中断

CLRA;

大于或等于60s,清秒计数单元

DECR0

MOVR0,#57H;

指向分计时单元(56H,57H)

ACALLADD1;

调用加1min程序

MOVA,R3;

分数据放入A

CLRC

CJNEA,#60H,AD3;

小于60min吗

AD3:

JCINT0U;

小于60min退出中断

大于或等于60min,清分计数单元

MOV@R0,A

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

当前位置:首页 > 自然科学 > 物理

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

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