基于单片机定时闹钟设计

2012级基于单片机定时闹钟设计专业综合训练

基于单片机定时闹钟设计

学生学号:1204020213 学生姓名: 郝向忠

指导教师: 童一凡

机电工程系

2014年 月 日

2012级基于单片机定时闹钟设计专业综合训练

基于单片机定时闹钟设计

石家庄职业技术学院机电系 郝向忠 邮编 050081

摘 要

随着科学技术的不断发展 , 人们对时间计量的要求越来越高 。在当今社会,电子时钟已经得到相当广泛的应用,产品多样,发展更是多元化。本作品是以STC89C51单片机作为主控芯片,使用12MHZ 的晶振, 产生时间信息,时间精确。在其基础上外围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及数码管显示。键盘采用独立连接式。还有定时报警系统,即定时时间到,通过扬声器发出报警声,提示预先设定时间时间到,从而起到定时作用。

关键字 按键 、单片机、 汇编

目 录

1 设计课题任务、功能要求说明及总体方案介绍.........................4 1.1 设计课题任务................................................4 1.2 功能要求说明................................................4 1.3 总体方案介绍及工作原理说明..................................4 2 硬件系统设计.....................................................5

2. 1 各模块功能选择与设计........................................6 2. 2 电路原理图...............................................8 2. 3 元器件清单.................................................9 3 软件系统的设计.................................................9

3. 1 单片机资源分配情况......................................9 3. 2 软件系统程序流程框图................................10 3. 3 软件系统各模块功能简述 ......................................12 3. 4 软件系统程序清单..........................................12 4 设计结论、仿真过程及设计体会.........................20

4. 1 设计结论及使用说明.......................................21 4. 2 仿真过程.................................................20 4. 3 设计体会................................................24 参考文献...........................................................25 致谢...............................................................25

1 设计课题任务、功能要求说明及总体方案介绍

1.1 设计课题任务

设计一个单片机控制的电子闹钟系统,利用单片机的定时器/计数器定时和记数的原理,结合显示电路、用六个LED 数码管以及按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行闹时,同时数码管能够正确地显示时间。 1.2 功能要求说明

1.正常状态下,数码管显示当前时间。当定时开关按下时,启动定时功能;启动定时后,若定时时间到,则蜂鸣器响30秒。

2.默认定时时间是12:00:00。定时时间可以用开关设定。 3.当时间不准确时,可以按动校时开关进行校时。 * 4.允许自己增加功能 1.3 总体方案介绍及工作原理说明

本设计利用AT89S52单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.4口作数码管显示输出,6个按键S2至S7分别依次接在P3.3至P3.7口线,硬件电路基本原理图如图1.1所示。

复位电路

按键模块

单片机显示模块

时钟电路电源电路

图1.1 闹钟硬件电路基本原理图

2012级基于单片机定时闹钟设计专业综合训练

2 硬件系统设计

2.1 各模块功能选择与设计 2.1.1 显示电路的选择与设计 数码管显示电路

单片机中通常使用7段LED ,LED 是发光二极管显示器的缩写。LED 显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配臵灵活与单片机接口方便而得到广泛应用。LED 显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。LED 显示器有多种形式,如:“米”字型显示器,点阵显示器和七段数码显示器等,在单片机系统中使用最多的是七段数码显示器

2012级基于单片机定时闹钟设计专业综合训练

LED 七段数码显示器由8个发光二极管组成显示字符,根据内部发光二极管

的连接形式不同,LED 有共阴极和共阳极两种,如图3所示: 采用高亮共阴型数位数码管,为示区别,显示秒的两个数码管个头较小,另外4个较大。共阴数码管连接线路如下:一般用7个发光二极管构成显示数字和符号,另外还用一段发光二极管显示小数点。这种显示器一般分为两种,共阳极显示器和共阴极显示器,共阳极显示器是把每个二极管的正端连在一起,共阴极显示器是把每个二极管的阴极连在一起。一只显示器是有8个发光二极管构成,当把某段加正向电压时,则该段所对应的笔划亮,不加正向电压则暗,为了保护各段不受损坏需要加限流电阻,无论是共阳极显示器还是共阴极显示器,它的8段排列顺序都是一样的:A 段、B 段、C 段、D 段、E 段、F 段、G 段和DP 段。在单片机中通常使用7段LED 。

段驱动

八位数码显示

AT89S52

位驱动

图2.1 显示电路基本原理图

动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。

2.1.2 按键电路的选择与设计

当按键没有按下时,单片机的I/O口直接连接电源,因此需要接上拉电阻来进行限流,本设计中选取阻值为470Ω 的电阻作为上拉电阻. 具体设计如图2.2所示

2.1.3 时钟电路的选择与设计

单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中AT89C51单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz ~12MHz 之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF ~100pF 之间取值。AT98S51单片机的时钟电路如图2所示。

2.1.4 复位电路的选择与设计

标准AT89S52不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因此必须借助于外接阻容支路来增加延时环节,如图2.4(a)所示。其实,外接电阻R 还是可以省略的

