基于单片机定时闹钟的设计

本科毕业课程(设计)

(设计目)题:单片机定时闹钟设计

学 院: 明德学院

专 业: 电子信息工程

班 级: 电信12151

学 号: [1**********]1

学生姓名: 袁杰

指导教师: 王许

2015年 6月23号

贵州大学本科毕业课程(设计)

诚信责任书

本人郑重声明:本人所呈交的课程设计,是在指导老师的指导下

独立进行研究所完成。在文本设计中凡引用他人已经发表或未发表

的成果、数据、观点等,均已明确注明出处。

特此声明。

课程(设计)作者签名: 袁杰

日 期: 2015/6/23

摘要

本设计是单片机定时闹钟系统,不仅能实现系统要求的功能,而且还有附加功

能,即还能设定和修改当前所显示的时间。 本次设计的定时闹钟在硬件方面就

采用了AT89C51芯片,用6位LED 数码管来进行显示。LED 用P0口进行驱动,

采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。通过S1、S2、

S3、和S4四个功能按键可以实现对时间的修改和定时,定时时间到喇叭可以发

出报警声。在软件方面采用汇编语言编程。整个定时闹钟系统能完成时间的显

示,调时和定时闹钟、复位等功能,并经过系统仿真后得到了正确的结果。

关键字:单片机、AT89C51、定时闹钟、仿真

Abstract

This design is a single-chip timing alarm system, can not only

realize the function of system requirements, and there are additional

functions, which can set up and modify the display time. Timing alarm

clock this design adopts the AT89C51 chip on the hardware side, with 6

LED digital tube to display. LED P0 export driven, by using dynamic

scanning display, can accurately display always - sub - seconds seconds.

Through the S1, S2, S3, and S4 four function keys can be achieved on the

time changes and timing, timing to the horn can send out alarm sound.

Using assembly language programming in the software. The timing clock

system has functions of time display, timing and timing alarm clock, reset

and other functions, and the system simulation to obtain correct results.

Keywords: single chip microcomputer, AT89C51, alarm clock, simulatio

I

1. 绪论 ······································································································ 1

1.1设计的目的与意义 ························ 1

1.2国内外现状 ··························· 1

1.3 单片机发展趋势 ························· 1

1.4 设计中有哪些难点 ························ 2

1.5 设计步骤···························· 2

2. 硬件设计 ································································································ 3

2.1方案论证 ···························· 3

2.2系统设计原理 ·························· 3

2.3单片机AT89C51简介 ······················· 3

2.4数码管显示电路 ························· 6

2.6喇叭:SPEAKER ·························· 7

3 系统的软件设计 ······················································································· 7

3.1系统的软件设计与说明 ······················ 7

3.2 程序调试···························· 8

3.3 程序流程图 ··························· 8

4. 参考程序 ································································································ 9

5. 致谢 ····································································································· 16

II

1. 绪论

1.1设计的目的与意义

本设计的目的是使学生能够熟练的掌握单片机简单的设计流程,能够合理的设计

出简单易实现的设计,从而让自己对科技的兴趣更浓。在信息时代,计算机的应

用无处不在,带有像单片机一类嵌入式处理器的小型智能化电子产品,已经成为

家用电器的主流,市场需求前景广阔,因此,掌握小型单片机应用系统设计方法,

已成为当今电子应用工程师所必备的技能,定时闹钟具备小型单片机应用系统的

一切要素,其结构简单、成本低廉、走时精确、设置方便,所以智能化方面有广

泛的用途。

1.2国内外现状

单片机是指一个集成在一块芯片上的完整计算机系统。同时集成诸如通讯接口、

定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图

像、网络、复杂的输入输出系统集成在一块芯片。 在单片机(Microcontroller)

出现后,计算机才真正 地从科学的神圣殿堂走入寻常百姓家,成为广大工程技

术人员现代 化技术革新,技术革命的有利武器。目前,单片机在民用和工业测 控

领域得到最广泛的应用。彩电,冰箱,空调,录像机,VCD ,闹钟,遥控器,游

戏机,电饭煲等无处不见单片机的影子,单片机早已深深 地溶入我们每个人的

生活之中。

单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我

们的生活带来舒适和方便的同时,在工农业生产 上也极大地提高了生产效率和

产品质量。

1.3 单片机发展趋势

目前,单片机正朝着高性能和多品种方向发展,其发展趋势将是进一步向着CMOS

化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发

展。下面是单片机的主要发展趋势:

(1) CMOS化

近年,由于CHMOS 技术的进小,大大地促进了单片机的CMOS 化。CMOS 芯片除了

低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。

这也是今后以80C51取代8051为标准MCU 芯片的原因。因为单片机芯片多数是

