51单片机定时闹钟设计

更新时间:2023-12-16 08:16:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机的定时闹钟

摘要

本设计是简单定时闹钟系统,不仅能实现系统要求的功能:(1)能显示时时-分分-秒秒,(2)能设定和修改定时时间,(3)定时时间到后能发出报警声;而且还有附加功能,即还能设定和修改当前所显示的时间。

本设计采用单片机AT89C51作为核心元件,12MHZ晶振,由P0口输出所要显示的字形段码,由P2口输出字位信号。在其基础上扩展外围芯片与电路,附加时钟电路及LED电路。LED采用共阴极接法,低电平有效选中相应的LED。

单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。为了进一步的熟悉并掌握单片机的应用及开发,认真的做好此次课程设计非常必要。

一个单片机的定时闹钟系统离不开软件和硬件,硬件是软件的依托,软件是硬件的内核。设计硬件电路时应该先设计一个单片机的最小系统,它是单片机应用系统的设计基础,然后在此基础上添加外围器件,如显示器、按键等构成闹钟的硬件电路图。在设计应用程序时遵循模块化的设计方法,在明确了设计方向之后按照分成的几大模块分别画出流程图,然后根据流程图写出程序,在每个模块编写好之后分别调试、修改、完善。最后在主程序下调用再次调试、修改。

软硬件都设计好之后在Proteus环境下仿真,看它们是否配套,只有在Proteus下仿真没有出现问题才能说明设计的定时闹钟成功了。本次设计严格按照上面的步骤,经过多次的修改、完善后终于可以在Proteus下很好的运行,设计成功。

通过这次设计让我更深入了解单片机基本电路、如何控制和定时器和中断编程的基本方法,从而锻炼了我学习、设计和开发软、硬件的能力。

2

单片机的定时闹钟

目录

1.概述............................................................. 4

1.1单片机简介................................................... 4 1.2 本设计简介 .................................................. 5 2.系统总体方案及硬件设计........................................... 6

2.1本设计总体方案............................................... 6 2.2单片机AT89C51简介........................................... 6 2.3 数码管显示电路 .............................................. 9 2.4 本设计输入输出电路 ......................................... 11 3 软件设计......................................................... 13

3.1系统软件设计说明............................................ 13

3.2 LED的编程思想.............................................. 13 3.3 程序调试 ................................................... 13 3.4 程序流程图 ................................................. 14 4 Proteus软件仿真 ................................................. 16

4.1仿真步骤.................................................... 16 4.2 仿真过程中出现的错误及解决措施 ............................. 16 4.3仿真结果.................................................... 16 (1)设定当前时间 .............................................. 17 (2)设定定时时间 .............................................. 18 5 课程设计体会..................................................... 23 参考文献........................................................... 24 附1:源程序代码 ................................................... 25 附2:系统原理图 ................................................... 34

3

单片机的定时闹钟

1.概述

1.1单片机简介 ? 单片机基本概念

单片机是一种特殊的计算机,它是在一块半导体上集成了CPU、存储器、以及输入输出接口电路,这种芯片被称为单片微型计算机,简称单片机。由于单片机的集成度高、功能强、通用性好,贴别是他具有体积小、重量轻、能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等特点,使的单片机迅速得到了推广,目前已成为测量控制应用系统中的优选机种和新电子产品的关键部件。 ? 单片机产生与发展

单片机是应工业测控系统数字化、智能化的迫切要求提出的。超大规模集成电路的出现,通用CPU及其外围电路技术的发展成熟,伟大偏激的诞生和发展提供了可能。单片机的发展完全从工业测控对象、环境、接口等特点出发,不断增强其控制功能,保证在工业测控环境中的可靠性,器接口界面也是按照能灵活、方便的构成工业测控用计算机系统而设计的。它的出现标志着计算机技术在工业领域中的应用开始走向完善与成熟。

8位单片机从1976年开始至今,其技术已有了巨大的发展,目前仍是单片机的主流机型。其发展阶段大致分为单片机探索阶段、单片机完善阶段、MCU形成阶段和MCU完善阶段。 ? 单片机的发展方向

(1)主流机型发展趋势 (2)全盘CMOS化趋势 (3)RISC体系结构的大发展 (4)大力发展专用性单片机 (5)单片机中的软件嵌入 ? 单片机的应用领域

(一)单机应用 (1)智能产品 (2)智能仪表 (3)测控系统

4

单片机的定时闹钟

(4)智能接口 (二)多机应用 (1)多功能弥散系统 (2)并行多机控制系统 (3)局部网络系统 ? 单片机分类