在每次单片机断电之后,须使延时电容C 上的电荷立刻放掉,以便为随后可能在很短的时间内再次加电作好准备。否则,在断电后C 还没有充分放电的情况下,如果很快又加电,那么RC 支路就失去了它应有的延迟功能。因此,在图2.4(a)的基础上添加一个放电二极管D ,上电复位延时电路就变成了如图2.4(c)所示的改进电路。也就是说,只有RC 支路的充电过程对电路是有用的,放电过程不仅无用,而且会带来潜在的危害。于是附加一个放电二极管D 来大力缩短放电持续时间,以便消除隐患。二极管D 只有在单片机断电的瞬间(即VCC 趋近于0 V ,可以看作VCC 对地短路)正向导通,平时一直处于反偏截止状态。

手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。

本设计采用上电且开关复位电路,如图2.5所示上电后,由于电容充电,使RST 持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST 持续一段时间的高电平,从而实现上电且开关复位的操作。

2.1.5 音响报警电路

在AT89C51外围的一个管口上加蜂鸣器,通过软件与硬件的结合可实现定时闹钟功能

2012级基于单片机定时闹钟设计专业综合训练

2.2 电路原理图

2.3 元器件清单

3 软件系统的设计

3.1 单片机资源分配情况

P0.7---P0.0段控线, 接LED 的显示段 P2.7---P2.0位控线

P3.3---P3.7 6个按键S6至S1

3.3 软件系统程序流程框图

3.3 软件系统各模块功能简要介绍

TIME_1MS(定时1ms 子程序)

KEY(键扫描子程序)

KEYCHULI(P1口数据处理子程序)

3.4 软件系统程序清单

ORG 0000H

LJMP MAIN ;主程序跳转

ORG 000BH

LJMP T0 ;T0跳转

ORG 001BH

LJMP T1INT ;T1跳转

MAIN:MOV SP,#70 ;堆栈初始化

MOV TMOD,#11H ;T0.T1方式1工作

MOV TL1,#0EFH ;T1初值

MOV TH1,#0D8H

MOV TL0,#00h ;T0初值

MOV TH0,#0EEH

MOV IE,#8aH ;开中断

MOV 39H,#30

MOV R7,#100 ;中断次数(计时)

MOV R5,#6 ;位个数

MOV R4,#01H

MOV 30H,#0 ;时钟缓冲区

MOV 31H,#0

MOV 32H,#0

MOV 33H,#0

MOV 34H,#2

MOV 35H,#1

MOV 40H,#0 ;闹钟缓冲区

MOV 41H,#0

MOV 42H,#0

MOV 44H,#6

MOV 45H,#0

MOV DPTR,#TAB

SETB TR1 ;启动定时器1

SETB TR0 ;启动定时器0

MainLoop:

MOV R3,39H

CJNE R3,#0, YU

MOV 39H,#30 ;蜂鸣器叫30S

CLR 20H.0 ;关蜂鸣器

CLR 20H.1 ;关闹钟

YU:JB P3.7,CheckPP

LCALL Delay2

JB P3.7,CheckPP ;闹时设臵键按下了吗?没有则转去检测秒设臵键篇p3.4 SETB 20H.1 ;开闹钟

CALL NAOZHONG

CheckPP: MOV 46H,#30H

JB P3.4,CheckPQ ;分设臵键按下了吗?没有则转去检测小时设臵键 CALL Delay2 ;

JB P3.4,CheckPQ

INC 32H

MOV A,32H

CJNE A,#10,NotOver1 ;到10分钟了吗?

MOV 32H,#0

NotOver1: ;以下等待按键释放及防抖动

JNB P3.4,$

CheckPQ:

JB P3.3,CheckPQ1 ;分十位设臵键按下了吗?没有则转去闹时状态检测

JB P3.3 ,CheckPQ1

INC 33H

MOV A,33H

CJNE A,#6,NotOver2

MOV 33H,#0

NotOver2:

;以下等待按键释放及防抖动

JNB P3.3,$

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CheckPQ1:

JB P3.5,CheckPQ2 ;小时个位设臵键按下了吗?

CALL Delay2

JB P3.5,CheckPQ2

INC 34H

MOV A,35H

CJNE A,#0,JU1

MOV A,34H

CJNE A,#10,NotOver21

MOV 34H,#0

MOV A,35H

JU1: CJNE A,#1,JU

MOV A,34H

CJNE A,#10,NotOver21

MOV 34H,#0

JU:CJNE A,#2,NotOver21

MOV A,34H

CJNE A,#4,NotOver21

MOV 34H,#0 ;到24小时则将小时清0

NotOver21:

;以下等待按键释放及防抖动

JNB P3.5,$

小时调整逻辑;*********************************

********************************************

CheckPQ2:

JB P3.6,CheckAlarm ;小时十位设臵键按下了吗?没有则转去闹时状态检测 CALL Delay2

JB P3.6,CheckAlarm

INC 35H

MOV A,34H

