当前位置:文档之家› 基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计
基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计

1设计任务与要求

1.1 设计背景

数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示。

机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。1.2 课程设计目的

(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;

(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;

(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过

程,软硬件设计的方法、内容及步骤

1.3 设计要求

1).时制式为24 小时制。

2).采用LED 数码管显示时、分,秒采用数字显示。

3).具有方便的时间调校功能。

4).计时稳定度高,可精确校正计时精度。

2总体方案设计

2.1实现时钟计时的基本方法

利用MCS-51 系列单片机的可编程定时/计数器、中断系统来实现时钟计数。

(1)计数初值计算:

把定时器设为工作方式1,定时时间为50ms,则计数溢出20 次即得时钟计时最小单位秒,而100 次计数可用软件方法实现。

假设使用T/C0,方式1,50ms定时,fosc=12MHz。

则初值X 满足(216-X)×1/12MHz×12μs =50000μs

X=15536→0011110010110000→3CB0H

(2)采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);

(3)从秒到分和从分到时的计时是通过累加和数值比较实现。

2.2电子钟的时间显示

电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM 中设置显示缓冲区共8 个单元。

LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1

37H 36H 35H 34H 33H 32H 31H 30H

时十位时个位分隔分十位分个位分隔秒十位秒个位

2.3电子钟的时间调整

电子钟设置 3 个按键通过程序控制来完成电子钟的时间调整。

A 键调整时;

B 键调整分;

C 键复位

2.4 总体方案介绍

2.4.1 计时方案

利用AT89S51 单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。

2.4.2 控制方案

AT89S51的P0口和P2口外接由八个LED 数码管(LED8~LED1)构成的显示器,用P0口作LED 的段码输出口,P2口作八个LED 数码管的位控输出线,P1口外接四个按键 A 、B、C 构成键盘电路。

AT89S51 是一种低功耗,高性能的CMOS 8 位微型计算机。它带有8K Flash 可编程和擦除的只读存储器( EPROM),该器件采用ATMEL 的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52 的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的I/O 便可完成,所以本设计中采用此的设计方案。

3系统硬件电路设计

根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图 1 所示。

图1 硬件电路方框图

3.1 单片机模块设计

3.1.1 芯片分析

AT89C51 单片机引脚图如下:

图2 AT89C51 引脚图

MCS-51 单片机是标准的40 引脚双列直插式集成电路芯片,其各引脚功能如下:VCC :+5V 电源。

VSS:接地。

RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,

用完成单片机的复位初始化操作

XTAL1 和XTAL2 :外接晶体引线端。当使用芯片内部时钟时,此二引线端用于

外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

P0口:P0口为一个8位漏极开路双向I/O 口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,

使FET 截止,以避免锁存器为“ 0 ”状态时对引脚读入的干扰。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O 口,它不再需要多路转接电路MUX ;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“ 1”,使输出驱动电路的FET 截止。

P2口:P2口电路比P1口电路多了一个多路转接电路MUX ,这又正好与P0

口一样。P2口可以作为通用的I/O 口使用,这时多路转接电路开关倒向锁丰存器Q端

P3 口:P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。当作为I/O 口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位应应置“1”

使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出,具体第二功能如表 1 所示。

3.1.2 晶振电路

右图所示为时钟电路原理图,在AT89S51 芯片内部有一个高增益反相放大

器,其输入端为芯片引脚XTAL1 ,输出端为引脚XTAL2 。而在芯片内部,XTAL1 和XTAL2 之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时

钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图3 晶振电路

3.1.3 复位电路

