2024年5月2日发(作者:)

课 程 设 计 报 告

基于微处理器

的定时器设计

一. 硬件系统的设计:

(1)设计要求:

本课程设计的定时器,待机状态是一台时钟,以秒为单位两点闪烁,可

设置多个闹铃时间,蜂鸣器鸣叫时间持续一分钟,并可作秒表使用,可控制

秒表启停。

(2) 设计目的:

1. 复习和巩固所学过的知识,利用此毕业设计正好可以对所学过的知识进

行系统的回顾和总结。

2. 拓展知识面,课堂的知识是远远满足不了设计的要求的,这就需要我们

主动去找寻更多的资料,了解更多的知识。

3. 培养了设计能力和解决实际问题的能力,同时增强了自学能力,通过设

计完整的单片机系统也初步掌握了组成系统、编程、调试等能力。

4. 通过本LCD电子钟的设计初步了解了单片机应用系统开发研制过程,软

件和硬件设计的方法。

5. 本课程设计目的是制作基于微处理器的定时器,将学过的微处理器硬件

和软件知识,以及电子线路知识进行综合应用,形成一个能实际运行的

电子作品。

(3) 系统组成及工作原理

该定时器主要由单片机,复位电路 ,电源,蜂鸣器和开关构成。

本定时器采用ATMEL公司的AT89S51单片机为核心,使用晶振11.0592MHz

晶振与单片机AT89S51相连,通过软件编程的方法实现12分钟为一个周期,同

时LCD显示分钟和秒的要求。

(a)硬件的设计:

本设计的硬件系统主要由以下几个模块来实现:控制模块、输入模块、输出

模块、电源模块。

控制模块主要用开关实现秒表与时钟以及闹钟之间的变换。。

输入模块主要用于向控制器模块输入各种信息。

输出模块主要用于实时的实现各种显示。

电源模块主要用于向整个硬件系统供电。

(b)设计电路连线原理图:

C1

220p

19

(c)时钟电路

X1

CRYSTAL

C2

220p

18

9

29

本设计是采用内部时钟方式,用一个11.0592MHz晶振和两个30Pf瓷片电容

组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用.其电路图见图

(d)AT89S51及LCD的引脚图:

a) :

b)

(4)元器件清单

名称

CPU

晶振

电阻

AT89S51

11.0592MHZ

5.1K

150

三极管

排阻

电容

9012

4.7K*8

10uf

0.1uf

30pf

40引脚插针

蜂鸣器

数量

1

1

3

1

1

1

1

1

2

1

1

液晶显示器ED-S801

剪刀

镊子

面包板、键盘

1

1

1

1、1

(二)软件系统的设计:

(1)使用单片机资源的情况:

设计时使用单片机资源的情况如下:AT89S51单片机的

P0、P1、P2口作为液晶数据线接口,其中,P0口接液晶分

个位,P1接液晶秒十位,P2接液晶秒个位。P3 口接时钟电

路和控制开关,用单片机定时器0中方式1来控制定时器运

行。

(2)软件系统的各个模块功能:

本设计的软件系统主要采用以下基本模块来实现:

主程序、中断服务程序、开关控制和液晶显示程序。

主程序用于对于各个程序模块的运行及控制,以及各个模

式程序的初始化。特别是定时中断的初始值。实验中定时时

间为50ms。所以TH0=3CH, TL0=0B0H。

中断服务程序用于时钟的运行,以及通过定时中断来实现各

个模式。即是待机模式,闹钟模式,秒表模式。通过定时中

断控制液晶中间两点闪烁,每隔0.5s闪烁一次。在闹钟模式,

但时钟走到10s时,蜂鸣器响5s。

开关控制用于确定按键并进行相应的模式处理。如,当K2=1,

时钟进入秒表模式,假如K1=1,秒表计时,否则K1=0,秒表

暂停。但K2=0,判断K1,假如K1=1,时钟进入闹钟模式,

否则进入待机模式。

液晶显示程序用于控制液晶的显示,显示分秒时钟。

(3)设计的软件流程框图:

YES

进入秒表模式

开始

进入主程序

开始计时

K2为高吗?

NO

K1为高吗?

YES NO

进入闹钟模式

待机模式

开始计时

开始计时

继续计时

K1为低?

时钟到10

no

YES no

秒?

yes

秒表暂停

响够

no

5秒?

no

秒表继续计时

yes

继续计时

开始计时

(3)实验程序

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP ITT0

ORG 0100H

MAIN: MOV SP,#60H

MOV TH0,#3CH

MOV TL0,#0B0H

MOV TMOD,#01H

SETB ET0

SETB EA

MOV R0,#0

MOV R1,#0

MOV R2,#0

CLR P3.0

MOV R7,#0

MOV DPTR,#TAB

SETB P3.1

SETB P3.3

SETB TR0

SJMP $

ORG 0500H

ITT0: MOV TH0,#3CH

MOV TL0,#0B0H

INC R7

CJNE R7,#20,MM;1S是否到

CPL P3.1

MOV R7,#0

JB P3.7,MODE2;K2为1则进入秒表模式,否则顺序执行,进

入待机或闹钟模式

INC R2

JNB P3.3,DELL;闹钟响?跳入判断是否响够5S

WW: CJNE R2,#10,EXIT;秒个位溢出

MOV R2,#0

INC R1

JB P3.6,MODE1;K1为1跳转入闹钟模式,否则顺序执行,进

入待机模式

QQ: CJNE R1,#6,EXIT;秒十位溢出

MOV R1,#0

INC R0

CJNE R0,#10,EXIT;分个位溢出

MOV R0,#0

CPL P3.0;分十位变化,只为0或1

SJMP EXIT

MM: CJNE R7,#10,EXIT0

CPL P3.1;0.5S到,两点取反

EXIT: MOV A,R0

MOVC A,@A+DPTR

MOV P0,A

MOV A,R1

MOVC A,@A+DPTR

MOV P1,A

MOV A,R2

MOVC A,@A+DPTR

MOV P2,A;输出分秒

EXIT0: RETI

TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

MODE1: JB P3.0,EXIT1

CJNE R0,#0,EXIT1

CJNE R1,#1,EXIT1

CJNE R2,#0,EXIT1;时间到00:10吗

CLR P3.3

MOV R6,#5

EXIT1: SJMP QQ

DELL: DJNZ R6,LOOP;响够5S吗

SETB P3.3

LOOP: SJMP WW

MODE2: INC R2

CJNE R2,#10,EXIT2

MOV R2,#0

INC R1

CJNE R1,#6,EXIT2

MOV R1,#0

INC R0

CJNE R0,#10,EXIT2

MOV R0,#0

CPL P3.0

SJMP EXIT2

EXIT2: JNB P3.6,STOP;秒表暂停键按下,即K1为0

EXIT3: SETB TR0;继续,开定时器中断,继续计时

MOV A,R0

MOVC A,@A+DPTR

MOV P0,A

MOV A,R1

MOVC A,@A+DPTR

MOV P1,A

MOV A,R2

MOVC A,@A+DPTR

MOV P2,A

SJMP EXIT0

STOP: CLR TR0;暂停,关定时器中断,停止计时

JB P3.6,EXIT3

SJMP STOP

END