CJNE A,#0,E1

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E1:CJNE A,#1,E2

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E2:CJNE A,#2,E3

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E3:CJNE A,#3,E4

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E4:CJNE A,#4,E5

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E5:CJNE A,#5,E6

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E6:CJNE A,#6,E7

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E7:CJNE A,#7,E8

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E8:CJNE A,#8,E9

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E9:CJNE A,#9,NotOver22

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0 ;到24小时则将小时清0

NotOver22:

;以下等待按键释放及防抖动

JNB P3.6,$

CheckAlarm: JNB 20H.1,LL ;判闹钟

LCALL BIJIAO ;调用闹钟子程序

LL: AJMP MainLoop

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X显示程序;;;;;;;;;;;;;;;;;; T0:MOV TL0,#00H ;T0初值

MOV TH0,#0EEH

DJNZ R5,T01 ;一轮扫描是否结束

MOV R5,#6 ;动态扫描位数

MOV R4,#01H ;动态扫描初值

MOV R0,46H ;动态扫描缓冲区选择

T01:MOV P0,#00H ;关显示

MOV A,@R0 ;取首地址

MOVC A,@A+DPTR ;查表

MOV P2,A ;送段码

MOV P0,R4 ;送位码

MOV A,R4 ;位偏移

RL A

MOV R4,A

INC R0

RETI

T1INT:

MOV TL1,#0EFH ;T1初值

MOV TH1,#0D8H

DJNZ R7,N

MOV R7,#100 ;1秒计时

jnb 20h.0, bt01

cpl p1.7 ;蜂鸣器叫

cpl p1.0

DEC 39H

bt01: INC 30H ;秒个位加1

MOV R3,30H

CJNE R3,#10,N

MOV 30H,#0

INC 31H ;秒十位加1

MOV R3,31H

CJNE R3,#3,TTT

CLR 20H.0

TTT:CJNE R3,#6,N

MOV 31H,#0

INC 32H ;分个位加一

MOV R3,32H

CJNE R3,#10,N

MOV 32H,#0

INC 33H ;分十位加一

MOV R3,33H

CJNE R3,#6,N

MOV 33H,#0

INC 34H ;时个位加一

MOV R3,34H

CJNE R3,#4,N1

MOV R3,35H

CJNE R3,#2,N1

LJMP N2

N1:CJNE R3,#10,N

MOV 34H,#0

INC 35H ;时十位加一

LJMP N

N2:MOV 30H,#0 ;计时24小时清0

MOV 31H,#0

MOV 32H,#0

MOV 33H,#0

MOV 34H,#0

MOV 35H,#0

N:RETI

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

Delay1: MOV R5,#5 ;延时间产生1s ,扬声器的震动间隔时间

de3:MOV R6,#200

de2:MOV R7,#250

DJNZ R7,$

DJNZ R6,dE2

DJNZ R5,dE3

RET

Delay2: MOV R6,#10 ;延时产生15ms ,按键防止抖动时间

de4:MOV R7,#245

DJNZ R7,$

DJNZ r6,de4

RET

;********************************N闹钟调整子程************************************************

NAOZHONG: INC 60H ;单元加一,,选取首地址

MOV A,60H

MM1: CJNE A,#1,MM

MOV 46H,#40H ;闹钟首地址

MM: CJNE A,#0,M2

MOV 46H,#30H ;时钟首地址

M2:CJNE A,#2,MM1

MOV 60H,#0

NAOZHONGaa:JB P3.4,CheckPQa ;分设臵键按下了吗?没有则转去检测小时设臵键 CALL Delay2 ;

JB P3.4,CheckPQa

INC 42H

MOV A,42H

CJNE A,#10,NotOver1a ;到10分钟了吗?

MOV 42H,#0

NotOver1a: ;以下等待按键释放及防抖动

JNB P3.4,$

CheckPQa:

JB P3.3,CheckPQ1a ;小时设臵键按下了吗?没有则转去闹时状态检测

CALL Delay2

JB P3.3 ,CheckPQ1a

INC 43H

MOV A,43H

CJNE A,#6,NotOver2a

MOV 43H,#0

NotOver2a:

;以下等待按键释放及防抖动

JNB P3.3,$

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CheckPQ1a:

JB P3.5,CheckPQ2a ;小时设臵键按下了吗?

CALL Delay2

JB P3.5,CheckPQ2a

INC 44H

MOV A,45H

CJNE A,#0,JU1a

MOV A,44H

CJNE A,#10,NotOver21a

MOV 44H,#0

MOV A,45H

JU1a:CJNE A,#1,JUa

MOV A,44H

CJNE A,#10,NotOver21a

MOV 44H,#0

JUa:CJNE A,#2,NotOver21a

MOV A,44H

CJNE A,#4,NotOver21a

MOV 44H,#0 ;到24小时则将小时清0

NotOver21a: ;以下等待按键释放及防抖动

JNB P3.5,$

CheckPQ2a:

JB P3.6,kka ;小时设臵键按下了吗?

CALL Delay2

JB P3.6,kka

INC 45H

MOV A,44H