采用CMOS (金属栅氧化物)半导体工艺生产。CMOS 电路的特点是低功耗、高密

度、低速度、低价格。采用双极型半导体工艺的TTL 电路速度快,但功耗和芯片

面积较大。随着技术和工艺水平的提高,又出现了HMOS (高密度、高速度MOS )、

CHMOS 工艺以及CHMOS 和HMOS 工艺的结合。目前生产的CHMOS 电路已达到LSTTL

的速度,传输延迟时间小于2ns ,它的综合优势已大于TTL 电路。因而,在单片

机领域,CMOS 电路正在逐渐取代TTL 电路。

(2) 低功耗化

单片机的功耗已从mA 级,甚至1uA 以下;使用电压在3~6V之间,完全适应电池

工作。低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗

干扰能力以及产品的便携化。

1

(3) 低电压化

几乎所有的单片机都有WAIT 、STOP 等省电运行方式。允许使用的电压范围越来

越宽,一般在3~6V范围内工作。低电压供电的单片机电源下限已可达1~2V。目

前0.8V 供电的单片机已经问世。

(4) 低噪声与高可靠性

为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容

性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术施。 1.4 设计中有哪些难点

在设计的过程中遇到问题是不可避免的,我遇到了很多问题,如下所示;

1. 做实物时无法驱动数码管显示,后来了解到可以加锁存器,如74LS253,74LS573

等等,还可以加三极管用来加大电流。当然如果换成液晶显示屏的话就不需要考

虑驱动不了的问题了。

2. 烧程序时没发烧进去,需要改变最高和最低波特率,才能按照步骤把程序烧进

去。

3. 复位电路在实物中可以运行,但是在仿真中不能正常运行。目前还未找到原因。

1.5 设计步骤

1. 上网收集资料(6月18)

2. 进行对比分析(6月19)

3. 勾出自己的设计流程图(6月20)

4. 完成设计(6月21至6月23)

2

2. 硬件设计

2.1方案论证

显示器的选择方案论证:

方案一:液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电

池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。 方案二:用数码管作为显示器。数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。 由于数码管使用起来较为方便,在夜间看时间也很方便,因此我选择了方案二。

2.2系统设计原理

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

本系统采用单片机AT89C51作为本设计的核心元件,利用6位共阴数码管作为显示器件。接入共阴LED 显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。提示预先设定时间电器的起停时间到,从而控制电器的起停。 电路由下列部分组成:时钟电路、复位电路、控制电路、LED 显示,报警电路,芯片选用AT89C51单片机。 系统框图如图 2-1所示:

2.3单片机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可以按照常规方法进行编程,也可以在线编程。其将通用的微处

3

理器和Flash 存储器结合在一起,特别是可反复擦写的Flash 存储器可有效地降低开发成本。

主要特性:

·与MCS-51 兼容

·4K 字节可编程闪烁存储器

·寿命:1000写/擦循环

·数据保留时间:10年

·全静态工作:0Hz-24Hz

·三级程序存储器锁定

·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 (串行输入口)

P3.1„„ TXD(串行输出口)

P3.2„„/INT0(外部中断0)

P3.3„„/INT1(外部中断1)

P3.4„„T0(记时器0外部输入)

P3.5„„T1(记时器1外部输入)

P3.6„„/WR(外部数据存储器写选通)

4

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应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度.

图2-2是单片机AT89C51的引脚图:

图2-2

5

2.4数码管显示电路

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

本系统利用7SEG-MPX6-CC-BLUE 数字显示器,7SEG-MPX6-CC-BLUE 数字显示器的1-6引脚连接AT89C51单片机 P2.0 –P2.5接口,其他8个引脚分别与AT89C51单片机的P0.0 - P0.7和共阳极管RESPACK-8排阻的 2 - 9 引脚分别连接。 因为共阴极的LED 数码管它的驱动电流是分开的, 在单片机进行动态扫描的时候不会影响彼此的电流, 故该系统中的6位LED 数码管均用共阴极的数码管。 6位数码管的引脚图如图2-3所示:

图2-3

2.5时钟电路

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

6

图2-4

2.6喇叭:SPEAKER

由P3.7口控制喇叭,使其定时时间到能发出报警声。如图2-5所示:

图2-5

3 系统的软件设计

3.1系统的软件设计与说明

该系统软件程序主要有主程序模块,定时中断服务程序,中断等待服务程序,键盘服务程序,显示子程序服务程序等六大模块组成。 在AT89C51外围的一个17管脚即P3.7管口上加喇叭器,通过软件与硬件的结合可实现定时报警功能。

图中按键从上往下设定为S1,S2,S3,S4,S1与p1.4相连,S2与p1.3相连,S3与p1.2相连,S4与p1.1相连。当需要设定当前时间时,按一下S4键,进入时间