(1)按应用领域 (2)按通用性 (3)按总线结构分 (4)按位数分类 1.2 本设计简介

? 课程设计的目的和意义

课程设计是在学完《单片机原理及接口技术》课程之后综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下基础. ? 课程设计的要求

1)能显示:时时—分分—秒秒 2)能够设定定时时间、修改定时时间 3)定时时间到能发出报警声 ? 课程设计的内容

这一次课程设计,所设计的是一个定时闹钟,能显示时-分-秒,能够设计定时时间,修改定时时间,并且定时时间到了能发出报警声。

设计的部分分为软件及硬件,软件部分写出闹钟的工作方式以及它是如何工作的,而硬件部分是软件的载体,画出正确的电路图然后在软件的控制下才能使设计的定时闹钟正常工作。

5

单片机的定时闹钟

2.系统总体方案及硬件设计

2.1本设计总体方案

本设计使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。

本系统采用单片机AT89C51作为本设计的核心元件,利用7段共阴LED作为显示器件。接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,扬声器发出报警声,提示预先设定时间电器的起停时间到,从而控制电器的起停。

电路由下列部分组成:时钟电路、复位电路、控制电路、LED显示,报警电路,芯片选用AT89C51单片机。 2.2单片机AT89C51简介

AT89C51是一个低电压,高性能CMOS型8位单片机,片内含4KB的可反复擦写的Flash只读程序存储器(ROM)和128B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51为用户提供了许多高性价比应用场合,可灵活应用于各种控制领域。

AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

主要特性: ·与MCS-51 兼容

·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定

6

单片机的定时闹钟

·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 引脚使用说明: VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当 P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下所示:

管脚??备选功能 P3.0??RXD(串行输入口)

7

单片机的定时闹钟

P3.1?? TXD(串行输出口) P3.2??/INT0(外部中断0) P3.3??/INT1(外部中断1) P3.4??T0(记时器0外部输入) P3.5??T1(记时器1外部输入) P3.6??/WR(外部数据存储器写选通) P3.7??/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

ST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度

8

单片机的定时闹钟

图2-1

2.3 数码管显示电路

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

LED七段数码显示器由8个发光二极管组成显示字符,根据内部发光二极管的连接形式不同,LED有共阴极和共阳极两种,本系统采用共阴极。

LED的结构及连接如图2-2所示

9

单片机的定时闹钟

图2-2

LED显示原理

当选用共阴极的LED时,所有发光二极管阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。因此要显示某字形就应使此字形的相应段的二极管点亮,实际上就是送一个用不同电平组合代表的数据字来控制LED的显示,此数据为字符的段码或称为字型码。字型码与LED显示器各段的关系为

D7 dp D6 g D5 f D4 e D3 d 表2-1

dp为小数点,字符0、1、2??F的段码如表2-2所示

字符 段码(共阴) 段码(共阳) 0 1 2 3 4 5 3FH 06H 5BH 4FH 66H 6DH COH F9H A4H B0H 99H 92H D2 c D1 b D0 a 10

单片机的定时闹钟

6 7 8 9 A B C D E F - . 熄灭 7DH 07H 7FH 6FH 77H 7CH 39H 5EH 79H 71H 40H 80H 00H 表2-2

下图是本系统采用的共阴极LED七段数码显示器:

82H F8H 80H 90H 88H 83H C6H A1H 86H 8EH BFH 7FH FFH 图2-3 2.4 本设计输入输出电路

该系统输入电路采用的是P1口以及4个上拉电阻,其阻值为10千欧。其图如下:

11

单片机的定时闹钟 (1)设定当前时间

当需要设定当前时间时,按一下S4键,进入时间设定状态,按一下S2,分钟加1;按一下S3,小时加1。如此反复来设定当前时间。调好时间后按S1退出当前时间设定状态。

开始仿真时,显示如图4-1所示:

图4-1

先按S4,再按S2时,如图4-2所示:

图4-2

先按S4,再按S2,再按S3时,如图4-3所示:

17

单片机的定时闹钟

图4-3

如图4-4:设定当前时间是02:02:54。

图4-4

(2)设定定时时间

当要设定定时时间时,按下S3,进入定时时间设定状态,按一下S2,小时加1;按一下S4,分钟加1。如此反复来设定要设定的定时时间。设好后,按下S1退出定时时间设定状态。

开始仿真时,直接按S3进行闹钟设定,如图4-5所示:

18

单片机的定时闹钟

图4-5

按S2后,如图4-6所示:

图4-6

按S4后,如图4-7所示:

图4-7

如图4-8所示图:设定定时时间为07:06 .

19

单片机的定时闹钟

图4-8

图4-9是达到设定时间的仿真图:

图4-9

20

单片机的定时闹钟

与图4-8不同的是:

(1)当到达时间07:05:59时,“0706”这几个字汇不停的闪烁,且字型管脚全为高电平,如图4-11所示.

图4-10

图4-11

(2)扬声器发出报警声,且扬声器两端同时变为高电平,而在图4-8中扬声器一端为高电平,另一端为低电平。

图4-12 图4-8中扬声器状态

21

单片机的定时闹钟

LJMP LOOP

M2:JB P1.4,M4

LCALL LOOKATIME ;调用设定闹钟时间程序

M4:LJMP LOOP

DELAY:MOV R4,#030H ;延时时间 DL00:MOV R5,#0FFH DL11:MOV R6,#9H DL12:DJNZ R6,DL12 DJNZ R5,DL11

DJNZ R4,DL00

RET

;×××××设定时间程序:××××× SETTIME:

L0:LCALL DISPLAY1 MM1: JB P1.2,L1 MOV C,P1.2 JC MM1

LCALL DELAY1 JC MM1

MSTOP1: MOV C,P1.2

JNC MSTOP1 LCALL DELAY1 MOV C,P1.2 JNC MSTOP1

INC 22H MOV A,22H

CJNE A,#18H,GO12 MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H LJMP L0

L1:JB P1.3,L2 MOV C,P1.3 JC L1

LCALL DELAY1 JC L1

MSTOP2: MOV C,P1.3

;调用时间允许程序 ;调用延时 ;判断P1.2是否释放?释放则继续 ;调用延时 ;小时增加1 ;判断小时是否到24时?未到继续循环 ;小时复位 ;延时 27

单片机的定时闹钟

JNC MSTOP2 ;判断P1.3是否释放?释放则继续 LCALL DELAY1 ;调用延时 MOV C,P1.3 JNC MSTOP2

INC 21H ;分钟增加一 MOV A,21H

CJNE A,#3CH,GO11

MOV 21H,#00H ;分钟复位 MOV 32H,#00H MOV 33H,#00H LJMP L0

GO11:MOV B,#0AH DIV AB MOV 32H,B MOV 33H,A LJMP L0

GO12: MOV B,#0AH DIV AB MOV 34H,B MOV 35H,A LJMP L0

L2:JB P1.4,L0 MOV C,P1.4 JC L2

LCALL DELAY1 MOV C,P1.4 JC L2

STOP1: MOV C,P1.4 JNC STOP1

LCALL DELAY1 MOV C,P1.4 JNC STOP1 LJMP LOOP

;×××××设置闹钟时间×××××

;将A中的内容分成高低两部分 调用延时 ;判断按键P1.4是否释放? ;调用延时 28

; 单片机的定时闹钟

MOV C,P1.3 JC MM2

LCALL DELAY1 SETATIME:LCALL DISPLAY2 ;调用时间运行 N0:LCALL DISPLAY2

MM2: JB P1.3,N1 ;判断P1.3是否按下?

JC MM2

MSTOP3: MOV C,P1.3 JNC MSTOP3

LCALL DELAY1 MOV C,P1.3 JNC MSTOP3

INC 24H MOV A,24H

CJNE A,#24,GO22 MOV 24H,#00H MOV 38H,#00H MOV 39H,#00H LJMP N0

N1:JB P1.1,N2 MOV C,P1.1 JC N1

LCALL DELAY1 JC N1

MSTOP4: MOV C,P1.1 JNC MSTOP4

LCALL DELAY1 MOV C,P1.1 JNC MSTOP4

INC 23H MOV A,23H

CJNE A,#60,GO21 MOV 23H,#00H MOV 36H,#00H MOV 37H,#00H

LJMP N0 ;判断P1.3是否释放? ;设定小时增加1 ;时钟复位 ;判断P1.1是否按下? ;判断P1.1是否释放? ;设定闹钟分钟增加1 ;判断A是否到60分? ;分钟复位 29

单片机的定时闹钟

GO22: MOV B,#0AH GO21:MOV B,#0AH ;将A中的内容分成高低两部分 DIV AB MOV 36H,B MOV 37H,A LJMP N0

DIV AB MOV 38H,B MOV 39H,A LJMP N0

N2:JB P1.4 ,N0 MOV C,P1.4 JC N2

LCALL DELAY1 MOV C,P1.4 JC N2