CJNE A,#0,E1a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E1a:CJNE A,#1,E2a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E2a:CJNE A,#2,E3a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E3a:CJNE A,#3,E4a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E4a:CJNE A,#4,E5a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E5a:CJNE A,#5,E6a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E6a:CJNE A,#6,E7a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E7a:CJNE A,#7,E8a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E8a:CJNE A,#8,E9a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E9a:CJNE A,#9,NotOver22a

MOV A,35H

CJNE A,#2,NotOver22a

MOV 35H,#0 ;到24小时则将小时清0

NotOver22a:

;以下等待按键释放及防抖动

JNB P3.6,$

kkaa:ljmp NAOZHONGaa

kka:JB P3.2,kkaa ;[**************]00返回计时显示[1**********]00

RET

BIJIAO : ;比较计时闹时时间到

MOV A,35H

CJNE A,45H,BI3

MOV A,34H

CJNE A,44H,BI3

MOV A,33H

CJNE A,43H,BI3

MOV A,32H

CJNE A,42H,BI3

setb 20h.0 ;启动蜂鸣器标志位

BI3:RET

4 设计结论、仿真过程及设计体会

4.1 设计结论及使用说明

4.1.1 设计结论

本系统就是充分利用了AT89S52芯片的I/O引脚。该闹钟上电或按键复位后能自动显示系统提示符“12.00.00”,进入准备工作状态。闹钟具有调时、定时、报警等功能

4.1.2 使用说明

K1:跳出闹钟定时

K2:分十位调整

K3:分个位调整

K4:时十位调整

K5:时个位调整

K5:进入闹钟调整

4.2仿真过程

在仿真过程中遇到蜂鸣器不发声,不是程序问题,是元器件加载错误。灯光太暗,原因是限流电阻太大!

4.4 设计体会

我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。 这次单片机课程设计我们历时一个星期,时间虽然不算长,但经过这一个星期的实践和体验下来,我们综合那些理论知识来运用到设计和创新,那些原本感觉枯燥乏味的程序在这次课程设计后,我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。

通过本次设计,复习巩固我们以前所学习的数字、模拟电子技术、单片机原理及应用等课程知识,加深对各门课程及相互关系的理解,并成功使用了Keil 、Protel 99se和Proteus 三款电子软件,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。

当自己不懂得时候不要逃避要面对困难,自己想办法总会解决的。办法永远比困难多! 相信自己,要安慰,踏实。

参考文献

[1]刘焕平,童一凡. 单片机原理及应用, 北京邮电大学出版社

[2]万光毅,严义, 邢春香. 单片机实验与实践教程, 北京航空航天大学出版社

[3]张迎新. 单片机中级教程,北京航空航天大学出版社

[4]丁元杰. 单片机原理与应用,机械工业出版社

[5]孙育才.MCS-51系列单片微型计算机及其应用,东南大学出版社

致 谢

由于编程能力的有限和所学知识的局限性,在这个程序和设计系统中只实现了所有的基本要求和部分的高级要求,而且这其中还有许多不完善的地方,有时在上翻和下翻时会出现一些问题,这说明我在这方面还存在着很多不足,知识不够完备和系统,在以后的学习中还有待提高。希望老师能在以后的学习和生活中对我多加指导,促使我能取得更大的进步。

感谢童老师,是他严谨的作风一直不断激励着我,让我在困难的路上不断前行。通过本次设计使我们的动手能力得到了很大的提高,使我们走出了实践的盲区,为以后工作后的动手打下了坚实的基础。最后感谢老师和同学们的帮助

2012级基于单片机定时闹钟设计专业综合训练

基于单片机定时闹钟设计

学生学号:1204020213 学生姓名: 郝向忠

指导教师: 童一凡

机电工程系

2014年 月 日

2012级基于单片机定时闹钟设计专业综合训练

基于单片机定时闹钟设计

石家庄职业技术学院机电系 郝向忠 邮编 050081

摘 要

随着科学技术的不断发展 , 人们对时间计量的要求越来越高 。在当今社会,电子时钟已经得到相当广泛的应用,产品多样,发展更是多元化。本作品是以STC89C51单片机作为主控芯片,使用12MHZ 的晶振, 产生时间信息,时间精确。在其基础上外围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及数码管显示。键盘采用独立连接式。还有定时报警系统,即定时时间到,通过扬声器发出报警声,提示预先设定时间时间到,从而起到定时作用。

关键字 按键 、单片机、 汇编

目 录

1 设计课题任务、功能要求说明及总体方案介绍.........................4 1.1 设计课题任务................................................4 1.2 功能要求说明................................................4 1.3 总体方案介绍及工作原理说明..................................4 2 硬件系统设计.....................................................5

2. 1 各模块功能选择与设计........................................6 2. 2 电路原理图...............................................8 2. 3 元器件清单.................................................9 3 软件系统的设计.................................................9

3. 1 单片机资源分配情况......................................9 3. 2 软件系统程序流程框图................................10 3. 3 软件系统各模块功能简述 ......................................12 3. 4 软件系统程序清单..........................................12 4 设计结论、仿真过程及设计体会.........................20