7

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

3.2 程序调试

1)将程序输入到伟福的环境下;

2)用单步运行和断点运行方式调试程序;

3)调试T0中断服务程序,首先在记数单元39H 、3AH 、3BH 、3CH 单元中预置数,调试秒单元向分单元进位及分单元向时单元的进位,最后将T0中断服务程序统调通过;

4)在39H 、3AH 、3BH 、3CH 单元中预置数,调试显示程序; 5)调试主程序,使闹钟走时系统工作正常。

3.3 程序流程图

本设计程序流程图如3-1所示:

图3-1主程序流程图

8

4. 参考程序

ORG 0000H LJMP MAIN ORG 000BH

LJMP TIME ;×××××主程序部分:××××× ORG 0100H

MAIN:MOV SP,#50H

MOV 20H,#00H ;秒钟 BIN MOV 21H,#00H ;MOV 22H,#00H ;MOV 23H,#01H MOV 24H,#01H

MOV 25H,#00H MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H MOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H MOV TMOD,#01H MOV TH0,#03CH MOV TL0,#0B0H MOV IE,#10000111B SETB TR0 MOV R2,#14H MOV P2,#0FFH LOOP:LCALL TIMEPRO LCALL DISPLAY1 JB P1.1,M1 LCALL SETTIME LJMP LOOP

M1: JB P1.2,M2 LCALL SETATIME LJMP LOOP M2: JB P1.4,M4 LCALL LOOKATIME M4: LJMP LOOP DELAY: MOV R4,#030H ;DL00: MOV R5,#0FFH 分钟 BIN 小时 BIN

位计数器 ; 赋计数初值 启动计数

; 调用设定时序

; 调用设定时间序

调用设定闹钟时间程序

延时时间

9

;16

;T0

;

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

JNC MSTOP2 ;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

调用延时 判断P1.2是否释放?释放则继续 调用延时 小时增加1

判断小时是否到24时?未到继续循环

小时复位 延时 判断P1.3是否释放?释放则继续调用延时 分钟增加一 分钟复位 将A 中的内容分成高低两部分 10

LJMP L0

GO12: MOV B,#0AH

DIV AB MOV 34H,B MOV 35H,A LJMP L0

L2: JB P1.4,L0

JC L2

LCALL DELAY1 ;STOP1: MOV C,P1.4 ; MOV C,P1.4

N0: LCALL DISPLAY2

MM2: JB P1.3,N1 ; MOV C,P1.3

MSTOP3: MOV C,P1.3 ; JNC MSTOP3

MOV C,P1.3

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

MSTOP4: MOV C,P1.1 ; MOV C,P1.4

调用延时

MOV C,P1.4 JC L2

判断按键P1.4是否释放?

JNC STOP1

LCALL DELAY1 ;调用延时

JNC STOP1

LJMP LOOP ;×××××设置闹钟时间××××× SETATIME: LCALL DISPLAY2 ;调用时间运行

判断P1.3是否按下? JC MM2

LCALL DELAY1 JC MM2

判断P1.3是否释放? LCALL DELAY1

JNC MSTOP3

INC 24H ;设定小时增加1 MOV A,24H

CJNE A,#24,GO22

MOV 24H,#00H ;时钟复位 MOV 38H,#00H MOV 39H,#00H LJMP N0

判断P1.1是否按下? JC N1

LCALL DELAY1 JC N1

判断P1.1是否释放?

11

LCALL DELAY1 MOV C,P1.1

JNC MSTOP4

INC 23H ;设定闹钟分钟增加1

MOV A,23H

CJNE A,#60,GO21 ;判断A 是否到60分? MOV 23H,#00H ;分钟复位 MOV 36H,#00H MOV 37H,#00H LJMP N0

GO21: MOV B,#0AH ; DIV AB

MOV 36H,B

MOV 37H,A LJMP N0

GO22: MOV B,#0AH

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

将A 中的内容分成高低两部分 判断P1.4是否按下? 判断P1.4是否释放?

判断分钟是否运行到设定的闹钟的分钟?判断时钟是否运行到设定的闹钟的时钟?调用时间闹钟响应程序 12

TIMEOUT:

X1: LCALL BZ ;调用喇叭响应程序 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 ;判断按键P1.4是否按下

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 MOV R2,#14H MOV A,20H CLR C

INC A ;秒钟自加1

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

13

MOV 20H,#0 ;到60秒复位 MOV 30H,#0 MOV 31H,#0 MOV A,21H

INC A ;分钟自加1

CJNE A,#3CH,GO2 ;判断分钟是否到60分? MOV 21H,#0H ;到60分复位 MOV 32H,#0 MOV 33H,#0 MOV A,22H

INC A ;时钟自加1

