基于单片机的智能定时器文档格式.docx
《基于单片机的智能定时器文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能定时器文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
软件同样采用模块化的设计,包括中断模块、时间调整模块等设计,并采用简单流通性强的C语言编写实现。
本设计实现了年、月、日及时、分、秒的显示和时间修改的功能。
通过对比实际的智能定时控制器,查找出误差的来源,确定调整误差的方法,尽可能的减少误差,使得系统可以达到实际智能定时控制器的允许误差范围内,取得了设计的预期效果。
关键词:
AT89C51数码管模块化数字钟
abstract
ThisdesignUSESAT89C51chipasthecore,supplementedbynecessaryperipheralcircuit,designasimpleelectronicclock,itconsistsof5vdcpowersupply.Intermsofhardware,inadditiontotheCPU,usingfourseven-segmentLEDdigitaltubedisplay,LEDusingadynamicscanningdisplay.ThroughtocompareaccurateLEDdisplay,points.Threesimplebuttonrealizeadjustmentoftime.Softwareusingassemblylanguageprogramming.Canfinishthewholeelectronicclocksystemtimedisplay,adjustment,timingalarmclock,alarm,etc.
ThisdesignisbasedonAT89C51chipasthecoreofthesystemofATMELcompanysmarttimingcontrollerdesign,thepaperdescribesthedesignofsystemhardwareandsoftwareoftheconcreteimplementationprocess.Smarttimingcontrollerinhardware,softwaredesignadoptmodularapproach,madeinthedesignanddebugginghasmadealotofconvenience.PaperexpoundsthedigitalclockhardwareofMCUmodule,keysmodule,displaymoduleandotherrelatedmodulesofmodulardesignandproduction;
Softwarealsoadoptsmodulardesign,includingtheinterruptmodule,timeadjustmoduledesign,andUSESthesimpleliquiditystrongClanguagetoachieve.Thisdesignhasrealizedtheyears,months,days,minutesandsecondsintimedisplayandthefunctionofthetimechange.Bycomparingtheactualsmarttimingcontroller,findoutthesourceoftheerror,determinethemethodofadjustingerror,reduceerrors,makesthesystemcanachievetheactualintelligencewithinthescopeofpermissibleerrortimecontroller,designtheexpectedresultshavebeenachieved.
Keywords:
AT89C51digitaltubemodulardigitalclock
1前言
随着产业结构的不断调整、生产工艺的飞速发展、人们生活水平的不断提高及家用电器的逐渐普及,市场对定时控制系统的需求越来越大.如,定时自动报警、定时自动打铃、定时开关烘箱、定时通断动力设备以及各种电气的定时启动等都属于定时控制系统[1].定时控制系统的实现方法很多,本文主要介绍以80C51系列单片机中的AT89C51为核心的智能定时控制系统的设计实现方式.80C51系列单片机进入市场时间早,总线开放,仿真开发设备多,芯片及其开发价格低廉、速度较快、电磁兼容性较好.本文所述智能时钟控制系统主要包括时钟显示、时间校正、闹铃设置及各种设备定时开关机(可扩展功能)等功能.实时日历和时钟显示的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89S52单片机,LED显示电路,以及调时按键电路等组成,系统通过LED显示数据,所以具有人性化的操作和直观的显示效果。
软件方面主要包括时钟程序、键盘程序,显示程序等。
本系统以单片机的汇编语言进行软件设计,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,以便更简单地实现调整时间及日期显示功能。
所有程序编写完成后,在keil2软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真在日新月异的21世纪里,家用电子产品得到了迅速发展。
许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单品具有便携实用,操作简单的特点。
2总体方案设计
2.1要求功能
1、时间显示:
用4位数码管显示当前小时和分钟,秒功能用两LED灯代替(每秒闪烁一次)。
2、可手动设定时间。
3、开机流程:
系统有红色和蓝色指示灯,上电10S内,每秒红色指示灯闪烁一次,并伴有蜂鸣声,作为开机/重启提醒,此时绿色指示灯灭。
10S后红色指示灯灭,若光线较强则绿色指示灯亮,若光线较弱则绿色指示灯亮度减半进入节能模式。
4、具有整点报时功能(四短一长),可自行设定报时时间段;
2.2.单片机芯片
方案一:
采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
2.3显示模块
方案一:
采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
2.4时钟芯片的选择
采用实时时钟芯片
直接采用单片机定时计数器提供秒信号,使用程序实现、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
软件控制:
利用AT89s51内部定时进行中断,配合软件延时实现时、分、秒的计时,该方案节约成本,且能综合运用知识
2.5电路设计方案确定
综上各方案所述,对此次作品的方案选定:
以单片机AT89C51为主控制器,采用单片机内部定时、行列式键盘和动态LED显示。
系统方案一如图2.1所示:
图2.1方案一
系统方案二如图2.2所示:
图2.2方案二
根据两方案图分析,方案二在方案一的基础上增添了按键控制电路保证了系统的可控制性和使用性,同时在设计中方案二的系统稳定性更加完善,所以本设计选用的是方案二。
3硬件电路设计
3.1硬件系统设计的概述
本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;
时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;
显示部份由15个数码管,74Hs138、74ls244构成。
使用动态扫描显示方式对数字的显示。
硬件的结构和可靠性直接影响着整个系统的可靠性,所以合理的安排电路能提高电子产品的性能。
图3.1系统设计原理图
框图介绍了智能定时控制器系统设计的主要组成部分,系统主要分成核心芯片AT89C51单片机、电源模块、时钟模块、报警模块、复位电路模块、键盘输入模块以及LED数码管显示模块等七大模块,很好的实现了智能定时控制器的一些主要功能。
本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作。
采用内部时钟的驱动方式来驱动AT89C51单片机工作,内部复位的方式使系统的外围电路更加简单,减少了硬件的损耗,利用俩个不同颜色的发光二极管来表示秒钟,其他的显示电路部分由一个4位7段数码管构成,使用动态扫描显示方式对数字的显示,整个系统具有使用寿命长,精度高和低功耗等特点,实现了智能定时控制器的一些主要功能。
3.2AT89C51单片机
AT89C51是一种低功耗、性存储器技术制造,8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89C51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
80C51:
40个引脚双排直插DIP封装,大致可分为3类:
电源及时钟、控制和I/O引脚。
图3.289C51单片机引脚图
图3.3单片机片内结构图
由如下功能部件组成:
对图3.2中的片内各部件做简单介绍。
1.CPU(微处理器)
2.数据存储器(RAM)片内为128个字节(52子系列的为256个字节)
3.程序存储器(ROM/EPROM)89C51/89C52/89C55:
4K/8K/20K字节闪存。
4.4个并行可编程的8位I/O口P1口、P2口、P3口、P0口
5.串行口1个全双工的异步串行口,具有四种工作方式。
6.定时器/计数器
7.中断系统
8.特殊功能寄存器(SFR)共有21个,是一个具有特殊功能的RAM区。
CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,SpecialFunctionRegister)的集中控制方式。
3.3单片机的定时/中断系统
51内部集成定时/计数器的基本特征:
❑51系列单片机内部提供2个16位的递增定时/计数器T0和T1。
❑可以设置为定时或者计数器工作。
❑有多种可选的工作模式,通过SFR-TMOD选择使用。
❑对应两个中断源,可用中断处理。
❑主要作用:
对外部脉冲计数、产生精确定时时间、作串行口的波特率发生器。
图3.4T0、T1的结构
TMOD寄存器的M1,M0位设置四种工作方式
模式0:
13位定时/计数器计数寄存器:
THx和TLx低5位
最大计数值:
213:
模式1:
16位定时/计数器计数寄存器:
THx和TLx
216
模式2:
8位自动重载定时/计数器计数寄存器:
TLX
计数初值重载寄存器:
THX
最大计数值28
模式3:
仅T0可用,将T0拆为两个独立8位定时器
80C51的中断源
外部中断0(INT0)
外部中断1(INT1)
T0溢出中断(TF0)
T1溢出中断(TF1)
串行口中断(RI或TI)
触发方式设置及中断标志
7
6
5
4
3
2
1
TCON
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
字节地址:
88H
外部中断标志IE1、IE0(用IEx表示)
电平方式(ITX=0),INTx引脚低电平时IEx=1,响应中断后IEx不自动清0(INTx引脚状态)。
边沿方式(ITx=1),INTx引脚负跳变时IEx=1,响应中断后IEx自动清0。
同一优先级中的中断申请不止一个时,则有中断优先权排队问题。
同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
3.4显示系统
LED显示器由若干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点就发光。
控制相应的管导通,就能显示出对应字符。
各段LED显示器需要由驱动电路驱动。
在七段LED显示器
通常将各段发光二极管的阴极或阳极连在一起作为公共端。
将各段发光二极管连在一起的叫共阳极显示器,用低电平驱动;
将阴极连在一起的叫共阴极显示器,用高电平驱动。
静态显示就是每一个显示器各笔画段都要独占具有一个锁存功能的输出口线,CPU把要显示的字形代码送到输出口上,就可以使显示器上显示所需的数字或符号,此后,即使CPU不在去访问它,因为各笔画段借口具有锁存功能,显示的内容也不会消失。
动态显示是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。
静态显示有并行输出和串行输出两种方式。
在本系统中数码管使用共阴极接法而且是用动态显示。
本设计利用一个4位七段数码管显示时钟结果。
3.5报警电路
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图4.2所示:
图3.5蜂鸣器驱动电路
如图3.6所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;
当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
另外,改变P3.7输出电平则可以控制蜂鸣器的声音大小,这些我们都可以通过实验来显示报警器电路模块。
3.6按键电路
按键的开关状态通过一定的电路转换为高、低电平状态。
按键闭合过程在相应的I/O端口形一个负脉冲。
闭合和释放过程都要经过一定的过程才能达到稳定。
这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。
抖动的持续时间长短与开关的机械特性有关,一般在5—10ms之间。
为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。
本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生相互影响,如图4.3所示:
图3.6按键电路
3.7电源设计
在这里因设计分工和侧重点不同,电源模块用通用的5v变压器。
从图上看220V交流电经过一个变压器进行降压,变压器后面由四个二极管组成一个桥式全波整流电路,整流后就得到一个电压波动很大的直流电,所以在这里接一个330u/F的电解电容。
变压器输出端的9V电压经过桥式整流并电容滤波,在电容C1两端大约会有11V多一点的电压,如果电容两端直接接负载,当负载变化或者交流电波动时会使C1两端的电压变化很大,为得到一个比较稳定的电压因此在此处接一个三端稳压器元件。
三端稳压器是一个集成电路元件,内部有三极管和电阻构成当负载电流大时内部电阻变小,当负载电流小时内部电阻变大,这样能保持稳压器的输出电压保持基本不变,
本设计要+5V电压,因此选用LM7805,LM7805最大可以输出1A的电流,内部有限流式短路保护,可以很稳定的进行电流输出
图3.7电源电路
3.8单片机最小系统
3.8.1单片机的复位电路
图3.8手动复位电路
3.8.2复位电路的工作原理
在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,那这个过程是如何实现的呢?
在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。
所以可以通过按键的断开和闭合在运行的系统中控制其复位。
开机的时候为什么为复位
在电路图中,电容的的大小是10uF,电阻的大小是10k。
所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。
也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。
这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。
所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。
在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。
所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。
按键按下的时候为什么会复位
在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。
当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。
随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。
根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。
单片机系统自动复位。
在系统运行的过程中,有时可能对系统需要进行复位,为了避免对硬件系统经常加电和断电造成的损害,设计了手动的复位电路。
如图4-2所示。
这种电路的设计,在系统的运行过程中需要复位时,只需使开关闭合,在RST端就会出现一定时间的高电平信号,从而使单片机实现复位。
3.9单片机系统的晶振电路
单片机必须在时钟的驱动下才能进行工作。
MCS-51系列单片机内部都有一个时钟振荡电路,只需外接晶振源,就能产生一定频率的时钟信号送到单片机的内部的各个单元,决定单片机的工作速度。
图4-3就是内部时钟工作方式的电路图,这是一种常用的方式。
这种方式是外界振荡源,本设计就采用这种外接晶振的方法。
电路中的两个电容的作用有两个:
一是帮助振荡器起振(C1C2的值大,起振的速度慢;
反之,速度快。
);
二是对振荡器的频率起到微调的作用(C1C2的值大,频率略有减少,反之,频率略有提高)。
C1C2的值采用30pF,如图4.5.2所示:
图3.9单片机内部晶振电路连接图
内部时钟原理图
(就是一个自激振荡电路)
在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2一般取30pF,晶振的频率取值在1.2MHz~12MHz之间。
对于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12MHz即可。
晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号P1和P2供单片机使用。
时钟信号的周期称为状态时间S,它是振荡周期的2倍,P1信号在每个状态的前半周期有效,在每个状态的后半周期P2信号有效。
CPU就是以两相时钟P1和P2为基本节拍协调单片机各部分有效工作的。
2.指令时序
我们将单片机的基本操作周期称作机器周期,一个机器周期由6个状态组成,每个状态由两个时相P1和P2构成,故一个机器周期可依次表示为S1P1,S1P2,…,S6P1,S6P2,即一个机器共有12个振荡脉冲。
为了大家便于分析CPU的时序,在此先对以下几个概念作一介绍。
(1)振荡周期
振荡周期指为单片机提供定时信号的振荡源的周期或外部输入时钟的周期。
(2)时钟周期
时钟周期又称作状态周期或状态时间S,它是振荡周期的两倍,它分为P1节拍和P2节拍,通常在P1节拍完成算术逻辑操作,在P2节拍完成内部寄存器之间的传送操作。
(3)机器周期
一个机器周期由6个状态组成,如果把一条指令的执行过程分作几个基本操作,则将完成一个基本操作所需的时间称作机器周期。
单片机的单周期指令执行时间就为一个机器周期。
(4)指令周期
指令周期即执行一条指令所占用的全部时间,通常为1~4个机器周期。
在图2.12中给出了MCS-51单片机的典型取指、执行时序。
由图可知,在每个机器周期内,地址锁存信号ALE两次有效,一次在S1P2与S2P1之间,另一次在S4P2和S5P1之间。
从图2.12我们可以看出,对于单周期指令,当操作码被送入指令寄存器后,指令的执行从S1P2开始。
若对于双字节单周期指令,则在同一机器周期的S4期间读入第二个字节。
如果是单字节单周期指令,则在S4期间仍然保持读操作,但所进行的读操作为无效操作,同时程序计数器PC并不加1。
在图2.12(a)和(b)给出了单字节单周期和双字节单周期指令的时序,这些操作都在S6P2结束时完成指令操作。
在图2.12(c)中给出了单字节双周期指令时序,在两个机器周期内进行了四次读操作,由于是单字节指令,故后面的三次读操作是无效的。
在图2.12(d)中给出了访问外