4. 1 设计结论及使用说明.......................................21 4. 2 仿真过程.................................................20 4. 3 设计体会................................................24 参考文献...........................................................25 致谢...............................................................25

1 设计课题任务、功能要求说明及总体方案介绍

1.1 设计课题任务

设计一个单片机控制的电子闹钟系统,利用单片机的定时器/计数器定时和记数的原理,结合显示电路、用六个LED 数码管以及按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行闹时,同时数码管能够正确地显示时间。 1.2 功能要求说明

1.正常状态下,数码管显示当前时间。当定时开关按下时,启动定时功能;启动定时后,若定时时间到,则蜂鸣器响30秒。

2.默认定时时间是12:00:00。定时时间可以用开关设定。 3.当时间不准确时,可以按动校时开关进行校时。 * 4.允许自己增加功能 1.3 总体方案介绍及工作原理说明

本设计利用AT89S52单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.4口作数码管显示输出,6个按键S2至S7分别依次接在P3.3至P3.7口线,硬件电路基本原理图如图1.1所示。

复位电路

按键模块

单片机显示模块

时钟电路电源电路

图1.1 闹钟硬件电路基本原理图

2012级基于单片机定时闹钟设计专业综合训练

2 硬件系统设计

2.1 各模块功能选择与设计 2.1.1 显示电路的选择与设计 数码管显示电路

单片机中通常使用7段LED ,LED 是发光二极管显示器的缩写。LED 显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,颜色鲜艳,配臵灵活与单片机接口方便而得到广泛应用。LED 显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。LED 显示器有多种形式,如:“米”字型显示器,点阵显示器和七段数码显示器等,在单片机系统中使用最多的是七段数码显示器

2012级基于单片机定时闹钟设计专业综合训练

LED 七段数码显示器由8个发光二极管组成显示字符,根据内部发光二极管

的连接形式不同,LED 有共阴极和共阳极两种,如图3所示: 采用高亮共阴型数位数码管,为示区别,显示秒的两个数码管个头较小,另外4个较大。共阴数码管连接线路如下:一般用7个发光二极管构成显示数字和符号,另外还用一段发光二极管显示小数点。这种显示器一般分为两种,共阳极显示器和共阴极显示器,共阳极显示器是把每个二极管的正端连在一起,共阴极显示器是把每个二极管的阴极连在一起。一只显示器是有8个发光二极管构成,当把某段加正向电压时,则该段所对应的笔划亮,不加正向电压则暗,为了保护各段不受损坏需要加限流电阻,无论是共阳极显示器还是共阴极显示器,它的8段排列顺序都是一样的:A 段、B 段、C 段、D 段、E 段、F 段、G 段和DP 段。在单片机中通常使用7段LED 。

段驱动

八位数码显示

AT89S52

位驱动

图2.1 显示电路基本原理图

动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。

2.1.2 按键电路的选择与设计

当按键没有按下时,单片机的I/O口直接连接电源,因此需要接上拉电阻来进行限流,本设计中选取阻值为470Ω 的电阻作为上拉电阻. 具体设计如图2.2所示

2.1.3 时钟电路的选择与设计

单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中AT89C51单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz ~12MHz 之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF ~100pF 之间取值。AT98S51单片机的时钟电路如图2所示。

2.1.4 复位电路的选择与设计

标准AT89S52不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因此必须借助于外接阻容支路来增加延时环节,如图2.4(a)所示。其实,外接电阻R 还是可以省略的

在每次单片机断电之后,须使延时电容C 上的电荷立刻放掉,以便为随后可能在很短的时间内再次加电作好准备。否则,在断电后C 还没有充分放电的情况下,如果很快又加电,那么RC 支路就失去了它应有的延迟功能。因此,在图2.4(a)的基础上添加一个放电二极管D ,上电复位延时电路就变成了如图2.4(c)所示的改进电路。也就是说,只有RC 支路的充电过程对电路是有用的,放电过程不仅无用,而且会带来潜在的危害。于是附加一个放电二极管D 来大力缩短放电持续时间,以便消除隐患。二极管D 只有在单片机断电的瞬间(即VCC 趋近于0 V ,可以看作VCC 对地短路)正向导通,平时一直处于反偏截止状态。

手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。

本设计采用上电且开关复位电路,如图2.5所示上电后,由于电容充电,使RST 持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST 持续一段时间的高电平,从而实现上电且开关复位的操作。

2.1.5 音响报警电路

在AT89C51外围的一个管口上加蜂鸣器,通过软件与硬件的结合可实现定时闹钟功能

2012级基于单片机定时闹钟设计专业综合训练

2.2 电路原理图

2.3 元器件清单

3 软件系统的设计

3.1 单片机资源分配情况

P0.7---P0.0段控线, 接LED 的显示段 P2.7---P2.0位控线

P3.3---P3.7 6个按键S6至S1

3.3 软件系统程序流程框图

3.3 软件系统各模块功能简要介绍

TIME_1MS(定时1ms 子程序)

KEY(键扫描子程序)

KEYCHULI(P1口数据处理子程序)