CJNE A,#18H,GO3 ;判断时钟是否到24时? MOV 22H,#00H ;到24时复位 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 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 ;表首地址送DPTR

14

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

MOV P2,#0FFH ;送高电平到P2 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 ;表首地址送DPTR MOVC A,@A+DPTR ;查ASCII 特码 MOV P0,A ;查表结果送A LCALL DL1

MOV P2,#0FFH ;送高电平到P2 MOV A,R3 RL A

JNB ACC.6,LD2 INC R0 MOV R3,A LJMP PLAY2

LD2: POP PSW ;恢复现场

POP ACC

RET ;×××××延时时间×××××

DL1: MOV R7,#02H ;延时时间 DL: MOV R6,#020H DL6: DJNZ R6,$

DJNZ R7,DL

RET DSEG1:DB 3FH,06H,5BH,4FH,66H

DB 6DH,7DH,07H,7FH,6FH

END

15

5. 致谢

大学三年学习时光已经接近尾声,在此我想对我的母校,感谢我的母校明德学院给了我在此深造的机会,让我能继续学习和提高;感谢我的老师和同学们三年来的关心和鼓励。老师您课堂上的激情洋溢,课堂下的谆谆教诲;同学们在学习中的认真热情,生活上的热心主动,所有这些都让我的三年充满了感动。这次课程设计我得到了很多帮助,老师和同学对我做课程设计的每个阶段,从选题到查阅资料,设计提纲的确定,中期设计的修改,后期设计格式调整等各个环节中都给予了我悉心的指导。这一个多星期以来,我铭记王许老师对我的课程设计的要求指导,严格按老师所给的流程完成,在此,特别感谢王老师对我的思想与实际行动上的帮助!

16

6. 参考文献

[1]沈红卫. 基于单片机的智能系统的设计与实现[M].北京:电子工业出版社,2005.1

[2]江志红.51单片机技术与应用系统开发案例精选[M].北京:清华大学出版社,2008.12

[3]赵建领,薛园园. 零基础学单片机C 语言程序设计[M]. 北京:机械工业出版社,2009. 4

[4]戴佳,苗龙,陈斌.51单片机应用系统开发典型实例[M].北京:中国电力出版社,2005.7

[5]冯建华,赵亮. 单片机应用系统设计与产品开发[M].北京:人民邮电出版社,2004.11

[6]赵建领.Protel 电路设计与制版宝典[M].北京:电子工业出版社,2007.1

[7]李育贤. 微机接口技术及应用[M].西安:西安电子科技大学出版社,2007.6

[8]李全利. 单片机原理及接口技术[M].北京:高等教育出版社,2009.1

[9]余孟尝. 数字电子技术基础简明教程[M]. 北京:高等教育出版社,2006.1

[10] 李朝青. 单片机学习原理及接口技术[M] 第3版,北京: 北京航空航天大学出版社, 2005

[11] 王法能. 单片机原理及应用[M]. 科学出版社,2004

[12] 陈 宁. 单片机技术应用基础[M]. 南京:南京信息职业技术学院, 2005

[13] 刘 勇. 数字电路 [M]. 电子工业出版社, 2005

[14] 杨子文. 单片机原理及应用[M]. 西安电子科技大学出版社2006

[15]孙育才等. ATMEL 新型AT89S52系列单片机及其应用 [M].北京清华大学出版社, 2005

[16]岂兴明,唐杰等 .51单片机编程基础与开发实例详解[M]. 人民邮电出版社,2008

[17] 李群芳等. 单片微型计算机机与接口技术[M]. 北京: 电子工业出版社, 2001

[18] 张毅刚. 新编MCS-51单片机应用设计[M]. 哈尔滨: 哈尔滨工业大学出版社, 2003

[19] 朱定华,等. 单片微机原理与应用[M]. 北京: 北京清华大学出版社, 北京: 北京交通大学出版,2003

17

本科毕业课程(设计)

(设计目)题:单片机定时闹钟设计

学 院: 明德学院

专 业: 电子信息工程

班 级: 电信12151

学 号: [1**********]1

学生姓名: 袁杰

指导教师: 王许

2015年 6月23号

贵州大学本科毕业课程(设计)

诚信责任书

本人郑重声明:本人所呈交的课程设计,是在指导老师的指导下

独立进行研究所完成。在文本设计中凡引用他人已经发表或未发表

的成果、数据、观点等,均已明确注明出处。

特此声明。

课程(设计)作者签名: 袁杰

日 期: 2015/6/23

摘要

本设计是单片机定时闹钟系统,不仅能实现系统要求的功能,而且还有附加功

能,即还能设定和修改当前所显示的时间。 本次设计的定时闹钟在硬件方面就

