基于51单片机的数字钟设计 3.docx

上传人:b****6 文档编号:5372579 上传时间:2022-12-15 格式:DOCX 页数:42 大小:375.99KB
下载 相关 举报
基于51单片机的数字钟设计 3.docx_第1页
第1页 / 共42页
基于51单片机的数字钟设计 3.docx_第2页
第2页 / 共42页
基于51单片机的数字钟设计 3.docx_第3页
第3页 / 共42页
基于51单片机的数字钟设计 3.docx_第4页
第4页 / 共42页
基于51单片机的数字钟设计 3.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

基于51单片机的数字钟设计 3.docx

《基于51单片机的数字钟设计 3.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字钟设计 3.docx(42页珍藏版)》请在冰豆网上搜索。

基于51单片机的数字钟设计 3.docx

基于51单片机的数字钟设计3

 

武汉大学电子信息学院

电子系统综合设计课程论文

基于51单片机的数字钟设计

专业:

年级:

作者:

指导教师:

 

2012年6月13日

4.3蜂鸣器驱动电路5

5.3按键处理流程图7

5.4定时器中断流程图8

6.1.1调试软件

6.1.2仿真软件

1作品的背景与意义

近年来,随着电子产品的发展,人们对数字时钟的要求越来越高,本文针对人们的这一需求,设计了一种有单片机控制的多功能数字时钟。

该系统具有年、月、日、星期、时、分、秒设置及显示、闹钟定时等功能。

系统以C51单片机为核心,主要进行基于C51单片低功耗MCU的字符型数字钟及其系统的研究,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。

通过键盘可以进行定时、校时功能。

输出设备显示器可以用液晶显示技术和数码管显示技术。

系统带有数码管显示器,配合按键提供友好的用户界面,操作简单,同时具有定点报时功能,该数字钟能长期、连续、可靠、稳定的工作;同时还具有体积小、功耗低等特点,便于携带,使用方便。

系统软件设计包括单片机计算机两部分的编程。

计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。

单片机软件编程主要实现键盘、数码管显示、定点报时等各模块的功能,采用汇编语言编程。

钟表的数字化给人们生产生活带来了极大的方便而且大大地扩展了钟表原先的报时功能。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

2功能指标设计

本设计准备实现的功能:

(1)显示公历日期功能(年、月、日、时、分、秒)。

(2)可通过按键切换年、月、日及时、分、秒的显示状态。

(3)可随时调校年、月、日或时、分、秒。

(5)可实现闹钟功能。

3作品方案设计

3.1总体方案的选择

—————————基于51单片机的数字钟设计

单片机芯片作为控制系统的核心部件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制。

在本次设计中采用单片机技术来实现数字钟的功能。

方案的设计可以从以下几个方面来确定。

在本次设计中采用AT89C51单片机;显示电路的设计,在这里采用数码管显示;校时和定时电路的设计;实时控制电路是时钟电路的一个重要组成部分,采用的是一个时钟芯片,单片机从中读取数据送到显示器上显示,从而实现数字钟的功能;还有一些其他控制电路如复位电路、时钟电路等。

通过这些控制电路的连接构成了完整的电路。

 

3.2控制方案比较

程序设计内单片机的程序设计有其自身的特点。

在单片机系统中,硬件与软件紧密结合,由于硬件电路的设计不具有通用性,所以必须根据具体的硬件电路来设计对应的软件,硬件设计的优劣直接影响到软件设计的难易,软件设计的优劣又直接影响到硬件的发挥。

在很多时候,软件可以替代硬件的功能,当然,需要付出额外占用CPU时间的代价。

软件程序的设计是根据硬件电路图的连接和各个元器件的功能进行设计。

在编写软件时,可以按各个程序的功能将软件细分为各个功能模块,再通过主程序的调用来实现整个软件系统。

而一般编写的程序都是根据事前所用的流程图来编写的,而且,流程图中也包含了对设计所得结果的要求,因此,流程图的设计直接影响到源程序的设计。