3.4 软件系统程序清单

ORG 0000H

LJMP MAIN ;主程序跳转

ORG 000BH

LJMP T0 ;T0跳转

ORG 001BH

LJMP T1INT ;T1跳转

MAIN:MOV SP,#70 ;堆栈初始化

MOV TMOD,#11H ;T0.T1方式1工作

MOV TL1,#0EFH ;T1初值

MOV TH1,#0D8H

MOV TL0,#00h ;T0初值

MOV TH0,#0EEH

MOV IE,#8aH ;开中断

MOV 39H,#30

MOV R7,#100 ;中断次数(计时)

MOV R5,#6 ;位个数

MOV R4,#01H

MOV 30H,#0 ;时钟缓冲区

MOV 31H,#0

MOV 32H,#0

MOV 33H,#0

MOV 34H,#2

MOV 35H,#1

MOV 40H,#0 ;闹钟缓冲区

MOV 41H,#0

MOV 42H,#0

MOV 44H,#6

MOV 45H,#0

MOV DPTR,#TAB

SETB TR1 ;启动定时器1

SETB TR0 ;启动定时器0

MainLoop:

MOV R3,39H

CJNE R3,#0, YU

MOV 39H,#30 ;蜂鸣器叫30S

CLR 20H.0 ;关蜂鸣器

CLR 20H.1 ;关闹钟

YU:JB P3.7,CheckPP

LCALL Delay2

JB P3.7,CheckPP ;闹时设臵键按下了吗?没有则转去检测秒设臵键篇p3.4 SETB 20H.1 ;开闹钟

CALL NAOZHONG

CheckPP: MOV 46H,#30H

JB P3.4,CheckPQ ;分设臵键按下了吗?没有则转去检测小时设臵键 CALL Delay2 ;

JB P3.4,CheckPQ

INC 32H

MOV A,32H

CJNE A,#10,NotOver1 ;到10分钟了吗?

MOV 32H,#0

NotOver1: ;以下等待按键释放及防抖动

JNB P3.4,$

CheckPQ:

JB P3.3,CheckPQ1 ;分十位设臵键按下了吗?没有则转去闹时状态检测

JB P3.3 ,CheckPQ1

INC 33H

MOV A,33H

CJNE A,#6,NotOver2

MOV 33H,#0

NotOver2:

;以下等待按键释放及防抖动

JNB P3.3,$

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CheckPQ1:

JB P3.5,CheckPQ2 ;小时个位设臵键按下了吗?

CALL Delay2

JB P3.5,CheckPQ2

INC 34H

MOV A,35H

CJNE A,#0,JU1

MOV A,34H

CJNE A,#10,NotOver21

MOV 34H,#0

MOV A,35H

JU1: CJNE A,#1,JU

MOV A,34H

CJNE A,#10,NotOver21

MOV 34H,#0

JU:CJNE A,#2,NotOver21

MOV A,34H

CJNE A,#4,NotOver21

MOV 34H,#0 ;到24小时则将小时清0

NotOver21:

;以下等待按键释放及防抖动

JNB P3.5,$

小时调整逻辑;*********************************

********************************************

CheckPQ2:

JB P3.6,CheckAlarm ;小时十位设臵键按下了吗?没有则转去闹时状态检测 CALL Delay2

JB P3.6,CheckAlarm

INC 35H

MOV A,34H

CJNE A,#0,E1

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E1:CJNE A,#1,E2

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E2:CJNE A,#2,E3

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E3:CJNE A,#3,E4

MOV A,35H

CJNE A,#3,NotOver22

MOV 35H,#0

E4:CJNE A,#4,E5

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E5:CJNE A,#5,E6

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E6:CJNE A,#6,E7

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E7:CJNE A,#7,E8

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E8:CJNE A,#8,E9

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0

E9:CJNE A,#9,NotOver22

MOV A,35H

CJNE A,#2,NotOver22

MOV 35H,#0 ;到24小时则将小时清0

NotOver22:

;以下等待按键释放及防抖动

JNB P3.6,$

CheckAlarm: JNB 20H.1,LL ;判闹钟

LCALL BIJIAO ;调用闹钟子程序

LL: AJMP MainLoop

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X显示程序;;;;;;;;;;;;;;;;;; T0:MOV TL0,#00H ;T0初值

MOV TH0,#0EEH

DJNZ R5,T01 ;一轮扫描是否结束

MOV R5,#6 ;动态扫描位数

MOV R4,#01H ;动态扫描初值

MOV R0,46H ;动态扫描缓冲区选择

T01:MOV P0,#00H ;关显示

MOV A,@R0 ;取首地址

MOVC A,@A+DPTR ;查表

MOV P2,A ;送段码

MOV P0,R4 ;送位码

MOV A,R4 ;位偏移

RL A

MOV R4,A

INC R0

RETI

T1INT:

MOV TL1,#0EFH ;T1初值

MOV TH1,#0D8H

DJNZ R7,N

MOV R7,#100 ;1秒计时

jnb 20h.0, bt01

cpl p1.7 ;蜂鸣器叫