采用了AT89C51芯片,用6位LED 数码管来进行显示。LED 用P0口进行驱动,

采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。通过S1、S2、

S3、和S4四个功能按键可以实现对时间的修改和定时,定时时间到喇叭可以发

出报警声。在软件方面采用汇编语言编程。整个定时闹钟系统能完成时间的显

示,调时和定时闹钟、复位等功能,并经过系统仿真后得到了正确的结果。

关键字:单片机、AT89C51、定时闹钟、仿真

Abstract

This design is a single-chip timing alarm system, can not only

realize the function of system requirements, and there are additional

functions, which can set up and modify the display time. Timing alarm

clock this design adopts the AT89C51 chip on the hardware side, with 6

LED digital tube to display. LED P0 export driven, by using dynamic

scanning display, can accurately display always - sub - seconds seconds.

Through the S1, S2, S3, and S4 four function keys can be achieved on the

time changes and timing, timing to the horn can send out alarm sound.

Using assembly language programming in the software. The timing clock

system has functions of time display, timing and timing alarm clock, reset

and other functions, and the system simulation to obtain correct results.

Keywords: single chip microcomputer, AT89C51, alarm clock, simulatio

I

1. 绪论 ······································································································ 1

1.1设计的目的与意义 ························ 1

1.2国内外现状 ··························· 1

1.3 单片机发展趋势 ························· 1

1.4 设计中有哪些难点 ························ 2

1.5 设计步骤···························· 2

2. 硬件设计 ································································································ 3

2.1方案论证 ···························· 3

2.2系统设计原理 ·························· 3

2.3单片机AT89C51简介 ······················· 3

2.4数码管显示电路 ························· 6

2.6喇叭:SPEAKER ·························· 7

3 系统的软件设计 ······················································································· 7

3.1系统的软件设计与说明 ······················ 7

3.2 程序调试···························· 8

3.3 程序流程图 ··························· 8

4. 参考程序 ································································································ 9

5. 致谢 ····································································································· 16

II

1. 绪论

1.1设计的目的与意义

本设计的目的是使学生能够熟练的掌握单片机简单的设计流程,能够合理的设计

出简单易实现的设计,从而让自己对科技的兴趣更浓。在信息时代,计算机的应

用无处不在,带有像单片机一类嵌入式处理器的小型智能化电子产品,已经成为

家用电器的主流,市场需求前景广阔,因此,掌握小型单片机应用系统设计方法,

已成为当今电子应用工程师所必备的技能,定时闹钟具备小型单片机应用系统的

一切要素,其结构简单、成本低廉、走时精确、设置方便,所以智能化方面有广

泛的用途。

1.2国内外现状

单片机是指一个集成在一块芯片上的完整计算机系统。同时集成诸如通讯接口、

定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图

像、网络、复杂的输入输出系统集成在一块芯片。 在单片机(Microcontroller)

出现后,计算机才真正 地从科学的神圣殿堂走入寻常百姓家,成为广大工程技

术人员现代 化技术革新,技术革命的有利武器。目前,单片机在民用和工业测 控

领域得到最广泛的应用。彩电,冰箱,空调,录像机,VCD ,闹钟,遥控器,游

戏机,电饭煲等无处不见单片机的影子,单片机早已深深 地溶入我们每个人的

生活之中。

单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我

们的生活带来舒适和方便的同时,在工农业生产 上也极大地提高了生产效率和

产品质量。

1.3 单片机发展趋势

目前,单片机正朝着高性能和多品种方向发展,其发展趋势将是进一步向着CMOS

化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发

展。下面是单片机的主要发展趋势:

(1) CMOS化

近年,由于CHMOS 技术的进小,大大地促进了单片机的CMOS 化。CMOS 芯片除了

低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。

这也是今后以80C51取代8051为标准MCU 芯片的原因。因为单片机芯片多数是

采用CMOS (金属栅氧化物)半导体工艺生产。CMOS 电路的特点是低功耗、高密

度、低速度、低价格。采用双极型半导体工艺的TTL 电路速度快,但功耗和芯片

面积较大。随着技术和工艺水平的提高,又出现了HMOS (高密度、高速度MOS )、

CHMOS 工艺以及CHMOS 和HMOS 工艺的结合。目前生产的CHMOS 电路已达到LSTTL

的速度,传输延迟时间小于2ns ,它的综合优势已大于TTL 电路。因而,在单片

机领域,CMOS 电路正在逐渐取代TTL 电路。

(2) 低功耗化

单片机的功耗已从mA 级,甚至1uA 以下;使用电压在3~6V之间,完全适应电池

工作。低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗

干扰能力以及产品的便携化。

1

(3) 低电压化

几乎所有的单片机都有WAIT 、STOP 等省电运行方式。允许使用的电压范围越来