控制键盘采用独立式按键,开机时,显示12:

00:

00的时间开始计时;P0.0/AD0控制“秒”的调整,每按一次加1秒;P0.1/AD1控制“分”的调整,每按一次加1分;P0.2/AD2控制“时”的调整,每按一次加1个小时;定时器1中断入口,产生秒基准时间并实现时间日期自增,定时器2中断入口,由软件控制蜂鸣器产生闹钟铃声。

3.3显示方案比较

单片机控制段式LED数码管显示。

码管由7段LED组成,因此可以称为七段数码管。

将这七个LED按一定规律点亮,就能够显示数字0~9,以及英文字母A、B、C、D、E、F。

而现在的数码管都有带有小数点(DP),实际上数码管就变成8段了。

显示二进制、十进制数、十六进制数,小数都不是问题。

数码管有共阳、共阴的区分。

顾名思义,共阳数码管公共阳极,即将8个数码管正极连接在一起,负极又8个不同端口控制。

共阴则与共阳相反。

段选引脚用于驱动一位数码管的八个段,即图上的a、c、d、e、f、g和dp。

根据不同的数字输出对应的电平,从而点亮一位数码管。

位选用于选择在某一时刻驱动哪一位数码管,设计里面使用两位数码管,因此需要两个引脚来控制这些位。

在控制位选时候,将数码管的位选引脚直接接到单片机的I/O口,是可行的。

原因是,单片机的I/O负载能力不足以驱动数码管,这时候,就需要外加上三极管作为电流放大使用。

使用了PNP三极管,将发射极接到电源的+5V,基极串上一10K电阻接到单片机的位选I/O口,集电极就接到数码管的位选端。

3.4公式

定时时间t=(

-T0初值)*振荡周期*12(1.1)

4硬件设计

4.1显示模块电路图

图4.1AD9851连接电路

4.24X4矩阵键盘硬件原理图

按钮未按下前,四个I/O口通过一个10K的电阻与VCC相连,所以此时四个I/O口的输入都为1即高电平;当按钮按下时,四个I/O口都接地,此时四个I/O口的输入都为即低电平。

图4.24*4键盘

4.3蜂鸣器驱动电路

蜂鸣器工作电压为+5V,将蜂鸣器的正极连接到电源+5V,负极连接到电源的GND,蜂鸣器就能发出声响。

单片机I/O的负载能力并不足以驱动蜂鸣器,为了解决这个问题,必需另需它法。

蜂鸣器的典型驱动电路是使用极管做开关。

5软件设计

5.1主程序流程图

 

图5.1主程序流程图

5.2显示模块流程图

 

 

5.3按键处理流程图

N

Y

N

Y

N

Y

5.4定时器中断流程图

N

Y

N

Y

N

Y

N

Y

6系统测试

6.1测试环境

6.1.1调试软件

KEIL:

KEILC51标准C编译器为微控制器的软件开发供了C语言环境,同时保留了汇编代码高效,快速的特点。

C51编译器的功能不断增强。

使你可以更加贴近CPU本身,及其它的衍生产品。

C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:

编译器,汇编器,实时操作系统,项目管理器,调试器。

uVision2IDE可为它们提供单一而灵活的开发环境。

一个单一的uVision2工程能够产生一个或多个目标程序。

产生目标程序的源文件构成“组”。

开发工具选项可以对应目标,组或单个文件。

同时uVision2包含一个器件数据库(devicedatabase),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定,微控制器的要求。

此数据库包含:

片上存储器和外围设备的信息,扩展数据指针(extradatapointer)或者加速器(mathaccelerator)的特性。

uVision2还可以为片外存储器产生必要的连接选项:

确定起始地址和规模。

uVision2编辑器包含了所有用户熟悉的特性,彩色语法显像和文件辩识都对C源代码进行和优化,也可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。