cpl p1.0

DEC 39H

bt01: INC 30H ;秒个位加1

MOV R3,30H

CJNE R3,#10,N

MOV 30H,#0

INC 31H ;秒十位加1

MOV R3,31H

CJNE R3,#3,TTT

CLR 20H.0

TTT:CJNE R3,#6,N

MOV 31H,#0

INC 32H ;分个位加一

MOV R3,32H

CJNE R3,#10,N

MOV 32H,#0

INC 33H ;分十位加一

MOV R3,33H

CJNE R3,#6,N

MOV 33H,#0

INC 34H ;时个位加一

MOV R3,34H

CJNE R3,#4,N1

MOV R3,35H

CJNE R3,#2,N1

LJMP N2

N1:CJNE R3,#10,N

MOV 34H,#0

INC 35H ;时十位加一

LJMP N

N2:MOV 30H,#0 ;计时24小时清0

MOV 31H,#0

MOV 32H,#0

MOV 33H,#0

MOV 34H,#0

MOV 35H,#0

N:RETI

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

Delay1: MOV R5,#5 ;延时间产生1s ,扬声器的震动间隔时间

de3:MOV R6,#200

de2:MOV R7,#250

DJNZ R7,$

DJNZ R6,dE2

DJNZ R5,dE3

RET

Delay2: MOV R6,#10 ;延时产生15ms ,按键防止抖动时间

de4:MOV R7,#245

DJNZ R7,$

DJNZ r6,de4

RET

;********************************N闹钟调整子程************************************************

NAOZHONG: INC 60H ;单元加一,,选取首地址

MOV A,60H

MM1: CJNE A,#1,MM

MOV 46H,#40H ;闹钟首地址

MM: CJNE A,#0,M2

MOV 46H,#30H ;时钟首地址

M2:CJNE A,#2,MM1

MOV 60H,#0

NAOZHONGaa:JB P3.4,CheckPQa ;分设臵键按下了吗?没有则转去检测小时设臵键 CALL Delay2 ;

JB P3.4,CheckPQa

INC 42H

MOV A,42H

CJNE A,#10,NotOver1a ;到10分钟了吗?

MOV 42H,#0

NotOver1a: ;以下等待按键释放及防抖动

JNB P3.4,$

CheckPQa:

JB P3.3,CheckPQ1a ;小时设臵键按下了吗?没有则转去闹时状态检测

CALL Delay2

JB P3.3 ,CheckPQ1a

INC 43H

MOV A,43H

CJNE A,#6,NotOver2a

MOV 43H,#0

NotOver2a:

;以下等待按键释放及防抖动

JNB P3.3,$

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CheckPQ1a:

JB P3.5,CheckPQ2a ;小时设臵键按下了吗?

CALL Delay2

JB P3.5,CheckPQ2a

INC 44H

MOV A,45H

CJNE A,#0,JU1a

MOV A,44H

CJNE A,#10,NotOver21a

MOV 44H,#0

MOV A,45H

JU1a:CJNE A,#1,JUa

MOV A,44H

CJNE A,#10,NotOver21a

MOV 44H,#0

JUa:CJNE A,#2,NotOver21a

MOV A,44H

CJNE A,#4,NotOver21a

MOV 44H,#0 ;到24小时则将小时清0

NotOver21a: ;以下等待按键释放及防抖动

JNB P3.5,$

CheckPQ2a:

JB P3.6,kka ;小时设臵键按下了吗?

CALL Delay2

JB P3.6,kka

INC 45H

MOV A,44H

CJNE A,#0,E1a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E1a:CJNE A,#1,E2a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E2a:CJNE A,#2,E3a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E3a:CJNE A,#3,E4a

MOV A,45H

CJNE A,#3,NotOver22a

MOV 45H,#0

E4a:CJNE A,#4,E5a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E5a:CJNE A,#5,E6a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E6a:CJNE A,#6,E7a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E7a:CJNE A,#7,E8a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E8a:CJNE A,#8,E9a

MOV A,45H

CJNE A,#2,NotOver22a

MOV 45H,#0

E9a:CJNE A,#9,NotOver22a

MOV A,35H

CJNE A,#2,NotOver22a

MOV 35H,#0 ;到24小时则将小时清0

NotOver22a:

;以下等待按键释放及防抖动

JNB P3.6,$

kkaa:ljmp NAOZHONGaa

kka:JB P3.2,kkaa ;[**************]00返回计时显示[1**********]00

RET

BIJIAO : ;比较计时闹时时间到

MOV A,35H

CJNE A,45H,BI3

MOV A,34H

CJNE A,44H,BI3

MOV A,33H

CJNE A,43H,BI3

MOV A,32H

CJNE A,42H,BI3

setb 20h.0 ;启动蜂鸣器标志位

BI3:RET

4 设计结论、仿真过程及设计体会

4.1 设计结论及使用说明

4.1.1 设计结论

本系统就是充分利用了AT89S52芯片的I/O引脚。该闹钟上电或按键复位后能自动显示系统提示符“12.00.00”,进入准备工作状态。闹钟具有调时、定时、报警等功能