越宽,一般在3~6V范围内工作。低电压供电的单片机电源下限已可达1~2V。目

前0.8V 供电的单片机已经问世。

(4) 低噪声与高可靠性

为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容

性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术施。 1.4 设计中有哪些难点

在设计的过程中遇到问题是不可避免的,我遇到了很多问题,如下所示;

1. 做实物时无法驱动数码管显示,后来了解到可以加锁存器,如74LS253,74LS573

等等,还可以加三极管用来加大电流。当然如果换成液晶显示屏的话就不需要考

虑驱动不了的问题了。

2. 烧程序时没发烧进去,需要改变最高和最低波特率,才能按照步骤把程序烧进

去。

3. 复位电路在实物中可以运行,但是在仿真中不能正常运行。目前还未找到原因。

1.5 设计步骤

1. 上网收集资料(6月18)

2. 进行对比分析(6月19)

3. 勾出自己的设计流程图(6月20)

4. 完成设计(6月21至6月23)

2

2. 硬件设计

2.1方案论证

显示器的选择方案论证:

方案一:液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电

池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。 方案二:用数码管作为显示器。数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。 由于数码管使用起来较为方便,在夜间看时间也很方便,因此我选择了方案二。

2.2系统设计原理

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

本系统采用单片机AT89C51作为本设计的核心元件,利用6位共阴数码管作为显示器件。接入共阴LED 显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。提示预先设定时间电器的起停时间到,从而控制电器的起停。 电路由下列部分组成:时钟电路、复位电路、控制电路、LED 显示,报警电路,芯片选用AT89C51单片机。 系统框图如图 2-1所示:

2.3单片机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可以按照常规方法进行编程,也可以在线编程。其将通用的微处

3

理器和Flash 存储器结合在一起,特别是可反复擦写的Flash 存储器可有效地降低开发成本。

主要特性:

·与MCS-51 兼容

·4K 字节可编程闪烁存储器

·寿命:1000写/擦循环

·数据保留时间:10年

·全静态工作:0Hz-24Hz

·三级程序存储器锁定

·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 (串行输入口)

P3.1„„ TXD(串行输出口)

P3.2„„/INT0(外部中断0)

P3.3„„/INT1(外部中断1)

P3.4„„T0(记时器0外部输入)

P3.5„„T1(记时器1外部输入)

P3.6„„/WR(外部数据存储器写选通)

4

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应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度.

图2-2是单片机AT89C51的引脚图:

图2-2

5

2.4数码管显示电路

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

本系统利用7SEG-MPX6-CC-BLUE 数字显示器,7SEG-MPX6-CC-BLUE 数字显示器的1-6引脚连接AT89C51单片机 P2.0 –P2.5接口,其他8个引脚分别与AT89C51单片机的P0.0 - P0.7和共阳极管RESPACK-8排阻的 2 - 9 引脚分别连接。 因为共阴极的LED 数码管它的驱动电流是分开的, 在单片机进行动态扫描的时候不会影响彼此的电流, 故该系统中的6位LED 数码管均用共阴极的数码管。 6位数码管的引脚图如图2-3所示:

图2-3

2.5时钟电路

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

6

图2-4

2.6喇叭:SPEAKER

由P3.7口控制喇叭,使其定时时间到能发出报警声。如图2-5所示:

图2-5

3 系统的软件设计

3.1系统的软件设计与说明

该系统软件程序主要有主程序模块,定时中断服务程序,中断等待服务程序,键盘服务程序,显示子程序服务程序等六大模块组成。 在AT89C51外围的一个17管脚即P3.7管口上加喇叭器,通过软件与硬件的结合可实现定时报警功能。

图中按键从上往下设定为S1,S2,S3,S4,S1与p1.4相连,S2与p1.3相连,S3与p1.2相连,S4与p1.1相连。当需要设定当前时间时,按一下S4键,进入时间

7

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

3.2 程序调试

1)将程序输入到伟福的环境下;

2)用单步运行和断点运行方式调试程序;

3)调试T0中断服务程序,首先在记数单元39H 、3AH 、3BH 、3CH 单元中预置数,调试秒单元向分单元进位及分单元向时单元的进位,最后将T0中断服务程序统调通过;

4)在39H 、3AH 、3BH 、3CH 单元中预置数,调试显示程序; 5)调试主程序,使闹钟走时系统工作正常。

3.3 程序流程图

本设计程序流程图如3-1所示:

图3-1主程序流程图

8

4. 参考程序

ORG 0000H LJMP MAIN ORG 000BH

LJMP TIME ;×××××主程序部分:××××× ORG 0100H

MAIN:MOV SP,#50H

MOV 20H,#00H ;秒钟 BIN MOV 21H,#00H ;MOV 22H,#00H ;MOV 23H,#01H MOV 24H,#01H

