定时闹铃课程设计报告书Word格式文档下载.docx
《定时闹铃课程设计报告书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《定时闹铃课程设计报告书Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
有关变量的初始化
S3是否按下
S4是否按下
LED亮
调整时
钟时
启动走时
按S2?
显示时间
判断是否闹钟时间到
按S3?
按S2?
按S4?
钟分
设置闹
设置闹钟时
按S1?
按S1?
Y
N
2.2程序流程图
图2程序流程图
3设计单元电路
3.1AT89C51的时钟电路
AT89C51系列的单片机时钟方式分为内部和外部方式,外部方式是把外部已经有的时钟信号引入到单片机内部。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要有晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;
而是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:
一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;
二是用专门的时钟芯片实现。
本设计的采用内部时钟方式。
时钟电路如图3所示。
图3时钟电路
3.2AT89C51的复位电路设计
复位是单片机的初始化操作,起主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除进入系统的正常初始化之外,当由于程序运行出错祸操作错误使系统处于死锁状态时,为摆脱困境,可以使复位键以重新启动,也可以通过监视定时器来强迫复位。
RET引脚是复位信号的输入端,如图4所示。
图4复位电路
3.3AT89C51的显示电路设计
分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
图是共阳式、共阴式LED数码管的原理图和符号,如图5所示。
显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管。
LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。
对于多位LED显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如图6所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第三个和第四个数码管,秒的十位和个位分别显示在第五个和第六个数码管。
定时时间到后,P3.7被置位,二极管发光,提醒闹钟时间到。
图5共阳式、共阴式LED数码管的原理图和数码管的符号图
图6数码管硬件连接图
3.4AT89C51的按键电路设计
S1按键接在P2.0口,用于切换正常走时、调时间、设定闹钟;
S2按键接在P2.1口,用于调整时间分加一和设置闹铃分加一功能键;
S3按键接在P2.2口,按下后进入闹钟设置状态;
S4按键接在P2.3口,按下后进入时间调整状态。
按键连接如图7所示。
图7按键硬件连接图
4电路原理说明
4.1AT89C51芯片管脚及其功能
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,可稳定地工作于5V的电源下.该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
AT89C51芯片引脚图如图8所示。
图8AT89C51芯片引脚图
AT89C51管脚说明:
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.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持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:
来自反向振荡器的输出。
4.2电路总原理及硬件原理图
电路总原理:
将软件.hex文件添加到芯片后,就可开始仿真。
此设计中数码管显示时分秒,时为24进制,分和秒都为60进制。
当按下S3时进入闹钟设置状态,此时再按下S3则设置闹钟时,每按一下闹钟时加一,到23h时回到0h,接着按下S2则设置闹钟分,每按一下闹钟分加一,之后按下S1回到时间显示状态;
当按下S4时进入时钟调整状态,此时再按下S4则调整时钟时,每按一下时钟时加一,到23h时回到0h,接着按下S2则设置时钟分,每按一下时钟分加一,之后按下S1回到时间显示状态。
电路总原理图如图9所示。
图9电路总原理图
4.3软件设计
设计程序如下:
ORG0000H
LJMPSTART
ORG000BH
LJMPTIME
START:
MOVSP,#51H
MOV20H,#00H;
定义秒
MOV21H,#00H;
定义分
MOV22H,#00H;
定义时
MOV23H,#00H;
定义闹钟分
MOV24H,#00H;
定义闹钟时
MOV25H,#00H
MOV26H,#00H
MOV30H,#00H;
BCD显示时间秒
MOV31H,#00H
MOV32H,#00H;
BCD显示时间分
MOV33H,#00H
MOV34H,#00H;
BCD显示时间时
MOV35H,#00H
MOV36H,#00H;
BCD闹钟分
MOV37H,#00H
MOV38H,#00H;
BCD闹钟时
MOV39H,#00H
MOV50H,#00H;
按键次数
MOVTMOD,#01H
MOVTH0,#03CH
MOVTL0,#0B0H
MOVIE,#82H;
中断允许
SETBTR0;
启动T0
MOVR2,#14H
MOVP2,#0FFH
CLRP3.7
MAIN:
LCALLTIMEPRO;
判断是否为闹钟
GB:
LCALLDISPLAY1;
JBP1.3,M1
LCALLSETTIME
LJMPMAIN
M1:
JBP1.2,M2
LCALLSETATIME
M2:
JBP1.0,M4
LCALLLOOKATIME
M4:
LJMPMAIN
DELAY:
MOVR4,#030H;
延时子程序
DL00:
MOVR5,#0FFH
DL11:
MOVR6,#09H
DL12:
DJNZR6,DL12
DJNZR5,DL11
DJNZR4,DL00
RET
SETTIME:
;
设置时间
L0:
LCALLDISPLAY1
MM1:
JBP1.3,L1;
进入时间设置状态
MOVC,P1.3
JCMM1
LCALLDELAY1
MSTOP1:
MOVC,P1.3;
设置时钟时
JNCMSTOP1
MOVA,50H
INC50H
CJNEA,#00H,HJ1
LJMPL0
HJ1:
MOVC,P1.3
INC22H
MOVA,22H
CJNEA,#18H,GO12;
时为24h时清零
MOV22H,#00