单片机复位的条件是:必须使RST/VPD 或RST 引(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12 MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST 引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位如图所示。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC 相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET 为高电平的时间大于两个机器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中的RESET 键,此时电源VCC 经电阻R1、R2 分压,在RESET 端产生一个复位高电平。

图4 单片机复位电路

3.2 数码显示模块设计

系统采用动态显示方式,用P0 口来控制LED 数码管的段控线,而用P2 口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感

觉。

3.3 按键模块图5 数码显示电路

下图为按键模块电路原理图,

A 为复位键,

B 为时钟调控键,

C 为分钟调控

键。

图6 按键模块电路原理图

ORG 0000H

4、系统软件设计 4.1 软件设计分析

在编程上, 首先进行了初始化, 定义程序的的入口地址以及中断的入口地址, 在 主程序开始定义了一组固定单元用来储存计数的时 .分.秒,在显示初值之后,进入主 循环。在主程序中, 对不同的按键进行扫描, 实现秒表, 时间调整,复位清零等功能, 系统总流程图如下图 7:

图 7 系统总体流程图

4.2

源程序清单

设置时钟的起始时间12.00.00,分配显示数据

MOV 31H,#2 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0

MOV TMOD,#01 SETB TR0

MOV TH0,#00H MOV TL0,#00H

MOV 40H,#0FEH MOV DPTR,#TAB MOV P2,40H MOV A,30H MOVC A,@A+DPTR

启动计数器

使TRO 位置 1

计数器置零

扫描控制字初值

取段码表地址

从P2 口输出

取显示数据到 A

查显示数据对应段码

内存

MOV 30H,#1

XS0:

XS:

MOV P0,A

段码放入 P0 中 MOV P2,40H

LCALL YS1MS MOV P0,#0FFH MOV A,40H RL A MOV 40H,A MOV P2,40H MOV A,31H ADD A,#10 MOVC A,@A+DPTR MOV P0,A LCALL YS1MS MOV P0,#0FFH MOV A,40H RL A MOV 40H,A

MOV A,32H

显示 1MS

PO 端口清零

取扫描控制字放入 A 中

A 中数据循环左移

放回 40H 地址段内

进位显示

MOVC A,@A+DPTR MOV P0,A LCALL YS1MS MOV P0,#0FFH MOV A,40H

RL A

MOV 40H,A MOV P2,40H MOV A,33H

ADD A,#10 MOVC A,@A+DPTR MOV P0,A LCALL YS1MS MOV P0,#0FFH MOV A,40H

RL A

MOV 40H,A MOV P2,40H

MOV A,34H MOV 40H,A

MOVC A,@A+DPTR MOV P0,A LCALL YS1MS MOV P0,#0FFH MOV A,40H RL A MOV 40H,A MOV P2,40H MOV A,35H MOVC A,@A+DPTR MOV P0,A LCALL YS1MS MOV P0,#0FFH MOV A,40H RL A

如果 TF0为 1时,则执行 JIA ,否则顺序

JB TF0,JIA

MOV A,34H

执行MOV 40H,A

JNB P1.0,P100

为 0 则 转移到 P100

跳转到 XS

P100: MOV 30H,#0

清零程序

MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0

JIA: CLR TF0 TF0 清零

MOV A,35H 秒单位数据到 A

CJNE A,#9,JIA1 与 9 进行比较,大于 9 就转移到

JIA1

MOV 35H,0

秒个位清零

MOV A,34H

秒十位数据到 A

CJNE A,#5,JIA10

与 5 进行比较,大于 5 就转移到

JIA10

MOV 34H,#0

秒十位清零

P10000: JNB P1.2,P10000 为 0 则 转移到 P10000

JNB P1.1,P1000 为 0 则 转移到

P1000

JNB P1.2,P10000

为 0 则 转移到

P10000

AJMP XS

MOV A,33H 取分的个位到 A

INC 30H 加 1

CJNE A,#9,JIA100 与 9 进行比较,大于 9 就转移到 JIA100 MOV 33H,#0 分的个位清零 MOV A,32H 分十位数据到 A

CJNE A,#5,JIA1000 与 5 进行比较,大于 5 就转移到 JIA1000 MOV 32H,#0

分的十位清零 P1000: JNB P1.1,P1000

为 0 则 转移到 P1000

MOV A,31H

时个位数据到 A

CJNE A,#9,JIA10000

与 9 进行比较,大于 9 就转移到

JIA10000

MOV 31H,#0

时的个位清零

MOV A,30H 时十位数据到 A

CJNE A,#2,JIA100000 与 2 进行比较,大于 5 就转移到 JIA100000

MOV 30H,#0 时的十位清零 AJMP XS0

转移到 XSO

JIA100000:

MOV A,33H 取分的个位到A AJMP XS0 跳转到XS0

INC 30H 加1

JIA1: INC 35H

AJMP XS0

JIA100: INC 33H

AJMP XS0

JIA10: INC 34H AJMP XS0

JIA10000:

CJNE A,#3,JIAJIA MOV A,30H

CJNE A,#02,JIAJIA MOV 30H,#0

MOV 31H,#0 AJMP XS0

JIAJIA:

INC 31H AJMP XS0

JIA1000:INC 32H

与 3 进行比较,大于则转移到 JIAJIA 将时的十位放到 A

与2 进行比较,大于则转移到

JIAJIA

时段清零

跳转到 XSO

RET 返回

AJMP XS0

YS1MS: MOV R6,#9H 延时程序

YL1: MOV R7,#19H

DJNZ R7,$

DJNZ R6,YL1

RET

TAB:

DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H 共阳段码表

DB 040H,079H,024H,030H,019H,012H,002H,078H,000H,010H

END

5 系统仿真与实验测试

5.1 系统仿真

运用proteus 软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。5.2 实验测试

电子时钟主要的设计要求是能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。下述为18:30:30 的仿真图:

图8 18:30:30 时刻的仿真效果图

6 心得体会

单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料,问老师,在老师的帮助下,历时两个星期,解决一个又一个的困难,终于完成任务。

在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识

相关主题
文本预览
相关文档 最新文档