MOV 25H,#00H MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H MOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H MOV TMOD,#01H MOV TH0,#03CH MOV TL0,#0B0H MOV IE,#10000111B SETB TR0 MOV R2,#14H MOV P2,#0FFH LOOP:LCALL TIMEPRO LCALL DISPLAY1 JB P1.1,M1 LCALL SETTIME LJMP LOOP

M1: JB P1.2,M2 LCALL SETATIME LJMP LOOP M2: JB P1.4,M4 LCALL LOOKATIME M4: LJMP LOOP DELAY: MOV R4,#030H ;DL00: MOV R5,#0FFH 分钟 BIN 小时 BIN

位计数器 ; 赋计数初值 启动计数

; 调用设定时序

; 调用设定时间序

调用设定闹钟时间程序

延时时间

9

;16

;T0

;

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

JNC MSTOP2 ;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

调用延时 判断P1.2是否释放?释放则继续 调用延时 小时增加1

判断小时是否到24时?未到继续循环

小时复位 延时 判断P1.3是否释放?释放则继续调用延时 分钟增加一 分钟复位 将A 中的内容分成高低两部分 10

LJMP L0

GO12: MOV B,#0AH

DIV AB MOV 34H,B MOV 35H,A LJMP L0

L2: JB P1.4,L0

JC L2

LCALL DELAY1 ;STOP1: MOV C,P1.4 ; MOV C,P1.4

N0: LCALL DISPLAY2

MM2: JB P1.3,N1 ; MOV C,P1.3

MSTOP3: MOV C,P1.3 ; JNC MSTOP3

MOV C,P1.3

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

MSTOP4: MOV C,P1.1 ; MOV C,P1.4

调用延时

MOV C,P1.4 JC L2

判断按键P1.4是否释放?

JNC STOP1

LCALL DELAY1 ;调用延时

JNC STOP1

LJMP LOOP ;×××××设置闹钟时间××××× SETATIME: LCALL DISPLAY2 ;调用时间运行

判断P1.3是否按下? JC MM2

LCALL DELAY1 JC MM2

判断P1.3是否释放? LCALL DELAY1

JNC MSTOP3

INC 24H ;设定小时增加1 MOV A,24H

CJNE A,#24,GO22

MOV 24H,#00H ;时钟复位 MOV 38H,#00H MOV 39H,#00H LJMP N0

判断P1.1是否按下? JC N1

LCALL DELAY1 JC N1

判断P1.1是否释放?

11

LCALL DELAY1 MOV C,P1.1

JNC MSTOP4

INC 23H ;设定闹钟分钟增加1

MOV A,23H

CJNE A,#60,GO21 ;判断A 是否到60分? MOV 23H,#00H ;分钟复位 MOV 36H,#00H MOV 37H,#00H LJMP N0

GO21: MOV B,#0AH ; DIV AB

MOV 36H,B

MOV 37H,A LJMP N0

GO22: MOV B,#0AH

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

将A 中的内容分成高低两部分 判断P1.4是否按下? 判断P1.4是否释放?

判断分钟是否运行到设定的闹钟的分钟?判断时钟是否运行到设定的闹钟的时钟?调用时间闹钟响应程序 12

TIMEOUT:

X1: LCALL BZ ;调用喇叭响应程序 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 ;判断按键P1.4是否按下

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 MOV R2,#14H MOV A,20H CLR C

INC A ;秒钟自加1

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

13

MOV 20H,#0 ;到60秒复位 MOV 30H,#0 MOV 31H,#0 MOV A,21H

INC A ;分钟自加1

CJNE A,#3CH,GO2 ;判断分钟是否到60分? MOV 21H,#0H ;到60分复位 MOV 32H,#0 MOV 33H,#0 MOV A,22H

INC A ;时钟自加1

CJNE A,#18H,GO3 ;判断时钟是否到24时? MOV 22H,#00H ;到24时复位 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 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 ;表首地址送DPTR

14

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

MOV P2,#0FFH ;送高电平到P2 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 ;表首地址送DPTR MOVC A,@A+DPTR ;查ASCII 特码 MOV P0,A ;查表结果送A LCALL DL1

MOV P2,#0FFH ;送高电平到P2 MOV A,R3 RL A

JNB ACC.6,LD2 INC R0 MOV R3,A LJMP PLAY2

LD2: POP PSW ;恢复现场

POP ACC

RET ;×××××延时时间×××××

DL1: MOV R7,#02H ;延时时间 DL: MOV R6,#020H DL6: DJNZ R6,$

DJNZ R7,DL

RET DSEG1:DB 3FH,06H,5BH,4FH,66H

DB 6DH,7DH,07H,7FH,6FH