STOP2: MOV C,P1.4 JNC STOP2

LCALL DELAY1 MOV C,P1.4 JNC STOP2 LJMP LOOP

TIMEPRO:MOV A,21H MOV B,23H

CJNE A,B,BK MOV A,22H MOV B,24H

CJNE A,B,BK SETB 25H.0 MOV C,25H.0 JC XX

XX: LCALL TIMEOUT BK:RET TIMEOUT:

X1:LCALL BZ ;判断P1.4是否按下? ;判断P1.4是否释放? ;判断分钟是否运行到设定的闹钟的分钟? ;判断时钟是否运行到设定的闹钟的时钟? ;调用时间闹钟响应程序 ;调用喇叭响应程序 30

单片机的定时闹钟

LCALL DISPLAY2 CLR 25H.0

JB P1.4, X1 ;判断P1.4是否按下? LCALL DELAY CLR 25H.0

LJMP DISPLAY1

BZ: CLR P3.7 ;喇叭响应程序 MOV R7,#250 ;响应延时时间 T2: MOV R6,#124 T3: DJNZ R6,T3

DJNZ R7,T2 SETB P3.7 RET

LOOKATIME:LCALL DISPLAY2 MM: JB P1.4,LOOKATIME MOV C,P1.4 JC MM

LCALL DELAY1 MOV C,P1.4 JC MM STOP3: MOV C,P1.4 JNC STOP3 LCALL DELAY1 MOV C,P1.4 JNC STOP3 LJMP LOOP DELAY1: MOV R4,#14H DL001: MOV R5,#0FFH DL111: DJNZ R5,DL111 DJNZ R4,DL001 RET

;×××××时间运行程序×××××

TIME: PUSH ACC PUSH PSW MOV TH0,#03CH MOV TL0,#0B0H

DJNZ

R2,RET0

;调用时间运行程序 ;判断按键P1.4是否按下 ;时间延时

;现场保护 ;赋初值 31

单片机的定时闹钟

MOV MOV CLR C

INC A ;秒钟自加1

CJNE A,#3CH,GO1 ;判断秒钟是否到60秒? MOV

20H,#0 ;到60秒复位 R2,#14H A,20H

MOV 30H,#0 MOV 31H,#0 MOV

A,21H

INC A CJNE

A,#3CH,GO2 MOV 21H,#0H MOV 32H,#0 MOV 33H,#0 MOV A,22H

INC A CJNE

A,#18H,GO3

MOV 22H,#00H MOV 34H,#0 MOV 35H,#0

AJMP

RET0

GO1:

MOV

20H,A MOV B,#0AH DIV AB MOV 31H,A MOV 30H,B

AJMP RET0

GO2:

MOV

21H,A

MOV B,#0AH DIV AB MOV 33H,A MOV 32H,B

AJMP

RET0

GO3:

MOV

22H,A

MOV B,#0AH DIV AB MOV 35H,A

MOV 34H,B

;分钟自加1

;判断分钟是否到60分?

;到60分复位 ;时钟自加1 ;判断时钟是否到24时?

;到24时复位

32

单片机的定时闹钟

AJMP

RET0

RET0: POP PSW ;恢复现场 POP ACC RETI

;×××××运行部分××××× DISPLAY1: MOV R0,#30H MOV R3,#0FEH

MOV

A,R3

PLAY1: MOV P2,A MOV A,@R0

MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1

MOV P2,#0FFH MOV A,R3

RL A JNB ACC.6,LD1 INC R0 MOV R3,A

LJMP PLAY1 LD1: RET

DISPLAY2: PUSH ACC PUSH PSW MOV R0,#36H

MOV R3,#0FBH

MOV

A,R3

PLAY2: MOV P2,A MOV A,@R0

MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1

MOV P2,#0FFH MOV A,R3 RL A JNB ACC.6,LD2

INC R0

;表首地址送DPTR ;送高电平到P2 ; ;调用查表程序 ;现场保护 ;表首地址送DPTR ;查ASCII特码 ;查表结果送A ;送高电平到P2 33

单片机的定时闹钟

MOV R3,A LJMP PLAY2

LD2: POP PSW ;恢复现场 POP ACC RET

;×××××延时时间××××× DL1: MOV R7,#02H ;延时时间 DL: MOV

R6,#0200H DL6: DJNZ

R6,$ DJNZ R7,DL

RET

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

END

附2:系统原理图

34

单片机的定时闹钟

35

本文来源:https://www.bwwdw.com/article/3ih5.html

Top