另外KEILC51编译器在遵循ANSI标准的同时,为8051微控制器系列特别设计。

因为语言上的扩展能让用户使用应用中的所有资源。

6.1.2仿真软件

PROTEUS:

Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。

Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。

通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。

6.2测试步骤

1.硬件调试,检测硬件是否合格;

2.默认为走时模式,按24小时制分别为“时时,分分.秒秒”。

然后进行走时调整;

3.万年历模式,为“年份,月份.日期”。

可以进行调整;

4.闹钟模式,可以定时闹钟。

6.3测试结果

 

单片机数字钟拥有时间模式,日历模式,闹钟模式三种模式。

6.4测试数据

表6.1功能数据测试

电子钟测试值/min

实际值/min

误差/%

平均误差/%

1

00:

00:

59.95

0.05

0.09

1

00:

00:

59.88

0.12

1

00:

01:

00.10

0.10

2

00:

01:

59.77

0.12

0.14

2

00:

02:

00.21

0.11

2

00:

01:

59.65

0.18

6.5心得体会

回顾起此次实验设计,我感慨颇多,从一开始的茫然到思路渐渐清晰,从开始选题到最终定稿,从理论到实践,在短短的五个星期的日子里,痛并快乐着,但是艰辛的付出是值得的。

电子综合设计课程作为一门开放性课程让适应了填鸭式教育的我们手足无措,但是老师的谆谆教诲和不厌其烦的耐心指导拨散了我们心中的迷雾,使我们有曲径通幽,豁然开朗之感。

从一开始的了解电路结构到最后的软硬件结合实现设计功能,我们遇到了各种问题。

这毕竟第一次做实验设计,难免会遇到过各种各样的问题。

在困难中前行,我们受益匪浅。

队友之间的相互磨合让我们学会了团队精神!

差错的出现考验了我们的随机应变能力!

实验设计遇到的阻力让我们明白了理论与实践相结合的重要性!

只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从操作中巩固理论,两者有机结合,提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中找出不足之处,加以改正不断提升自己的水平。

通过此次实验,在让我们体会到了设计的艰辛的同时,更让我体会到成功的喜悦和快乐.。

这次电子设计实验,虽然短暂但是让我们得到多方面的提高:

1.我们了解并掌握了单片机的基本应用,学习了Keil软件的用法,.

2、提高了我们的逻辑思维能力,加强了实际操作能力。

我们在逻辑电路的分析与设计上有了质的飞跃。

我们理解了各种芯片的功能及构造,加深了对组合逻辑电路与时序逻辑电路的认识,进一步增进了对一些常见逻辑器件的了解。

3,查阅参考书的独立思考的能力以及培养非常重要。

我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。

所以不断的汲取知识是非常重要的。

4、队友之间的团结合作也是非常重要的,众人拾柴火焰高,我们三个人的力量加起来所有问题就能迎刃而解!

参考文献

[1]李朝青.单片机原理与接口技术(第三版).北京:

北京航空航天大学出版社,2005.

[2]李军.51系列单片机高级实例开发指南.北京航空航天大学出版社.

[3]王毓银.数字电路逻辑设计[M].高等教育出版社.2004-2.

[4]许伟敏程佩青.多功能电子数字钟.2009.

[5]电子技术基础实验课程组.电子技术基础实验指导书.武汉大学电子信息学院.

[6]李光飞.单片机设计实例指导.北京航空航天大学出版社.

[7]刘华东.单片机原理与应用.北京电子工业出版社.

附录1系统电路图

附录2系统软件代码

/****************************************************************************/

/****************************************************************************/

KEYEQU0F8FFH;按键地址

LED_SEGEQU0FAFFH;液晶段数据

LED_SELEQU0FBFFH;液晶段片选

KHEQU21H;保存按键行值

KKEQU22H;按键值地位

KVEQU23H;保存按键列位

KTEQU24H;临时保存按键状态

HOUEQU25H