END

15

5. 致谢

大学三年学习时光已经接近尾声,在此我想对我的母校,感谢我的母校明德学院给了我在此深造的机会,让我能继续学习和提高;感谢我的老师和同学们三年来的关心和鼓励。老师您课堂上的激情洋溢,课堂下的谆谆教诲;同学们在学习中的认真热情,生活上的热心主动,所有这些都让我的三年充满了感动。这次课程设计我得到了很多帮助,老师和同学对我做课程设计的每个阶段,从选题到查阅资料,设计提纲的确定,中期设计的修改,后期设计格式调整等各个环节中都给予了我悉心的指导。这一个多星期以来,我铭记王许老师对我的课程设计的要求指导,严格按老师所给的流程完成,在此,特别感谢王老师对我的思想与实际行动上的帮助!

16

6. 参考文献

[1]沈红卫. 基于单片机的智能系统的设计与实现[M].北京:电子工业出版社,2005.1

[2]江志红.51单片机技术与应用系统开发案例精选[M].北京:清华大学出版社,2008.12

[3]赵建领,薛园园. 零基础学单片机C 语言程序设计[M]. 北京:机械工业出版社,2009. 4

[4]戴佳,苗龙,陈斌.51单片机应用系统开发典型实例[M].北京:中国电力出版社,2005.7

[5]冯建华,赵亮. 单片机应用系统设计与产品开发[M].北京:人民邮电出版社,2004.11

[6]赵建领.Protel 电路设计与制版宝典[M].北京:电子工业出版社,2007.1

[7]李育贤. 微机接口技术及应用[M].西安:西安电子科技大学出版社,2007.6

[8]李全利. 单片机原理及接口技术[M].北京:高等教育出版社,2009.1

[9]余孟尝. 数字电子技术基础简明教程[M]. 北京:高等教育出版社,2006.1

[10] 李朝青. 单片机学习原理及接口技术[M] 第3版,北京: 北京航空航天大学出版社, 2005

[11] 王法能. 单片机原理及应用[M]. 科学出版社,2004

[12] 陈 宁. 单片机技术应用基础[M]. 南京:南京信息职业技术学院, 2005

[13] 刘 勇. 数字电路 [M]. 电子工业出版社, 2005

[14] 杨子文. 单片机原理及应用[M]. 西安电子科技大学出版社2006

[15]孙育才等. ATMEL 新型AT89S52系列单片机及其应用 [M].北京清华大学出版社, 2005

[16]岂兴明,唐杰等 .51单片机编程基础与开发实例详解[M]. 人民邮电出版社,2008

[17] 李群芳等. 单片微型计算机机与接口技术[M]. 北京: 电子工业出版社, 2001

[18] 张毅刚. 新编MCS-51单片机应用设计[M]. 哈尔滨: 哈尔滨工业大学出版社, 2003

[19] 朱定华,等. 单片微机原理与应用[M]. 北京: 北京清华大学出版社, 北京: 北京交通大学出版,2003

17


相关内容

  • 基于单片机的多功能数字时钟设计
  • 河南农业大学 本科生毕业论文(设计) 题 目:基于单片机的多功能数字时钟设计 学 院: 专业班级: 学生姓名: 指导教师: 完成日期:2014年5月20号 摘 要 本文介绍了多功能数字时钟[1]的系统设计.系统具有时间设置及显示.闹钟.报时的功能.系统采用AT89C51和时钟芯片DS1302,实现L ...

  • 定时闹钟设计
  • 河南工业职业技术学院 毕业设计报告 定时闹钟 姓 名: 汪长明 学 号: 0203100219 专业班级: 机修1002 指导老师: 张宏伟 所在学院: 河南工院 2008年6月29日 摘要 本设计是定时闹钟的设计, 由单片机AT89C51芯片和LED 数码管为核心,辅以必要的电路,构成的一个单片机 ...

  • 带整点报时的时钟
  • 单片机原理与应用 实训报告 题目:具有整点报时带闹钟时间可调的数字钟 学院:盐 城 工 业 职 业 技 术 学 院 班级:计 控 1201 姓名:孙 慧 芳 学号: 完成日期: 2014/12/12 目录 1. 系统整体设计...................................... ...

  • 电子钟毕业论文
  • 河南经贸职业学院 毕业论文 单片机电子时钟的设计 论文作者:__ _杨姗姗__ ___ 专 业:_ 应用电子技术 _ 学 号:_[1**********]7 _ 班 级:_ 14电子2班 _ 指导教师: __ 李存志_____ 答辩委员会主席__ _ 评阅人_ _ _ 论文答辩日期__ _ 独创性声 ...

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...

  • 电气自动化毕业设计论文题目
  • 电 气 自 动 化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机 ...