定时闹钟的设计.docx
《定时闹钟的设计.docx》由会员分享,可在线阅读,更多相关《定时闹钟的设计.docx(31页珍藏版)》请在冰点文库上搜索。
定时闹钟的设计
摘要
单片机是一种特殊的计算机,它是在一块半导体上集成了CPU,RAM,ROM,定时器和输入输出接口电路,这种芯片在习惯上被称为单片微型计算机,简称计算机。
由于它的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,成本低,功能强等优点,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的使用,让我们对单片机能固有初步的了解,并能够设计简单的与单片机应用有关的电路,从而在实践中巩固所学的知识。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机是应工业测控系统数字化,智能化的迫切要求而提出的。
超大规模集成电路的出现,通用CPU及外围电路技术的发展成熟,为单片机的诞生与发展提供了可能单片机的发展完全从工业测控对象,环境,接口等特点出发,其接口界面也是按照能灵活方便地构成工业测控用计算机系统而设计的,他的出现标志着计算机技术在工业领域的应用开始走向成熟.
本设计主要通过软件编程来完成,降低了硬件电路的复杂性,而且其成本也有所降低,在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
本定时闹钟使用12MHZ晶振与单片机AT89C51相连接,通过软件编程的方法实现了以了校时、定时功能。
文章后附有电路原理图、PCB板图和程序清单,因本人在单片机编程方面是弱项,肯定有很多疏落不足之处,敬请老师能给与批评指正,从而使本人去的明显的提高。
目录
1概述……………………………………………………………………4
1.1各种设计方案的对比……………………………………………4
1.2定时闹钟设计的实现过程………………………………………4
1.3定时闹钟实现的功能……………………………………………4
2系统总体方案及硬件设计…………………………………………5
2.1闹钟定是系统的构成…………………………………………5
2.2闹钟定时控制系统设计…………………………………………5
2.3单片机最小系统设计……………………………………………6
2.4定时闹钟显示器设置……………………………………………8
3软件设计……………………………………………………………9
3.1程序流程图………………………………………………………9
3.2主程序部分………………………………………………………9
3.3时间控制部分介绍………………………………………………11
3.4显示程序介绍……………………………………………………13
3.5调时与判断部分介绍……………………………………………11
4Proteus软件仿真…………………………………………………18
4.1故障状态仿真图…………………………………………………18
4.2工作状态仿真图…………………………………………………18
5课程设计体会………………………………………………………19
参考文献
附1:
源程序代码
附2:
系统原理图
1概述
1.1各种设计方案的比较
定时闹钟设计与制作可采用数字电路实现,也可以采用单片机来完成。
若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在本设计与制作中采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
1.2定时设计的实现过程
本设计主要通过软件编程来完成,降低了硬件电路的复杂性,而且其成本也有所降低,在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
1.3定时闹钟实现的功能
本定时闹钟使用12MHZ晶振与单片机AT89C51相连接,通过软件编程的方法实现了以24小时为一个周期同时显示小时,分钟和秒的要求,并在计时过程中具有报时功能,当时间到达整点进行蜂鸣报时。
该定时钟设有三个按键:
S1,S2和S3键,使之具备了校时、定时功能。
2系统总体方案及硬件设计
2.1闹钟定时系统的构成
本定时闹钟使用12MHZ晶振与单片机AT89C51相连接,以单片机AT89C51为核心来完成的,在硬件电路中采用P0口作为6位LED数码管的驱动接口,这是由于P0口输出驱动电路工作处于开漏状态,它的驱动能力强,故只需外接上拉电阻便可以把LED数码管点亮。
因为共阴的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该电路中的6位LED数码管均用共阴极的数码管。
在6位LED显示时,为了简化电路,降低成本,6个LED显示器共用一个8位的I/O,6位LED数码管的位选线分别由相应的P2.0~P2.5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。
在电路中还设有三个按键S1,S2和S3用来进行定时,选时和调时的选择,他们分别与单片机的P1.2,P1.4,P1.6口相连接。
P1.7口与蜂鸣器相连接。
2.2闹钟定时控制系统设计
定时控制部件是在规定的时刻发出各种操作所需的全部内部和外部控制信号,使各功能元件协调工作,完成指令所规定的功能。
主要任务是产生一个工作时序,其工作需要时钟电路提供一个工作频率。
MCS-51内部有一个用于构成震荡器的高增益反向放大器,此放大器的输入端和输出端分别是XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源可构成时钟电路。
单片机的生产工艺不同,时钟的产生方式也不同。
有内部和外部时钟产生两种时
钟方式,本系统采用的是内部时钟产生方式
图1内部时钟原理图
在XTAL1和XTAL2两端跨接晶体或陶瓷谐振器,于内部反向器构成稳定的自激振荡器。
其发出的脉冲直接送入片内的定时控制部件。
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.3单片机最小系统设计
图2单片机AT89C1
单片机选择AT89C51,时钟系统通过将XTAL1与XTAL2分别接1u的电容,并将一晶振与两电容分别并联最后引出接地。
复位电路通过引脚RST接出,此系统采用上电加按钮电平复位方式。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效将EA接高电平作为掉电保护,P0、P1、P2、P3分别与外围器件相连。
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口同时为闪烁编程和编程校验接收一些控制信号。
2.4定时闹钟显示器设计
图3显示屏相关电路
图4定时闹钟显示屏
3软件设计
3.1程序流程图
图5闹钟程序流程
3.2主程序部分
首先将缓存区内容清零,设开关和喇叭为高电平有效,赋查表首地址以及栈初值,设定定时器1的初始状态并开中断。
MAIN:
MOV10H,#0
MOV11H,#0
MOV12H,#0
MOV13H,#0
MOV14H,#0
MOV15H,#0
MOV20H,#0
MOV21H,#0
MOV22H,#0
MOV23H,#1
MOV26H,#2
MOV29H,#3
MOV2CH,#4
MOV2FH,#5
MOV32H,#6
MOV35H,#7
MOV38H,#8
MOV3BH,#9
MOV3EH,#10
MOV41H,#11
MOV44H,#12
MOV47H,#13
MOV4AH,#14
MOV4DH,#15
MOV50H,#16
MOV53H,#17
MOV56H,#18
MOV59H,#19
MOV5CH,#20
MOV16H,#23
CLRP1.2
CLRP1.4
CLRP1.6
CLRP1.7
MOVSP,#60H
MOVDPTR,#TAB
MOVR1,#20H;R1作为拆分地址首
MOVR4,#11000000B
MOVR2,#5;R2作为定时,调时选择
MOVR5,#00111100B;R5作为闹铃开关
MOV1BH,#0
MOV18H,#20
MOVP0,#0
MOVP2,#0
MOVIE,#87H
SETBIT0
SETBIT1
MOVIP,#2;设T0优先级最高
MOVTMOD,#1;定时器模式1
MOVTH0,#3CH
MOVTL0,#0B8H
SETBTR0
CLREX0
CLREX1
3.3时间控制部分介绍
时间控制部分首先等待,时间到后将定时器关断,然后再将定时器送初值,启动定时器,将秒位进行控制加一,每当秒位加到60时,相应的分位加一,然后等待分循环到60,将时加一。
然后进入循环。
TIME:
CLRTR0
MOVTH0,#3CH
MOVTL0,#0B8H
SETBTR0
MOV09H,R0
INC16H
MOVR0,16H
MOVA,@R0
CLRC
CJNEA,21H,TMM
INC16H
MOVR0,16H
INC16H
MOVA,@R0
CLRC
CJNEA,22H,TTM
MOV19H,#45H;19H作为时间到标志
AJMPTTM
TMM:
INC16H
INC16H
TTM:
MOVR0,09H
DJNZ18H,OUT0
MOV18H,#20
MOV16H,#23H
MOVA,R2;控制闪烁
CLRC
SUBBA,#5
JZTM
MOVA,1BH
CPLA
MOV1BH,A
ANLA,R4
MOV1AH,A
TM:
MOVA,17H
CLRC
SUBBA,#23H
JZOUT0
SEC:
INC20H
MOVA,20H
CLRC
CJNEA,#60,OUT0
MOV20H,#0
MIN:
INC21H
MOV19H,#0;一分钟到关闹铃
CLRP1.7
MOVA,21H
CLRC
CJNEA,#60,OUT0
MOV21H,#0
HOUR:
INC22H
MOVA,22H
CLRC
CJNEA,#24,OUT0
MOV22H,#0
OUT0:
RETI
3.4显示程序介绍
首先送入地址偏移量,然后送入要显示的数值,通过P0、P2口显示,显示部分通过除指令与动态查表显示。
DISP:
MOVR0,#10H;10H作为显存首址
MOVR7,#7FH
MOVR6,#7
TO:
MOVA,@R0
MOVCA,@A+DPTR
ORLA,#80H
PUSHACC
MOVA,R7
RLA
MOVR7,A
ORLA,1AH;1AH控制闪烁
MOVP0,#0
MOVP2,A;P2为位选
POPACC
MOVP0,A;P0作为段选
INCR0
DJNZR6,TO
RET
CHAI:
MOVA,@R1
MOVB,#10
DIVAB
MOV10H,B
MOV11H,A
INCR1
MOVA,@R1
MOVB,#10
DIVAB
MOV12H,B
MOV13H,A
INCR1
MOVA,@R1
MOVB,#10
DIVAB
MOV14H,B
MOV15H,A
DECR1
DECR1
RET
3.5调时与判断部分介绍
通过判断按键,进入闹钟调时部分,在次判断SW1返回时间程序,通过与时间比较判断定时时间到否,如果到则启动报警,不到则返回。
TSHI:
MOVA,R2;R2作为调时与定时的标志
CLRC
SUBBA,#0F0H
JZGO2
MOVR2,#0FH
MOVA,R4
RRA
RRA
MOVR4,A
CLRC
CJNEA,#00110000B,GO
MOVR3,#22H
GO:
CLRC
CJNEA,#00001100B,GO1
MOVR3,#21H
GO1:
CLRC
CJNEA,#00000011B,GO3
MOVR3,#20H
GO3:
CLRC
CJNEA,#11000000B,GO2
MOVA,17H
CLRC
CJNEA,#23H,GO4
CLRTR0
MOVTH0,#3CH
MOVTL0,#0B8H
SETBTR0
MOV17H,#0
GO4:
MOVR2,#0
GO2:
RET
DSHI:
MOVA,R2;R2作为调时与定时的标志
CLRC
SUBBA,#0FH
JZDSOUT1
MOVR2,#0F0H
MOVA,R4
RLA
RLA
MOVR4,A
CLRC
CJNEA,#00001100B,DSOUT2
INCR1
MOVA,R1
MOVR3,A
DECR1
DSOUT2:
MOVA,R4
CLRC
CJNEA,#00110000B,DSOUT3
INCR1
INCR1
MOVA,R1
MOVR3,A
DECR1
DECR1
DSOUT3:
MOVA,R4
CLRC
CJNEA,#00000011B,DSOUT4
INCR1
INCR1
INCR1
DSOUT4:
MOVA,R4
CLRC
CJNEA,#11000000B,DSOUT1
MOVR4,#00000011B
MOVR3,#0FH
INCR1
INCR1
INCR1
DSOUT1:
RET
XSHI:
MOVA,R2
CLRC
SUBBA,#5
JZXSOUT3
MOVA,R3
MOVR0,A
INC@R0
MOVA,R4
CLRC
CJNEA,#00000011B,XSOUT
MOVA,R2;R2作为调时与定时的标志
CLRC
CJNEA,#0FH,XSOUT4
MOV@R0,#0
MOV17H,#23H
XSOUT4:
MOVA,R2;R2作为调时与定时的标志
CLRC
CJNEA,#0F0H,XSOUT
MOV17H,#0
MOVR4,#11000000B
MOVR1,#20H
MOVR2,#5
XSOUT:
MOVA,R4
CLRC
CJNEA,#00110000B,XSOUT2
MOVA,@R0
CLRC
SUBBA,#24
JCXSOUT1
MOV@R0,#0
XSOUT2:
MOVA,R4
CLRC
CJNEA,#00001100B,XSOUT1
MOVA,@R0
CLRC
SUBBA,#60
JCXSOUT1
MOV@R0,#0
AJMPXSOUT1
XSOUT3:
MOVA,R5
CPLA
MOVR5,A
CPLP1.0;P1.0闹铃开关指示灯
XSOUT1:
RET
4Proteus软件仿真
图6工作状态仿真图
打开proteus软件,按照原理图在该软件上画图,画好以后效果如图以后如图6所示,然后输入源称序,按下proteus左下方的开始键就进入仿真状态,单片机AX89C51某些引脚上的小方块不断闪烁,说明该引脚有信号通过,按钮开关SW1,SW2,SW3,可以对闹钟进行修改,开始闹钟默认定时时间为零时零分零秒,在仿真软件中进入仿真状态后,就可以听到闹钟的响声,时间为一分钟,然后按动SW3可切换到时,分,秒,按动SW2可调整选中的项目的大小,按动SW1可以在显示时间预定时时间之间切换,然后用SW2,SW3,对它们进行修改,当显示时间与闹钟时间一样时,喇叭就发出响声,持续时间为一分钟,当一分钟的时间过去时,蜂鸣报时结束,听不到闹钟的响声响声。
5课程设计体会
单片机课程设计的时间为一星期,开始一看老师给定课程设计的题目及要求,不知道该怎样开始,以前学的知识也用不上,于是开始从网上,图书馆搜集相关的资料,确定做定时闹钟的设计,并了解定时闹钟的工作原理及所需要的相关单片机方面的原件,这些元件的都是第一次用,对它们各个接口的接法及作用也是不了解,又重新了解这些元件的特点与作用,从而确定闹钟工作的流程图,画出相应的原理图,并在proteus软件上进行相应的模拟与仿真,开始不知哪的故障出正常的结果,最后经过艰苦的查找,原来在原理图上有条线没联好,修改以后,仿真软件上终于显示出了正确的结果,看到自己的心苦与努力有了结果,心里也美滋滋的!
这次课程设计使我们重新巩固复习了这学期所学的单片机内容,通过查询相关的资料,简要知道了虽然老师上课讲过,但并非听懂了的8155芯片的有关知识。
根据课程设计的要求和自己通过参考有关资料拟的方案,写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序,达到能够实现所要求的功能的目的。
在写程序时,在每条指令后都写好注释,以便在程序出错的检查过程中可以更容易查找得到。
这次的单片机课程设计是我认识到自己在编程及设计等实际操作方面缺陷,重点是理论与实际的相结合,不单单只是书上的一条条分离的指令,还要能把书上的一条条指令灵活用到实际中,增强创新能力与在学习能力,这才是我们参加课程设计的目的吧。
由于本人单片机学的不是太好,在编程设计方面的知识也了解的很少,对定时闹钟的原理也不是太了解,所以这个定时闹钟可能在某些方面存在着某些缺陷,请指导老师批评指正。
参考文献
[1]余发山编著.单片机原理及应用技术.中国矿业大学出版社,2003
[2]陈建泽编著。
MCS-51单片机应用设计.哈尔滨工业大学出版社,2006
[3]何立敏编著。
单片微型计算机原理及应用.北京师范大学出版社,1991
[4]张毅刚彭喜源等编著。
北京航空航天大学出版社,1996
[5]张振荣,晋明武,王毅平编著.CS—51单片机原理及实用技术。
人民邮电出版社,2000
[6]李勋,李新民编著.CS—5196系列8089单微型计算机.北京航空航天大学出版社,1991
[7]曹巧媛著.片机原理及应用.电子工业出版社,1997
[8]蔡美琴,张为民编.CS—51系列单片机系统及其应用.高等教育出版社,1994
附1源程序代码
ORG0
AJMPMAIN
ORG000BH
AJMPTIME
TIME:
CLRTR0
MOVTH0,#3CH
MOVTL0,#0B8H
SETBTR0
MOV09H,R0
INC16H
MOVR0,16H
MOVA,@R0
CLRC
CJNEA,21H,TMM
INC16H
MOVR0,16H
INC16H
MOVA,@R0
CLRC
CJNEA,22H,TTM
MOV19H,#45H;19H作为时间到标志
AJMPTTM