SECEQU26H

MINEQU27H

HBEQU28H;数据高位

LBEQU29H;数据低位

DATE_TIMEEQU2AH;记录时间、日期模式,3表示时间,4表示日期

LP0EQU2BH;定时器1循环次数

LP1EQU2CH;定时器2循环次数

YEARHEQU2DH

YEARLEQU2EH

MONEQU2FH

DAYEQU30H

FLASHEQU31H;设置标记变量

FLASH_BITEEQU32H;设置位标记变量

FLASH_FIGUREEQU33H;设置位数值标记变量

SIGNEQU34H;闰年标记

BOOLEQU35H;是否按下

LP3EQU36H

LP4EQU37H

BITEEQU38H

LP2EQU39H

H_LBEQU3AH

H_HBEQU3BH

LP5EQU3CH;闹钟个数

LP6EQU4FH

LP7EQU50H

LP8EQU51H

LP_HEQU52H

LP_LEQU53H

BPBITP1.0;闹钟

LED_1BITP1.1

ON_OFF0BIT00H

ON_OFF1BIT01H

ON_OFF2BIT02H

ON_OFF3BIT03H

ON_OFF4BIT04H

BOOL_HBIT05H

BOOL_LBIT06H

/*********************************************************************************/

ORG0000H

LJMPMAIN

ORG000BH;定时器1中断入口,产生秒基准时间并实现时间日期自增

LJMPSERVE

ORG001BH;定时器2中断入口,

LJMPREDRAW

/*********************************************************************************/

ORG1000H

MAIN:

MOVSP,#60H

MOVBOOL,#0H

MOVLP0,#14H

MOVLP1,#250

MOVTMOD,#11H

MOVTH0,#3CH

MOVTL0,#0B0H;

MOVTH1,#03CH

MOVTL1,#0B0H

MOVLP7,#2;定时器1循环次数

MOVLP8,#50;

MOVSIGN,#0FFH

MOVFLASH,#0

MOVYEARH,#20

MOVYEARL,#12

MOVMON,#2

MOVDAY,#29

MOVHOU,#23

MOVSEC,#53

MOVMIN,#59

MOVR4,#0DFH

MOVDATE_TIME,#3H

MOVFLASH_BITE,#0FFH

MOVLP5,#0

MOVLP_H,#70

MOVLP_L,#70

SETBBP

SETBON_OFF0

SETBON_OFF1

SETBON_OFF2

SETBON_OFF3

SETBON_OFF4

SETBBOOL_H

SETBBOOL_L

MOV3DH,#0

MOV45H,#0

MOV4AH,#0

MOV3FH,#1

MOV47H,#1

MOV4CH,#1

/******************************定时器初始化*************************************/

SETBET0;允许T0中断

SETBET1;禁止T1中断

SETBEA;CPU开放中断

CLRTR1;关闭定时器T1

SETBTR0;开启定时器T0

/*********************************************************************************/

WHILE:

LCALLLP

KEY_NUM:

;按键处理

MOVDPTR,#KEY

MOVA,#0H

MOVX@DPTR,A

MOVA,FLASH

JZSETTR0

MOVA,DATE_TIME

CJNEA,#4,CLRTR0

SETTR0:

SETBTR0

JMPJUDGE

CLRTR0:

CLRTR0

JUDGE:

;扫描是否有键按下

MOVDPTR,#KEY

MOVXA,@DPTR

ANLA,#0FH

MOVR1,#0EFH

MOVR2,#4H

MOVKT,A

CJNEA,#0FH,FIND

MOVBOOL,#0

JMPWHILE

FIND:

;查询按下的键

MOVA,R1

RRA

MOVR1,A

MOVDPTR,#KEY

MOVX@DPTR,A

NOP

NOP

MOVDPTR,#KEY

MOVXA,@DPTR

ANLA,#0FH

MOVKV,A

XRLA,KT

JZPRO0