4.1.2 使用说明

K1:跳出闹钟定时

K2:分十位调整

K3:分个位调整

K4:时十位调整

K5:时个位调整

K5:进入闹钟调整

4.2仿真过程

在仿真过程中遇到蜂鸣器不发声,不是程序问题,是元器件加载错误。灯光太暗,原因是限流电阻太大!

4.4 设计体会

我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。 这次单片机课程设计我们历时一个星期,时间虽然不算长,但经过这一个星期的实践和体验下来,我们综合那些理论知识来运用到设计和创新,那些原本感觉枯燥乏味的程序在这次课程设计后,我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。

通过本次设计,复习巩固我们以前所学习的数字、模拟电子技术、单片机原理及应用等课程知识,加深对各门课程及相互关系的理解,并成功使用了Keil 、Protel 99se和Proteus 三款电子软件,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。

当自己不懂得时候不要逃避要面对困难,自己想办法总会解决的。办法永远比困难多! 相信自己,要安慰,踏实。

参考文献

[1]刘焕平,童一凡. 单片机原理及应用, 北京邮电大学出版社

[2]万光毅,严义, 邢春香. 单片机实验与实践教程, 北京航空航天大学出版社

[3]张迎新. 单片机中级教程,北京航空航天大学出版社

[4]丁元杰. 单片机原理与应用,机械工业出版社

[5]孙育才.MCS-51系列单片微型计算机及其应用,东南大学出版社

致 谢

由于编程能力的有限和所学知识的局限性,在这个程序和设计系统中只实现了所有的基本要求和部分的高级要求,而且这其中还有许多不完善的地方,有时在上翻和下翻时会出现一些问题,这说明我在这方面还存在着很多不足,知识不够完备和系统,在以后的学习中还有待提高。希望老师能在以后的学习和生活中对我多加指导,促使我能取得更大的进步。

感谢童老师,是他严谨的作风一直不断激励着我,让我在困难的路上不断前行。通过本次设计使我们的动手能力得到了很大的提高,使我们走出了实践的盲区,为以后工作后的动手打下了坚实的基础。最后感谢老师和同学们的帮助


相关文章

  • 定时计数器设计
  • 设计数字钟,内有4组可设置的定时开/关,控制一路开关量输出.定时开关的设置分为单次操作(2011年6月25日8:00开2011年6月26日18:00关) ,周期操作(如周三8:00 开,周四16:00关).数码管显示时间(单位秒)与设置值( ...查看


  • 单片机电子钟论文
  • 郑州科技学院 专科毕业设计(论文) 题 目 ____________________ ____________________ 学生姓名 专业班级 学 号 所 在 系 指导教师 完成时间 年 月 日 目 录 1 引言............ ...查看


  • 带有秒表功能数字时钟的设计_毕业论文
  • 电子系统设计应用论文 题 目: 带有秒表功能数字时钟的设计 专 业: 班 级: 学生姓名: 带有秒表功能数字时钟的设计 专业: 电子信息工程 学号:20111xxx 姓名:石头 指导老师:xxx 摘要 :本次设计以AT89C52芯片为核心, ...查看


  • 电气工程与自动化毕业论文论文
  • 黑龙江信息技术职业学院 毕业设计(论文)说明书 系 部 专 业 年 级姓 名 指导教师 年 月 日 一.原始依据(包括设计或论文的工作基础.研究条件.应用环境.工作目的等) 二.参考文献 [1] 李叶紫.王喜斌.胡辉.孙东辉.编著MCS_5 ...查看


  • 带整点报时与闹钟功能的数字钟
  • 目录 Ⅰ.设计任务与要求............................................................................. 错误!未定义书签. 1.1 基本设计任务 . ....... ...查看


  • 基于单片机的智能台灯设计 1
  • 基于单片机的智能台灯设计 The design of Intelligent Table Lamp Based on Microcomputer 制作人员: 2015.5.14 摘要 随着科技的发展,单片机渗透到我们生活的各个领域, 几乎很 ...查看


  • 1602电子时钟电路_原理图_PCB图
  • XXXXX学院 电 子 线 路 课 程 设 计 [带LCD显示的电子时钟] 班级:XX 姓名:XX 学号:XX 指导老师:XX XX年XX月XX 日 摘要 在当代繁忙的学习与生活中,数字钟已成为人们日常生活中必不可少的 必需品,被广泛用于个 ...查看


  • 单片机课程设计--数字钟
  • 单片机课程设计--数字钟 一.设计目的及意义 (1)巩固.加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力: (2)培养针对课题需要,选择和查阅有关手册.图表及文献资料的自学能力,提高组成系统.编程.调试的 ...查看


  • 51单片机电子时钟课程设计实验报告
  • <单片机原理与应用>课程设计 总结报告 题 目:单片机电子时钟的设计与实现 设计人员: 学 号: 班 级: 指导老师: 日 期: 目 录 1. 题目与主要功能要求„„„„„„„„„„„„„„2 2. 整体设计框图及整机概述„„„ ...查看


热门内容