DJNZR2,FIND

PRO0:

;计算键值

MOVA,BOOL

JNZRETURN3

MOVBOOL,#1H

MOVKH,R2

DECKH

MOVA,KV

CPLA

ANLA,#0FH

MOVB,#2H

DIVAB

CJNEA,#4H,PRO1

MOVKV,#3H

JMPPRO2

PRO1:

MOVKV,A

PRO2:

MOVA,KH

MOVB,#4H

MULAB

ADDA,KV

MOVKK,A

KEYPRO:

;键功能处理

MOVA,KK

CJNEA,#0AH,KEYPRO1

KEYPRO1:

JCDIGPRO

KEYTBL:

;功能键处理

MOVDPTR,#JMPTBL

CLRC

SUBBA,#0AH

RLA

JMP@A+DPTR

JMPTBL:

;功能键入口地址表(前四行)

AJMPCAL

AJMPTIM

AJMPSETTING

AJMPYES

AJMPALARM

AJMPON_OFF_ALM

DIGPRO:

;数字键处理

MOVFLASH_FIGURE,A

MOVA,FLASH

JZRETURN3

LCALLPRO_CHANGE

JMPSETTING1

RETURN3:

LJMPRETURN1

CAL:

MOVP1,#0FFH;日期模式

MOVA,DATE_TIME

CJNEA,#4,CLASET

JMPRETURN1

CLASET:

MOVDATE_TIME,#4H

JMPYES

TIM:

MOVP1,#0FFH;时间模式

MOVLP5,#0

MOVA,DATE_TIME

CJNEA,#3,TIMSET

JMPRETURN1

TIMSET:

MOVDATE_TIME,#3H

JMPYES

SETTING:

;设置

SETTING1:

;判断当前模式

MOVA,DATE_TIME

CJNEA,#4H,SETTIME

SETDATE:

MOVA,FLASH

CJNEA,#8,INCF

JMPYES

INCF:

INCFLASH

MOVB,FLASH

MOVA,#0FEH

LOOP4:

RRA

DJNZFLASH,LOOP4

MOVFLASH,B

MOVFLASH_BITE,A

JMPRETURN1

SETTIME:

MOVA,FLASH

CJNEA,#6,INCF2

JMPYES

INCF2:

INCFLASH

MOVB,FLASH

MOVA,#0BFH

LOOP5:

RRA

DJNZFLASH,LOOP5

MOVFLASH,B

MOVFLASH_BITE,A

JMPRETURN1

RETURN4:

JMPRETURN1

YES:

;确认键

MOVFLASH,#0H

MOVFLASH_BITE,#0FFH

JMPRETURN1

ALARM:

MOVDATE_TIME,#3

MOVA,LP5

CJNEA,#5,NORMAL

MOVLP5,#0

NORMAL:

INCLP5

MOVA,LP5

MOV44H,A

MOVA,#0FEH

RLP:

RRA

DJNZ44H,RLP

MOVP1,A

NEX1:

MOVA,LP5

DECA

MOVDPTR,#ALM_TBL

RLA

JMP@A+DPTR

ALM_TBL:

AJMPL0

AJMPL1

AJMPL2

AJMPL3

AJMPL4

L0:

MOVC,ON_OFF0

MOVLED_1,C

AJMPYES

L1:

MOVC,ON_OFF1

MOVLED_1,C

AJMPYES

L2:

MOVC,ON_OFF2

MOVLED_1,C

AJMPYES

L3:

MOVC,ON_OFF3

MOVLED_1,C

AJMPYES

L4:

MOVC,ON_OFF4

MOVLED_1,C

AJMPYES

ON_OFF_ALM:

MOVA,LP5

CJNEA,#0,NEX

JMPRETURN1

NEX:

DECA

MOVDPTR,#ON_OFF_TBL

RLA

JMP@A+DPT

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

当前位置:首页 > 人文社科 > 文化宗教

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

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